- Sidebar: Apps accordion expands to Documents, which expands to list all user categories; clicking a category navigates to /apps/documents?category_id=<id> - DocumentsPage: reads category_id from URL and applies filter; shows active category chip in FilterBar with dismiss; removed TagEditor (deferred) - doc-service GET /documents: new category_id query param filters via subquery - doc-service POST /documents/categories: detects similar category names and triggers background re-analysis of affected documents so the new category surfaces as a pending AI suggestion on relevant docs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7.4 KiB
2026-04-17 — Switch UX/UI design tool from Penpot to Figma
Timestamp: 2026-04-17T00:00:00
Summary: Replaced all references to Penpot with Figma across the project. The ux-designer agent now describes Figma REST API integration instead of the Penpot API.
Files Modified:
.claude/agents/ux-designer.md— rewrote Penpot setup checklist and API docs to use Figma (personal access token,X-Figma-Tokenheader,api.figma.com/v1endpoints)frontend/STATUS.md— updated Known limitations and Future work to reference Figma instead of PenpotTODO.md— replaced "UX/UI — Penpot setup" section with "UX/UI — Figma setup"
Files Added:
changelog/2026-04-17_switch-penpot-to-figma.md— this entry
2026-04-17 — Adopt shadcn/ui + Tailwind CSS as UI layer
Timestamp: 2026-04-17T00:00:00
Summary: Confirmed shadcn/ui + Tailwind CSS as the UI component library and styling system. Updated CLAUDE.md stack table and frontend/STATUS.md to reflect this decision.
Files Modified:
CLAUDE.md— added UI Library (shadcn/ui) and Styling (Tailwind CSS v3) rows to Stack tablefrontend/STATUS.md— marked shadcn/ui checklist item as done; updated Known limitations note from "evaluation pending" to "adoption in progress"
2026-04-17 — Implement shadcn/ui + Tailwind CSS UI layer
Timestamp: 2026-04-17T12:00:00
Summary: Full implementation of the shadcn/ui + Tailwind CSS UI layer: design token system, theme context, new LoginPage, AppShell + Sidebar replacing the inline Nav component.
Files Added:
frontend/tailwind.config.ts— Tailwind config with CSS-variable-based design tokens (primary, accent, background, surface, border, foreground, muted)frontend/postcss.config.js— PostCSS config (tailwindcss + autoprefixer)frontend/components.json— shadcn/ui init config (style: default, baseColor: slate, cssVariables: true)frontend/src/styles/theme.css— Tailwind directives + full CSS custom property token set (light/dark mode)frontend/src/lib/utils.ts—cn()utility (clsx + tailwind-merge)frontend/src/components/ui/button.tsx— shadcn/ui Button (default, ghost, outline, destructive variants)frontend/src/components/ui/input.tsx— shadcn/ui Inputfrontend/src/hooks/useTheme.ts— theme hook (localStorage + OS preference detection)frontend/src/components/ThemeToggle.tsx— sun/moon ghost icon buttonfrontend/src/components/Sidebar.tsx— collapsible left sidebar (expanded/collapsed states, NavLinks, admin-only item, user avatar, logout)frontend/src/components/AppShell.tsx— layout wrapper (Sidebar + scrollable main)
Files Modified:
frontend/package.json— added lucide-react, clsx, tailwind-merge, class-variance-authority, @radix-ui/react-slot, tailwindcss, autoprefixer, postcssfrontend/vite.config.ts— added@/path alias via fileURLToPathfrontend/src/main.tsx— import theme.cssfrontend/src/App.tsx— PrivateRoute and AdminRoute now wrap children in AppShell; removed Nav importfrontend/src/pages/LoginPage.tsx— full redesign: two-column grid (form panel + hero panel), shadcn Input/Button, ThemeTogglefrontend/src/pages/DashboardPage.tsx— removed Nav, applied Tailwind headingsfrontend/src/pages/AppsPage.tsx— removed Navfrontend/src/pages/ProfilePage.tsx— removed Navfrontend/src/pages/AdminPage.tsx— removed Navfrontend/src/pages/DocumentsPage.tsx— removed Navfrontend/src/pages/DocumentAdminSettingsPage.tsx— removed Navfrontend/src/pages/AIAdminSettingsPage.tsx— removed Navfrontend/STATUS.md— added component inventory table; updated What it is; updated Future work checklist
2026-04-17 — Per-service system prompts with AI Settings tab view
Timestamp: 2026-04-17T12:00:00
Summary: Added runtime-editable system prompts per service, stored in each service's config file on the shared volume. The AI Service Settings page now has a tab view (General / System Prompts).
Files Added / Modified / Deleted
backend/app/core/app_config.py— AddedDocServiceSystemPromptsmodel, updatedDocServiceConfig, addedload_all_system_prompts,save_service_system_prompts,SYSTEM_PROMPT_SERVICESregistrybackend/app/routers/settings.py— AddedSystemPromptUpdateschema,GET /system-promptsandPATCH /system-prompts/{service_id}endpointsfeatures/doc-service/app/services/config_reader.py— Added_DEFAULT_SYSTEM_PROMPT,_DEFAULT_USER_TEMPLATE, andsystem_promptskey to_DEFAULT_CONFIGfeatures/doc-service/app/services/ai_client.py— Loads system prompt and user template dynamically from config at runtime; falls back to defaultsfrontend/src/api/client.ts— AddedServiceSystemPrompt,SystemPromptsDatatypes,getSystemPromptsandupdateSystemPromptAPI functionsfrontend/src/pages/AIAdminSettingsPage.tsx— Refactored to tab view (General | System Prompts); System Prompts tab shows per-service editable textarea cardsfeatures/ai-service/STATUS.md— Documented system prompts architecturefeatures/doc-service/STATUS.md— Documented runtime prompt loading
2026-04-17 — Apps page: card surface colour + whole-card click
Timestamp: 2026-04-17T00:00:00
Summary: Cards on the Apps page now render with the --color-surface token (distinct from the page background), and clickable cards (status = available + path set) are wrapped in a <Link> so the entire frame navigates to the app. The Settings link is unchanged and stops click propagation.
Files Modified:
frontend/src/pages/AppsPage.tsx— AddedcardStyle/clickableCardStyleobjects using CSS custom properties; conditionally wraps card in<Link>vs<div>; removed standalone "Open" button; settings link gainse.stopPropagation()
2026-04-17 — Sidebar app sub-navigation, category filtering, and re-analysis on category creation
Timestamp: 2026-04-17T00:00:00
Summary: Added expandable Apps section to the sidebar with Documents → categories sub-navigation. Clicking a category filters the documents view. Removed tag UI from the document list (deferred). When a new category is created, similar existing categories are detected and affected documents are re-analysed in the background so the new category surfaces as a pending AI suggestion.
Files Modified:
frontend/src/components/Sidebar.tsx— replaced flat Apps nav item with collapsible accordion; Documents sub-item expands to list all user categories; category links navigate to/apps/documents?category_id=<id>frontend/src/pages/DocumentsPage.tsx— removedTagEditorcomponent; addeduseSearchParamsforcategory_idURL param; category filter chip shown in FilterBar with dismiss button; "Clear filters" now also clears category filterfrontend/src/api/client.ts— addedcategory_idfield toDocumentListParamsfeatures/doc-service/app/routers/documents.py— addedcategory_idquery param toGET /documents; filters via subquery oncategory_assignmentsfeatures/doc-service/app/routers/categories.py—POST /documents/categoriesnow finds similar categories by name (word overlap + SequenceMatcher) and triggers a background task to re-run AI extraction on affected documents, merging newsuggested_categoriesinto theirextracted_datafeatures/doc-service/STATUS.md— updated endpoints table and filter params tablefrontend/STATUS.md— updated sidebar and documents page sections