feat: hide configured repositories from interactive UI - #862
Conversation
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
554d1ec to
efafb71
Compare
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
The repository visibility work needed temporary design artifacts during implementation, while the published pull request requires durable decisions to live in the ADR and routed context. Preserve that development boundary alongside the completed operator-facing visibility feature. - test: restore testify helper guard compliance - feat: hide configured repositories from interactive UI - docs: keep repository visibility in the gear menu - docs: clarify repository visibility menu behavior - fix: move repository visibility into the gear menu - docs: retire the repository visibility implementation plan - fix: clear hidden repository selections - fix: preserve catalog-backed repository selections - fix: honor hidden visibility after repository renames Generated with Codex Co-authored-by: Codex <noreply@openai.com>
Provider renames left exact configuration rows looking unresolved because settings counted only their stale routes. Mobile activity then rebuilt options from those rows and could expose a repository whose current catalog identity was hidden. Treat configuration provenance as resolution and make the filtered repository catalog authoritative, retaining exact configuration fallbacks only when they truly have no tracked match. Generated with Codex Co-authored-by: Codex <noreply@openai.com>
Host-pinned views intentionally retain their repository even when it is hidden from interactive selectors; catalog pruning must not replace that fixed scope with All repos. Repository visibility responses contain the entire settings snapshot, so overlapping writes could replay stale state. Serialize those mutations to preserve server-confirmed ordering, and record the shared-worktree configuration safeguard exposed during this review. Generated with Codex Co-authored-by: Codex <noreply@openai.com>
Repository settings could report an exact match before its verified identity reached the catalog, briefly removing a newly added repository from selectors and workspace creation. A transient catalog failure could also be mistaken for an authoritative empty response and erase a persisted selection. Require verified catalog identity before reporting matches, preserve stable identity in offline catalog fallbacks, persist direct additions before publishing success, and retain selector state until a catalog request succeeds. Generated with Codex Co-authored-by: Codex <noreply@openai.com>
Repository additions could reach TOML before their resolved catalog identity was durable, so a failed catalog write returned an error while the repository reappeared after reload. Hot reload could likewise advertise a matched repository that the authoritative catalog could not serve. Repository settings controls also applied independent full-response snapshots, allowing overlapping visibility, clone, refresh, add, or remove operations to replay stale state. Persist identities before publishing configuration state and serialize those mutations so selectors and settings observe one confirmed order. Generated with Codex Co-authored-by: Codex <noreply@openai.com>
Maintainers need to preserve archived repository history without carrying inactive projects through active selectors and workspace creation. Publish the one-click settings workflow, TOML equivalent, and glob precedence alongside repository configuration so the durable ADR decision is discoverable in the user guide. Generated with Codex Co-authored-by: Codex <noreply@openai.com>
The repository visibility decision is now represented in the published configuration workflow and the implementation itself. Keeping the completed design artifact would duplicate the durable guidance and leave a second documentation surface to drift. Generated with Codex Co-authored-by: Codex <noreply@openai.com>
A provider rename can leave the configured path available for a different repository. Treating both provenance and current route as equivalent visibility matches hid that route successor whenever the original exact entry was hidden. Once an exact entry has tracked provenance, restrict its presentation setting to that provenance-bound repository so route reuse remains identity-safe. Generated with Codex Co-authored-by: Codex <noreply@openai.com>
A provider rename followed by route reuse could rebind an exact hidden setting to the new route occupant after reload or restart, because the stable association existed only in memory. Persist that association as derived catalog state and reconcile provider-observed routes through the timestamp fence so configuration-owned visibility continues to follow the original repository identity. Generated with Codex Co-authored-by: Codex <noreply@openai.com>
A configured path can point at a route successor before the catalog observes the original repository's rename. Publishing that fallback, or accepting an older provider observation, can transfer exact-entry settings across stable identities. Leave mismatched routes untracked, reject stale observations, and restore the prior derived bindings whenever hot reload cannot publish its repository set. The race lane also demonstrated that fixture startup can exceed 30 seconds under parallel race-detector load, so retain the same bounded wait with enough headroom for that execution shape. Generated with Codex Co-authored-by: Codex <noreply@openai.com>
Stable repository bindings are derived state, but they must remain consistent with the operator config across partial persistence and save failures. Restore the complete prior binding set when publication fails and keep visibility attached to provider-owned identity instead of a reused route. Clients also need to distinguish an offline exact entry from a stable-identity conflict. Expose that mismatch explicitly and retain safe configured options while bounded catalog retries recover from transient failures. Generated with Codex (GPT-5) Co-authored-by: Codex <noreply@openai.com>
Stable bindings must follow the configuration lifecycle instead of surviving removal or accepting identityless provider responses. Prune bindings as part of deletion and restore derived state when config publication fails so route reuse cannot inherit stale settings. Mobile selection validation also needs bounded catalog retries because the independently retrying selector is absent on phone routes. A transient failure must not leave a hidden or removed repository filter active indefinitely. Generated with Codex (GPT-5) Co-authored-by: Codex <noreply@openai.com>
Mobile selectors must not treat an exhausted catalog request as an authoritative empty result. Keep visible exact configuration rows available while stable-binding mismatches and hidden entries continue to fail closed.\n\nThe stable route-reuse contract also needs a regression at the user-visible boundary. Exercise provider rename, old-route reuse, persisted bindings, server restart, and the repository API against one SQLite catalog so a successor can never inherit exact-entry provenance. Generated with Codex (GPT-5) Co-authored-by: Codex <noreply@openai.com>
e7dd346 to
7592e9b
Compare
roborev: Combined Review (
|
A committed visibility change can lose its response, and an acknowledged removal must not be reported as failed only because a later refresh fails. Route every repository setting command through the ordered workflow so uncertain writes reconcile against confirmed settings. Repository removal must also survive interruption without exposing an exact route after its stable binding is gone. Save the config removal first, then prune the derived binding, and restore bindings before config during rollback. Generated with Codex (GPT-5) Co-authored-by: Codex <noreply@openai.com>
roborev: Combined Review (
|


Archive-only repositories need to remain configured for history, reports, and direct maintenance, but that should not force them into active-work selectors.