Advance uCode runtime, resilient workspaces, and Dev Mode readiness - #14
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
There are a few correctness/operational issues in the newly added workspace offline-save queueing and Feed sources API connection handling, plus some UI/button/style hardcoding that should be fixed before merge.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR advances uCore’s Dev Mode/readiness and uCode runtime workflows by adding a Feeds surface with backend ingestion/sync/rules, introducing resilient per-user editor workspaces (CRUD + offline replay + conflict handling), and expanding GridCore/uCode Teletext catalogue and golden-test coverage.
Changes:
- Add Feed workflows end-to-end (backend store + rules + Apple sync adapters + Workflow “Feeds” panel and promotion to tasks).
- Add persistent/resilient Workflow editor workspaces (tree load, bounded CRUD, drag/move, offline cache + queued saves, conflict detection) with unit/e2e coverage.
- Expand GridCore/uCode rendering + Teletext catalogue adapter and significantly broaden Playwright golden/interaction tests and docs.
File summaries
| File | Description |
|---|---|
| TODO.md | Updates high-level status ledger to reflect Dev Mode readiness plan and governance notes. |
| frontend-vue/vite.config.ts | Enables WebSocket proxying for /api during local dev. |
| frontend-vue/test/golden/README.md | Updates golden harness documentation for catalogue + Teletext fixtures. |
| frontend-vue/src/tasks/bangle-upgrade.tasks.ts | Marks a large set of Bangle/Dev tasks as done in the tracked ledger. |
| frontend-vue/src/surfaces/workflow/WorkflowSurface.vue | Adds Feeds tab + mobile workspace drawer integration + workspace save path. |
| frontend-vue/src/surfaces/workflow/panels/FeedsPanel.vue | New Feeds UI for querying, syncing sources, previewing/applying rules, promoting items to tasks. |
| frontend-vue/src/surfaces/developer/DeveloperSurface.vue | Switches Developer editor diff to repository-authoritative baseline/status and save revision tracking. |
| frontend-vue/src/surfaces/browserui/BrowserUISurface.vue | Persists research capture via API import and opens the persisted path in workflow editor. |
| frontend-vue/src/styles/gridcore.css | Adds focus/disabled/forced-colors/reduced-motion rules and coarse-pointer sizing variables. |
| frontend-vue/src/stores/workspace.ts | Implements resilient workspace tree/file CRUD, caching, queued offline saves, and conflict handling. |
| frontend-vue/src/stores/workspace.test.ts | Adds unit tests for workspace tree load/open, persistence, offline queueing, and conflict behavior. |
| frontend-vue/src/stores/workflow.ts | Adds the new feeds workflow tab metadata. |
| frontend-vue/src/stores/devMode.ts | Makes Dev Mode toggle resilient (loading state + localStorage fallback updates). |
| frontend-vue/src/skills/organisms/GlobalToolbar.vue | Adds a global Dev Mode toggle control in the toolbar. |
| frontend-vue/src/skills/molecules/editor/WorkspaceTreeNode.vue | Adds drag/drop + long-press context menu and emits move events. |
| frontend-vue/src/skills/molecules/editor/WorkspaceTree.vue | Adds workspace filtering/search, loading/error display, and root/folder drops for move. |
| frontend-vue/src/skills/molecules/editor/WebScraperModal.vue | Creates/selects workspace files via store CRUD and persists content immediately. |
| frontend-vue/src/skills/molecules/editor/UCodeEditor.vue | Plumbs diff status/repo-diff flags and resets dirty state on save revision increments. |
| frontend-vue/src/skills/molecules/editor/DiffEditorPanel.vue | Improves diff labeling/status display and removes hardcoded fallback styling values. |
| frontend-vue/src/layouts/AppShell.vue | Probes Dev Mode on mount for consistent global state. |
| frontend-vue/src/grid-core/teletext/index.ts | Re-exports Teletext catalogue helpers from a dedicated adapter module. |
| frontend-vue/src/grid-core/teletext/catalogue.ts | New Teletext catalogue adapter with strict payload normalization + library grouping. |
| frontend-vue/src/grid-core/teletext/catalogue.test.ts | Adds unit tests for Teletext catalogue normalization and grouping behavior. |
| frontend-vue/src/grid-core/seeds/load-layer-map.ts | Adds per-layer editable buffers and supports literal glyph cells and visibility filtering. |
| frontend-vue/src/grid-core/seeds/layers/world-map.json | Extends world map seed with multiple layers and literal glyph markers/labels/entities. |
| frontend-vue/src/grid-core/seeds/layer-map.ts | Extends layer-map schema for optional patterns, literal chars, visibility, opacity, blendMode, locked. |
| frontend-vue/src/grid-core/buffer.ts | Improves string/buffer conversions to be grapheme-aware (non-BMP/combined glyph safety). |
| frontend-vue/src/grid-core/tests/layer-map.test.ts | Updates tests for multi-buffer layer loading and new layer metadata/char behavior. |
| frontend-vue/src/composables/useEditorSurface.ts | Adds optional version field to editor files for workspace conflict-aware saves. |
| frontend-vue/e2e/golden.spec.ts | Major expansion: Teletext goldens + keypad interaction + catalogue mocks + dev diff + workspace + terminal reconnect + software library. |
| docs/specs/NANOCODER_VENDOR_INTEGRATION_PLAN_2026-08.md | Adds verification-gated vendor integration plan with explicit Phase 0 constraints. |
| docs/README.md | Links new Dev Mode readiness and Nanocoder plan docs. |
| docs/DEV_MODE_READINESS_2026-08-31.md | Adds readiness plan status, branch dispositions, and verification-gated vendor prework summary. |
| config/feed-rules.example.yaml | Provides example feed rules config for UDOS_HOME customization. |
| backend/tests/test_workspace_files.py | Adds backend tests for workspace CRUD, traversal rejection, filtering, moves, and conflict detection. |
| backend/tests/test_vendor_tool_contracts.py | Adds tests for inert vendor-tool request validation contracts. |
| backend/tests/test_ucode_runtime_adapter.py | Adds tests for uCode adapter route registration and active-checkout resolution. |
| backend/tests/test_health.py | Extends health test to assert uCode/editor routes are registered. |
| backend/tests/test_feed_store.py | Adds tests for processed/unprocessed feed queries and activity-task linkage behavior. |
| backend/tests/test_feed_rules.py | Adds tests for rules parsing/matching and bundled example rules discovery. |
| backend/tests/test_feed_api_validation.py | Adds tests for feed API validation and parameter clamping/handling. |
| backend/tests/test_developer_file_diff.py | Adds tests for repository-authoritative diff baselines across git states. |
| backend/tests/test_apple_feed_sync.py | Adds tests for macOS feed sync dedupe + planned adapter non-execution. |
| backend/schemas/activity.schema.sql | Adds external_id column to support upstream deduplication. |
| backend/app/services/workspace_files.py | New bounded workspace file service (tree/read/write/create/rename/move/delete with conflict + traversal protections). |
| backend/app/services/vendor_tool_contracts.py | New inert Pydantic validation models for verification-gated vendor tool requests. |
| backend/app/services/feed_workflow.py | Implements promotion of feed activity into markdown task workflow entries. |
| backend/app/services/feed_store.py | Adds schema migration for external_id, unique index, upsert/dedupe support, and processed filter. |
| backend/app/services/feed_rules.py | Adds a small auditable rules engine (load + evaluate) for feed-to-task proposals. |
| backend/app/services/apple_feed_sync.py | Adds explicit macOS Automation adapters for ingesting feed sources with permission-aware behavior. |
| backend/app/extensions/adapters/ucode_runtime_adapter.py | Improves runtime callable resolution and adds registration for session/info/library routes. |
| backend/app/core/snackbar.py | Ensures uCode runtime routes are registered during app startup as required product routes. |
| backend/app/api/routes.py | Adds workspace routes to the editor API and removes uCode route registration from this module. |
| backend/app/api/feed_api.py | Adds feed promote/rules/runtime/sources/sync endpoints and improves ingest/query validation. |
| backend/app/api/editor_api.py | Adds workspace tree and workspace file CRUD endpoints with conflict handling. |
| backend/app/api/developer_api.py | Implements repository-authoritative baseline selection for developer file diff endpoint. |
Review details
Suppressed comments (1)
frontend-vue/src/surfaces/workflow/WorkflowSurface.vue:58
- The close control is a without an explicit type; add type="button" to avoid default submit behavior in case this component is used inside a form.
- Files reviewed: 56/62 changed files
- Comments generated: 6
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Summary
Verification
Gates
Nanocoder remains blocked at provenance Phase 0. No binary, source/lock entry, capability, route, UI action, MCP tool, or scheduler registration is added.