Commit Graph
127 Commits
Author SHA1 Message Date
“BeeRad”andClaude Sonnet 4.6 6677b1b64b feat: node view redesign — single-scroll, no tabs
Ports the full node view redesign from ra-h. Replaces the 4-tab layout
(Desc/Notes/Edges/Source) with a single-scroll document view.

- New FocusPanel: frontmatter rows, collapse toggle, NodeSearchModal,
  TipTap SourceEditor, section headers with extending rules
- NodeSearchModal: new full-screen portal modal for creating connections
- SourceEditor: TipTap WYSIWYG editor (new file)
- SourceReader: removed header chrome, added onContentClick prop
- Source formatters: inherit font, 15px/1.7, no max-width centering
- DimensionTags: subtle dashed + button replaces green pill
- autoEmbedQueue: recover nodes stuck in 'chunking' state on startup
- edges: fix extra parameter in getNodeConnectionsSQLite

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 17:03:06 +11:00
“BeeRad” 0d2c499b70 merge: source-first ingestion 2026-03-20 12:36:46 +11:00
“BeeRad” 28e570696c feat: port source-first ingestion to os repo
- make source the canonical field across os routes, tools, ui, and mcp
- align fresh-install schema, search, and embedding flows with source-first ingestion

Generated with Claude Code
2026-03-20 12:36:26 +11:00
“BeeRad”andClaude Sonnet 4.6 41f8498d4a chore: remove locked dimension UI residue
Remove padlock button from dimensions pane, priority-toggle behaviour
from node dimension tags, and all supporting state/functions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 10:12:14 +11:00
“BeeRad” 75c4c58ec7 merge: sync quick add ingestion updates 2026-03-19 21:15:41 +11:00
“BeeRad” 1f8f41b4e0 feat: sync quick add ingestion updates
- simplify quick add source selection and fallback saving
- improve description context and manual edit behavior
- add extractor dimension filtering and edge explanation migration
2026-03-19 21:15:30 +11:00
“BeeRad”andClaude Sonnet 4.6 64aaf10feb fix: center view items vertically in left toolbar
Top actions (collapse/search/add/refresh) stay at top.
View items (nodes/skills/map/etc) sit in a flex:1 middle
section, vertically centered with a subtle top border separator.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 20:25:34 +11:00
“BeeRad”andClaude Sonnet 4.6 21ca364d80 fix: light mode for skills cards and map background
- SkillCard: hardcoded dark bg/border/text → CSS vars
- map-styles.css: migrate all hardcoded hex to CSS vars so map
  canvas, nodes, edges, and minimap respond to theme

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 20:21:29 +11:00
“BeeRad”andClaude Sonnet 4.6 ffefc7b332 fix: migrate hardcoded hex values to CSS vars for light mode
Replace dark hex values with CSS custom properties across all panel,
card, modal, and focus components so light mode renders correctly.
Backgrounds, borders, and text colors now respond to data-theme attribute.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 20:15:24 +11:00
“BeeRad”andClaude Sonnet 4.6 bf175ad125 feat: add persistent light/dark mode toggle
- Add CSS custom property token system to globals.css (dark + light variants)
- Add anti-FOUC inline script in layout.tsx head to apply stored theme before hydration
- Create useTheme hook (src/hooks/useTheme.ts) backed by usePersistentState
- Add Sun/Moon toggle button to LeftToolbar above Settings
- Wire useTheme into ThreePanelLayout and pass theme/onThemeToggle to LeftToolbar
- Migrate hardcoded hex values to CSS vars in LeftToolbar and ThreePanelLayout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 19:32:06 +11:00
“BeeRad”andClaude Sonnet 4.6 4802187f5e fix: resolve MCP output validation errors in HTTP server
- Rename `content` → `notes` in searchNodes and getNodes output schemas
  to match what the handlers actually return (was causing validation errors)
- Rename `schema` → `stats` key in rah_get_context outputSchema and
  structuredContent return (schema key name confused MCP SDK validator,
  caused getContext failures for external users like Linux)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 19:18:18 +11:00
“BeeRad” 7444599817 fix: harden external link navigation in the web app
- add a shared external-navigation guard at the document level
- route onboarding, markdown, settings, and node source links through one helper
- stop browser fallback code from replacing the current app page on failures

