Commit graph

41 commits

Author SHA1 Message Date
Leivur Djurhuus
19cd24c07a fix: Send plain text history to prevent orphaned tool_use block errors
Claude's API requires every tool_use block to be followed by a matching
tool_result. Since tool interactions are fully resolved server-side within
a single request, the client should only send plain text in conversation
history — never structured content blocks that contain tool_use references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 15:29:20 -05:00
Leivur Djurhuus
7c70c3aba3 feat: Use pgvector semantic search in chat search_entities tool
Replace word-level text matching with pgvector cosine similarity search
for projects and deliverables. The search query is embedded via Ollama's
nomic-embed-text model and compared against stored 768-dim vectors, so
natural language queries like "manx beetroot mauve" match "[BPS] ManxR2 -
Beetroot Mauve" through semantic proximity.

- Primary: pgvector cosine similarity (projects + deliverables)
- Fallback: word-level text search when Ollama is unavailable
- Users: text search only (no embedding column on users table)
- Results filtered by relevance score > 0.3, sorted by similarity
- Stage details fetched for top deliverable matches

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 15:25:41 -05:00
Leivur Djurhuus
92cb9567de feat: Overhaul AI chat with SSE streaming, fuzzy search, and clickable suggestions
- Add SSE streaming to chat API so users see real-time tool call progress
  instead of waiting for the full response
- Enrich system prompt with full data model, pipeline stages, enums, and
  domain knowledge so Claude makes fewer errors
- Implement word-level fuzzy search in search_entities — splits queries into
  individual terms and scores results by match count, so "manx beetroot mauve"
  finds "[BPS] ManxR2 - Beetroot Mauve"
- Add clickable entity suggestion chips when search returns multiple candidates,
  eliminating the need to retype exact names
- Move page context from fake conversation turns into the system prompt param
- Preserve structured content blocks (tool_use/tool_result) in client-side
  message history for proper multi-turn context
