Přehled TUIX Core v0.6
Modulární terminálový UI engine pro Python poháněný kompilovaným jádrem C + Cython. v0.6 přináší 13 modulárních Python balíčků zrcadlících nativní C složky (`core`, `scene`, `object`, `buffer`, `content_builder`, `command_buffer`, `compositor`, `event`, `input`, `renderer`, `sub_cycles`, `tuix`, `viewport`), odstraňuje ploché legacy moduly, zavádí namespaced registraci builderů, rozšiřuje základy pro Unicode a grafémové clustery, sjednocuje návratové kódy TUIX_RC_* a poskytuje vláknově bezpečný bridge pro události a command buffery.
Verze 0.6 sjednocuje pojmenování nativního C API do konzistentního formátu `tuix_system_action`, zpevňuje vlastnictví bufferů a sledování životního cyklu, zlepšuje stabilitu diffu při renderování a poskytuje čisté modulární Python subbalíčky.
Architektura
Runtime je rozdělen do tří vrstev: nativní C engine pro buffery, vnořený layout, hitmapy, kompozici, diffing, internování symbolů a terminálový výstup; Cython bridge pro rychlá volání bindingů a vykonávání snímků; a modulární Python balíčky pro životní cyklus scén, tvorbu objektů, konfiguraci widgetů, snapshoty a řízení aplikace.
Každý snímek směruje vstup, vyřeší geometrii napříč parent/child stromy, nechá buildry aktualizovat stav a obsah, složí viditelné buffery a do stdout zapisuje jen rozdíly viditelné v terminálu.
Vestavěné typy widgetů
| Widget | Konstanta / Název builderu | Popis |
|---|---|---|
| Progressbar | PROGRESS_BAR (ProgressBarBuilder) | Vodorovný ukazatel průběhu s nastavitelnou hodnotou, znaky výplně/prázdna, barvami a volitelným procentem. |
| Choice | CHOICE (ChoiceBuilder) | Seznam voleb ovladatelný klávesnicí se stavem potvrzení a výběru. |
| Input | INPUT (InputBuilder) | Jednořádkový textový vstup s placeholderem, pohybem kurzoru, plnou podporou UTF-8 kódových bodů a stavem odeslání. |
| Canvas | CANVAS (CanvasBuilder) | Volná kreslicí plocha pro pixely, primitiva (čáry, obdélníky, kruhy), text citlivý na grafémy, raw buffery a cachované sprity. |
| Text | TEXT (TextBuilder) | Vložený text s iterací po grafémových clusterech a runtime řízením barvy popředí a pozadí. |
| ClickableText | CLICKABLE_TEXT (ClickableTextBuilder) | Klikatelný inline textový štítek s barvami popředí/pozadí a spotřebovatelným stavem stisku. |
| Box | BOX (BoxBuilder) | Rámovaný kontejner s titulkem, okrajem a barvami pozadí. |
| Divider | DIVIDER (DividerBuilder) | Vodorovný nebo svislý oddělovač s vlastním symbolem a barvou. |
| Badge | BADGE (BadgeBuilder) | Kompaktní štítek s paletou popředí/pozadí. |
| Button | BUTTON (ButtonBuilder) | Klikatelné a klávesnicí aktivovatelné tlačítko se spotřebovatelným stavem stisku. |
| Tag | TAG (TagBuilder) | Štítek typu chip s nastavitelnými závorkami a barvami. |
| Status | STATUS (StatusBuilder) | Stavový štítek IDLE/OK/WARN/ERROR s nastavitelnou paletou a bezpečným vykreslováním UTF-8. |
| Menu | MENU (MenuBuilder) | Interaktivní menu s titulkem, výběrem položek a stavem aktivace. |
| ScrollContainer | SCROLL_CONTAINER (ScrollContainerBuilder) | Kontejner založený na viewportu s virtuální velikostí obsahu, offsety, ořezem a helpery pro připojení dětí. |
| Row | ROW (RowBuilder) | Vodorovný stack layout parent s gapem, paddingem, justify, align a sloty dětí. |
| Column | COLUMN (ColumnBuilder) | Svislý stack layout parent používající stejné stack API jako Row. |
| SplitPane | SPLIT_PANE (SplitPaneBuilder) | Dvou-panelový layout s orientací, rozdělením poměrem/pixely, velikostí dělítka a minimy panelů. |
| Grid | GRID (GridBuilder) | Grid layout s pevnými a váženými řádky/sloupci, gapy, paddingem a override umístění. |
| Checkbox | CHECKBOX (CheckboxBuilder) | Přepínač s popiskem, checked/disabled stavem a spotřebovatelným příznakem změny. |
| ListView | LIST_VIEW (ListViewBuilder) | Virtuální seznam nad viewportem s výběrem, aktivací a scrollováním kolečkem. |
| TextArea | TEXT_AREA (TextAreaBuilder) | Víceřádkový editor nad viewportem s titulkem, placeholderem, navigací kurzoru, editací grafémů a read-only režimem. |
| Dialog | DIALOG (DialogBuilder) | Modální dialog s backdropem, zachycením fokusu, velikostí těla, paddingem, barvami a zavíráním. |
Mapa modulů (13 balíčků)
| Modul | Účel |
|---|---|
| tuix.core.core | Životní cyklus systému (`init`, `shutdown`, `main_loop`, `lock`), statistiky snímků, zachycení myši a registry proxy. |
| tuix.core.scene | Alokace a výběr scén, routování fokusu, modální překryvy, transakce, statistiky aktivity a kompaktace pixelů. |
| tuix.core.object | Životní cyklus objektů (`create_object`, `get_object_by_uid`), runtime API widgetů a inspekce snapshotů. |
| tuix.core.buffer | Hierarchie bufferů, z-index řazení, layout sloty, grid placement, explicitní obdélníky layoutu a metriky obrazovky. |
| tuix.core.content_builder | Registr standardních builderů, konstanty builderů, layout/grid konstanty, `register_standard()` a `unregister_builder()`. |
| tuix.core.input | Vlákno nativního listeneru vstupu (`listen`, `stop`), spotřebovávající (`get_snapshot`) a nahlížející (`peek_snapshot`) snapshoty a injektování kláves. |
| tuix.core.command_buffer | Opkódy pro dávkové vykonávání příkazů a transakční commity na hranici snímku. |
| tuix.core.compositor | Kompozice scény, cachování traversal řetězce, partial kompozice citlivá na paint-mask, dirty stav hitmapy a řešení geometrie. |
| tuix.core.event | Vláknově bezpečné řízení fronty událostí a bridge pro dispečink Python callbacků. |
| tuix.core.renderer | Streamovací ANSI renderer, alokace nativních bufferů, patch rendering, sledování dirty řádků a statistiky výkonu snímků. |
| tuix.core.sub_cycles | Alokace registru sub-cyclů, řízení životního cyklu a transakční obsluha OOM. |
| tuix.core.tuix | Runtime konfigurace terminálu, probing politiky, internování symbolů a metadata pixelových buněk. |
| tuix.core.viewport | Dotazování na viewport schopnosti, výpočet offsetů obsahu a scroll insets. |
Co je nového ve 0.6
- Breaking nativní API cleanup: sjednocené názvy C funkcí a hlaviček do formátu `tuix_system_action` napříč všemi moduly.
- 13 modulárních Python balíčků zrcadlících nativní C strom (`core`, `scene`, `object`, `buffer`, `content_builder`, `command_buffer`, `compositor`, `event`, `input`, `renderer`, `sub_cycles`, `tuix`, `viewport`) s odstraněním plochých legacy root modulů.
- Namespaced registr builderů: vestavěné buildery žijí v namespace `tuix`, deskriptory deklarují metadata ABI verze, velikosti struktur a politiky vlastnictví pixelů a runtime záznamy sledují generaci i živé instance.
- Sdílený systém návratových kódů `TUIX_RC_*` nahrazující nejednoznačné status kódy napříč veřejnými core, scene, buffer, layout a builder API.
- Vláknově bezpečný event shim a bridge pro command buffer pro commity na hranici snímků a flush událostí z C do runtime.
- Základ pro Unicode: internované neměnné UTF-8 symboly pixelů, 128bajtový payload klávesnice, měření a vykreslování textu podle grafémových clusterů a bezpečné wide znaky řízené terminal policy.
- Nový widget ClickableTextBuilder a aktualizované kanonické konstanty builderů (`PROGRESS_BAR`, `SPLIT_PANE`, `LIST_VIEW`, `TEXT_AREA`, `CLICKABLE_TEXT`).
- Robustnost jádra: partial kompozice citlivá na paint-mask, sledování redraw generation, transakční registrace sub-cyclů při OOM, invalidace starých ukazatelů při destrukci scén a NULL-safety kontroly jmen.
Známá omezení
- TUIX Core zůstává nízkoúrovňový engine, ne vysokoúrovňový aplikační framework.
- Chybí vestavěný systém témat/stylů nad rámec stylování jednotlivých widgetů.
- Hlavní smyčka je synchronní; integrace s async smyčkou není vestavěná.