Commit Graph
259 Commits
Author SHA1 Message Date
mbatchelder 66865bc5cc Remove internal planning/deploy docs from public repo
ci-cd / e2e (push) Blocked by required conditions
ci-cd / quality (push) Waiting to run
2026-09-10 09:54:40 -04:00
bot-hermes 9fac1d42de fix(ui): mobile responsiveness pass + dashboard polish
- Topbar: responsive padding, hidden search text/shortcuts on mobile,
  hidden domain picker on mobile, notifications dropdown prevents overflow
- App layout: responsive main content padding (p-3 md:p-6)
- Daily Notes: stack calendar sidebar above editor on mobile
- Notes/Graph/Templates: remove negative margins causing horizontal overflow
- Tasks: add overflow-x-auto to table, responsive saved views select
- Habits: card actions stack below on mobile
- Calendar: view buttons wrap on narrow screens
- Projects: responsive status filter width
- Project detail: task creation row stacks on mobile
- Settings: shortcut rows stack on mobile
- Dashboard: improved widget card borders, spacing, and content overflow
2026-09-10 11:47:34 +00:00
bot-hermes ddcb707190 feat(tasks): project-centric task management redesign
- Task board uses per-project workflow state columns with status
  fallback when no project is selected; adds calendar view tab
- Chip-based filter bar (search, project, state, priority, due date)
  with quick-add bar and slide-over task detail panel
- Project detail switches to left-nav layout with progress summary
  and per-section counts; projects list gains search, status
  filter, and richer cards
- Sidebar gains expandable active-projects sub-nav; calendar
  unified view gains project filter
- API: task due_after/due_before filters, GET /tasks/grouped,
  GET /projects/:id/stats, calendar unified project_id filter
- Apply Buzzbee design tokens; remove accidentally committed
  apps/web/node_modules self-symlink
