- Remove 'story' type from TASK_TYPES in CreateTaskPage.tsx and CreateTaskModal.tsx
- All story/* task types now only creatable via Proposal Accept workflow
- Added comments explaining the restriction
- Add Essential and EssentialType types to frontend types
- Add essentials state and CRUD handlers in ProposalDetailPage
- Display Essential list with type, code, title
- Handle empty state (show message when no essentials)
- Add create/edit modal for Essentials
- Only show edit/delete buttons for open proposals
- Milestone navigation now uses milestone_code instead of numeric id
- MilestoneDetailPage uses milestone.id (numeric) for project-scoped API calls
- App.tsx checks /config/status on backend first, falls back to wizard
- Added milestone_code to Milestone type
- Fixed MilestoneDetailPage to use fetched milestone.id for sub-queries
- Fix: ProjectDetailPage now uses /projects/{id}/milestones instead of /milestones?project_id={code} (fixes 422)
- Add: Reset API Key button on UsersPage with permission-based visibility
- Add: One-time key display with copy-to-clipboard
- Protect admin and acc-mgr accounts from deletion in UI
- New CopyableCode component with monospace styling and click-to-copy
- TaskDetailPage: copyable task code in header
- ProjectDetailPage: copyable project code in header
- MilestoneDetailPage: copyable milestone code in header
- MeetingDetailPage: copyable meeting code in header
- SupportDetailPage: copyable support code in header
- ProposeDetailPage: copyable propose code in header and info section
Helps users easily copy resource codes for CLI usage (hf task get <code>, etc)
- Add routes for /meetings/:meetingId and /supports/:supportId in App.tsx
- Fix MilestoneDetailPage to navigate to code-first detail URLs
- Update table headers from '#' to 'Code' for supports/meetings lists
- Fix TypeScript types for supports/meetings (use any[] instead of Task[])
- MeetingDetailPage: full detail view with attend, transition, edit, delete
- SupportDetailPage: full detail view with take, transition, edit, delete
- DashboardPage: show task_code instead of #id, link via code
- TasksPage: navigate to tasks via task_code
- MilestoneDetailPage: navigate to tasks/supports/meetings via codes
- MilestoneDetailPage: display codes in support/meeting tables
- Fix support/meeting state types to any[] for code property access
- TaskDetailPage: show task_code instead of raw #id in header
- TaskDetailPage: show author_username in comment metadata
- ProjectDetailPage: show member username instead of User #id
- ProposeDetailPage: show created_by_username instead of User #id
- TasksPage: fix status filter options to match actual statuses
(pending/open/undergoing/completed/closed)
- TasksPage: fix status color map for correct status values
- Types: add username/full_name to ProjectMember, author_username
to Comment, created_by_username to Propose
- Supports TODO §3.1 (code-first UI migration)
- Add freeze/start/close action buttons on MilestoneDetailPage
- Freeze: visible in open status, calls POST .../actions/freeze
- Start: visible in freeze status, calls POST .../actions/start
- Close: visible in open/freeze/undergoing, with reason input + confirmation
- Display started_at in milestone meta when present
- Hide edit button and create-item buttons in terminal states
- Add CSS badge styles for freeze (purple), undergoing (amber), completed (green)
- All actions show loading state and error feedback
- types/index.ts: Task status 'progressing' → 'undergoing' + 'completed'; Milestone status updated to open/freeze/undergoing/completed/closed + started_at field
- MilestoneFormModal: dropdown options updated
- MilestoneDetailPage: isProgressing → isUndergoing, badge class simplified
- MilestonesPage: badge class simplified
- TaskDetailPage: status transition map updated for new state machine
- Add RoleEditorPage with role management
- Add Create New Role button (admin only)
- Add Delete Role button (admin only, admin role protected)
- Fix useAuth import in RoleEditorPage