Wire real Quasar UI mutations to the Common Lisp control plane #5

Closed
opened 2026-07-30 04:04:39 +00:00 by lost-rob0t · 0 comments
lost-rob0t commented 2026-07-30 04:04:39 +00:00 (Migrated from github.com)

Problem

PR #3 initializes the WebSocket client, but the actual React state and mutation paths remain browser-owned.

frontend/src/store.jsx still loads and watches PouchDB, calls applyOperation, saves workspaces locally, and performs undo/redo against the browser database. The new control-plane adapters are isolated wrappers and are not used by QuasarProvider.

This means Common Lisp is not authoritative for document or graph mutations despite the PR description claiming those paths are migrated.

Found during review of PR #3.

Required changes

  • Integrate the typed control-plane client directly into QuasarProvider or an equivalent durable-state provider.
  • Load the initial durable state from workspace.snapshot.
  • Route document create/update/delete through Common Lisp.
  • Route graph node/edge mutations and final position commits through Common Lisp.
  • Subscribe to authoritative events and update the local projection.
  • Keep visual-only state local: hover, menus, viewport animation, active editing buffers, panel dimensions.
  • Implement optimistic state only where rollback is complete.
  • On command failure, restore the prior projection and use the existing notice/error UI.
  • Do not silently fall back to PouchDB for operations declared migrated.
  • Clearly isolate remaining transitional browser-owned features.

Acceptance criteria

  • Creating, updating, and deleting a document from the actual UI sends WebSocket commands.
  • Graph mutations from the actual UI send WebSocket commands.
  • Reloading restores migrated state from the Lisp snapshot.
  • PouchDB is not authoritative for migrated operations.
  • Tests exercise the real provider/store integration, not only mocked adapter forwarding.

Related PR: #3

## Problem PR #3 initializes the WebSocket client, but the actual React state and mutation paths remain browser-owned. `frontend/src/store.jsx` still loads and watches PouchDB, calls `applyOperation`, saves workspaces locally, and performs undo/redo against the browser database. The new control-plane adapters are isolated wrappers and are not used by `QuasarProvider`. This means Common Lisp is not authoritative for document or graph mutations despite the PR description claiming those paths are migrated. Found during review of PR #3. ## Required changes - Integrate the typed control-plane client directly into `QuasarProvider` or an equivalent durable-state provider. - Load the initial durable state from `workspace.snapshot`. - Route document create/update/delete through Common Lisp. - Route graph node/edge mutations and final position commits through Common Lisp. - Subscribe to authoritative events and update the local projection. - Keep visual-only state local: hover, menus, viewport animation, active editing buffers, panel dimensions. - Implement optimistic state only where rollback is complete. - On command failure, restore the prior projection and use the existing notice/error UI. - Do not silently fall back to PouchDB for operations declared migrated. - Clearly isolate remaining transitional browser-owned features. ## Acceptance criteria - Creating, updating, and deleting a document from the actual UI sends WebSocket commands. - Graph mutations from the actual UI send WebSocket commands. - Reloading restores migrated state from the Lisp snapshot. - PouchDB is not authoritative for migrated operations. - Tests exercise the real provider/store integration, not only mocked adapter forwarding. Related PR: #3
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/quasar#5
No description provided.