Commit Graph
26 Commits
Author SHA1 Message Date
mbatchelder d7762143bb test: add Vitest API tests for tasks routes
- Tests for GET, POST, PATCH, DELETE task routes
- Tests for dependency cycle detection
- Jest config with SWC transform and module aliases
2026-07-29 06:14:44 -04:00
mbatchelder b6e2ab415e feat: Phase 2 - Tasks CRUD API, kanban/list UI, dialogs, activity feed, keyboard shortcuts
- Tasks REST API under /api/domains/[domainId]/tasks/ with full CRUD, filtering, pagination
- Complete/uncomplete endpoints
- Bulk update endpoint for drag-to-reorder
- Dependencies API with cycle detection
- Tags API for task tagging
- Activity feed API scoped to workspace
- Updated kanban board view with 4 columns (todo/in_progress/done/cancelled)
- Updated list view with status column and workspace-scoped API calls
- Task create dialog with title, description, status, priority, due date, estimate
- Task detail panel (sheet) with full edit capabilities
- Task activity feed widget
- Keyboard shortcuts: c t (new task), e (edit), d (delete), Space (open), Esc (close), 1-4 (filter)
- All routes follow AGENTS.md contract: Drizzle writes + activity feed + pg_notify
2026-07-29 06:12:35 -04:00
mbatchelder b3ff23a5f0 feat: Phase 1 foundation - schema, auth, realtime, shell
- Rewrote Drizzle schema: 20 tables with enums, relations, indexes
- Generated migration with DROP TABLE records (v1 EAV removal)
- Added passkey auth routes (register/login)
- Added requireWorkspaceAccess helper
- Added seedDefaultData for Personal workspace + welcome note
- Updated SSE endpoint for v2 entities + workspace_id filtering
- Created recordActivity helper (insert + pg_notify)
- Updated sidebar: Graph replaces Reports, removed Analytics
- Updated command palette for v2 entities
- Created AGENTS.md with locked contract
- Created llm-wiki scaffold (5 stubs)
- Added inline AGENT INSTRUCTION comments to all 50 API route files
- Fixed globals.css border-border class conflict
- Updated database.ts stub for v1 compatibility
2026-07-29 05:53:13 -04:00
bot-hermes c5e996326c Merge PR #9: Full UX audit fixes 2026-07-28 22:00:19 +00:00
bot-hermes e21028a64c fix: search route - in-process substring match for cross-entity search 2026-07-28 21:54:50 +00:00
bot-hermes 9ddab4e5a5 fix: round 3 UI gaps - habit edit dialog, domain edit, empty states, domain name resolution 2026-07-28 15:02:01 +00:00
bot-hermes a06d34264d fix: compute project progress, task_count, completed_count in detail API 2026-07-28 14:41:07 +00:00
bot-hermes 945dd8904a fix: allow null due_date in task schema for PATCH updates 2026-07-28 14:20:03 +00:00
bot-hermes b76ba9f5c0 fix: notes page default domain should be empty (fetched from API) 2026-07-28 13:57:20 +00:00
bot-hermes 80834ef121 fix: notes page fetches domains on mount for domain name resolution 2026-07-28 13:54:18 +00:00
bot-hermes 640994c9c1 fix: projects page re-fetches on refreshKey change 2026-07-28 13:45:55 +00:00
bot-hermes b45248be87 fix: resolve domain UUIDs in tasks list view 2026-07-26 01:26:37 +00:00
bot-hermes af7d05be0f fix: 7 UX bugs across dashboard, tasks, projects, calendar, settings
- Dashboard: fetch project progress from /api/projects/[id]/progress
- Tasks List: add DropdownMenuTrigger to More options button
- Projects: add New project button with CreateItemDialog integration
- Settings: use color picker value when creating domains
- Calendar: use dynamic domain options instead of hardcoded list
- Dashboard: make View all button navigate to /tasks
- Dashboard: domain names already resolved via domainMap (verified working)
2026-07-26 01:22:41 +00:00
bot-hermes 953a947874 fix: resolve 15+ UX issues across the full app
- CreateItemDialog: shared Zustand store for dialog state
- TopBar: use store instead of router.push navigation
- TaskDetailPanel: dynamic domain fetch from /api/domains
- TodayTasksWidget: domain name resolution from UUIDs
- ProjectProgressWidget: fetch real progress, default to 0
- Calendar page: domain filter fetches from API dynamically
- Habits page: edit/delete dropdown with AlertDialog
- Projects page: domain name display + delete button
- Notes page: domain picker on creation, names in list
- Settings domains: add color picker input
- Tasks list view: MoreHorizontal wired to edit/delete
- HabitCard: domain resolution + edit/delete dropdown
- PocketBase compat: add JSDoc migration comment
2026-07-25 02:22:01 +00:00
mbatchelder 73335484f8 feat: migrate from PocketBase to PostgreSQL with Drizzle ORM
- Add @project-e/db package with Drizzle schema and migrations
- Replace PocketBase client with PostgreSQL-based database client
- Migrate auth from custom to NextAuth.js
- Add Docker Compose with PostgreSQL container
- Update worker to use new database client
- Remove PocketBase-specific files and migrations
- Add drizzle config and initial migration
2026-07-24 07:08:29 -04:00
mbatchelder 6c438eab32 feat: add admin CLI for project management
- User management (list, create, delete, reset-password)
- Data CRUD for all 32 collections
- Import/export with JSON support
- Worker/queue management (status, jobs, retry, trigger)
- Webhook management (list, test, deliveries, retry)
- Agent management (list, CRUD, tasks, trigger, activity)
- Health diagnostics (check, errors, stats)
- JSON output mode (--json flag)
- Run via: npm run cli -- <command>
2026-07-24 07:02:11 -04:00
bot-hermes ec33544172 fix: calendar, habits, analytics PB 0.25 compat (#6) 2026-07-19 19:39:41 -04:00
bot-hermes a21c1606c9 fix: calendar filter, habit service, PB 0.25 field compat
- Calendar: remove unsupported due_date!="" filter (PB 0.25 rejects), fetch all + filter client-side
- habit-service: fix active=true filter to archived!=true (field doesnt exist)
- habit-service: remove references to non-existent fields (completed, skipped, score_config, start_date)
- All PocketBase collections: re-added proper data fields with correct PB IDs for relations

Fixes calendar, analytics, habits heatmap, and habits streaks endpoints.
2026-07-19 23:39:20 +00:00
bot-hermes e76f60e4de fix: PB 0.25 compat — empty filter/sort and created/updated fields (#5) 2026-07-19 11:03:46 -04:00
bot-hermes 327c5bf733 fix: handle empty filter param and add created/updated fields for PB 0.25 compat 2026-07-19 15:03:15 +00:00
bot-hermes a45a2a0bb2 fix: add apps/web/public/.gitkeep for Docker build 2026-07-19 00:10:16 +00:00
bot-hermes 22da26d6e9 fix: resolve Zod v4 record type error and worker TS compilation (#1)
Fixes two build-breaking bugs:

1. Zod v4 type error — z.record() needed 2 args
2. Worker Dockerfile — tsx for TS runtime

Review notes:
- tsbuildinfo build artifact committed (should be gitignored — follow-up)
- tsx as devDependency + --omit=dev in worker Dockerfile = npx fetches on restart (fragile — follow-up)

Merged by Hermes (Grade 36 Bureaucrat)
2026-07-18 20:04:57 -04:00
bot-hermes 301f4ea5ce fix: resolve Zod v4 record type error and worker TypeScript compilation
- packages/shared/src/schemas/agent.ts: z.record(z.unknown()) → z.record(z.string(), z.unknown())
- Dockerfile.worker: add TypeScript compilation support (tsx)

Fixes #build-web and #build-worker container failures.
2026-07-19 00:03:43 +00:00
mbatchelder 4c1cc50231 feat: update ProjectE application 2026-07-18 19:05:52 -04:00
mbatchelder 8f55626e03 refactor: migrate to monorepo structure with Docker, PocketBase, and e2e tests
- Reorganize into apps/, packages/, docs/, e2e/, pocketbase/ directories
- Add Dockerfiles for web, worker, and PocketBase services
- Add docker-compose.yml for local orchestration
- Add turbo.json for monorepo task management
- Add Playwright e2e test infrastructure
- Add PocketBase backend with migrations
- Remove Vite/Next.js/ESLint/PostCSS config files
- Update package.json with workspace dependencies
- Add .env.example and .dockerignore
2026-07-16 06:19:58 -04:00
mbatchelder ec14645a4b chore: initial prototype — UI shell with mock data on vinext/Cloudflare stack 2026-07-13 06:38:40 -04:00