The app is missing its UI. edit.run opens a window that is a bare text area — raw gfx_text + caret on a dark background. No menu bar, no file open/save surface, no status bar (line/col, filename, dirty flag), no scrollbars for files taller than the window, no theme. The buffer core is the interesting part and it's done; the shell around it never got built.
Scope — bring it to the fleet UI standard (the DeslanStudio train, see Tidepool#43 for the pattern):
- Toolkit shell:
lib/ui menu_bar (File: New/Open/Save/Save As/Quit; Edit: basics), status bar, vertical scrollbar + viewport for large files, file dialog. The pure-core + run() split stays — the shell lives in the front-end layer so EigenOS still consumes edit.eigs unmodified; anything the shell needs that the OS surface can't provide gets flagged, not baked in.
- Theme layer: named palette applied in-place onto lib/ui's active theme BEFORE widget construction (DeslanStudio
src/client/theme.eigs pattern; set_theme wholesale nulls the sizing keys — use the field-by-field loop).
- Oracles extend with the UI (the #599 lesson — a stubbed-gfx suite stays green while every real interaction is broken): render-decode assertions for the new chrome, mouse-oracle coverage for menu/scrollbar/dialog interaction, real-flow verification via desktop-gui-qa with before/after screenshots.
Toolkit gaps surfaced (e.g. a file-picker widget if lib/ui lacks one) go upstream to EigenScript and get banked — no local forks.
Owner: eigenscript-app-fleet-engineer; upstream lib/ui gaps to eigenscript-ui-toolkit-engineer.
The app is missing its UI.
edit.runopens a window that is a bare text area — rawgfx_text+ caret on a dark background. No menu bar, no file open/save surface, no status bar (line/col, filename, dirty flag), no scrollbars for files taller than the window, no theme. The buffer core is the interesting part and it's done; the shell around it never got built.Scope — bring it to the fleet UI standard (the DeslanStudio train, see Tidepool#43 for the pattern):
lib/uimenu_bar (File: New/Open/Save/Save As/Quit; Edit: basics), status bar, vertical scrollbar + viewport for large files, file dialog. The pure-core +run()split stays — the shell lives in the front-end layer so EigenOS still consumesedit.eigsunmodified; anything the shell needs that the OS surface can't provide gets flagged, not baked in.src/client/theme.eigspattern;set_themewholesale nulls the sizing keys — use the field-by-field loop).Toolkit gaps surfaced (e.g. a file-picker widget if lib/ui lacks one) go upstream to EigenScript and get banked — no local forks.
Owner: eigenscript-app-fleet-engineer; upstream lib/ui gaps to eigenscript-ui-toolkit-engineer.