Implement the local and remote terminal UI #27

Closed
opened 2026-07-18 20:48:57 +00:00 by hugo · 1 comment
Owner

Goal

Implement the terminal client in specs/tui.allium over the same application workflows used by desktop and the headless server.

Current state

  • specs/tui.allium covers navigation, editing, publishing, AI, settings, tags, Git, reports, commands, multi-client synchronization, and locale.
  • No TUI renderer or terminal input loop exists.
  • This issue depends on shared application services/domain events and the headless server for remote sessions.

Required behavior

  • Launch locally through the CLI and remotely through an authenticated server SSH session.
  • Render sidebar, list, editor, status/output, modal/prompt, settings, tags, Git, and report states specified by tui.allium.
  • Navigate/open entries, edit and save Markdown/Lua/Liquid, publish/unpublish, search/filter, switch projects, and invoke command prompt actions through shared engines.
  • Support the specified editor modes, wrapping, shortcuts, confirmations, validation errors, and task progress.
  • Expose AI quick actions only when the active online/airplane endpoint permits them.
  • Subscribe to domain events so other desktop/TUI/CLI client changes refresh the appropriate state without discarding unsaved local edits.
  • Use the server-selected locale remotely and normal locale settings locally.
  • Handle resize, disconnect/reconnect, terminal restore, and clean exit.

Implementation notes

  • Do not recreate engine logic in the renderer. Keep terminal state as a projection of shared application state plus unsaved editor buffers.
  • Prefer one established terminal dependency if the current workspace has none; verify the current official Rust documentation before choosing it.
  • Follow red/green TDD with renderer/state tests and PTY-level smoke coverage where necessary.

Acceptance criteria

  • Every rule group in specs/tui.allium is reachable and covered by state/command tests.
  • Local and SSH sessions produce the same persisted results for representative CRUD, editing, publishing, Git, and settings flows.
  • External events refresh lists/reports while preserving unsaved buffers.
  • Airplane gating, confirmations, validation errors, terminal resize/restore, disconnect, and locale are tested.
  • cargo fmt --all -- --check, cargo build --workspace, and cargo test --workspace pass.
## Goal Implement the terminal client in specs/tui.allium over the same application workflows used by desktop and the headless server. ## Current state - specs/tui.allium covers navigation, editing, publishing, AI, settings, tags, Git, reports, commands, multi-client synchronization, and locale. - No TUI renderer or terminal input loop exists. - This issue depends on shared application services/domain events and the headless server for remote sessions. ## Required behavior - Launch locally through the CLI and remotely through an authenticated server SSH session. - Render sidebar, list, editor, status/output, modal/prompt, settings, tags, Git, and report states specified by tui.allium. - Navigate/open entries, edit and save Markdown/Lua/Liquid, publish/unpublish, search/filter, switch projects, and invoke command prompt actions through shared engines. - Support the specified editor modes, wrapping, shortcuts, confirmations, validation errors, and task progress. - Expose AI quick actions only when the active online/airplane endpoint permits them. - Subscribe to domain events so other desktop/TUI/CLI client changes refresh the appropriate state without discarding unsaved local edits. - Use the server-selected locale remotely and normal locale settings locally. - Handle resize, disconnect/reconnect, terminal restore, and clean exit. ## Implementation notes - Do not recreate engine logic in the renderer. Keep terminal state as a projection of shared application state plus unsaved editor buffers. - Prefer one established terminal dependency if the current workspace has none; verify the current official Rust documentation before choosing it. - Follow red/green TDD with renderer/state tests and PTY-level smoke coverage where necessary. ## Acceptance criteria - Every rule group in specs/tui.allium is reachable and covered by state/command tests. - Local and SSH sessions produce the same persisted results for representative CRUD, editing, publishing, Git, and settings flows. - External events refresh lists/reports while preserving unsaved buffers. - Airplane gating, confirmations, validation errors, terminal resize/restore, disconnect, and locale are tested. - cargo fmt --all -- --check, cargo build --workspace, and cargo test --workspace pass.
hugo added the enhancement label 2026-07-18 20:48:57 +00:00
Author
Owner

Implemented in 23981ce. Added one Ratatui workspace for local bds-cli tui sessions and authenticated SSH PTYs, backed throughout by the shared project/post/template/script/media/tag/settings/AI/Git/report/task/domain-event engines. It includes numbered sidebars, search and project/command overlays, syntax-highlighted soft-wrapped Markdown/Liquid/Lua editing and preview, save/publish/unpublish/title/language shortcuts, confirmations and surfaced validation, colour image previews, typed desktop-parity settings including metadata/publishing/AI/MCP agent configuration, full tag and Git workflows, report apply/cancel and live refresh, active-endpoint AI gating, shared locale updates, resize/reconnect/restore handling, and preservation of dirty buffers during external events. Updated README, localization in all five locales, and RUST_PLAN_EXTENSION. Neutral review against issue #27, specs/tui.allium, and bDS2 found and corrected settings-backend, wrapped scrolling, report-refresh, validation-survival, image-rendering, MCP-agent, Git parity, and terminal-restoration gaps. Verification: allium check specs/tui.allium (no findings; two existing informational unused-field diagnostics), cargo fmt --all -- --check, cargo build --workspace, 19 isolated TUI tests, authenticated SSH PTY smoke coverage, and cargo test --workspace all pass.

Implemented in 23981ce. Added one Ratatui workspace for local bds-cli tui sessions and authenticated SSH PTYs, backed throughout by the shared project/post/template/script/media/tag/settings/AI/Git/report/task/domain-event engines. It includes numbered sidebars, search and project/command overlays, syntax-highlighted soft-wrapped Markdown/Liquid/Lua editing and preview, save/publish/unpublish/title/language shortcuts, confirmations and surfaced validation, colour image previews, typed desktop-parity settings including metadata/publishing/AI/MCP agent configuration, full tag and Git workflows, report apply/cancel and live refresh, active-endpoint AI gating, shared locale updates, resize/reconnect/restore handling, and preservation of dirty buffers during external events. Updated README, localization in all five locales, and RUST_PLAN_EXTENSION. Neutral review against issue #27, specs/tui.allium, and bDS2 found and corrected settings-backend, wrapped scrolling, report-refresh, validation-survival, image-rendering, MCP-agent, Git parity, and terminal-restoration gaps. Verification: allium check specs/tui.allium (no findings; two existing informational unused-field diagnostics), cargo fmt --all -- --check, cargo build --workspace, 19 isolated TUI tests, authenticated SSH PTY smoke coverage, and cargo test --workspace all pass.
hugo closed this issue 2026-07-19 19:37:48 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: hugo/RuDS#27