Generated with Codex
2026-03-17 18:20:37 +11:00
“BeeRad” 213c054c9f feat: sync pane workspace overhaul from private repo
- ship the expanded left-nav and pane header workspace updates
- add dimension-driven browse flow, map view upgrades, and delete-node tooling
- expand eval coverage and refresh the public UI docs for the new layout

Generated with Codex
2026-03-17 18:20:20 +11:00
“BeeRad” 0776bccdbd Merge branch 'feature/skill-use-button-os' 2026-03-15 16:24:03 +11:00
“BeeRad” 5997dead5d feat: polish skills pane ui
- share skill card and markdown rendering
- clean up skill detail layout and scroll reset
- remove nested interactive card structure
2026-03-15 16:02:47 +11:00
“BeeRad” 761cb045e0 Merge branch 'docs/process-sync-status' 2026-03-15 14:59:41 +11:00
“BeeRad” b34c787147 docs: note current synced status in os process doc
- record the march 15 sync scope on main
- add the local better-sqlite3 rebuild note for contributors

Generated with Codex
2026-03-15 14:59:41 +11:00
“BeeRad” 4ea3f854db Merge branch 'codex/os-sync-runtime-search-quality' 2026-03-15 14:55:51 +11:00
“BeeRad” 4c75df101f feat: sync runtime search and schema quality updates from app repo
- port retrieval, validation, and eval improvements relevant to os
- align prompts and dimensions with the flat single-agent model
- replace the old eval suite with the focused core scenarios

Generated with Codex
2026-03-15 14:55:45 +11:00
“BeeRad” 053c163e31 docs(product): update user docs to skills-first and current MCP tools 2026-03-07 13:48:00 +11:00
“BeeRad” bc226b03c8 cleanup(skills): remove legacy guide bundle and harden skill migration/pruning 2026-03-07 12:00:52 +11:00
“BeeRad” b67a789740 feat(ui): add skills pane in left nav and wire skills api/service 2026-03-07 11:53:55 +11:00
“BeeRad” 2cdd685c04 sync: skills and tool contract overhaul from private repo 2026-03-07 11:45:26 +11:00
“BeeRad” 46ac8d9bde docs: update process and contributor guidance 2026-03-07 11:44:27 +11:00
“BeeRad”andClaude Opus 4.6 467a588713 docs: fix video thumbnail — use hqdefault (maxresdefault 404s)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 16:24:16 +11:00
“BeeRad”andClaude Opus 4.6 702e96fe50 docs: add demo video to README
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 16:07:14 +11:00
“BeeRad”andClaude Opus 4.6 034c9bf0dc readme: add macOS-only callout and expand Linux/Windows install steps
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 13:32:58 +11:00
“BeeRad”andClaude Opus 4.6 7c6197fc0d fix: MCP servers — broken INSERT into dropped type column, stale content refs
The previous schema sync (86f43c9) was incomplete — it renamed variables
but left the SQL statements writing to `type` and `content` columns that
no longer exist in the schema. Fresh installs crash on first node create.

nodeService.js:
- Remove `type` from INSERT/UPDATE, replace with `event_date`
- Fix `content` → `notes` in INSERT values and UPDATE SET clauses
- Add `sanitizeTitle()` and chunk fallback logic

sqlite-client.js:
- Remove `is_pinned` from CREATE TABLE
- Add `description` and `icon` to dimensions table

index.js:
- Add temporal filter fields to search schema
- Improved description prompts
- Dynamic date injection in instructions

