Skip to content

[codex] Fix stale Remote SSH restore entries#501

Merged
bobleer merged 1 commit intoGCWing:mainfrom
bobleer:codex/remote-ssh-restore-cleanup
Apr 24, 2026
Merged

[codex] Fix stale Remote SSH restore entries#501
bobleer merged 1 commit intoGCWing:mainfrom
bobleer:codex/remote-ssh-restore-cleanup

Conversation

@bobleer
Copy link
Copy Markdown
Collaborator

@bobleer bobleer commented Apr 24, 2026

Summary

  • prune saved Remote SSH password profiles that cannot be restored because their local password vault entry is missing
  • remove stale remote workspace restore records when their saved SSH connection is gone or reconnect cannot recover them
  • save SSH profiles only after a successful connection, and reject saving password profiles without a password or existing vault entry
  • add a precise desktop API for removing a single persisted remote workspace restore record

Root Cause

Remote SSH profiles could be persisted before authentication completed. After a client upgrade, this could leave password-based saved connections without a recoverable local password. Startup restore then kept retrying or showing the remote workspace in an error state, and the broken saved profile could hide the matching SSH config host from the connection dialog.

Validation

  • cargo test -p bitfun-core remote_ssh::manager::tests -- --nocapture
  • pnpm --dir src/web-ui run type-check
  • pnpm run lint:web
  • cargo check -p bitfun-desktop
  • previously also ran pnpm --dir src/web-ui run test:run, cargo test -p bitfun-desktop, and cargo check --workspace

@bobleer bobleer marked this pull request as ready for review April 24, 2026 05:29
@bobleer bobleer merged commit 4592e4b into GCWing:main Apr 24, 2026
4 checks passed
@bobleer bobleer deleted the codex/remote-ssh-restore-cleanup branch April 24, 2026 05:53
bobleer added a commit to bobleer/BitFun that referenced this pull request Apr 24, 2026
bobleer added a commit that referenced this pull request Apr 24, 2026
* feat: improve ControlHub browser session handling (#476)

* feat: improve controlhub browser sessions

Tighten ControlHub browser session routing and desktop browser guards, improve relay reconnect handling, and persist FlowChat session title updates alongside model config polish.

Generated with BitFun

Co-Authored-By: BitFun

* fix: resolve SessionModule lint error

Convert requireSessionWorkspacePath to a function declaration so eslint no-use-before-define passes in SessionModule.

Generated with BitFun

Co-Authored-By: BitFun

* fix: handle Windows cert DER bytes correctly

Replace the invalid to_der().ok() call with direct DER byte conversion so bitfun-core compiles on Windows CI.

Generated with BitFun

Co-Authored-By: BitFun

* fix(web-ui): add horizontal padding to CLI auth empty state in AI model settings (#478)

Co-authored-by: bowen628 <bowen628@noreply.gitcode.com>

* Add browser restart confirm flow (#479)

* chore: remove selfcontrol integration (#480)

* feat(computer-use): TuriX-CUA inspired Interactive-View workflow + accuracy hardening (#492)

Inspired by the TuriX-CUA open-source project, this overhauls BitFun's
desktop Computer Use stack so the agent can reliably "see → plan →
act → verify" on macOS GUIs.

Highlights
- Interactive-View pipeline (S1-S4): new `AxNode`-derived
  `InteractiveElement` / `InteractiveView` types, AX-tree filtering
  (`interactive_filter.rs`), Set-of-Mark JPEG overlay
  (`som_overlay.rs`), and `desktop_host.rs` wiring on top of the
  macOS AX dump.
- ControlHub desktop actions (S5): four new `interactive_*` /
  `app_*` actions with a single `i` index and `before_view_digest`
  optimistic-locking.
- Click reliability: digest is now geometry/role-stable (ignores
  focus/value jitter); `interactive_click` auto-rebuilds the view on
  `STALE_INTERACTIVE_VIEW` and falls back from AX-press to
  image-pixel pointer click; `click_element` accepts `text_contains`
  / `node_idx` directly.
- Card-merging heuristic in `interactive_filter` collapses redundant
  child widgets inside actionable containers (cells, rows, buttons,
  links, groups), cutting overlay clutter on real apps.
- Prompt update (`claw_mode.md`): mandatory
  OBSERVE → PLAN → EXPECT → VERIFY loop and Interactive-View-first
  guidance.
- Supporting macOS plumbing: `macos_ax_dump`, `macos_ax_write`,
  `macos_bg_input`, `macos_list_apps` (background-input event
  injection, AX press, app enumeration).
- Adds `recursion_limit = "256"` for the new generic-heavy modules.

Tested with `cargo check -p bitfun-desktop -p bitfun-core` and
focused unit tests in `interactive_filter` and `desktop_host`.

* feat: align Codex client_version with local CLI; honor proxy in AI config tests (#499)

- Resolve codex CLI version via codex --version for User-Agent and backend model discovery

- Derive client_version query param from User-Agent in OpenAI common adapter

- Use create_transient_ai_client_for_config for test/list-models so proxy and stream options apply

* Fix stale Remote SSH restore entries (#501)

* fix: adapt agentic_os main sync

---------

Co-authored-by: bowen628 <bowen628@noreply.gitcode.com>
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