- Remove dryRun confirmation pattern — mutations execute directly
- Increase Claude API timeout from 30s to 60s and max tool iterations from 5 to 10
- Show Ollama fallback warning ("Limited mode — no tool access") in UI

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 15:21:45 -05:00
Leivur Djurhuus
8c95d4befe feat: Enhance chat message handling to support structured content blocks for tool interactions 2026-03-12 14:49:50 -05:00
Leivur Djurhuus
94c43af318 feat: Enhance chat functionality with project and deliverable context integration 2026-03-12 14:44:06 -05:00
Leivur Djurhuus
3a0bd22d0d feat: Implement Assign Artist functionality with user assignment management 2026-03-12 14:34:47 -05:00
Leivur Djurhuus
f653b65df4 feat: Add bulk import functionality for Master CG Tracker Excel files 2026-03-12 13:55:14 -05:00
Leivur Djurhuus
e5b398d7da feat: Implement automation event bus and rule engine
- Add event bus for dispatching automation events with handlers.
- Create rule engine to evaluate events against defined triggers.
- Introduce chat provider to interface with Claude API and Ollama fallback.
- Define tool schemas for Claude-compatible operations.
- Implement tool executor to map tool calls to service layer functions.
- Develop automation service for CRUD operations on rules and event handling.
2026-03-12 11:20:21 -05:00
Leivur Djurhuus
172533b6d7 feat: update LLM model version and increase context size for semantic search 2026-03-11 16:16:10 -05:00
Leivur Djurhuus
13066502cf feat: enhance Smart Search Panel with formatted text rendering and improve semantic search response structure 2026-03-06 19:34:59 -06:00
Leivur Djurhuus
9d5acf1683 feat: add Smart Search Panel with semantic search capabilities
- Implemented Smart Search Panel component for enhanced project and deliverable search functionality.
- Introduced useSemanticSearch and useOllamaHealth hooks for managing search queries and AI availability.
- Developed embedding-service to generate and store vector embeddings for projects and deliverables.
- Created semantic-search-service to handle vector search, structural query detection, and LLM summarization.
- Added support for hybrid search combining structural filters and semantic queries.
- Integrated UI components for displaying search results and user interactions.
2026-03-06 16:13:36 -06:00
Leivur Djurhuus
1c268e725a feat(timeline): implement drag-to-pan and keyboard navigation for timeline views 2026-03-04 15:06:11 -06:00
Leivur Djurhuus
8765888d72 feat(timeline): update default zoom level to day and enhance production timeline with weekend highlighting and improved header layout 2026-03-03 16:16:32 -06:00
Leivur Djurhuus
56cfeb53b3 feat(gantt-timeline): enhance Gantt chart with weekend highlighting and overdue indicators 2026-03-03 16:01:37 -06:00
Leivur Djurhuus
fd92956e9d feat(timeline): implement production timeline view and API integration 2026-03-03 15:54:17 -06:00
Leivur Djurhuus
c8f88c6ab8 feat(workload): add capacity management components and hooks
- Implemented `CapacityCell`, `CapacityDetailPopover`, and `CapacityGrid` components for displaying user workload and capacity.
- Created `UtilizationHeatmap` component to visualize team member utilization over weeks.
- Added hooks for managing skills (`useSkills`, `useCreateSkill`, `useDeleteSkill`, `useUserSkills`, `useSetUserSkill`, `useRemoveUserSkill`, `useStageSuggestions`) and workload (`useWorkload`, `useUpdateCapacity`).
- Developed services for skill management (`skill-service.ts`) and workload management (`workload-service.ts`) to interact with the database.
- Introduced logic for calculating user workload, including active assignments and capacity overload detection.
- Enhanced UI with tooltips and badges for better user experience.
2026-03-03 15:17:45 -06:00
Leivur Djurhuus
edcf31672e feat: enhance UI components and add assignment feature to deliverables
- Updated CommandItem component to use rounded-lg for better aesthetics.
- Modified DialogOverlay and DialogContent to improve backdrop and border radius.
- Changed DropdownMenuItem, DropdownMenuCheckboxItem, and DropdownMenuRadioItem to use rounded-md for consistency.
- Enhanced SelectItem with rounded-md for a more modern look.
- Updated SheetOverlay to improve backdrop styling.
- Adjusted Toaster component border radius for a more refined appearance.
- Enhanced Table component with rounded-xl and shadow for better visual hierarchy.
- Added assignment display feature in DeliverableTable and KanbanBoard components, showing assigned users with badges.
- Updated deliverable service to include assignments in the data fetching process.
- Created a new seed script for tracker data to facilitate testing and development.
2026-03-02 13:46:55 -06:00
Leivur Djurhuus
a47c6791d9 feat: add validators for PowerPoint and Word documents, and Excel recalculation script
- Implement PPTXSchemaValidator for validating PowerPoint presentation XML files against XSD schemas.
- Create RedliningValidator to check tracked changes in Word documents, ensuring proper author tracking.
- Introduce recalc.py script to recalculate Excel formulas using LibreOffice, including error handling for Excel-specific errors.
- Add UI components for collapsible sections and tabs using Radix UI.
- Implement stage validation schema using Zod for managing project stages.
2026-03-02 12:23:09 -06:00
Leivur R. Djurhuus
4eb9684291 Refactor login page layout and styles for improved branding and accessibility 2026-02-28 22:34:23 -06:00
Leivur R. Djurhuus
6422428333 Add dev bypass for authentication checks in middleware and session retrieval 2026-02-28 22:23:14 -06:00
Leivur R. Djurhuus
f4e6da9210 Add performance optimizations and accessibility improvements
Dynamic imports for heavy components (Kanban, Gantt, CommandPalette),
skip-to-content link, ARIA landmarks/labels on sidebar, breadcrumbs,
topbar notifications, kanban board, gantt timeline, and pipeline
progress. Focus-visible ring styles for keyboard navigation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 22:01:40 -06:00
Leivur R. Djurhuus
8691f1a1c2 Add command palette, bulk operations, error boundaries, responsive sidebar
- Cmd+K command palette: search projects, navigate pages, toggle theme
- Bulk operations in table: checkbox selection, bulk status/priority/delete
- Error boundaries at root and app level, 404 page, app loading state
- Responsive sidebar: hidden on mobile, Sheet-based hamburger menu
- Sidebar state persisted to localStorage via Zustand persist middleware

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:56:15 -06:00
Leivur R. Djurhuus
f99ddde503 Add deadline tracking with approaching/overdue detection
Deadline service checks deliverables and stages for approaching
(within 3 days) and overdue deadlines. API endpoint for fetching
deadlines and optionally generating notifications for producers.
Visual overdue indicators (red text + warning icon) on stage cards.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:47:42 -06:00
Leivur R. Djurhuus
3b8bb1d5d6 Add Excel import and export for deliverables
Export: multi-sheet styled workbook (Overview + Pipeline detail)
with color-coded status cells via ExcelJS.
Import: upload Excel with preview/validation step, then commit.
Supports Name, Priority, Due Date, Notes columns with flexible
column name matching. Import dialog on project detail page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:46:23 -06:00
Leivur R. Djurhuus
4b6576233e Add dashboard with KPI cards, charts, and overdue alerts
Dashboard service aggregates project/deliverable/stage stats.
KPI cards for active projects, deliverables, overdue count, and
pipeline completion rate. Recharts pie chart for status distribution,
stacked bar chart for stage completion by template type.
Overdue deliverables table and recent completions feed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:43:55 -06:00
Leivur R. Djurhuus
4f841c73b7 Add notification system with topbar dropdown and full page
Service with auto-notification helpers for assignments, status changes,
revisions, and comments. Topbar bell shows real unread count with
popover dropdown. Full notifications page with mark-read actions.
Polls unread count every 30 seconds.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:41:56 -06:00
Leivur R. Djurhuus
2128e79c1a Add revision tracking and threaded comments for pipeline stages
Services, API routes, hooks, and UI components for:
- Revision rounds with submit/review/approve/request-changes flow
- Threaded comments with replies on each stage
- Stage detail sheet accessible from deliverable detail page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:40:12 -06:00
Leivur R. Djurhuus
3055be6d44 Add deliverable detail page with interactive stage cards
Pipeline stage cards show status, assignments, dates, gate/optional
indicators, and transition action buttons with dependency enforcement.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:37:18 -06:00
Leivur R. Djurhuus
4d836c57e3 Add Timeline View with custom Gantt chart
- Gantt-style timeline at /projects/[projectId]/timeline
- Custom implementation (no external Gantt lib — React 19 compatible)
- Deliverables as rows, stages as colored bars
- Week-scale headers, auto-computed date range
- Today line indicator, status-colored bars with tooltips
- Read-only V1 per implementation plan

