Skip to content

[codex] finish mvp handoff - #1

Merged
darwvin-dev merged 9 commits into
mainfrom
codex/project-hardening-packaging
Jul 13, 2026
Merged

[codex] finish mvp handoff#1
darwvin-dev merged 9 commits into
mainfrom
codex/project-hardening-packaging

Conversation

@darwvin-dev

Copy link
Copy Markdown
Owner

Summary

  • Finalizes the RemoteOpsX MVP handoff with persisted application settings, stable IPC error payloads, and rollback-safe frontend settings state.
  • Adds Settings UI access from the top bar and command palette, applies theme settings, and wires the health refresh interval to persisted settings.
  • Updates handoff documentation, roadmap notes, tests, and Graphify outputs.

Impact

  • Users can now persist theme, default protocol ports, health refresh interval, retention, and desktop integration preferences.
  • Backend validation now returns stable domain errors with safe internal-error redaction.
  • The MVP is packaged and ready for manual desktop smoke testing before merge.

Validation

  • npm test - 37 passed
  • npm run build - passed
  • cargo fmt --manifest-path src-tauri/Cargo.toml -- --check - passed
  • cargo test --manifest-path src-tauri/Cargo.toml - 55 passed
  • git diff --check - passed
  • graphify update . - passed
  • graphify cluster-only . --no-label - passed
  • npm run app:build:arch - produced AppImage, deb, and rpm bundles

Manual follow-up

  • Run npm run app:dev on a Linux desktop and smoke-test Settings open/save/restart persistence plus invalid-value rollback.

@darwvin-dev

Copy link
Copy Markdown
Owner Author

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.

@darwvin-dev

Copy link
Copy Markdown
Owner Author

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.

@darwvin-dev

Copy link
Copy Markdown
Owner Author

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.

@darwvin-dev
darwvin-dev marked this pull request as ready for review July 13, 2026 10:13
@darwvin-dev
darwvin-dev merged commit ba7295f into main Jul 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant