Commit Graph

19 Commits

Author SHA1 Message Date
8208b3b27b feat: switch frontend indexing to code-first identifiers 2026-04-03 16:25:11 +00:00
zhi
4932974579 FE-CAL-001/002/003: Add Calendar page with daily slot view and plans tab
- New CalendarPage with daily view (date navigation, slot list) and plans tab
- Route /calendar added in App.tsx
- Sidebar entry added after Proposals
- Daily view: shows time slots with type, status, priority, duration, event data
- Distinguishes real vs virtual (plan) slots visually
- Plans tab: shows schedule plan rules with schedule parameters
2026-04-01 06:48:12 +00:00
zhi
a08644dde3 FE-PR-001: Rename Propose -> Proposal across frontend
- Rename ProposesPage -> ProposalsPage, ProposeDetailPage -> ProposalDetailPage
- Update Propose type to Proposal (keep Propose as deprecated alias)
- Add GeneratedTask type for accept results
- Switch API calls from /proposes to /proposals (canonical)
- Update sidebar label: Proposes -> Proposals
- Update routes: /proposals (+ legacy /proposes compat)
- Update all UI text: Propose -> Proposal
- Remove feat_task_id display, add generated_tasks section
- Clean up propose references in comments
2026-04-01 04:46:46 +00:00
zhi
5fccc7dc7d Fix: milestone routes use milestone_code, config check via backend
- 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
2026-03-22 10:58:14 +00:00
zhi
a65429250a feat: wire meeting/support detail routes and fix code-first navigation
- 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
2026-03-22 00:17:33 +00:00
zhi
50563f2b3d feat(users): add admin user management page 2026-03-20 10:56:00 +00:00
zhi
35e7d3a141 feat(P10): add Propose type, list page, detail page with accept/reject/reopen + sidebar link 2026-03-17 05:03:49 +00:00
zhi
ef42231697 feat: unify task creation with shared modal 2026-03-16 16:32:09 +00:00
zhi
01affdb020 refactor: rename Issue → Task throughout frontend
- Rename files: IssuesPage → TasksPage, IssueDetailPage → TaskDetailPage,
  CreateIssuePage → CreateTaskPage
- Rename TypeScript interface: Issue → Task (keep backend field names)
- Update routes: /issues → /tasks, /issues/new → /tasks/new, /issues/:id → /tasks/:id
- Update CSS class names: issue-* → task-*, create-issue → create-task
- Update UI text: 'Issues' → 'Tasks', 'Create Issue' → 'Create Task'
- Keep 'issue' as a task subtype value in TASK_TYPES dropdown
- Keep all backend API endpoint paths unchanged (/issues, /comments, etc.)
- Rename local Task interface in MilestoneDetailPage to MilestoneTask
  to avoid conflict with the global Task type
2026-03-16 07:47:58 +00:00
Zhi
9190c17abc Hardcode wizard base to 127.0.0.1 2026-03-14 10:22:36 +00:00
Zhi
f7a19c71d6 Add VITE_WIZARD_HOST env variable 2026-03-13 19:43:04 +00:00
Zhi
f6460e2d70 feat: add Role Editor page 2026-03-12 11:45:30 +00:00
zhi
0ab1d2f380 i18n: translate frontend UI strings to English 2026-03-11 21:19:54 +00:00
zhi
bc1714281c feat: allow public monitor route without login and add monitor page 2026-03-11 11:59:56 +00:00
zhi
bd4a206e76 fix: use configured backend_url for API base instead of /api path
- Read HF_BACKEND_BASE_URL from localStorage in api client
- Refresh baseURL on each request interceptor
- Persist backend_url from wizard config during app bootstrap
- Persist backend_base_url after setup save
2026-03-11 10:31:25 +00:00
zhi
c92e399218 fix: check wizard config for initialized flag instead of backend health
- App checks wizard API for harborforge.json config with initialized=true
- If not initialized, show embedded setup wizard (talks to wizard API via CORS)
- Setup saves config with initialized:true to wizard config volume
- After restart, backend reads config and starts, frontend sees initialized=true
- Remove VITE_API_BASE build arg (not needed, api.ts uses /api relative path)
- Fix Object.entries null crash in DashboardPage
2026-03-11 10:09:33 +00:00
zhi
f8fac48fcc feat: setup wizard page for first-deploy initialization
- SetupWizardPage: step-by-step config (DB, admin, project)
- Connects directly to AbstractWizard via SSH tunnel (127.0.0.1)
- App.tsx: detect backend health, show wizard if not ready
- Auto-switch wizard to readonly after setup
- Add VITE_WIZARD_PORT build arg
- Add vite-env.d.ts for type safety
2026-03-06 13:46:46 +00:00
zhi
54d4c4379a feat: remove nginx, add projects/milestones/notifications pages
- Dockerfile: replace nginx with serve for static files
- Fix auth endpoint: /auth/login → /auth/token
- Add ProjectsPage, ProjectDetailPage
- Add MilestonesPage, MilestoneDetailPage with progress bar
- Add NotificationsPage with unread count
- Sidebar: add milestones/notifications nav, live unread badge
- API: configurable VITE_API_BASE for host nginx proxy
- Types: add Milestone, MilestoneProgress, Notification, ProjectMember
2026-03-06 13:05:19 +00:00
Zhi
853594f447 feat: initial frontend - React + TypeScript + Vite
- Login page with JWT auth
- Dashboard with stats and charts
- Issues list with pagination, filtering
- Issue detail with comments, status transitions
- Create issue form
- Dark theme UI
- Docker (nginx) with API proxy to backend
- Sidebar navigation
2026-02-27 09:47:19 +00:00