Completes Phase 2: all three views (Table, Board, Timeline) plus
assignments, pipeline visualizer, and project detail page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:31:25 -06:00
Leivur R. Djurhuus
53198546aa Add Board View with Kanban drag-and-drop
- Kanban board at /projects/[projectId]/board
- 5 columns: Not Started, In Progress, In Review, Approved, On Hold
- Drag-and-drop via @hello-pangea/dnd with status update on drop
- Cards show name, priority badge, pipeline progress
- Left border accent color by deliverable status
- Error toast on failed moves with auto-revert

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:30:20 -06:00
Leivur R. Djurhuus
97a690f2a3 Add Table View with TanStack Table
- Full spreadsheet view at /projects/[projectId]/table
- Columns: name, status, priority, pipeline progress, due date
- Sortable columns with custom priority sort order
- Global search filter and status dropdown filter
- Compact 40px rows, sticky header, muted alternating rows

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:29:33 -06:00
Leivur R. Djurhuus
97464f6a19 Add project detail page with pipeline visualizer and view switcher
- Project detail page at /projects/[projectId] with deliverables list
- PipelineProgress component: 10-segment status bar with tooltips
- DeliverableFormDialog for creating deliverables
- View switcher tabs (Table/Board/Timeline) linking to sub-routes
- TanStack Query hooks for deliverables and stage status updates

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:28:40 -06:00
Leivur R. Djurhuus
740957d443 Add artist assignment system and My Work page
- Assignment service: assign/unassign users to stages, get user's work
- API routes: POST/DELETE /api/stages/:id/assignments, GET /api/my-work
- My Work page with assignments grouped by project
- StageStatusBadge component with semantic status colors
- Zod validator for assignment input

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:27:21 -06:00
Leivur R. Djurhuus
1b8392b962 Add user management: API routes, service layer, role-based access
- User service: listUsers, updateUserRole, getUserById
- API routes: GET /api/users, PATCH /api/users/:id
- Role-based access control (only ADMIN/PRODUCER can change roles)
- Completes Phase 1 of the implementation plan

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:15:46 -06:00
Leivur R. Djurhuus
9f97cfe218 Add Deliverable CRUD with pipeline dependency engine
- Deliverable service auto-creates 10 pipeline stages on creation
- Stages start as BLOCKED/NOT_STARTED based on dependency rules
- Dependency engine: canStageStart() validates all prerequisites
- Stage machine: enforces valid status transitions
- Critical gate approval auto-unblocks downstream stages
- API routes for deliverables (nested under projects) and stages
- Zod validators for deliverable create/update

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:14:32 -06:00
Leivur R. Djurhuus
2859a50761 Add Project CRUD: API routes, service layer, form, and list page
- Zod validation schemas for create/update project
- Service layer with listProjects, getProject, createProject,
  updateProject, deleteProject
- API routes: GET/POST /api/projects, GET/PATCH/DELETE /api/projects/:id
- TanStack Query hooks for all project operations
- Project list page with card grid, status/priority badges
- Project create dialog with form validation
- QueryProvider + API utility helpers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:11:46 -06:00
Leivur R. Djurhuus
afa98282ff Add app shell layout with sidebar, topbar, breadcrumbs, theme toggle
- Collapsible sidebar (256px / 64px) with nav items and tooltips
- Topbar with breadcrumbs and notification bell placeholder
- Theme toggle (light/dark/system) via dropdown
- Zustand store for sidebar collapsed state
- Placeholder pages for all main routes (dashboard, projects,
  my-work, notifications, settings)
- Authenticated (app) layout group wrapping all protected routes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:09:07 -06:00
Leivur R. Djurhuus
b4ae910cf5 Add Auth.js v5 with Google + Microsoft Entra ID SSO
- NextAuth config with PrismaAdapter, database sessions
- Session callback enriches with role + organizationId
- Login page with Google and Microsoft sign-in buttons
- Cookie-based middleware for auth protection (Edge-compatible)
- Type augmentation for session user fields

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:07:38 -06:00
Leivur R. Djurhuus
c13dc9cacc Add Prisma 7 schema with full data model and seed script
- 12 models: Organization, User, Account, Session, Project,
  Deliverable, DeliverableStage, StageAssignment, Revision,
  Comment, Notification, plus pipeline templates/dependencies
- Prisma 7 adapter pattern with @prisma/adapter-pg
- Seed script with 10 pipeline stages and dependency rules
- Environment config (.env.example)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:06:17 -06:00
Leivur R. Djurhuus
d6919600de Add shadcn/ui components and TooltipProvider
Install 18 core UI primitives (button, card, dialog, table,
command, etc.) with New York style. Wire TooltipProvider in
root layout.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 21:00:51 -06:00
Leivur R. Djurhuus
856faa896e Initial scaffold: Next.js 16, TypeScript, Tailwind CSS 4, ESLint, Prettier
- App Router with src/ directory structure
- Design system CSS variables (Oliver/Brandtech palette, light + dark mode)
- Montserrat + Inter + JetBrains Mono font configuration
- next-themes provider for theme toggle
- Full folder structure per implementation plan
- nvm configured for Node 22

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 20:58:48 -06:00