server.js + stdio-server.js:
- Add content→notes mapping in update handlers
- Fix output returning `notes` instead of `content`
- Add extraction tool schemas and handlers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 09:16:51 +11:00
“BeeRad”andClaude Opus 4.6 2f6518207d sync: multiple features from private repo
- quick-add-loading: fire-and-forget with loading placeholders, auto-open feed, SSE events, QuickAddInput redesign
- database-table-pane: TablePane + DatabaseTableView, countNodes(), event_date sort
- ui-polish-fixes: focus tab order, dim name editing, tab title sync, cost chip removal, custom sort drag-reorder, refresh button, dimension filter removal (~2,200 lines)
- node-creation-quality: description service prompt rewrite, title sanitization, extraction tool AI prompt rewrites
- feed-pane-ux: stripped kanban/grid/saved views, sort dropdown, AND dimension filtering, description preview

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 17:57:32 +11:00
“BeeRad”andClaude Opus 4.6 9954792b1d sync: temporal-awareness from private repo
- Surface created_at, updated_at, event_date in queryNodes + queryDimensionNodes responses
- Add date range filters (createdAfter/Before, eventAfter/Before) to NodeFilters + nodeService.getNodes()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 14:34:55 +11:00
“BeeRad”andClaude Opus 4.6 0095641278 sync: chunk-embedding-audit — fix Sync to Source button visibility
- Show button when notes exist (not just when chunk exists)
- Synced from private repo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 13:35:59 +11:00
“BeeRad”andClaude Opus 4.6 2940e142c8 sync: feed pane UX from private repo
- Strip kanban, grid, and saved views from ViewsOverlay (1103→631 lines)
- Add sort order dropdown (Updated/Edges/Created) with localStorage persistence
- Polish filter button, dropdown, and filter chips
- Switch to server-side dimension filtering with AND logic (dimensionsMatch=all)
- Add description preview and edge count to node cards
- Add 'created' sort option and dimensionsMatch param to types, service, API

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 13:19:42 +11:00
“BeeRad”andClaude Opus 4.6 86f43c9975 feat: final schema pass — sync 9 schema changes from main repo
- Rename nodes.content → nodes.notes across all services, tools, API routes, and UI
- Add dimensions.icon column support (GET/POST routes, types)
- Add nodes.event_date column (create/update flows, types)
- Drop nodes.type and nodes.is_pinned references
- Drop edges.user_feedback references
- Drop chat_memory_state table (replaced with DROP IF EXISTS in migration)
- Update schema guide files (system/schema.md)
- Add runtime migration block in sqlite-client.ts for existing databases
- Fix MCP tool schemas (external API keeps 'content' param, maps to 'notes' internally)
- Update standalone MCP server (nodeService.js, sqlite-client.js, index.js)
- Update HTTP MCP server (server.js, stdio-server.js)
- Update all extraction tools (paper, website, youtube)
- Update all UI components (FocusPanel, ThreePanelLayout, GridView, ListView, FolderViewOverlay)
- TypeScript: 0 errors

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 12:53:52 +11:00
“BeeRad”andClaude Opus 4.6 1d323de11a fix: edges tab truncation and layout polish
- Add minWidth: 0 on all flex containers to enable proper truncation
- Title now truncates with ellipsis instead of pushing panel out
- Explanation row truncates to single line with ellipsis and title tooltip
- Type chip has flexShrink: 0 + whiteSpace: nowrap to prevent wrapping
- Delete button uses compact × with flexShrink: 0 (inline, not separate)
- Edit input has minWidth: 0 to prevent overflow
- Remove expand/collapse (5-item limit) — show all connections in tab
- Tighter spacing (6px padding, 2px gap) matching private repo polish

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 09:28:01 +11:00
“BeeRad”andClaude Opus 4.6 f7374590d9 refactor: move edges from modal to dedicated tab in FocusPanel
- Add 'edges' to content tab bar (Notes | Desc | Edges | Source)
- Edges tab shows count badge, has Create/Cancel toggle for search
- Replace full-screen connections modal with inline tab content
- Search input appears conditionally via edgeSearchOpen state
- Connections button near title now switches to edges tab
- Remove ~400 lines of modal overlay code

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 09:22:04 +11:00
“BeeRad”andClaude Opus 4.6 c23b743580 refactor: move guides from left toolbar to settings
- Remove guides from LeftToolbar pane type buttons
- Remove 'guides' from PaneType union and PANE_LABELS
- Remove GuidesPane from pane exports and ThreePanelLayout rendering
- Add migration to reset persisted slots that had type 'guides'
- Guides remain accessible via Settings modal (GuidesViewer tab)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 09:10:38 +11:00
“BeeRad”andClaude Opus 4.6 d723212ed3 sync: contextual substrate UX from private repo
- Add DimensionIconsContext for app-wide dimension icon sharing
- Enhanced getNodeIcon() with favicon/YouTube/PDF detection + dimension icons
- Propagate dynamic icons to GridView, ListView, SearchModal, FocusPanel, ViewsOverlay, FolderViewOverlay
- Add RahEdge component with hover labels for map edges
- Update RahNode with dimension-colored borders and icon support
- Add MiniMap with dimension color coding to MapPane
- MCP server: add description field to rah_update_node, bump standalone to v1.4.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 08:55:47 +11:00
“BeeRad”andClaude Opus 4.6 d6987a3dc1 fix(mcp): v1.4.1 — add Node version check and better-sqlite3 error handling
- Check Node version on startup, exit with clear message if >=24
- Catch better-sqlite3 load failure with actionable error message
- Cap engines to node >=18 <24 in package.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 15:58:21 +11:00
“BeeRad”andClaude Opus 4.6 0cb9a24327 docs: add rah_search_content and rah_sqlite_query to README tool table
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 15:54:53 +11:00
“BeeRad”andClaude Opus 4.6 ec3ab74efe feat(mcp): v1.4.0 — FTS5 search, chunk truncation, FTS rebuild on startup
- Switch rah_search_nodes and rah_search_content from LIKE to FTS5 with word-split LIKE fallback
- Rebuild nodes_fts and chunks_fts indexes on server startup
- Cap chunk field at 10K chars in rah_get_nodes (adds chunk_truncated, chunk_length)
- Multi-word queries now work ("Tesla manufacturing" finds both words anywhere)
- Relevance-ranked results when FTS available

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 15:26:51 +11:00
“BeeRad”andClaude Opus 4.6 d1b63ea7bb fix: remove backlog from ralph/prd.json — belongs in ra-h backlog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 16:24:34 +11:00
“BeeRad”andClaude Opus 4.6 d5759e63a4 docs: clean up backlog — remove fabricated items, keep only real tasks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 13:06:24 +11:00
“BeeRad”andClaude Opus 4.6 efb1704cbf docs: add B7 (rename content→notes) and B8 (temporal awareness) to backlog
B8 includes research into datetime column vs metadata approach,
schema migration considerations for packaged Mac app, and MCP
temporal querying patterns. Depends on B7.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:58:37 +11:00
“BeeRad”andClaude Opus 4.6 918ef637a7 docs: update PRD with phase 2 completion and add backlog
Add phase 2 (MCP guides) stories 16-19 as completed. Restructure PRD
into phases with a backlog section. Add B5 for MCP stress testing and
efficiency audit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:56:08 +11:00
“BeeRad”andClaude Opus 4.6 549476274d feat: separate guides into system and custom sections
Add system/custom guide separation with section headers, lock icons,
delete functionality for custom guides, and usage counter.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:51:44 +11:00
“BeeRad”andClaude Sonnet 4.5 7bf94d4c61 docs: update What to Expect sections with guides and proactive capture
All 3 doc files now describe the propose-a-node pattern, guide system,
and updated orientation flow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 12:29:25 +11:00
“BeeRad”andClaude Sonnet 4.5 0577ec727d fix: strengthen proactive knowledge capture in MCP instructions
Replaces generic "offer to save" with specific triggers and the
propose-a-node pattern for minimal-friction approval.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 11:42:13 +11:00
“BeeRad”andClaude Sonnet 4.5 e6c8c21f1f fix: tighten MCP instructions and tool description constraints
Clarifies get_context vs start-here hierarchy ("also" keyword).
Adds batch/result limits to rah_get_nodes, rah_search_nodes,
rah_query_edges descriptions. Adds title length to rah_add_node.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 11:38:26 +11:00
“BeeRad”andClaude Sonnet 4.5 ed82a85fa9 feat: add start-here master guide + enriched tool descriptions
Adds immutable "start-here" system guide as the master orientation doc
for agents. Enriches all tool descriptions with key rules at point of
use so agents can execute simple tasks without reading guides.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 11:30:53 +11:00
“BeeRad”andClaude Sonnet 4.5 be675be4e0 feat: MCP server v1.2.0 — guide system + read/write guide tools
Adds full guide system to MCP standalone server. System guides (schema,
creating-nodes, edges, dimensions, extract) are bundled and immutable.
Users can create up to 10 custom guides via rah_write_guide. Syncs guide
infrastructure from main repo to OS repo app code.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 11:15:13 +11:00