Empty-state hint on contextual sidebar when no messages.
Per-page copy with entity-name interpolation for project / note.
Notes hint mentions note editing deferred to a later release.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Smoke trace 0b46841484ba7d024ed9f8d5ac8b1df0 showed agent picking
legacy list_projects + get_project (shallow snapshot, no aiSummary
or tasks) for a 'summarize Nexus' query. _contextual_tools now
exposes ONLY get_page_details for reads. Prompt rule 2 explicitly
forbids list_*/get_* legacy tools. Langfuse contextual_system v2
mirrors the new rule.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
M5 ships client-side dispatch for the contextual agent's
get_page_details tool. Handler in drizzle-executor returns
project/task/note entity snapshots plus tasks_all/projects_all/
timeline_all list variants. ToolCallActionSchema widened to
admit the new action.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
HeaderContext exposes leftExtras + rightExtras slots. Notes route
publishes [back arrow] (left) + [Saving? + 3-dot menu] (right) to
the shared header. No more inline toolbar div on notes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Two bugs after showHeader: tab bar was sticky top-0 competing with
hero (also sticky top-0); and heroH was measured once at mount,
stale on cold loads. Fix: ResizeObserver tracks heroH in state,
tab bar sticky offset = heroH, observer re-creates on heroH change.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
ProjectSidebar internal header strip removed. Create-project button
renders in AppShell header next to the page label, only on /projects.
New HeaderContext + useHeaderSlot hook for publishing header label
and trailing extras from route components.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AdiuvaTriggerButton now lives in AppShell header (next to sidebar
toggle + page label), hidden on home. Default size 32px (sm
variant). Routes keep their useContextualScope calls; per-route
button renders removed.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Agent tools sending status="todo,in_progress" et sim now match rows
via inArray instead of literal-string equality.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Step-by-step plan across M1-M7 with bite-sized TDD-style tasks,
exact code, commit boundaries, and submodule pointer bumps.
Source: docs/2026-05-14-contextual-sidebar-agent-design.md.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace floating-chat (double-click) with adiuva trigger button + right-side
resizable sidebar that persists across navigation and shares the chat surface
with home chat. Includes deprecation sweep of floating_* code paths,
Langfuse prompt swap, and SQLite-backed chat history.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Brings the TaskFormDialog UX in line with the timeline AddEventDialog:
new header (DialogTitle + DialogDescription, no separator), roving
focus across property pills, listbox keyboard inside each popover,
and a typeable DateField (with optional HH:MM suffix) for the Due
field. Two shared hooks (useRovingFocus, useListboxKeys) underpin
the keyboard model.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Step-by-step plan to port AddEventDialog UX (header, full keyboard nav,
date+time via DateField) into TaskFormDialog. Two new shared hooks
(useRovingFocus, useListboxKeys), parseDate time-suffix, DateField
withTime + flat props, and i18n updates across all 5 languages.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Spec for porting AddEventDialog UX patterns into TaskFormDialog: new
header (title + description, no separator), full keyboard navigation
(roving focus on pills, arrow nav, Enter to open popover, arrow nav
inside list popovers and calendar), and date+time keyboard entry via
extended DateField (withTime + flat props) and parseDate time suffix.
Includes interactive HTML mockup demonstrating the keyboard flow.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
9 tasks, manual verification per task (no automated test suite).
Covers parseDate utility, DateField primitive, EditEventDialog
migration, AddEventDialog rewrite with keyboard nav, edit-row mode,
batch submit with allSettled error handling.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
TaskFormDialog uses TZDate + H/M selectors; DateField primitive does
not cover timezone or time-of-day. Track as follow-up after DateField
gains timezone/time support.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Stage-then-commit batch flow for AddEventDialog. One project per
batch, typed date entry with smart parse, full keyboard operation.
Extracts DateField + parseDate as shared primitives, migrates
EditEventDialog and TaskFormDialog.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Approved design for linking a local folder to a project: lightweight
manifest with per-file LLM summaries, WS-streamed indexing pipeline,
pre-injected manifest for Home/Brief/Task-Brief agents, tier-gated
token+file-count quota recorded backend-side.
Pulls in fixes for: card context menu, change-status icon, sheet live render,
composer alignment, project link relocation to sheet header, no comment toast.
Bumps adiuvAI submodule to dac1d50 — initDb() now uses
drizzle-orm/better-sqlite3/migrator against src/main/db/migrations/
instead of a hand-rolled CREATE TABLE IF NOT EXISTS string + try/catch
ALTER blob. Includes a one-time bootstrap that seeds __drizzle_migrations
on legacy DBs so existing data (incl. 51 user tasks) is preserved.
Fixes the empty-tasks-list regression caused by migration 0004
(estimate column + task_attachments table) not being mirrored into
db/index.ts.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
29 tasks across 7 phases (schema+backend, building blocks, detail sheet,
form dialog, table+pager+list view, project page, i18n). Each task is a
single commit, manual smoke verify in dev (no test suite).
Validated design for task list refactor: shadcn Table view with shared
pagination, right-side detail Sheet with attachments, redesigned
quick-capture create/edit dialog, project detail page reusing the same
list view.