Skip to content

feat: split local/remote config and add projects drawer - #58

Merged
flexdinesh merged 1 commit into
mainfrom
feat/server-deploy-projects-nav
Oct 12, 2026
Merged

flexdinesh merged 1 commit into
mainfrom
feat/server-deploy-projects-nav

Conversation

@flexdinesh

@flexdinesh flexdinesh commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner
  • Behavior owner and resulting change:
    • config: CLI config is namespaced into local.* (diffx [PATH]) and remote.* (sync/hooks), with DIFFX_LOCAL_* / DIFFX_REMOTE_* env. diffx-server reads only DIFFX_SERVER_* and defaults to port 7980, so it runs beside local 7981–7990. Flat config files are rejected with an error naming the file and each key's replacement.
    • cmd/diffx: new diffx remote status checks the destination, credential, and protocol, and lists waiting hook deliveries. Hooks check remote config before discovery.
    • hooks: automatic retries skip jobs whose worker ran in the last 2 minutes; collector retry still forces them.
    • reviewstore / contextservice / httpapi: contexts expose streamId and latestContextId. /api/v2/contexts?latest=true omits stale snapshots.
    • apps/web: collapsible Projects drawer listing repositories with their current changed streams, plus a new-changes dot and a "View latest" notice. Stream heads load continuously; the picker loads full history only while open.
  • Contracts/invariants affected; local/remote implications:
    • Breaking: old flat config is rejected. The CLI and server must be upgraded together.
    • Compose publishes on DIFFX_SERVER_PORT (default 7980).
    • The viewed review is never swapped on ingestion.
    • Unconfigured hooks no longer enroll identities in .git.
  • Validation results; remaining risks:
    • mise run check and the pre-push check:push pass: Go, race, conformance, contracts, design guard, 65 browser tests including a new drawer test, and unit tests.
    • Manually verified against a real diffx-server fed by diffx sync: desktop, collapsed, dark, and mobile drawer focus/Escape.
    • Risk: the browser-test fixture reads personal config, so local checks fail until a dev's flat config is migrated or deleted.
  • Intentional architecture/design changes and rationale (if any):
    • Mode is chosen by the command, not by a config field; namespaces keep the modes from reading each other's settings.
    • New --projects-width token and a new-changes status-circle design exception, both documented in DESIGN.md.
    • The file-sidebar toggle uses a list-tree icon so the two panel toggles stay distinct.
  • UI evidence: affected themes/layouts, keyboard use, Pierre geometry (if applicable):
    • Light/dark, desktop expanded/collapsed, and modal drawer below 1012px.
    • Drawer focus moves in on open and Escape restores it to the toggle.
    • Pierre geometry is unchanged; the diff only loses the drawer's width.

@flexdinesh
flexdinesh marked this pull request as ready for review October 12, 2026 11:36
- Namespace CLI config into local.* and remote.* with DIFFX_LOCAL_*/DIFFX_REMOTE_*;
  server uses DIFFX_SERVER_* and port 7980 so both modes run side by side
- Reject flat config with a message naming the file and key moves
- Add diffx remote status; hooks check remote config before discovery and
  back off automatic retries
- Expose streamId/latestContextId and latest=true on /api/v2/contexts
- Add collapsible projects drawer of current changed streams with
  new-changes marks and a newer-snapshot notice
@flexdinesh
flexdinesh force-pushed the feat/server-deploy-projects-nav branch from 1574661 to 39f596c Compare October 12, 2026 11:48
@flexdinesh
flexdinesh merged commit 6287b6e into main Oct 12, 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