[codex] finish mvp handoff - #1
Conversation
…lors) Design for replacing the system/dark/light-only theme with curated presets that drive both app chrome and SSH terminal colors, plus independent terminal font customization.
|
Follow-up fix pushed in 694bb90.\n\nWhat changed:\n- Fixed immediate SSH disconnect risk by giving every terminal connection generation its own backend PTY session id, so stale cleanup from React StrictMode/reconnect cannot close the new session.\n- Simplified the UI: removed decorative hero artwork, reduced gradients/shadows, tightened top bar/sidebar/dashboard spacing, removed the empty tab bar when no tabs are open, and fixed mobile horizontal overflow.\n\nValidation:\n- npm test: 38 passed\n- npm run build: passed\n- cargo fmt --manifest-path src-tauri/Cargo.toml -- --check: passed\n- cargo test --manifest-path src-tauri/Cargo.toml: 55 passed\n- git diff --check: passed\n- Playwright Vite render check: desktop and mobile not blank, no framework overlay, no horizontal overflow. Note: Vite browser mode shows expected Tauri invoke alerts because the Tauri runtime is unavailable outside the desktop shell. |
|
SSH key install flow pushed in eab3b5a.\n\nWhat changed:\n- Added backend SSH key discovery from ~/.ssh with filtering for real private-key headers.\n- Added public-key resolution from adjacent .pub files, with ssh-keygen fallback when possible.\n- Added ssh_keys_list and ssh_key_install Tauri commands.\n- Added Server form key picker, manual path fallback, and explicit Install public key on server action.\n- Install copies only the public key into ~/.ssh/authorized_keys using an idempotent command; private keys are never copied to the server.\n\nValidation:\n- npm test: 38 passed\n- npm run build: passed\n- cargo fmt --manifest-path src-tauri/Cargo.toml -- --check: passed\n- cargo test --manifest-path src-tauri/Cargo.toml: 58 passed\n- git diff --check: passed\n- Playwright Vite modal check: Add Server modal renders, key path interaction reveals install action, desktop/mobile have no horizontal overflow.\n\nManual smoke still needed in Tauri shell: create/edit a server, select a key from ~/.ssh or enter a path, install public key, then connect with key auth. |
|
First SSH connect race fixed in fa09080.\n\nRoot cause:\n- Previous fix separated sessions by tab generation, but React StrictMode remounts start from the same generation again.\n- The first mount cleanup could therefore close the remounted first SSH session with the same backend id.\n\nFix:\n- Added a monotonic connection attempt id and included it in the backend PTY session id: tab:generation:attempt.\n- Each spawn now has a unique backend id, so stale cleanup can only close its own old session.\n\nValidation:\n- npm test: 39 passed\n- npm run build: passed\n- cargo fmt --manifest-path src-tauri/Cargo.toml -- --check: passed\n- cargo test --manifest-path src-tauri/Cargo.toml: 58 passed\n- git diff --check: passed\n\nPlease retest first SSH connect in npm run app:dev. If it still fails, the terminal should now reflect the actual ssh/auth/server error instead of being killed by stale React cleanup. |
Summary
Impact
Validation
npm test- 37 passednpm run build- passedcargo fmt --manifest-path src-tauri/Cargo.toml -- --check- passedcargo test --manifest-path src-tauri/Cargo.toml- 55 passedgit diff --check- passedgraphify update .- passedgraphify cluster-only . --no-label- passednpm run app:build:arch- produced AppImage, deb, and rpm bundlesManual follow-up
npm run app:devon a Linux desktop and smoke-test Settings open/save/restart persistence plus invalid-value rollback.