ELNOR REPO READER TEXT MIRROR Original path: Current Specs/DOC22/DOC22 (UI) Q_UI_PAGE_INVENTORY_AND_DESIGN_TEMPLATE_R4.md Source repo: /Users/OpenClaw1/Elnor/Elnor Specs Git branch: main Git commit: dbaa25962edc11ab30e8d4ca1715f9ae5bf77331 Generated: 2026-06-09T01:23:58.539Z --- # Q Dashboard UI Page Inventory & Design Fill-In Template R4 **Date:** 2026-03-19 **Purpose:** Master inventory of every page, sub-page, tab, panel, modal, drawer, menu, and persistent UI element in the Q Dashboard and EC integration surfaces. Each section is a fill-in template: review each spec doc (DOC1-DOC20, ELNOR Core, Q Design Canonical) and fill in / revise what belongs on each surface. **How to use:** For each spec review session, search this doc for the relevant page/surface, add elements from that spec, and mark the source doc. **R4 changes:** DOC11 R14 alignment — PAGE 11 (Status) expanded with Runtime & Connectivity layout, reconnect/connection-log/truth-resolver actions, context-engine health card, mismatch log filter bar, indicator aggregate. PAGE 13 (Settings) expanded with Fast Mode controls, plugin ownership badges, credential source badges, auth profile removal modal, channel pairing challenges, Discord/WhatsApp control separation, ACP lifecycle/resume/roots, context-engine diagnostics. 26 Appendix U mutable controls mapped. 4 new destructive modals. 8 new badge types. **R3 changes:** PAGE 14 (Notes) rewritten for DOC20 R2 — NoteListPane removed (Browser Notes scope), block editor with TaskList/ActivityFeed/InlineThread/Bar blocks, +Module toolbar, @mention, /slash commands, Today note, ModulePreset CRUD, feed dormancy, AI preview accept/reject, comment reanchor, tracked change overlap resolve. PAGE 15 (Document Viewer) updated for RendererCapabilities, iframe sandbox, DocumentSelectionAICommand, version root_id/version_id, overflow rule. SURFACE 1 (Browser) updated for 7 scopes (Notes), 16 types, empty states, Recently Deleted, degraded badge. PAGE 5 (Projects) updated for background_instructions, current_spend, Duplicate. PAGE 13 (Settings) updated for Workspace section. PAGE 1 (Home) updated for Today Note shortcut. Persistent elements updated for new modals, toasts. --- ## PART 1: PAGE & SURFACE INVENTORY (FILLABLE) Every entry below has a standardized template. Fill in the sections as you review each spec. --- ### PAGE 1: HOME / DASHBOARD (MISSION CONTROL) **Route:** `/home` **File:** `apps/q-frontend/src/pages/HomePage.tsx` **Current status:** Built (v1.11.2) #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | NOW pane | Running tasks, active gates, real-time status | Current build | Built | | | NEXT pane | Upcoming scheduled items | Current build | Built | | | MEMORY pane | Memory status, pending rules count | Current build | Built | | | HEALTH pane | System health indicators, extraction quality | Current build | Built | | | TEAM pane | Recent Agent Forum posts | Current build | Built | | | Action Items section | Collapsible list of items needing attention | Current build | Built | | | Running Tasks section | Collapsible list of active tasks | Current build | Built | | | Upcoming Tasks section | Collapsible list of upcoming tasks | Current build | Built | | | Status Summary Row | Running count, gates count | Current build | Built | | | **Today Note shortcut** | "Open Today Note" button or card linking to `/notes/today` | DOC20 §6.2B (R1.7) | Spec'd | R3 addition | | | | | | | | _[Add new widgets here as specs add them]_ | | | | | #### Buttons & Actions | Element | Action / Target | Source Doc(s) | Status | Notes | |---|---|---|---|---| | "New Task" CTA | Opens task creation | Current build | Built | | | | | | | | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | | | | | Empty (no tasks) | | | | | Error (API failure) | | | | | Degraded (partial data) | | | | --- ### PAGE 2: INBOX **Route:** `/inbox` **File:** `apps/q-frontend/src/pages/InboxPage.tsx` **Current status:** Built (v1.11.2) #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Filter bar | Type, project, status, taint filters | Current build | Built | | | Inbox list | Pending approvals: rules, learning, promotions, rulebooks, gates | Current build | Built | | | Pending item drawer | Diff view, provenance, taint warnings, approve/reject | Current build | Built | | | | | | | | | _Capability proposal inbox item_ | Manifest diff, control-surface diff, source traces, approval actions | DOC3 R8 s1.1N | Spec'd | Not yet built | | _Connector auth broken item_ | Auth repair action | DOC3 R8 s1.1U | Spec'd | Not yet built | | _Skill import needs adapter item_ | Adapter request action | DOC3 R8 s1.1U | Spec'd | Not yet built | | _Promotion candidate ready item_ | Review and approve/reject promotion | DOC3 R8 s1.1U | Spec'd | Not yet built | | _Capability quarantined item_ | Quarantine notice, reprobe action | DOC3 R8 s1.1U | Spec'd | Not yet built | | | | | | | #### Inbox Item Types (Complete Registry) | Item Type | Description | Source Doc(s) | Status | |---|---|---|---| | Rule approval | New memory rule pending approval | DOC1/Current | Built | | Learning signal | Learning event pending review | DOC8/Current | Built | | Promotion candidate | Template promoted to skill | Current | Built | | Rulebook endorsement | Forum-endorsed rulebook | DOC6/Current | Built | | Gate approval | Task gate requiring approval | Current | Built | | Capability proposal | Teach-mode capability proposal | DOC3 R8 | Spec'd | | Connector auth broken | MCP auth failure notification | DOC3 R8 | Spec'd | | Skill import adapter needed | Imported skill needs adapter | DOC3 R8 | Spec'd | | Capability quarantined | Capability health alert | DOC3 R8 | Spec'd | | _[Add new inbox types as specs add them]_ | | | | #### Buttons & Actions | Element | Action / Target | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Approve button | Calls approve endpoint | Current build | Built | | | Reject button | Calls reject endpoint | Current build | Built | | | Filter pills | Filter by type/project/status/taint | Current build | Built | | | | | | | | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | Skeleton cards | | | | Empty (no pending items) | "All clear" message | | | | Error | Error banner | | | --- ### PAGE 3: CHATS **Route:** `/chats` **File:** `apps/q-frontend/src/pages/ChatsPage.tsx` **Current status:** Built (v1.11.2) #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Chat list sidebar | Search/filter conversations | Current build | Built | | | Agent filter dropdown | Filter by agent | Current build | Built | | | Project filter dropdown | Filter by project | Current build | Built | | | Status filter | Active/Archived | Current build | Built | | | Stars filter | All/Starred | Current build | Built | | | Sort options | Recent/oldest/alphabetical | Current build | Built | | | Chat cards | Preview, last message, timestamps | Current build | Built | | | Auto-archive indicator | 30-day indicator | Current build | Built | | | Message area | Message history with streaming | Current build | Built | | | Thinking blocks | Expandable/collapsible think output | Current build | Built | | | Model badges per message | Which model generated the response | Current build | Built | | | Golden-turn chips | "Remember..." / "Always/Never/From now on..." | Current build | Built | | | Message actions bar | Save as Task, Convert to Chain, Learn From This, feedback | Current build | Built | | | Freshness pill | Freshness verification status per response | Current build | Built | | | | | | | | | _Capability receipt chip_ | "Used SharePoint MCP", "Used local Word skill", etc. | DOC3 R8 s1.1U | Spec'd | Not yet built | | _"What can I do here?" card_ | Capability awareness from bridge + runtime availability | DOC3 R8 s1.1N | Spec'd | Not yet built | | | | | | | #### Chat Input Bar | Element | Action | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Message textarea | "Message Elnor..." | Current build | Built | | | Attach file button | Open file picker | Current build | Built | | | Add to memory button | Tag message for memory | Current build | Built | | | Voice input button | Microphone input | Current build | Built | | | Read aloud button | TTS for response | Current build | Built | | | Send button | Submit message | Current build | Built | | #### Chat Header | Element | Action | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Chat name/title | Display | Current build | Built | | | Model badge | Show active model | Current build | Built | | | Session Start toggle | On/Off | Current build | Built | | | Agent selector | Switch agent | Current build | Built | | | Model selector dropdown | Switch model | Current build | Built | | | Think Level cycle button | Low/Medium/High | Current build | Built | | | Context badge "CTX X%" | Context usage | Current build | Built | | | Copy messages button | Copy to clipboard | Current build | Built | | | Search chat (Ctrl+F) | In-conversation search | Current build | Built | | | More options (...) | Mute, Clear, Export, Pin, Archive | Current build | Built | | #### Modals & Drawers Triggered | Modal/Drawer | Trigger | Source Doc(s) | Status | |---|---|---|---| | TeachElnorModal | "Teach Elnor" action | Current build | Built | | FreshnessDetailsModal | Click freshness pill | Current build | Built | | MarkFrictionModal | Mark friction on message | Current build | Built | | _Capability receipt detail_ | Click receipt chip | DOC3 R8 | Spec'd | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | Skeleton messages | | | | Empty (no chats) | Welcome message | | | | Streaming | Typing indicator + character-by-character | | | | Error (send failure) | Error toast + retry | | | --- ### PAGE 4: ACTIVITY **Route:** `/activity` **File:** `apps/q-frontend/src/pages/GenericPage.tsx` (placeholder) **Current status:** Placeholder #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Timeline event log | Day-bucketed activity feed | Current build (QDashV11) | Legacy only | | | Event type filters | All, Attention, Tasks, Memory, CRS, Agents, Forum, System | Current build (QDashV11) | Legacy only | | | Sort options | Newest First | Current build (QDashV11) | Legacy only | | | Expandable entries | Click to show details | Current build (QDashV11) | Legacy only | | | | | | | | | _Capability learning events_ | Teach/promote/repair/quarantine entries | DOC3 R8 s1.1N | Spec'd | | | _MCP connector events_ | Connect/disconnect/auth-fail entries | DOC3 R8 | Spec'd | | | | | | | | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | | | | | Empty | | | | | Error | | | | --- ### PAGE 5: PROJECTS **Route:** `/projects` (list), `/projects/:id` (detail) **File:** `apps/q-frontend/src/pages/GenericPage.tsx` (placeholder) **Current status:** Placeholder — DOC20 R1.5 defines full project page redesign #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Project cards/list | All projects | Current build (QDashV11) | Legacy only | | | Tab navigation | All / Active / Archived | Current build (QDashV11) | Legacy only — replaced by DOC20 tab set | | Project detail drawer | Status, deadlines, active chains | Current build (QDashV11) | Legacy only | | | "+ New Project" button | Create project | Current build (QDashV11) | Legacy only | | | | | | | | | _Project source binding display_ | OneDrive/SharePoint/local binding | DOC3 R8 s1.1T | Spec'd | | | _Connected connectors badge_ | Which MCP connectors serve this project | DOC3 R8 | Spec'd | | | | | | | | | **Project page tab set** | Connected box style: Home, Documents, Activity, Project Context, Configure | DOC20 §4.3 | Spec'd | Replaces legacy tab navigation | | **Home tab** | Full notes workspace scoped to project's notes (reuses NoteListPane + NoteEditor) | DOC20 §4.3.2 | Spec'd | Default tab on project open | | **Documents tab** | All / Notes / Generated / External subtabs with project-scoped items | DOC20 §4.4 | Spec'd | | | **Activity tab** | Timeline of project actions (chat messages, task completions, note edits, artifact creation) | DOC20 §4.5 | Spec'd | | | **Project Context tab** | DOC7 bucket display — primary bucket + attached shared buckets, source badges, detach. R3: `background_instructions` editable textarea (DOC20 §4.6.3 R2) | DOC20 §4.6, R2 | Spec'd | R3: background_instructions added | | **Configure tab** | Name/description edit, color picker, default agent, overlay assignment, budget, membership, archive/delete. R3: `current_spend_usd` read-only display (DOC20 §4.7.7 R2), Duplicate button (ProjectDuplicateCommand, DOC20 R2) | DOC20 §4.7, R2 | Spec'd | R3: 2 new fields/actions | | **Project page header** | Project name + color dot + description + member count + active chat count. R3: `current_spend_usd` in header (DOC20 R2) | DOC20 §4.2, R2 | Spec'd | | | **Project Home empty state** | "No project notes yet" + [Create Project Note] + quick links | DOC20 §5.9 (R2) | Spec'd | R3 addition | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | | | | | Empty | | | | | Error | | | | --- ### PAGE 6: TASKS **Route:** `/tasks` **File:** `apps/q-frontend/src/pages/TasksPage.tsx` **Current status:** Built (v1.11.2) #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Filter tabs | All, Running, Needs Review, Scheduled, Completed, Stopped, My Tasks, Templates, Automations | Current build | Built | | | Agent filter dropdown | Filter by agent | Current build | Built | | | Project filter dropdown | Filter by project | Current build | Built | | | Sort options | Various sort fields | Current build | Built | | | Task list/table | Name, agent, project, status, priority, due date | Current build | Built | | | "Hide Completed" button | Toggle completed visibility | Current build | Built | | | Task editor drawer | 4-phase: Form/Configure/Context/Deliver | Current build | Built | | | Chain flow diagram viewer | Visual chain editor | Current build | Built | | | "+ New Task" button | Create task | Current build | Built | | | | | | | | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | | | | | Empty (no tasks) | | | | | Error | | | | --- ### PAGE 7: MEMORY **Route:** `/memory` **File:** `apps/q-frontend/src/pages/MemoryPage.tsx` **Current status:** Built (v1.11.2) #### Sub-Tabs (15 total) | Tab Name | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Memories | Core memory entries + filters | DOC1/Current | Built | | | Documents | Indexed document catalog | DOC1/Current | Built | | | Processes | Learned processes + confidence | Current | Built | | | CRS Events | Context Resilience System log | Current | Built | | | Standing Orders | Global context rules | DOC1/Current | Built | | | Corrections | Override rules for mistakes | DOC1/Current | Built | | | Pending | Awaiting approval items | Current | Built | | | Gaps | Memory gap detection + "Teach Elnor" | Current | Built | | | QMD Deep Search | Full-text memory search | Current | Built | | | Relations | One-hop memory graph | Current | Built | | | Learning | Learning loop dashboard | DOC8/Current | Built | | | Flush / CRS | Session start context + flush | Current | Built | | | Activity | Extraction pipeline monitoring | Current | Built | | | Freshness | Fact freshness policy | DOC2/Current | Built | | | Snapshots | Memory snapshots viewer | Current | Built | | | | | | | | | _[Spec additions below]_ | | | | | | _Capability Registry sub-tab?_ | View all capability manifests + health | DOC3 R8 | Consider | May go in Settings instead | #### Filters on Memories Tab | Filter | Options | Source Doc(s) | Status | |---|---|---|---| | Category | All, Forum-Endorsed, Auto-Extracted, Decaying, Archived, Untrusted | Current | Built | | Tier | Dropdown | Current | Built | | Source | Dropdown | Current | Built | | Maturity | Dropdown | Current | Built | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | | | | | Empty (per tab) | | | | | Error | | | | --- ### PAGE 8: LEARNING **Route:** `/learning` **File:** `apps/q-frontend/src/pages/LearningPage.tsx` **Current status:** Built (v1.11.2) #### Sub-Tabs (2 currently) | Tab Name | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Timeline | Learning events timeline, quality score | DOC8/Current | Built | | | Friction | Friction table, severity, repairs | DOC8/Current | Built | | | | | | | | | _Learning Timeline (capability)_ | Teaching sessions, promotions, repairs, quarantines, reprobes | DOC3 R8 s1.1N | Spec'd | May merge with existing timeline or be a third tab | #### Cards & Widgets | Widget | Description | Source Doc(s) | Status | |---|---|---|---| | Quality Score badge | Learning quality metric + "why" tooltip | Current | Built | | Morning Brief / Learning Digest | Daily learning summary | Current | Built | | "Night Thoughts" card | Overnight learning insights | Current | Built | | Transition Proposals card | Template maturity transitions | Current | Built | | Pruning Preview card | Items scheduled for pruning | Current | Built | | Broken Citations card | Broken references | Current | Built | | Gap Suggestions card | Memory gap recommendations | Current | Built | | "Run Nightly Loop" button | Manual trigger for nightly processing | Current | Built | | Impact Ledger cards | Learning impact tracking | Current | Built | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | | | | | Empty (no learning events) | | | | | Error | | | | --- ### PAGE 9: AGENTS **Route:** `/agents` **File:** `apps/q-frontend/src/pages/GenericPage.tsx` (placeholder) **Current status:** Placeholder #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Agent list/cards | All agents with status | Current build (QDashV11) | Legacy only | | | "+ Create Agent" button | Create new agent | Current build (QDashV11) | Legacy only | | | Agent detail view | 8 sub-tabs (see below) | Current build (QDashV11) | Legacy only | | #### Agent Detail Sub-Tabs (8) | Tab | Description | Source Doc(s) | Status | |---|---|---|---| | General | Name, role, default model, think level, costs, fallback chain | Current | Legacy | | Models | Primary model, reasoning, temperature, max tokens, context window | Current | Legacy | | Cost | Per-agent cost controls | Current | Legacy | | Forum | Forum participation rules | DOC6/Current | Legacy | | Permissions | File system, internet, tools, task creation, agent modification | Current | Legacy | | Performance | Running/waiting/completed stats, recent tasks | Current | Legacy | | Personality | SOUL.md editing | Current | Legacy | | Memory | Per-agent memory settings | DOC1/Current | Legacy | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | | | | | Empty (no agents) | | | | | Error | | | | --- ### PAGE 10: FORUM / PANELS **Route:** `/forum` **File:** `apps/q-frontend/src/pages/GenericPage.tsx` (placeholder) **Current status:** Placeholder #### Sub-Tabs (2) | Tab | Description | Source Doc(s) | Status | |---|---|---|---| | Forum | Thread list, search, new thread | DOC6/Current | Legacy | | Panels | Agent coordination panels | DOC6/Current | Legacy | #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Thread list | Recent/All filters, search | DOC6 | Legacy | | | Thread view | Posts, voting, responses | DOC6 | Legacy | | | Panel detail view | Config, assigned agents, results | DOC6 | Legacy | | | Panel creation wizard | Multi-step panel creation | DOC6 | Legacy | | | "+ New Thread" button | Create thread | DOC6 | Legacy | | | "+ New Panel" button | Create panel | DOC6 | Legacy | | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | | | | | Empty | | | | | Error | | | | --- ### PAGE 11: STATUS / RUNTIME & CONNECTIVITY (R4 — DOC11 R14 expansion) **Route:** `/status` **File:** `apps/q-frontend/src/pages/StatusPage.tsx` **Current status:** R4: expanded per DOC11 R14 §10, DOC21 R7 §A.2 #### Layout (DOC11 R14 / DOC21 R7) ```text ┌────────────────────────────────────────────────────────────────────────────┐ │ SUMMARY STRIP: Gateway | Runtime Aggregate | Search | Streams | Issues │ ├────────────────────────────────┬───────────────────────────────────────────┤ │ LEFT COLUMN │ RIGHT COLUMN │ │ - GatewayConnectionCard │ - AuthIssueLogCard │ │ - RemoteGatewayConnectionCard? │ - MismatchFallbackSummaryCard │ │ - ActiveScopesTable │ - SearchRuntimeCard │ │ - LocalProviderRuntimeGrid │ - StreamHealthCard │ │ - CurrentExecutionSummaryCard │ - RecentAbortsCard │ │ - DualConnectionDiagCard │ - RuntimeSnapshotRefreshNotice? │ │ - ContextEngineHealthCard (R4) │ │ ├────────────────────────────────┴───────────────────────────────────────────┤ │ DIAGNOSTICS TABS: [Truth Resolver] [Capability] [Context] [Events] │ └────────────────────────────────────────────────────────────────────────────┘ ``` #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Services table | SERVICE, STATUS, DETAIL, PING columns | Current build (QDashV11) | Legacy only | | | Service rows | Q Backend, Inbox Feed, Task Feed, Chat Feed, Provider Catalog | Current | Legacy | | | Health indicators | Connected/Degraded/Offline | Current | Legacy | | | | | | | | | _OpenClaw Integration status row_ | Browser, relay, bridge health | DOC3 R8 | Spec'd | | | _MCP connector health rows_ | Per-connector health status | DOC3 R8 | Spec'd | | | | | | | | | **Summary strip** | Gateway, Runtime Aggregate, Search, Streams, Issues indicators | DOC11 R14 §10.2, DOC21 R7 | Spec'd | R4 addition | | **GatewayConnectionCard** | Connection state, session state, binding info | DOC11 R14 §10.8 | Spec'd | R4 addition | | **RemoteGatewayConnectionCard** | Remote mode state, URL, token source kind, token direct-use state | DOC11 R14 §4A.21A | Spec'd | R4: shown when remote mode available | | **SearchRuntimeCard** | search_enabled, provider_id, provider_mode, compatibility_path, fallback_state, last probe. Auto-detect vs Configured badge. | DOC11 R14 §4B | Spec'd | R4 addition | | **LocalProviderRuntimeGrid** | Per-provider health, VRAM, loaded models, plugin ownership badge | DOC11 R14 §4A.31 | Spec'd | R4 addition | | **CurrentExecutionSummaryCard** | Model, provider, search mode, fast_mode_effective, service_tier_effective, ACP provenance badge | DOC11 R14 §4.7 | Spec'd | R4 addition | | **ContextEngineHealthCard** | engine_id, owns_compaction, compaction_delegation_mode, root_memory_bootstrap, health_state | DOC11 R14 §6.16A, RL-054 | Spec'd | R4 addition | | **IndicatorAggregateStrip** | active_scope_count, verified_count, degraded_count, auth_issue_count, orphaned_count | DOC11 R14 RL-003 | Spec'd | R4 addition | | **MismatchFallbackSummaryCard** | Summary with time range selector, fallback count, provider breakdown | DOC11 R14 §10.10 | Spec'd | R4 addition | #### Buttons & Actions (R4 additions) | Element | Action / Target | Source Doc(s) | Status | Notes | |---|---|---|---|---| | **[Reconnect]** | `POST /api/openclaw/runtime/reconnect` with scope selector | DOC11 R14 §10.8A | Spec'd | R4 addition | | **[View Connection Log]** | `GET /api/openclaw/runtime/connection-log` | DOC11 R14 §10.8A | Spec'd | R4 addition | | **[Open Truth Resolver]** | `GET /api/openclaw/runtime/truth-resolver` | DOC11 R14 | Spec'd | R4 addition | | **[View Protected Files]** | `GET /api/openclaw/context/protected-files` | DOC11 R14 | Spec'd | R4 addition | | **Mismatch log filter dropdowns** | Time range, scope, runtime mode, provider, search provider — query params on `GET /api/openclaw/runtime/mismatch-fallback-log` | DOC11 R14 | Spec'd | R4 addition | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | Skeleton cards in both columns | | R4: skeleton for new cards | | All healthy | Green indicators across summary strip | | | | Degraded | Yellow with detail per card | | | | Error/Offline | Red with remediation per card | | | | Context engine unavailable | ContextEngineHealthCard shows unavailable + reason | DOC11 R14 | R4 addition | --- ### PAGE 12: COST DASHBOARD **Route:** `/cost` **File:** `apps/q-frontend/src/pages/GenericPage.tsx` (placeholder) **Current status:** Placeholder #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Date range selector | Today/This Week/This Month/Custom | DOC13/Current | Legacy | | | Overview | Total spend, daily breakdown | DOC13/Current | Legacy | | | Debug Events mode | Event-level cost tracking | DOC13/Current | Legacy | | | Cost by Agent | Per-agent breakdown | DOC13/Current | Legacy | | | Cost by Model | Per-model breakdown | DOC13/Current | Legacy | | | Pricing Sources table | Model, Provider, Input $/1M, Output $/1M | DOC13/Current | Legacy | | | Manage Overrides form | Override per-model pricing | DOC13/Current | Legacy | | | Budget controls | Amount, period, alert threshold, auto-pause | DOC13/Current | Legacy | | | Emergency Cost Freeze button | Immediately halt all spend | DOC13/Current | Legacy | | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | | | | | Empty (no usage) | | | | | Error | | | | --- ### PAGE 13: SETTINGS **Route:** `/settings/*` **File:** `apps/q-frontend/src/pages/SettingsPage.tsx` **Current status:** Built (v1.11.2) with 6 sub-routes #### Settings Sub-Pages / Tabs **TAB 13A: General** (`/settings`) | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Timezone | Select dropdown | Current | Built | | | Supervised Gateway Mode | Toggle | Current | Built | | | Appearance | Light/Dark/System selector | QDashV11 | Legacy | | | Language | Select dropdown | QDashV11 | Legacy | | | Default Project | Dropdown | QDashV11 | Legacy | | | Default Agent Email | Text input | QDashV11 | Legacy | | **TAB 13B: Knowledge Freshness** (`/settings/knowledge-freshness`) | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Auto search | Toggle | DOC2/Current | Built | | | Legal mode | Toggle | DOC2/Current | Built | | | Token cap | Number input | DOC2/Current | Built | | | Search provider | Select | DOC2/Current | Built | | | Model registry | Form | DOC2/Current | Built | | | Source tiers | Form | DOC2/Current | Built | | **TAB 13C: OpenClaw Integration** (`/settings/openclaw-integration`) | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Integration report | Display card | Current | Built | | | Run Smoke Test | Button | Current | Built | | | Fix Integration | Button (shows plan + approval) | Current | Built | | | Edit Connection | Button (diff editor) | Current | Built | | | _Managed browser status_ | Display + controls | DOC3 R8 | Spec'd | | | _Relay status_ | Display | DOC3 R8 | Spec'd | | | _Node status_ | Display | DOC3 R8 | Spec'd | | | _Bridge health_ | Display | DOC3 R8 | Spec'd | | | _Smoke test state_ | Display | DOC3 R8 | Spec'd | | **TAB 13D: Remote Access** (`/settings/remote-access`) | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Token list | Table (label, last used) | Current | Built | | | Create token | Button + display-once modal | Current | Built | | | Rotate token | Button | Current | Built | | | Revoke token | Button | Current | Built | | | Remote write enabled | Toggle (default OFF) | Current | Built | | **TAB 13E: Watchers** (`/settings/watchers`) | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Watcher health | Display (events/sec, backlog) | Current | Built | | | Pause indexing | Toggle | Current | Built | | **TAB 13F: Forum Attachments** (`/settings/forum-attachments`) | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Max attachment size | Display | DOC6/Current | Built | | | Allowed types | List | DOC6/Current | Built | | | Scan enabled | Toggle | DOC6/Current | Built | | | Taint policy | Display | DOC6/Current | Built | | **NEW TAB (from specs): Skills & Connectors** (`/settings/skills-connectors`) | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | _Import Skill Bundle button_ | Button + wizard | DOC3 R8 s1.1P | Spec'd | | | _Skill list / installed skills_ | Table/cards | DOC3 R8 | Spec'd | | | _Connector states_ | Per-connector cards | DOC3 R8 s1.1U | Spec'd | | | _Provider toggles_ | Toggle per provider | DOC3 R8 s1.1R | Spec'd | | | _Global Allow MCP toggle_ | Master toggle | DOC3 R8 s1.1R | Spec'd | | | _Per-provider MCP toggles_ | Toggle per: OpenAI, Anthropic, Codex | DOC3 R8 s1.1R | Spec'd | | | _Per-server state_ | Enabled/Disabled/Ask First per server | DOC3 R8 s1.1R | Spec'd | | | _Per-tool override_ | Toggle for sensitive actions | DOC3 R8 s1.1R | Spec'd | | | _Recent MCP receipts_ | Receipt list | DOC3 R8 s1.1U | Spec'd | | | _Auth/health repair actions_ | Per-connector repair buttons | DOC3 R8 s1.1U | Spec'd | | **NEW TAB: Providers & Models** (`/settings/providers`) — R4: DOC11 R14 expansion | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Model selector (current model) | Dropdown | DOC11 R14 §4.5, Appendix U | Spec'd | `POST /api/openclaw/runtime/control-mutations` | | Think level | Dropdown | DOC11 R14 §4.5 | Spec'd | | | Reasoning mode | Dropdown | DOC11 R14 §4.5 | Spec'd | | | Reasoning visibility | Dropdown | DOC11 R14 §4.5 | Spec'd | | | Verbose level | Dropdown | DOC11 R14 §4.5 | Spec'd | | | **Fast Mode** | Dropdown (inherit/on/off) | DOC11 R14 §4.5 RL-049 | Spec'd | R4 addition. Show `Unsupported` when unknown. Event: `gateway.control.fast_mode.changed` | | Temperature | Number input (settings-only badge) | DOC11 R14 §0.6B | Spec'd | | | Max output tokens | Number input (settings-only badge) | DOC11 R14 §0.6B | Spec'd | | | Delete Model | Button (destructive modal) | DOC11 R14 §4.14, Appendix U | Spec'd | BackupRecommendationBlock | | Save execution policy | Button | DOC11 R14 §4.15B, Appendix U | Spec'd | | | **Plugin ownership badge** | Read-only badge per catalog entry | DOC11 R14 RL-048 | Spec'd | R4 addition. core/bundled/third-party/manual/unknown | | **Credential source badge** | Read-only badge per auth profile | DOC11 R14 RL-051 | Spec'd | R4 addition. Env Variable/CLI Managed/Secret Vault/Plugin Managed/Gateway Store | | **Remove Profile** | Button (destructive modal with binding strategy) | DOC11 R14 RL-051 | Spec'd | R4 addition. `active_binding_strategy` selector | | **Set Default** | Button | DOC11 R14 RL-058 | Spec'd | R4 addition. `POST .../auth/set-default` | | **Fix Scope** | Button | DOC11 R14 RL-058 | Spec'd | R4 addition. `POST .../auth/fix-scope` | | Service tier display | Read-only | DOC11 R14 RL-049 | Spec'd | R4 addition. auto/standard/priority/unknown | **NEW TAB: Local / Self-Hosted Providers** (`/settings/local-providers`) — R4: DOC11 R14 expansion | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Provider config (name, runtime kind, API family, base URL, discovery mode) | Form fields | DOC11 R14 §4A.31 | Spec'd | `PUT .../local-runtime-configs/:provider_id` | | **[Probe Runtime]** | Button | DOC11 R14, Appendix U | Spec'd | `POST .../probe`. Returns vram, loaded models | | **[Sync Catalog]** | Button | DOC11 R14 | Spec'd | | | **Model metadata overrides** | Form (context window, max tokens, reasoning, tool support, modalities, cost policy) | DOC11 R14 RL-055 | Spec'd | R4 addition. `PUT/DELETE .../models/:ref/metadata` | | **Plugin ownership badge** | Read-only badge | DOC11 R14 RL-048 | Spec'd | R4 addition | | Save / Delete provider | Buttons (delete = destructive) | DOC11 R14 | Spec'd | BackupRecommendationBlock on delete | **NEW TAB: Web Search** (`/settings/web-search`) — R4: DOC11 R14 expansion | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Provider config (enabled, mode, timeout, max results) | Form fields | DOC11 R14 §4B | Spec'd | `PUT .../provider-configs/:provider_id` | | **[Test Search]** | Button | DOC11 R14, Appendix U | Spec'd | R4. `POST .../web-search/test`. Graceful empty ≠ error | | **[Probe]** | Button | DOC11 R14 | Spec'd | | | Delete config | Button (destructive) | DOC11 R14 | Spec'd | | | Fallback chain | Reorderable list | DOC11 R14 §4B.15 | Spec'd | | | **Plugin ownership badge** | Read-only | DOC11 R14 RL-048 | Spec'd | R4 addition | | **Auto-detect vs Configured badge** | Read-only on effective provider | DOC11 R14 RL-009 | Spec'd | R4 addition | | **Compatibility path badge** | Native / Compatibility mode: | DOC11 R14 RL-009 | Spec'd | R4 addition | | Neutral alphabetical ordering | Display rule | DOC11 R14 §0.6B | Spec'd | Never imply fallback priority | **NEW TAB: Channels** (`/settings/channels`) — R4: DOC11 R14 expansion | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | **Discord: Clear Token** | Button (destructive modal) | DOC11 R14 RL-043 | Spec'd | R4 addition | | **Discord: Disconnect Bot** | Button | DOC11 R14 RL-043 | Spec'd | R4 addition. NOT "Logout" | | **Discord: Add/Edit Rule** | Button → rule editor | DOC11 R14 RL-061 | Spec'd | R4 addition | | **Discord: Delete Rule** | Button (destructive) | DOC11 R14 RL-061 | Spec'd | R4 addition | | **Discord: Probe** | Button | DOC11 R14 | Spec'd | R4 addition | | **WhatsApp: Start Login** | Button → QR flow | DOC11 R14 RL-043 | Spec'd | R4 addition | | **WhatsApp: Cancel Login** | Button | DOC11 R14 | Spec'd | R4 addition | | **WhatsApp: Refresh QR** | Button | DOC11 R14 RL-050 | Spec'd | R4 addition | | **WhatsApp: Relink** | Button | DOC11 R14 RL-043 | Spec'd | R4 addition | | **WhatsApp: Logout** | Button (destructive) | DOC11 R14 RL-043 | Spec'd | R4 addition | | **WhatsApp: Refresh State** | Button (probe) | DOC11 R14 | Spec'd | R4 addition | | **Channel pairing challenge** | QR display / code / OAuth URL | DOC11 R14 RL-050 | Spec'd | R4 addition. `ChannelPairingChallenge` schema | | Approve/Reject pairing | Buttons | DOC11 R14 §4D.7 | Spec'd | | **NEW TAB: ACP / External Harnesses** (`/settings/acp`) — R4: DOC11 R14 expansion | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | **Save ACP Profile** | Button | DOC11 R14, Appendix U | Spec'd | R4. `PUT .../profiles/:profile_id` | | **Delete ACP Profile** | Button (destructive) | DOC11 R14 | Spec'd | | | **Run Doctor** | Button | DOC11 R14 §4C | Spec'd | | | Harness selector | Dropdown | DOC11 R14 §4C | Spec'd | | | Session style | Dropdown (persistent/oneshot) | DOC11 R14 §4C | Spec'd | | | Model selector | Dropdown | DOC11 R14 §4C | Spec'd | | | Permissions | Dropdown | DOC11 R14 §4C | Spec'd | | | Timeout | Number input | DOC11 R14 §4C | Spec'd | | | **Working directory** | OS-native directory picker | DOC11 R14 RL-042 | Spec'd | R4 addition. `apply_mode` badge per root | | **Additional roots** | Add/remove list with apply_result badges | DOC11 R14 RL-042/053 | Spec'd | R4 addition | | **[View Session]** | Button → session detail | DOC11 R14 RL-053 | Spec'd | R4 addition | | **[Resume]** | Button | DOC11 R14 RL-042 | Spec'd | R4 addition. `POST .../sessions/:key/resume` | | **[Cancel]** | Button (destructive modal) | DOC11 R14 | Spec'd | R4 addition. "In-flight work may be lost" | | **[View Full Log]** | Button → session history | DOC11 R14 RL-060 | Spec'd | R4 addition | | **Fast Mode for ACP** | Dropdown (when harness supports) | DOC11 R14 RL-049 | Spec'd | R4 addition | **NEW TAB: Context & Budget** (`/settings/context`) — R4: DOC11 R14 expansion | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Budget profile selector | Dropdown | DOC11 R14 §6.10 | Spec'd | `PUT /api/openclaw/context/budget-settings` | | Spillover allowance | Config (mode: fixed/percentage, value) | DOC11 R14 RL-055 | Spec'd | R4 addition | | Soft/hard cap | Number inputs | DOC11 R14 | Spec'd | | | **[View Protected Files]** | Button | DOC11 R14 RL-055 | Spec'd | R4 addition. `GET .../context/protected-files` | | **[Run Context Dry-Run]** | Button | DOC11 R14 §6 | Spec'd | `POST .../context/explain` | | **Context-engine diagnostics** | Display card | DOC11 R14 RL-054 | Spec'd | R4 addition. Compaction mode, bootstrap source, health | **NEW TAB: Notes & Workspace** (`/settings/notes`) — R3: renamed from "Notes" | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Default Note Advisor | Agent selector dropdown | DOC20 §6.15.8 | Spec'd | Default: Elnor. Controls bubble menu + toolbar AI | | Today note auto-generate | Toggle | DOC20 R2 (DOC20SettingsUpdateCommand) | Spec'd | R3 addition | | Rollover time | Time picker (HH:MM) | DOC20 R2 §6.2B.2 | Spec'd | R3 addition. Default: midnight (00:00) per DOC20 R2 | | Today Template | Link to template note | DOC20 §6.2B.4 | Spec'd | R3 addition. Opens template note in editor | | | | | | | **NEW TAB: Document Viewer** (`/settings/document-viewer`) | Setting | Control Type | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Default Review Agent | Agent selector dropdown | DOC20 R1.5 §6.16.8 | Spec'd | Default: Elnor. Controls Send to Agent + bubble menu | | | | | | | --- ### PERSISTENT ELEMENTS (Always Visible) #### TOP BAR / HEADER | Element | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | ELNOR Q logo | Top-left branding | Current | Built | | | Project selector | "Project: Unscoped" dropdown | Current | Built/Legacy | | | Hamburger menu | Collapse/expand sidebar | Current | Built | | | Search / Command Palette (Cmd+K) | Global command search | Current | Built/Legacy | | | Hands badge | "Hands: Online/Offline" | Current | Built/Legacy | | | EC badge | "EC: Online/Offline" | Current | Built/Legacy | | | Model status | Active model + think level + pending | Current | Built/Legacy | | | CRS button | Opens context budget popover | Current | Built/Legacy | | | CTX button | Context details | Current | Built/Legacy | | | Notifications bell | Open notifications | Current | Built/Legacy | | | Settings gear | Navigate to settings | Current | Built/Legacy | | | RealtimeStatusPill | WebSocket connection indicator | Current | Built | | | AutomationHealthPill | Automation/permission health | Current | Built | | | Chat pane toggle | Show/hide chat split-pane | Current | Built | | | STOP button | Opens TieredStopModal | Current | Built | | | | | | | | | _Automation Health pill (DOC3)_ | Missing permissions, browser attachment, app status, relay | DOC3 R8 s1.1N | Spec'd | Extends existing AutomationHealthPill | #### LEFT SIDEBAR | Element | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | ELNOR Q branding | Logo/title at top | Current | Built | | | Nav items (14) | Home, Inbox, Chats, Activity, Projects, Tasks, Memory, **Notes**, Learning, Agents, Forum/Panels, Status, Cost, Settings | Current + DOC20 | Built + Spec'd | Notes added between Memory and Learning per DOC20 R1.5 | | Active state highlight | Current route highlighted | Current | Built | | | **Browser column toggle** | Columns icon in sidebar header — opens/closes the Browser column. Shortcut: `⌘+B` / `Ctrl+B` | DOC20 §3.1, R1.6 | Spec'd | New persistent toggle. R3: shortcut added | | Conversations section | Workspace grouping, per-conversation actions | QDashV11 | Legacy | | | Cost footer | "$0.00 / $25.00 day" | QDashV11 | Legacy | | #### MODALS (Global, can appear from any page) | Modal | Trigger | Source Doc(s) | Status | |---|---|---|---| | TieredStopModal | STOP button in header | Current | Built | | PermissionsDrawer | AutomationHealthPill click | Current | Built | | FreshnessDetailsModal | FreshnessPill click | Current | Built | | TeachElnorModal | "Teach Elnor" action in chat | Current | Built | | MarkFrictionModal | Friction marking action | Current | Built | | Command Palette | Cmd+K | QDashV11 | Legacy | | _SkillImportWizard_ | Import Skill Bundle button (Settings) | DOC3 R8 | Spec'd | | _CapabilityProposalReviewModal_ | Inbox item click | DOC3 R8 | Spec'd | | _ConnectorAuthRepairModal_ | Connector repair action | DOC3 R8 | Spec'd | | **NoteDeleteConfirmModal** | Delete note with children/comments | DOC20 R2 §6.15.14 | Spec'd | R3 addition | | **TrackedChangeOverlapModal** | PENDING_CHANGE_OVERLAP error — 3 options (Keep mine/Keep theirs/Keep both) | DOC20 §6.10.9 R2 | Spec'd | R3 addition | | **EmptyRecentlyDeletedModal** | "Empty Recently Deleted" bulk purge | DOC20 R2 | Spec'd | R3 addition | | **SaveAsPromptModal** | Save as Prompt toolbar action — Title, Description, Category, Tags | DOC20 §6.15.16 R1.6 | Spec'd | R3 addition | | **AddToProjectModal** | "Add to Project" from context menu or Configure tab — search, type filter chips, multi-select, project-conflict toggle | DOC20 §4.7.3 | Spec'd | R3 addition | | **AuthProfileRemoveModal** | Remove auth profile — shows provider, profile, impacted scopes, binding strategy selector (block/switch/force), replacement picker, confirmation phrase | DOC11 R14 RL-051 | Spec'd | R4 addition | | **DiscordClearTokenModal** | Clear Discord bot token — destructive, requires confirmation | DOC11 R14 RL-043 | Spec'd | R4 addition | | **DiscordRuleDeleteModal** | Delete Discord rule — destructive | DOC11 R14 RL-061 | Spec'd | R4 addition | | **AcpSessionCancelModal** | Cancel ACP session — "In-flight work may be lost" — [Cancel Session] [Keep Running] | DOC11 R14 | Spec'd | R4 addition | #### DRAWERS (Global, slide from right) | Drawer | Trigger | Source Doc(s) | Status | |---|---|---|---| | PermissionsDrawer | AutomationHealthPill | Current | Built | | FrictionDetailDrawer | Friction row click | Current | Built | | Task editor drawer | Task create/edit | Current | Built | | Document detail drawer | Document row click in Memory | QDashV11 | Legacy | | _Capability detail drawer_ | Capability card click | DOC3 R8 | Spec'd | | _Receipt detail drawer_ | Receipt chip click | DOC3 R8 | Spec'd | | **ManageMembersDrawer** | Manage Members button in Project Configure tab | DOC20 §4.7.3A | Spec'd | R3 addition. Search, item list per type, remove, add | | **VersionHistoryDrawer** | Version History toolbar button (Notes) or "View all versions" link (Viewer, >50 versions) | DOC20 §6.3.6 | Spec'd | R3 addition | #### TOAST / NOTIFICATION SYSTEM | Toast Type | Trigger | Source Doc(s) | Status | |---|---|---|---| | "Command submitted" | Approve/reject action | Current | Built | | "Saved" confirmation | Memory save | Current | Built | | Error message | API failure | Current | Built | | "Using fallback; updates may be delayed" | Realtime degraded | Current | Built | | Disconnected banner | >60s disconnected | Current | Built | | _"Connector unavailable"_ | MCP health failure | DOC3 R8 | Spec'd | | _"Skill imported"_ | Successful skill import | DOC3 R8 | Spec'd | | _"Copied"_ | Copy all / Copy reference | DOC20 R1.5 | Spec'd | Document Viewer, Notes | | _"Ref copied"_ | Copy Reference action | DOC20 R1.5 | Spec'd | | | _"Saved"_ / _"Saved 2m ago"_ | Note autosave indicator (toolbar, not toast) | DOC20 §6.3.3 | Spec'd | Toolbar indicator, not a toast | | _"Sent to {Agent}"_ | Per-comment send or bubble menu Ask | DOC20 R1.5 | Spec'd | | | _"{Agent} made changes to this note"_ | Agent edit arrives while user editing | DOC20 §6.3.5A | Spec'd | | | _"All accepted" / "All rejected"_ | Accept All / Reject All tracked changes | DOC20 R1.5 | Spec'd | | | _"Added to {Folder}"_ | Drag item to folder in browser overlay | DOC20 R1.5 §3.20 | Spec'd | | | _"Folder created" / "Folder deleted"_ | Folder operations in browser or notes | DOC20 R1.5 | Spec'd | | | _"Archived" / "Permanently deleted"_ | Archive/delete note or browser item | DOC20 R1.5 | Spec'd | | | _"Place removed"_ | Remove place from Places scope | DOC20 R1.5 §3.24 | Spec'd | | | _"View saved"_ | Save view from browser | DOC20 R1.5 §3.23 | Spec'd | | | **"Today note has rolled over. [Open new Today note]"** | TodayNoteRolloverCommand completes while old note is open | DOC20 §6.2B.5A R2 | Spec'd | R3 addition | | **"Saved as prompt: {title}"** | Save as Prompt confirmed | DOC20 §6.15.16 R1.6 | Spec'd | R3 addition | | **"{Item} restored"** | Restore from Recently Deleted | DOC20 R2 | Spec'd | R3 addition | | **"{N} items permanently deleted"** | Empty Recently Deleted confirmed | DOC20 R2 | Spec'd | R3 addition | | **"1 comment lost its anchor. [View in comments]"** | Save creates orphaned comments | DOC20 §6.6.9 R1.6 | Spec'd | R3 addition | | **"Module block added"** | +Module inserts a block | DOC20 R2 | Spec'd | R3 addition | | **"Preset saved"** | Save as Preset from feed gear menu | DOC20 R2 | Spec'd | R3 addition | | **"Converted to note. {N} comments migrated ({M} approximate, {K} orphaned). [View in comments]"** | Convert to Note from Document Viewer | DOC20 §6.16.9 | Spec'd | R3 addition | --- ### PAGE 14: NOTES (DOC20 — R3 REWRITE) **Route:** `/notes`, `/notes/:note_id`, `/notes/today` **File:** `apps/q-frontend/src/pages/NotesPage.tsx` **Current status:** Spec'd in DOC20 R2 §6. Mockup: Q_WORKSPACE_V5_2.jsx V5.2 (R2 design reference). **R3 change:** Complete rewrite. NoteListPane removed — note navigation handled by Browser Notes scope (DOC20 §3.5.8 R1.7). Notes page is now editor-only with block-based content. #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | ~~Note list pane~~ | **REMOVED in R3.** Note navigation handled by Browser Notes scope. | DOC20 R2 §6.4 | Removed | Replaced by Browser 7th scope | | Today note title bar | Sun icon + "Today — {weekday}, {month} {day}" + "Pinned · Auto-updating" metadata + [Configure] button | DOC20 §6.2B (R1.7) | Spec'd | R3 addition. Shown when viewing Today note | | Block-based Tiptap editor (center, flex:1) | Rich text with custom block nodes: TaskList, ActivityFeed, InlineThread, ConfigurableBar. contentEditable inline title, auto-save (1200ms debounce, 15s max). | DOC20 §6.2A (R1.7), §6.5 R2 | Spec'd | R3: block nodes added | | +Module toolbar button | Grid icon + "+Module" label. Opens ModulePresetPicker dropdown. Inserts block at cursor position. | DOC20 §6.2A.6 (R1.8/R2) | Spec'd | R3 addition. Between Ref and Find in toolbar | | Module picker dropdown | Step 1: block types (Task List, Activity Feed, @Elnor Thread, Notice Bar). Step 2: feed presets (System/Agent/My Presets tabs). Step 3: custom feed builder (source, agent, instruction, schedule, max items, dormancy). | DOC20 §6.2C (R1.8/R2) | Spec'd | R3 addition | | TaskList block | Collapsible. Header: drag handle + chevron + list icon + editable title + open count + gear + X. Body: per-task row (checkbox + text + optional due date picker + optional linked note badge + subtask count). Expanded task: individual subtask checkboxes, **add-subtask input**, @Elnor button (creates indented thread), **Link Note button** (creates link to another note). Bottom: **"Add task..." input**. Done section (collapsible `
`). | DOC20 §6.2A.2 (R1.7) | Spec'd | R3 addition | | ActivityFeed block | Collapsible. Header: drag handle + chevron + spark icon + editable title + auto-updating badge + item count + gear + X. Body: collapsible sections with icon + label + count. Items: ▹ + optional accent dot + text + timestamp. Internal scroll at 280px. Dormancy prompt when expired. Gear menu: Edit, Save as Preset, Delete. | DOC20 §6.2A.3 (R1.8/R2) | Spec'd | R3 addition | | InlineThread block | Collapsible. Header: drag handle + chevron + message icon + "Thread · N" + optional context quote. Collapsed: "[E] Elnor · N messages · time". Body: chronological messages with author avatar + name + time. Per-message actions: **Edit** (own messages), **Delete** (own messages; agent messages require confirmation). Reply input at bottom with @mention support. Async: "Agent thinking..." indicator, **[Cancel]** button (NoteAICancelCommand), no double-submit, error with [Retry]/[Dismiss]. | DOC20 §6.2A.4 (R1.7/R2) | Spec'd | R3 addition | | ConfigurableBar block | Single-line. Drag handle + text + optional timestamp + Elnor button + dismiss X. No header bar — inline. | DOC20 §6.2A.5 (R1.7) | Spec'd | R3 addition | | Block drag handle | Grip icon on every non-text block. Enables reorder via drag. | DOC20 §6.2A.6 | Spec'd | R3 addition | | Block spacing | 8px margin above/below each module block. No auto-inserted text spacers between adjacent modules. | DOC20 §6.2A.6 (R1.8) | Spec'd | R3 addition | | /slash command palette | On empty line, `/` triggers: /todo, /feed, /ask, /bar, /table | DOC20 §6.2A.6 (R1.7) | Spec'd | R3 addition | | @mention autocomplete | On `@` type, dropdown of available agents with default Note Advisor at top. **Context-specific dispatch:** (1) new line → creates InlineThread block, (2) TaskList @Elnor button → indented thread within task, (3) comment reply → per-comment Send, (4) InlineThread reply → appends to same thread, (5) bubble menu → Ask inline / Ask in chat. | DOC20 §6.2D (R1.7/R2) | Spec'd | R3 addition. R3: 5 invocation contexts added | | Editor toolbar | **GROUP 1:** Paragraph/H1/H2/H3 selector. **GROUP 2:** B, I, U. **GROUP 3:** Bullet list, Numbered list, Task list. **GROUP 4:** Link, Code block, Horizontal Rule. **GROUP 5:** Undo, Redo. **Then:** Copy, Save As…, Import, Ref, **+Module**, Find, Full Screen, Comments, Markup/Clean, Review ▾, **AI ▾** (whole-note actions dropdown), Send to Agent. **RIGHT:** "Elnor editing..." pulsing dot (when agent working), autosave indicator (Unsaved/Saving.../Saved {time}/Save failed). | DOC20 §6.5.3, §6.7.3, §6.14.6, R2 | Spec'd | R3: +Module, Import, AI dropdown, agent indicator, full toolbar groups | | AI dropdown (toolbar) | Whole-note actions: Summarize note, Update my to-do note, Extract action items, Clean up formatting, Draft from outline, Convert comments into proposed edits. Selection-level extras (when text selected): Convert to bullets, Convert to checklist, Replace selection, Insert below. | DOC20 §6.7.2, §6.7.3 | Spec'd | R3 addition | | Version History button | Opens VersionHistoryDrawer with revision list (timestamp, source, kind, summary, preview, restore action) | DOC20 §6.3.6, §6.5.3 | Spec'd | R3 addition | | Note title metadata bar | Below inline title: project color dot + project name (if scoped) + modified time + note kind badge | DOC20 §6.5.4 | Spec'd | R3 addition | | Cross-note [[linking | `[[` triggers autocomplete popup of note titles. Creates NoteLinkSchema. Backlinks section at bottom of note shows incoming references. | DOC20 §6.13 | Spec'd | R3 addition | | Tabbed right panel (right, 260-290px) | Comments tab + Send to Agent tab, X to close | DOC20 R1.5 §6.15.11 | Spec'd | Both retain state when switching | | Comment rail (Comments tab) | Open/Resolved/Orphaned sections. Comment cards with Reply/Edit/Resolve/Reopen/Delete/✨Send. Anchor status badges (active/shifted/approximate/orphaned/unanchored). Re-anchor flow for orphaned comments. Add general comment. | DOC20 §6.6, §6.6.8A R2 | Spec'd | R3: orphaned section, anchor badges, reanchor | | Send to Agent drawer (Send tab) | Agent selector, chat selector, context scope (3 radios: Full document + all comments / Comments & referenced portions / Select comments & references), comments summary with checkboxes ("Comments (N)" / "Comments (N selected)"), two-tier output mode (Respond in Chat → "Open in Chat" / Send with Instructions → "Send to {Agent}"), **Notes result formats: Apply as tracked changes / Create revised copy / Respond in comments**, instruction field (required for Send, optional for Chat), reference ID, Send/Cancel | DOC20 R1.5 §6.15.10 | Spec'd | R3: result formats added | | Bubble menu | Comment (blue bg), separator, Agent selector (color dot + name, clickable to change), **Ask inline** (creates InlineThread at selection — DOC20 §6.2D.2), **Ask in chat** (routes to chat), Rewrite, Expand, Shorten, X dismiss (mouseDown) | DOC20 §6.6.6, §6.2D.2, R1.5 | Spec'd | mouseDown dismissal, dynamic agent name. R3: Ask inline vs Ask in chat distinguished | | Tracked changes inline | Author-colored (You=blue, Elnor=red/green, Scout=amber/blue) with per-change accept/reject. Overlap resolution dialog (Keep mine/Keep theirs/Keep both) via TrackedChangeOverlapResolveCommand. | DOC20 §6.10, §6.10.9 R2 | Spec'd | R3: overlap resolve added | | AI preview panel | Preview of AI result with Accept/Reject before applying. NoteAIPreviewAcceptCommand / NoteAIPreviewRejectCommand. | DOC20 §6.15.3, R2 | Spec'd | R3 addition | | Find bar | Inline below toolbar, match count, up/down nav | DOC20 R1.5 §6.15.16 | Spec'd | Toggle via ⌘F or toolbar button | #### Buttons & Actions | Element | Action / Target | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Save As… ▾ | Dropdown: Export MD/DOCX/PDF, Save as Prompt (→SaveAsPromptModal) | DOC20 R1.5 §6.15.16 | Spec'd | | | Ref | Copies `@[{title}](note:{id})` | DOC20 R1.5 §6.15.16 | Spec'd | | | +Module | Opens ModulePresetPicker dropdown | DOC20 R2 §6.2A.6 | Spec'd | R3 addition | | Full Screen | Hides right panel, expands editor | DOC20 R1.5 §6.15.16 | Spec'd | R3: no note list to hide | | Accept All / Reject All | Review dropdown. Produces exactly ONE new version. | DOC20 §6.10.4, R2 | Spec'd | R3: ONE version annotation | | Open in Chat / Send to {Agent} | Send drawer primary action | DOC20 R1.5 §6.15.10 | Spec'd | | | [Configure] on Today note | Opens Today note template settings | DOC20 §6.2B R2 | Spec'd | R3 addition | | Feed gear menu | Edit, Save as Preset (ModulePresetCreateCommand), Delete Block | DOC20 §6.2C.4 R2 | Spec'd | R3 addition | | [Refresh now] on dormant feed | Triggers FeedRefreshCommand for this block | DOC20 §6.2A.3 R2 | Spec'd | R3 addition | #### Context Menu (via Browser — not notes-local in R3) | Menu Item | Action | Source Doc(s) | Status | |---|---|---|---| | Archive | NoteArchiveCommand | DOC20 R2 | Spec'd | | Delete (simple) | 5s undo toast | DOC20 R2 §6.15.14 | Spec'd | | Delete (with children/comments) | NoteDeleteConfirmModal | DOC20 R2 §6.15.14 | Spec'd | | Save as Template | NoteTemplateSaveCommand | DOC20 R2 | Spec'd | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | Skeleton in editor area | DOC20 R2 | R3: no note list skeleton | | Autosave clean | "Saved {relative time}" in toolbar indicator | DOC20 §6.3.7 | R3: full autosave states | | Autosave dirty | "Unsaved" in toolbar indicator | DOC20 §6.3.7 | R3 addition | | Autosave saving | "Saving..." in toolbar indicator | DOC20 §6.3.7 | R3 addition | | Autosave error | "Save failed" in toolbar indicator | DOC20 §6.3.7 | | | Comment rail empty | "No comments yet. Select text and click Comment, or add a general comment below." | DOC20 §6.6.10 | R3 addition | | Agent editing | "Elnor editing..." pulsing dot in toolbar while agent write is in flight | DOC20 §6.14.6 | R3 addition | | Feed dormant | "Feed dormant — last updated {date}. [Refresh now]" in-block | DOC20 §6.2A.3 R1.8 | R3 addition | | Feed refresh error | "Could not refresh — [Retry]" in-block | DOC20 R2 | R3 addition | | Today note rollover | Toast: "Today note has rolled over. [Open new Today note]" | DOC20 §6.2B.5A R2 | R3 addition | | InlineThread agent error | Error display in thread with [Retry] and [Dismiss] | DOC20 §6.2A.4 R2 | R3 addition | | Tracked change overlap | TrackedChangeOverlapModal with 3 options | DOC20 §6.10.9 R2 | R3 addition | --- ### PAGE 15: DOCUMENT VIEWER (DOC20 — R3 update) **Route:** `/viewer/:id` **File:** `apps/q-frontend/src/pages/DocumentViewerPage.tsx` (new) **Current status:** Spec'd in DOC20 R2 §6.16. Mockup: Q_ARTIFACT_VIEWER.jsx V6. #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Document title bar | File icon + document title (read-only) + format badge | DOC20 R1.5 §6.16.3A | Spec'd | | | Document toolbar | Copy, Save As… ▾, To Note, Ref, Find, Open External, Print, Pin, Full Screen, Comments, Markup/Clean, Review ▾, Version ▾, Send to Agent | DOC20 R1.5 §6.16.4 | Spec'd | Responsive collapse | | Content area (center, flex:1) | Format-specific renderer (Markdown, PDF, DOCX, code, image, HTML, JSON). RendererCapabilities per-format map (text_selectable, supports_tracked_changes, supports_inline_comments, supports_page_anchors, supports_line_anchors, supports_find, supports_copy, supports_print, editable). Unsupported actions hidden, not disabled. Includes `docx` entry (mammoth.js → HTML preview). | DOC20 §6.16.5, §6.16.5A R2 | Spec'd | R3: RendererCapabilities added | | Iframe sandbox | HTML/JSX/unknown previews in `sandbox="allow-scripts"` iframe. No `allow-same-origin`, no `allow-forms`. | DOC20 §6.16.5B (R2) | Spec'd | R3 addition | | Tabbed right panel (right, 260-300px) | Comments tab + Send to Agent tab, X to close | DOC20 R1.5 §6.16.6 | Spec'd | Same architecture as Notes | | Comment rail (Comments tab) | Same as Notes — Open/Resolved, Reply/Edit/Resolve/Reopen/Delete/✨Send | DOC20 R1.5 §6.16.6, §6.16.14 | Spec'd | | | Send to Agent drawer (Send tab) | Agent selector, chat selector, context scope, comments summary, two-tier output mode (Respond in Chat / Send with Instructions), result format (Revise artifact / Convert to note / Respond in comments), instruction field, reference ID | DOC20 R1.5 §6.16.8 | Spec'd | | | Bubble menu | Comment, Agent selector, Ask {Agent}, Rewrite, Expand, Shorten, X dismiss. R3: Rewrite/Expand/Shorten backed by DocumentSelectionAICommand. | DOC20 R1.5 §6.16.7, R2 | Spec'd | Only on text-selectable formats. R3: command wiring added | | Inline diff preview | Red strikethrough / green underline with per-change Accept/Reject buttons + author labels. "Accept All"/"Reject All" produce exactly ONE new version. | DOC20 R1.5 §6.16.10-11, R2 | Spec'd | From AI revisions. R3: ONE version rule | | Version history dropdown | v{N} entries with timestamp, source, and version switch. R3: stable `artifact_root_id` + child `version_id` values. Major/minor differentiation. Overflow: if >50 versions, show 10 most recent + "View all versions" link opening scrollable ArtifactVersionDrawer. | DOC20 R1.5 §6.16.10, R2 | Spec'd | R3: root_id/version_id model, overflow rule | | Artifact version drawer | Scrollable full version history. Major/minor differentiation. ArtifactVersionHistoryRequest read contract. | DOC20 R2 | Spec'd | R3 addition | | Metadata rail (bottom) | Origin agent + chat, project dot, version + pending count, age, pinned indicator | DOC20 R1.5 §6.16.13 | Spec'd | | | Find bar | Inline below toolbar, match count | DOC20 R1.5 §6.16.4 | Spec'd | | #### Buttons & Actions | Element | Action / Target | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Copy | Copies full document text | DOC20 R1.5 §6.16.4 | Spec'd | Icon-only | | Save As… ▾ | Save As format, Export DOCX/PDF/HTML, Save as Prompt | DOC20 R1.5 §6.16.4 | Spec'd | | | To Note | Creates editable Note fork | DOC20 §6.16.9 | Spec'd | | | Ref | Copies `@[{title}]({type}:{id})` | DOC20 R1.5 §6.16.4 | Spec'd | | | Pin | Toggles pinned state | DOC20 R1.5 §6.16.4 | Spec'd | | | Markup / Clean toggle | Show/hide tracked change marks | DOC20 R1.5 §6.16.11 | Spec'd | | | Accept All / Reject All | Review dropdown | DOC20 R1.5 §6.16.4 | Spec'd | Creates new immutable version | | Open in Chat / Send to {Agent} | Send drawer primary action | DOC20 R1.5 §6.16.8 | Spec'd | | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | Content skeleton + title placeholder | DOC20 | | | Unsupported format | "No preview available" + Download + Open External | DOC20 §6.16.5 | | | Error (file missing) | Error card with path info | DOC20 | | --- ### SURFACE 1: BROWSER COLUMN (DOC20 — R3 update) **Position:** Persistent second-column between sidebar and main content area **Toggle:** Button in sidebar header (Columns icon), shortcut `⌘+B` / `Ctrl+B` **File:** `apps/q-frontend/src/components/BrowserColumn.tsx` (new) **Width:** 260px default, resizable 200px–450px **Current status:** Spec'd in DOC20 R2 §3. Mockup: Q_BROWSER_R13.jsx V4. #### Layout & Sections | Section / Widget | Description | Source Doc(s) | Status | Notes | |---|---|---|---|---| | Search bar | Input with "This View" / "Everywhere" toggle | DOC20 §3.2 | Spec'd | | | Collections quick row | Color dot circles, click to toggle filter, + button to create, "clear" when active | DOC20 §3.3, R1.5 §3.18 | Spec'd | AND logic when multiple selected | | Scope chips | Collection, Project, Bucket, Places, Folders, **Notes**, Saved Views — 7 families, deselectable | DOC20 §3.4, §3.4.1 R1.7 | Spec'd | R3: Notes scope added (7th family). Click active to deselect | | Folder overlay toggle | Folder icon (dashed border, no label) at end of scope chip row | DOC20 R1.5 §3.20 | Spec'd | Persistent across scopes | | Scope detail area | Content depends on active scope: project list, folder tree, places list, saved views | DOC20 §3.5 | Spec'd | Resizable via drag splitter | | Folder overlay strip | Compact folder tree (max 90px), drag targets, "Drag items to folders" header, X to close | DOC20 R1.5 §3.20 | Spec'd | Only visible when toggle active and not in Folders scope | | Type chips | 15 visible types: Document, Chat, Preset, Skill, Task, Agent, Panel, Forum, Overlay, Note, Bucket, Project, Artifact, Place, Prompt. Plus internal-only `automation` (excluded from chips, appears in results only when explicitly filtered). 16 total enum values. | DOC20 §3.6, §7.0 R2 | Spec'd | R3: 15 visible (add Prompt, rename Bucket/Artifact), 16 enum total. OR logic, "clear" button | | Filter/sort bar | Item count, save view bookmark icon, sort dropdown (Modified, Alphabetical, Type, Created, Last Used) | DOC20 §3.7, §7.0 R2 | Spec'd | R3: "Running" → "Last Used" sort label | | Save view inline input | Name field + Save + Cancel (Escape) — appears when bookmark clicked | DOC20 R1.5 §3.23 | Spec'd | | | Results list | Single-line items (32px), pin icon, unread dot, title, status, type label, time. R3: Today badge (sun icon) on Today note row. Task count badge (☐ N) for notes with TaskList blocks. | DOC20 §3.9, §3.5.8 R1.7 | Spec'd | Draggable when folder overlay active. R3: badges added | | Browser footer | Active scope, filters, sort key. R3: degraded-source warning badge when `BrowserCatalogEnvelope.degraded_sources` is non-empty. | DOC20 R1.5 §3.21, §3.9.9 R2 | Spec'd | R3: degraded badge | #### Scope detail variants | Scope | Detail content | Source Doc(s) | |---|---|---| | Project | Project list with color dots, "No Project" clickable | DOC20 §3.5, R1.5 §3.26 | | Folders | Folder tree with expand/collapse, +New button, delete/subfolder on hover | DOC20 §3.15, R1.5 §3.25 | | Places | Place list with path, status badge, X to remove with inline confirm | DOC20 §3.12, R1.5 §3.24 | | Places (browsing) | Subdirectory navigation with breadcrumb, folder/file rows | DOC20 §3.5.3A | | Saved Views | Built-in views + user views with hover rename/delete | DOC20 §3.13, R1.5 §3.23 | | **Notes** | Note folder tree: All Notes, user folders, Daily Notes special folder, Templates special folder. Filtered results show task/comment/change badges. | DOC20 §3.5.8 (R1.7) | R3 addition | | Collection | Collection-specific items | DOC20 §3.5 | | Bucket | Bucket-specific items | DOC20 §3.5 | #### Context Menu (right-click on result item) | Menu Item | Action | Source Doc(s) | Status | |---|---|---|---| | Archive | Sets item status "archived" | DOC20 R1.5 §3.22 | Spec'd | | Delete | Inline "Delete permanently? Yes/No" | DOC20 R1.5 §3.22 | Spec'd | | Copy Reference | Copies `@[{title}]({type}:{id})` | DOC20 §3.10.2 | Spec'd | | Save as Template | NoteTemplateSaveCommand (notes only) | DOC20 R2 | Spec'd | R3 addition | | _[Add to project, Move to folder, etc.]_ | Additional context actions per §8.8 R2 routing table. R3: `move_to_folder` removed from non-note types. All command names must be exact per routing table. | DOC20 §3.10, §8.8 R2 | Spec'd | #### Loading / Empty / Error States | State | Behavior | Source Doc(s) | Notes | |---|---|---|---| | Loading | 3-5 shimmer skeleton rows | DOC20 §3.9.8 R1.6 | R3: skeleton detail added | | No results (filtered) | "No items match your filters." + "Clear all filters" link | DOC20 §3.9.8 R1.6 | R3 addition | | No results (search) | "No results for '{query}'" | DOC20 §3.9.8 R1.6 | R3 addition | | No results (empty scope) | "No {type} items in {scope_name}" + context action | DOC20 §3.9.8 R1.6 | R3 addition | | Empty (no scope) | "No scope — showing all items" in detail area | DOC20 R1.5 §3.16 | | #### Recently Deleted (R3 addition) | Element | Description | Source Doc(s) | Status | |---|---|---|---| | Recently Deleted saved view | System saved view (`system_view_key = "recently_deleted"`). Shows soft-deleted items with 30-day retention. | DOC20 §6.18.7 R2 | Spec'd | | Per-item Restore | Restore button on each item. NoteRestoreCommand / ProjectRestoreCommand / ArtifactRestoreCommand. | DOC20 R2 | Spec'd | | Per-item Delete Permanently | Destructive confirmation. NotePermanentDeleteCommand etc. | DOC20 R2 | Spec'd | | Empty Recently Deleted | Bulk purge button. EmptyRecentlyDeletedModal with confirmation. | DOC20 R2 | Spec'd | --- ## PART 2: DOC-BY-DOC FILL-IN TRACKER Use this tracker to mark which pages/surfaces have been reviewed against each spec doc. | Doc | Reviewed? | Pages Affected | Date | Reviewer Notes | |---|---|---|---|---| | DOC1 (Memory/Resilience) | | Memory, Inbox, Settings, Chats | | | | DOC2 (Freshness) | | Settings/Freshness, Chats | | | | DOC3 R8 (App Skills) | Partial | Inbox, Chats, Settings, Status, Learning, Activity | 2026-03-09 | Initial pass from red-team | | DOC4 (OpenClaw Bridge) | | Settings/Integration, Status | | | | DOC5A/B (Account Build) | | Settings/General | | | | DOC6 (Panels/Forums) | | Forum, Settings/Forum | | | | DOC7 (Context Buckets) | | Memory, Projects | | | | DOC8 (Self-Learning) | | Learning, Inbox | | | | DOC9 (Self-Repair) | | Learning, Status | | | | DOC10 (Orchestration) | | Chats, Home, all routing | | | | **DOC11 (Gateway/Controls)** | **R14 complete** | **Settings (Providers, Local, Web Search, Channels, ACP, Context), Status/Runtime & Connectivity, Chats (Fast Mode)** | **2026-03-19** | **R4: Full DOC11 R14 alignment. Fast Mode, plugin ownership, credential source, auth removal, channel pairing, Discord/WhatsApp split, ACP lifecycle/resume/roots, context-engine diagnostics, mismatch filters, 26 Appendix U controls, 4 modals.** | | DOC12 (Inter-Agent) | | Agents, Forum, Chats | | | | DOC13 (Costs) | | Cost | | | | DOC14 (Candor) | | Chats | | | | DOC15 (Cognitive Infra) | | Multiple | | | | DOC16 (Deferred/Punch) | | Multiple | | | | DOC17 (Prompt/Overlay) | | Chats, Settings, Browser (Overlay/Prompt types) | | | | DOC18 (LlamaIndex) | | Settings, Memory | | | | **DOC20 (Browser/Notes/Viewer)** | **R2 complete** | **Notes (rewritten), Document Viewer (updated), Browser Column (updated), Projects (updated), Settings (Workspace added)** | **2026-03-19** | **Full pass from DOC20 R2. Block editor, Today note, +Module, ModulePreset, feed dormancy, Notes scope, RendererCapabilities, Recently Deleted, 20+ new commands.** | | ELNOR Core | | Multiple | | | | Q Design Canonical | | All | | |