feat: publish A1-A8 card viewer and FreeRTOS C generator
Check card layouts / check (push) Has been cancelled

This commit is contained in:
2026-07-19 16:43:35 +02:00
parent 586644bcff
commit 8bf8e22448
10 changed files with 6394 additions and 318 deletions
+56 -4
View File
@@ -45,6 +45,17 @@ której powstaje `https://<url_host_uuid>/<doc_uuid>`.
`show_repository_qr: true` wymaga `repository_url`. Adres podglądu `localhost`
nie powinien być publikowany na karcie.
### Publikacja lokalna i globalna
UUID hosta/workspace oraz UUID karty są stabilną tożsamością zasobu, a nie
tożsamością konkretnego serwera. Viewer podczas zajęć otwiera kartę przez
względny adres lokalnego ingressu K3s; kanoniczny adres globalny pozostaje w
metadanych, QR i udostępnianych odsyłaczach. Utrata Internetu nie może blokować
katalogu, przełączania kart, API sterowania, symulatora, dowodów ani raportu.
Pełny kontrakt topologii, routingu, magazynowania i przyszłej synchronizacji
opisuje [OFFLINE-FIRST-DEPLOYMENT.md](OFFLINE-FIRST-DEPLOYMENT.md).
### Status i wersja tasków w zakresie karty
Wiersze `front_page_scope.scope_table.rows[]` mogą opisywać stan opracowania
@@ -180,10 +191,51 @@ rozmiaru:
Jeśli każda figura ma odpowiadać osobnej stronie wydruku, sekcja deklaruje
`"asset_page_mode": "one-per-page"`. Generator wtedy wstawia jawne podziały
stron w TeX i buduje osobne płótna A4 w React/HTML. Pierwsza strona zachowuje
nagłówek sekcji, a kolejne są stronami kontynuacji z powtórzoną tabliczką
zasobu. Widok ekranowy rozdziela płótna odstępem `5cm`; reguła nie wpływa na
wydruk.
stron w TeX i buduje osobne płótna A4 w React/HTML. Diagram interaktywny sam
renderuje zwarty, jednakowy nagłówek na każdej części; zewnętrzny nagłówek
sekcji nie przesuwa pierwszego kafla względem pozostałych.
Orientację wybiera sekcja przez `"page_orientation": "portrait"` albo
`"landscape"`. Jest to własność fizycznej strony, a nie zamiennik dla
`page_grid`: pojedynczy szeroki diagram może dostać landscape, pionowa
hierarchia portrait, a dopiero model nieczytelny po właściwym dobraniu
orientacji otrzymuje jawne złożenie kilku stron.
Diagram większy od bezpiecznego pola A4 deklaruje `page_grid` przy assetcie:
```json
"page_grid": {
"columns": 2,
"rows": 2,
"cuts_x": [660],
"cuts_y": [440],
"page_width": 660,
"page_height": 760,
"step_tiles": {"class-base": 1, "runtime-proof": 4}
}
```
`cuts_x` i `cuts_y` są współrzędnymi SVG, a `step_tiles` przypisuje każdy krok
interaktywny dokładnie do jednego fizycznego kafla (numeracja wierszowa od 1).
Generator odrzuca kafel większy od pola A4 oraz szew przecinający zamknięty
blok UML. React może złożyć strony w `spread_group`, zachowując jeden kursor i
jedną numerację rysunku; wydruk nadal zawiera niezależne kartki A4.
Włączony spread jest automatycznie dopasowywany do szerokości widoku, tak aby
wszystkie strony jednego wiersza i ich łączenia były widoczne równocześnie.
Nagłówki stron pokazują pulsujące kierunki kontynuacji `← ↑ ↓ →`; środkowa
strona szeregu może wskazywać obie strony, a złożenie wielowierszowe także górę
i dół. Wskaźniki są wyłącznie nawigacją ekranową i znikają w druku.
### Boczne szyny paneli
Narzędzia pomocnicze HTML używają wspólnego systemu paneli bocznych zamiast
modalnej zasłony. Cienka kolorowa szyna otwiera panel w trybie `Auto` po
najechaniu; kliknięcie przełącza go w `Fixed`. Kolejny klik, przycisk zamknięcia
albo `Esc` odpina panel. Renderer może wystawić kilka niezależnych szyn po obu
stronach (obecnie: katalog i spis treści po lewej, przebieg i raport po prawej).
Panele nakładają się na widok tylko podczas pracy i są zawsze usuwane z
wydruku. Nie zmieniają geometrii stron A4 ani kafelków diagramu.
Końcowy słownik jest domyślnie obecny w React/HTML dla zgodności. Karta, która
ma zawierać wyłącznie jawnie wymienione strony, ustawia na poziomie głównym