2026-09-10 10:49:41 +00:00
bot-hermes f3b1fd709a Merge branch 'feat/poweruser-views'
# Conflicts:
#	apps/web/src/components/shell/quick-capture.tsx
#	apps/web/src/components/shell/status-bar.tsx
#	apps/web/src/routes/_app/tasks.tsx
2026-09-09 10:36:13 +00:00
bot-hermes 190194822a Merge branch 'feat/poweruser-capture'
# Conflicts:
#	apps/web/src/routes/_app/tasks.tsx
2026-09-09 10:35:08 +00:00
bot-hermes 27995dd7a4 feat(poweruser): saved views + editor slash commands + status bar
- Saved views store (Zustand + localStorage) with CRUD
- Save/apply/delete views in tasks filter bar
- TipTap slash command menu (headings, lists, code, divider, wikilink)
- Wikilink autocomplete with [[ trigger and note search
- StatusBar: SSE status, active domain, ⌘K hint, collapsible
- StatusBar + QuickCapture mounted in _app layout
2026-09-09 01:32:01 +00:00
bot-hermes b4d09387ed feat(poweruser): quick capture + inbox keyboard nav + undo toasts
- Global quick capture modal (Cmd+Shift+C) with NL parse preview
- Task/note/event type selector, create with active domain
- Toast with undo button after creation
- Inbox page: j/k keyboard navigation, Enter to open
- Quick capture input at top of inbox
- Undo toasts for task/note/habit deletion (recreates via POST)
- StatusBar + QuickCapture mounted in _app layout
2026-09-09 01:32:01 +00:00
bot-hermes db1a2156af feat(poweruser): keyboard-first task lists + bulk ops + calendar nav
- j/k keyboard navigation in task list view with visual selection ring
- Enter to open task, e for inline title edit, x to toggle complete
- Shift+J/K to reorder tasks in list view
- Bulk selection via Shift+Click/Cmd+Click with checkbox column
- BulkActionBar: complete, set priority, set state, add tag, delete
- Calendar arrow key navigation, t=today, n=new event
- kbd hint legend on first load
2026-09-09 01:31:59 +00:00
bot-hermes c98e1c69f2 feat(poweruser): command/shortcut registries, Buzzbee tokens, palette 2.0
- Command registry with 27 commands across 5 categories
- Shortcut registry with 18 shortcuts + remapping support
- useShortcutManager hook with collision detection
- Command history store (last 20 commands)
- Command palette 2.0: fuzzy search, >/#/@ prefixes, NLP preview
- Interactive shortcut remapping in Settings
- Buzzbee design token migration (light + dark)
- Compact density with real CSS tokens
- Motion duration variables
2026-09-09 01:13:49 +00:00
bot-hermes f0f7a0b524 UI redesign: data-dense professional treatment across entire app
Foundation:
- Rewrote CSS design tokens for light/dark modes (compact density default)
- Added JetBrains Mono for monospace accents on numeric data/timestamps
- Vibrant semantic color palette (tasks=blue, habits=green, projects=purple, notes=amber)
- Removed accent color toggle system, pinned interactive accent blue
- New shell surface tokens (sidebar-bg, sidebar-border, topbar-bg)

Shell:
- Sidebar: colored entity-type icons, always-visible shortcuts, left accent border
- Topbar: reduced to h-10, backdrop blur, monospace search shortcut

Pages (all 12 existing):
- Border treatment (no shadows), hover:bg-muted/20 transitions
- font-mono for all numeric data, timestamps, IDs, status codes
- Tighter spacing (gap-3, space-y-3), text-xl headers

New pages:
- Inbox (/inbox) - focused attention view with overdue/today habits/recent notes
- Reports (/reports) - richer analytics with stat cards, charts, CSV export
- Templates (/templates) - localStorage-based task/note template management

Entity detail pages:
- Consistent border-t pt-3 dividers, monospace timestamps
- Added TagManager to projects (consistency fix)
- Removed Card wrappers from activity/comments (flat sections)

Login: split-layout with branding panel and floating colored dots
Shared components: colored EmptyState icons, monospace error messages
Command palette & shortcuts: new nav items for Inbox/Reports/Analytics
Cleanup: removed all hover:shadow-md and ACCENT_PALETTE references
2026-09-09 00:38:53 +00:00
R2 6d01eecccc Merge pull request 'fix(web): wire up shell navigation layout' (#26) from feat/plane-lift-schema into main 2026-09-08 06:06:08 -04:00
bot-hermes dc23976dba fix(web): wire up shell navigation layout
- Convert _app/index.tsx from dashboard page to app layout shell
- Render Sidebar, Topbar, CommandPalette, ShortcutsHelp, and Outlet
- Extract DashboardPage into _app/dashboard.tsx as child route
- Update routeTree import to point to new dashboard file
2026-09-08 10:04:42 +00:00
bot-hermes aa9138c11c fix(web): restore _app.tsx layout route deleted in 2175c24 (blank-screen fix)
Commit 2175c24 deleted apps/web/src/routes/_app.tsx alongside __root.tsx.
Only __root was restored (28b2cbd). With _app.tsx missing, routeTree.ts's
import './routes/_app' resolved to the _app/ directory index (dashboard
route), making the route its own child — TanStack buildRouteTree throws
'Invariant failed' at module init and React never mounts (blank page, no
console error). Restores the exact file: _app pathless layout with
Sidebar/Topbar/Outlet.
2026-09-07 18:26:19 -04:00
bot-hermes 2135a0dfa1 Merge pull request 'feat: plane-lift — states/modules/cycles/links into main' (#25) from feat/plane-lift-merge into main 2026-09-07 18:11:24 -04:00
bot-hermes 66459019a8 merge: resolve origin/main into feat/plane-lift-merge
Merge origin/main into feat/plane-lift-merge to resolve PR #25 conflicts.

Conflict resolutions:
- apps/api/src/routes/states.ts: took main's complete version (reorder,
  GET /:id, resolveProject helper) since plane-lift's states CRUD was
  already incorporated via main
- apps/api/src/routes/tasks.ts: merged both imports (statesTable +
  taskDependencies), combined filter params (stateId/stateGroup/moduleId/
  cycleId from plane-lift + status removed since tasks.status column no
  longer exists), added stateId to zod schemas and insert/update logic

Additional fixes for clean typecheck:
- Removed deleted files that main re-introduced via merge (automations,
  statuses, timeline, gantt, nlp-parser, canvas, notifications,
  automation-engine, quick-add-bar, drizzle 0007-0009, migrate script)
- Fixed tasks.ts: removed all tasks.status references (column replaced by
  stateId), removed taskStatusEnum, removed /:id/status endpoint
- Fixed analytics.ts: replaced tasks.status checks with completedAt checks
- Fixed index.ts: removed duplicate stateRoutes import and route registration
- Cleaned up drizzle journal duplicate entries

Preserved from main:
- taskDependencies table definition and junction table
- Komodo/CI changes (ci.yml, docker-compose.yml)
- DEPLOY.md host fixes
- taskDependencies route code (dependencies/dependents endpoints)
2026-09-07 22:10:01 +00:00
bot-hermes 4833943d6a Merge pull request 'feat: cycles API route with CRUD, membership, and transfer' (#21) from feat/pl-3-cycles into feat/plane-lift-schema 2026-09-07 17:11:34 -04:00
bot-hermes 8fb3279482 Merge remote-tracking branch 'origin/feat/plane-lift-schema' into feat/pl-3-cycles
# Conflicts:
#	apps/api/src/index.ts
#	apps/api/src/routes/cycles.ts
2026-09-07 17:11:02 -04:00
bot-hermes e97e100f88 Merge pull request 'fix(mcp): replace deprecated status param with state_group (PL-10 deploy-day)' (#24) from feat/pl-10-deploy into feat/plane-lift-schema 2026-09-07 16:57:56 -04:00
bot-hermes 814c346296 Merge pull request 'feat: PL-7/8/9 — state-driven board + module/cycle views + link panels + graph edges' (#23) from feat/pl-789-ui into feat/plane-lift-schema 2026-09-07 16:32:56 -04:00
bot-hermes 8e7a128b05 merge: resolve conflicts with feat/plane-lift-schema (add cycleRoutes to index.ts) 2026-09-07 20:32:22 +00:00
bot-hermes c6328c120a feat: implement PL-7, PL-8, PL-9 — state-driven board, module/cycle views, link panels + graph edges
PL-7 — Task Board Columns from States:
- Add State, Module, Cycle, Link TypeScript types to types/index.ts
- Add stateId, moduleId, cycleId, trackedMinutes to Task type
- Rewrite tasks.tsx: fetch states from API, render 5 state-group columns
  (backlog/unstarted/started/completed/cancelled), drag-and-drop updates
  stateId via PATCH /tasks/:id, colored state badges, state filter dropdown,
  project filter
- Fix deprecated POST /tasks/:id/status → PATCH /tasks/:id with stateId
- Update tasks/.tsx: state selector dropdown replaces hardcoded status enum,
  toggle complete uses state-based approach, dependencies replaced with
  link-based UI using /api/links

PL-8 — Module + Cycle Views:
- Create apps/api/src/routes/cycles.ts: full CRUD + task assignment/removal
- Create apps/api/src/routes/links.ts: list/create/delete links between entities
- Register cycleRoutes and linkRoutes in API index
- Add Modules tab to project detail: list modules, expand to show tasks,
  add/remove tasks from modules, create/edit/delete module dialogs
- Add Cycles tab to project detail: sprint board grid, backlog lane,
  manual task transfer between cycles and backlog, create/edit cycle dialogs
- Fix ProjectTasks toggle to use PATCH with stateId instead of deprecated endpoint

PL-9 — Link Panels + Graph:
- Update graph API to read links bidirectionally (source OR target)
- Add link type color map (LINK_TYPE_COLORS) for edge rendering
- Graph edges now colored by linkType (blocks=red, relates=gray, etc.)
- Filter panel shows link types with color indicators
- Task detail Dependencies tab now uses /api/links for add/remove links
- Added link type selector (blocks/relates/parent-child/created-from)
2026-09-07 20:24:54 +00:00
bot-hermes f12c00b670 fix(mcp): replace deprecated status param with state_group in task queries
- tasks.list: replace status filter with state_group (backlog/unstarted/started/completed/cancelled)
- tasks.create: remove obsolete status param (tasks now use state_id FK)
- tasks.update: remove obsolete status param
- Implement state_group filtering via EXISTS subquery on states table
- Update API.md example to use state_group instead of status
2026-09-07 20:19:37 +00:00
bot-hermes 352ac23717 Merge pull request 'feat: links CRUD API + MCP tools for states/modules/cycles/links (PL-4/6)' (#22) from feat/pl-456-backend into feat/plane-lift-schema 2026-09-07 16:17:18 -04:00
bot-hermes 92fabb1a15 feat: links CRUD API + MCP tools for states/modules/cycles/links (PL-4/6)
- Add links.ts: full CRUD for entity links (relates, blocks, parent-child, created-from)
- Update MCP tools: add state_id, state_group, module_id, cycle_id filters
- Remove deprecated dependency/status stubs from tasks.ts
- Mount linkRoutes at /api/links
2026-09-07 20:16:08 +00:00
bot-hermes ed11b722c2 feat: add cycles API route with CRUD, membership, and transfer 2026-09-07 19:59:59 +00:00
Hermes Coding Manager 8342b8243e fix(db): restore taskDependencies table definition dropped in plane-lift refactor
The API routes (apps/api/src/routes/tasks.ts) still import and query
taskDependencies, and the live DB still has the task_dependencies table,
but commit 997aff8 dropped the schema definition. This caused the API
container to crash-loop at startup with:
  SyntaxError: Export named 'taskDependencies' not found

Restore the junction table definition (task_id + depends_on_task_id,
composite PK, index) matching the pre-refactor schema.
2026-09-07 15:47:07 -04:00
bot-hermes 14bb1aa1a8 Merge pull request 'fix: resolve circular type inference in _app/index.tsx route' (#20) from feat/pl-1-typecheck into feat/plane-lift-schema 2026-09-07 15:43:08 -04:00
bot-hermes 43d3daac47 fix: resolve circular type inference in _app/index.tsx route
The dashboard route imported Route from '../_app', which resolves to itself
(_app/index.tsx IS the _app route), creating a self-referencing circular
type inference (TS7022/TS7023).

Fix by importing the root route from '__root' as the parent, which is the
correct ancestor in the route tree hierarchy.
2026-09-07 19:39:44 +00:00
bot-hermes a24bd34cb3 Merge pull request 'feat: states API route with project-scoped workflow states' (#19) from feat/pl-1-states into feat/plane-lift-schema 2026-09-07 15:30:07 -04:00
bot-hermes fdc510bfbd Merge remote-tracking branch 'origin/feat/plane-lift-schema' into feat/pl-1-states
# Conflicts:
#	apps/api/src/index.ts
2026-09-07 19:29:58 +00:00
bot-hermes 1f67a21bcc Merge pull request 'feat: modules API + membership' (#18) from feat/modules-api into feat/plane-lift-schema 2026-09-07 15:24:47 -04:00
bot-hermes c5682765e8 feat: add states CRUD API route with project-scoped workflow states
- Add states.ts with GET/POST/PATCH/DELETE endpoints
- States scoped to project via projectId FK; workspace access resolved through project
- stateGroupEnum enforced (backlog|unstarted|started|completed|cancelled)
- List ordered by sortOrder, auto-increment on create
- Soft-delete via deletedAt column (added to schema)
- 3-step contract on every write: DB write, activity feed, pg_notify
- Register /api/states route in main index.ts
- Default state seeding already present in projects.ts
2026-09-07 19:24:24 +00:00
Hermes Coding Manager ddd52d1743 fix(komodo): lowercase image refs for Docker registry (BuzzbeeSCD -> buzzbeescd) 2026-09-07 14:52:50 -04:00
bot-hermes 75bcd14233 feat: modules API + membership 2026-09-07 18:52:45 +00:00
bot-hermes 583c476e12 Merge pull request 'feat: tasks route stateId/stateGroup rewrite' (#17) from feat/tasks-route into feat/plane-lift-schema 2026-09-07 14:51:07 -04:00
bot-hermes bba8bc7a64 Merge pull request 'feat(states): States API CRUD' (#16) from feat/states-api into main
title
2026-09-07 14:39:49 -04:00
bot-hermes 60fb37c4a3 feat: tasks route stateId/stateGroup rewrite
Replace flat status enum with stateId/stateGroup references:
- Import states table; add state_group filter via EXISTS subquery
- Add module_id and cycle_id filter params to task list endpoint
- Validate stateId on create/update (404 if state not found)
- Auto-set completedAt when state group is 'completed', clear otherwise
- Zero references to old taskStatusEnum remain
2026-09-07 18:37:12 +00:00
bot-hermes 8d2f2486d5 fix(states): add recordActivity + enqueueWebhooks to reorder route 2026-09-07 18:35:01 +00:00
bot-hermes 027ee6fc84 Merge pull request 'chore(komodo): switch to image-based deploys, trim CI pipeline' (#15) from komodo/deploy-setup into main 2026-09-07 14:23:16 -04:00
bot-hermes 2a7d2812d4 feat(states): add states CRUD API routes 2026-09-07 18:22:31 +00:00
Hermes Coding Manager 12d9aa40fd chore(komodo): switch to image-based deploys, trim CI pipeline
- docker-compose.yml: replace build: sections with image: refs
  (git.buzzbee.dev/BuzzbeeSCD/projecte-{svc}:)
- ci.yml: remove deploy + smoke jobs (Komodo owns build+deploy)
- DEPLOY.md: rewrite for Komodo-era workflow, keep deploy.sh as break-glass
- Gitea webhook already wired to Komodo build endpoint
2026-09-07 14:11:01 -04:00
Hermes 7041906e7d feat(plane-lift): API routes, UI components, migrations — Phase 2
New API routes:
- statuses.ts: CRUD for custom task statuses
- automations.ts: automation rules engine
- timeline.ts: entity timeline/activity view
- activity.ts: activity feed endpoint

New UI components:
- gantt/: gantt chart (6 files: chart, task-bar, milestone, timeline, deps, utils)
- automation-rule-builder.tsx: visual rule editor
- notification-center.tsx: in-app notifications
- quick-add-bar.tsx: global quick-add
- entities/: detail-page, activity, comments, inline-edit, note-editor
- tasks/: recurrence-picker

New hooks:
- use-optimistic-patch.ts: optimistic UI updates

New libs:
- nlp-parser.ts + test: natural language task parsing
- notify.ts: notification dispatch
- automation-engine.ts: rule evaluation

DB migrations:
- 0007_custom_task_statuses.sql
- 0008_automation_rules.sql
- 0009_notifications.sql
- migrate-task-statuses.ts: backfill script

Modified:
- tasks.ts: plane-lift integration (stateId/moduleId/cycleId)
- analytics.ts: updated for new schema
- canvas/$id.tsx: restored
2026-09-07 18:09:03 +00:00
bot-hermes 28b2cbd095 fix: restore __root.tsx route (accidentally deleted in 2175c24, breaks web build) 2026-09-07 17:35:02 +00:00
bot-hermes 639306a26f feat: plane-lift schema (states/modules/cycles/links)
Phase 1 of the Plane feature lift into Project E.

Schema changes:
- Add stateGroupEnum, moduleStatusEnum, linkTypeEnum
- Add states table (per-project workflow states with group enum)
- Add modules table (project-scoped planning buckets)
- Add cycles table (time-boxed sprints)
- Add links table (canonical cross-entity mesh)
- Drop taskStatusEnum and tasks.status column
- Add stateId, moduleId, cycleId FKs to tasks
- Drop taskDependencies, noteLinks, noteEntityLinks tables

Project creation bootstrap:
- Seed 5 default states (Backlog/Todo/In Progress/Done/Cancelled) on new project

Minimal API fixes for typecheck:
- Remove references to dropped tables/columns
- Replace status-based queries with completedAt checks
- Stub deprecated dependency/status endpoints for Phase 2

Drizzle migration: 0008_plane-lift-schema.sql (custom, big-bang)
2026-09-07 17:02:04 +00:00
bot-hermes 264f65955b docs: polish README intro for public release 2026-09-05 21:50:48 +00:00
bot-hermes 6c67b1e6ef chore: public polish — remove stray fix scripts, move internal docs, add LICENSE 2026-09-05 21:47:58 +00:00
bot-hermes 2175c246e3 chore: remove unused route files and fix script permissions 2026-08-27 16:35:05 +00:00
bot-hermes ffc50091b1 refactor: remove canvas, automations, and custom statuses; simplify notification and status model 2026-08-22 18:00:41 +00:00
bot-hermes 7b2cdc3bae fix: remove accidentally committed node_modules symlinks from git
The worktree session created node_modules symlinks that were staged with
git add -A. These broke the deploy script which uses cp -r and cannot
overwrite directories with symlinks.
2026-08-19 11:01:42 +00:00
bot-hermes b814a4788d feat: add 5 PM features — custom statuses, Gantt, quick-add, automations, notifications
- Custom workflow statuses: per-project configurable status definitions
  replacing the fixed task_status enum. Each project defines its own
  workflow with drag-to-reorder, color coding, and category mapping.
- Gantt/timeline view: full project roadmap with task bars, dependency
  arrows, milestone diamonds, zoom levels (day/week/month), and drag
  to reschedule.
- Natural-language quick-add: NLP parser extracts dates, priorities,
  projects, labels, and recurrence from free text. Floating bar with
  'n' shortcut and live parsed preview.
- Automation rules: no-code trigger-action system per project. Triggers
  on status change, task creation, due date approaching. Actions set
  status/priority, add labels, create notifications.
- Notification center: in-app bell icon with unread badge, slide-out
  panel, real-time SSE updates, mark read/all read. Replaces raw
  activity feed dropdown.

Schema: adds status_definitions, automation_rules, notifications tables.
Migrations: 0007, 0008, 0009. 41 NLP parser tests pass.
2026-08-19 10:54:29 +00:00