From 24e3bb54db579fb9aad8df2a591527dc77fe4cb4 Mon Sep 17 00:00:00 2001 From: salmonik Date: Sun, 1 Nov 2026 19:19:49 +0100 Subject: v4.0.7: finish the Phase 1 boundary with a command shell The terminal command line moves to client::shell: a typed line becomes a core Command or an adapter action (connect, login, register, set-credential, host maintenance). ClientCore loses submit_line and the last TUI-shaped effects (Interactive, SetPrompt, ListHosts, ForgetHost, AnimateRoulette); the adapter animates roulette from the Result view. Adds forget-login, which drops the stored credential for the pinned key and keeps trust, distinct from logout (session only) and forget-host (trust too). --- docs/adr/0001-testable-client-server-cores.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'docs/adr/0001-testable-client-server-cores.md') diff --git a/docs/adr/0001-testable-client-server-cores.md b/docs/adr/0001-testable-client-server-cores.md index 2e3cd1e..c19c01a 100644 --- a/docs/adr/0001-testable-client-server-cores.md +++ b/docs/adr/0001-testable-client-server-cores.md @@ -16,10 +16,12 @@ exercised from `tests/`. - The library (`src/lib.rs`) owns shared logic. `src/bin/client` and `src/bin/server` are thin adapters for crossterm, TLS, environment variables, and interactive prompts. -- `client::core::ClientCore` owns input, history, commands, game state, and - pending replies. It returns `Effect`s (`Print`, `ReplaceRegion`, `ClearRegion`, - `SetPrompt`, `SendLine`, `Interactive`, ...). The binary applies them; the - tests apply them to a headless screen. +- `client::core::ClientCore` owns commands, game state, the current screen, and + pending replies. It returns `Effect`s (`Print`, `Render(View)`, `ClearRegion`, + `SendLine`, `Disconnect`, `Quit`). The binary applies them; the tests apply + them to a headless screen. The prompt buffer, history and key mapping live in + `client::input`, and `client::shell` parses a finished line, so the core never + sees a `Key` or a raw command line. - `server::core::ServerCore` owns message handling and receives an injected `Connection`, `GameRegistry`, and bcrypt cost. The binary only owns the TLS listener and per-connection thread. -- cgit v1.2.3