Changeset 0.25.1 (#161)
This commit is contained in:
@@ -393,50 +393,101 @@ Vanilla JavaScript, no framework. The frontend ships as static files served by n
|
||||
|
||||
```
|
||||
src/
|
||||
├── index.html # Single-page app shell
|
||||
├── sw.js # Service worker (offline cache)
|
||||
├── index.html # Redirect stub → server-rendered surfaces
|
||||
├── sw.js # Service worker (offline cache, BUILD_HASH)
|
||||
├── manifest.json # PWA manifest
|
||||
├── css/
|
||||
│ ├── styles.css # Core styles (CSS variables, light/dark themes)
|
||||
│ └── memory.css # Memory settings + admin review panel styles
|
||||
│ ├── variables.css # Theme vars, reset, base styles
|
||||
│ ├── layout.css # App shell, workspace, sidebar, responsive
|
||||
│ ├── primitives.css # Buttons, forms, toasts, toggles, badges, icon-btn
|
||||
│ ├── modals.css # Modal system, debug, command palette, confirm
|
||||
│ ├── chat.css # Chat area, markdown, input, files, lightbox
|
||||
│ ├── panels.css # Side panel, preview, notes, graph
|
||||
│ ├── surfaces.css # Admin, settings, editor, projects, notes layouts
|
||||
│ ├── splash.css # Auth splash, PWA banner
|
||||
│ ├── chat-pane.css # ChatPane component styles
|
||||
│ ├── pane-container.css # PaneContainer resize/tab styles
|
||||
│ ├── user-menu.css # UserMenu flyout styles
|
||||
│ ├── editor-surface.css # Editor surface 3-pane layout
|
||||
│ ├── channel-models.css # @mention autocomplete, model roster
|
||||
│ ├── memory.css # Memory settings + admin review
|
||||
│ ├── notifications.css # Notification dropdown + list
|
||||
│ ├── notification-prefs.css # SMTP config, notification pref table
|
||||
│ ├── persona-kb.css # Persona KB picker panel
|
||||
│ ├── admin-surfaces.css # Admin surface management
|
||||
│ └── tool-grants.css # Persona tool grants checkbox list
|
||||
├── js/
|
||||
│ ├── ── Primitives (base.html, all surfaces) ──
|
||||
│ ├── app-state.js # Global state (App, API refs)
|
||||
│ ├── api.js # HTTP client with token refresh
|
||||
│ ├── app.js # Application state machine, startup, routing
|
||||
│ ├── chat.js # Chat input abstraction, message send/receive
|
||||
│ ├── channel-models.js # @mention autocomplete, channel model roster
|
||||
│ ├── events.js # Labeled event bus + WebSocket bridge
|
||||
│ ├── debug.js # Debug panel, diagnostics, state export
|
||||
│ ├── ui-core.js # DOM rendering, sidebar, modals, panels
|
||||
│ ├── ui-format.js # Markdown rendering, @mention pills, code blocks
|
||||
│ ├── ui-settings.js # Settings tabs, theme, appearance, teams
|
||||
│ ├── ui-admin.js # Admin panel rendering
|
||||
│ ├── admin-handlers.js # Admin CRUD operations + extension editors
|
||||
│ ├── ui-primitives.js # esc(), componentMixin, Providers, Roles,
|
||||
│ │ # renderCapBadges, renderProviderForm/List,
|
||||
│ │ # renderRoleConfig, renderUsageDashboard,
|
||||
│ │ # showConfirm, showPrompt, openModal/closeModal,
|
||||
│ │ # Theme, mountAvatarUpload
|
||||
│ ├── ui-format.js # Markdown rendering, code blocks, time formatting
|
||||
│ ├── ui-core.js # DOM rendering, sidebar, navigation, toast
|
||||
│ ├── pages.js # Page routing, splash, login
|
||||
│ │
|
||||
│ ├── ── Components (base.html, all surfaces) ──
|
||||
│ ├── user-menu.js # UserMenu template+factory component
|
||||
│ ├── model-selector.js # ModelSelector template+factory component
|
||||
│ ├── file-tree.js # FileTree template+factory component
|
||||
│ ├── code-editor.js # CodeEditor template+factory component (CM6)
|
||||
│ ├── note-editor.js # NoteEditor template+factory component
|
||||
│ ├── chat-pane.js # ChatPane template+factory component
|
||||
│ ├── pane-container.js # PaneContainer (resizable multi-pane layout)
|
||||
│ ├── debug.js # Debug panel + diagnostics
|
||||
│ ├── repl.js # Browser REPL console
|
||||
│ │
|
||||
│ ├── ── Surface: Chat ──
|
||||
│ ├── app.js # Chat surface boot, auth, WebSocket
|
||||
│ ├── chat.js # Chat message send/receive, stream
|
||||
│ ├── extensions.js # Extension framework + sandbox
|
||||
│ ├── panels.js # Side panel registry
|
||||
│ ├── ui-settings.js # Settings modal tabs (chat surface)
|
||||
│ ├── ui-admin.js # Admin navigation + section routing
|
||||
│ ├── admin-handlers.js # Admin CRUD + extension editors
|
||||
│ ├── admin-scaffold.js # Admin section HTML scaffolding
|
||||
│ ├── settings-handlers.js # User settings CRUD, command palette
|
||||
│ ├── tokens.js # Input token counting + context budget
|
||||
│ ├── attachments.js # File upload, paste-to-file, lightbox
|
||||
│ ├── files.js # File upload, paste-to-file, lightbox
|
||||
│ ├── notes.js # Notes panel CRUD + graph + daily notes
|
||||
│ ├── note-graph.js # Canvas force-directed graph visualization
|
||||
│ ├── projects-ui.js # Project sidebar, context menu, drag-and-drop
|
||||
│ ├── knowledge.js # Knowledge base UI
|
||||
│ ├── memory-ui.js # Memory settings tab + admin review panel
|
||||
│ ├── projects-ui.js # Project sidebar, context menu, DnD
|
||||
│ ├── channel-models.js # Channel model roster + @mention AC
|
||||
│ ├── tools-toggle.js # Tool enable/disable popup
|
||||
│ ├── knowledge-ui.js # Knowledge base picker + management
|
||||
│ ├── persona-kb.js # Persona KB assignment panel
|
||||
│ ├── memory-ui.js # Memory settings + admin review
|
||||
│ ├── notifications.js # Notification bell + dropdown
|
||||
│ ├── notification-prefs.js # SMTP config + notification prefs
|
||||
│ │
|
||||
│ ├── ── Surface: Editor ──
|
||||
│ ├── editor-surface.js # Editor 3-pane boot, workspace management
|
||||
│ │
|
||||
│ ├── ── Surface: Admin ──
|
||||
│ ├── admin-surfaces.js # Surface management (admin only)
|
||||
│ │
|
||||
│ ├── ── Surface: Login ──
|
||||
│ ├── pages-splash.js # Login/register splash page
|
||||
│ │
|
||||
│ └── __tests__/ # Node.js test suite (node --test)
|
||||
├── editor/ # CM6 source (compiled at build time)
|
||||
│ ├── package.json # CM6 + language mode dependencies
|
||||
│ ├── package-lock.json # Lockfile for npm ci
|
||||
│ ├── build.mjs # esbuild script → IIFE bundle
|
||||
│ ├── index.mjs # Bundle entrypoint (window.CM)
|
||||
│ ├── chat-input.mjs # Chat input factory (markdown, code blocks)
|
||||
│ ├── code-editor.mjs # Code editor factory (syntax, keybindings)
|
||||
│ ├── note-editor.mjs # Note editor factory (markdown + wikilinks)
|
||||
│ ├── wikilink.mjs # CM6 wikilink extension (parse, decorate, autocomplete)
|
||||
│ └── theme.mjs # Switchboard + chat input + note editor themes
|
||||
└── vendor/ # Vendored libraries (local + CDN fallback)
|
||||
├── marked/ # Markdown renderer
|
||||
├── purify/ # DOMPurify (XSS protection)
|
||||
├── mermaid/ # Diagram renderer
|
||||
├── katex/ # Math renderer
|
||||
└── codemirror/ # CM6 bundle (built by Docker)
|
||||
└── codemirror.bundle.js # ~295KB min, ~90KB gzip
|
||||
│ ├── wikilink.mjs # CM6 wikilink extension
|
||||
│ └── theme.mjs # CM6 themes (dark/light)
|
||||
└── vendor/ # Vendored libraries (loaded in base.html)
|
||||
├── marked.min.js # Markdown renderer
|
||||
├── purify.min.js # DOMPurify (XSS protection)
|
||||
└── codemirror/
|
||||
└── codemirror.bundle.js # CM6 bundle (~295KB min, ~90KB gzip)
|
||||
```
|
||||
|
||||
### CM6 Integration
|
||||
|
||||
Reference in New Issue
Block a user