chore: auto-commit after execute-task

GSD-Unit: M001/S06/T01
This commit is contained in:
2026-03-27 08:54:34 +01:00
parent 7a44ebbd77
commit bdc47dde7f
31 changed files with 2017 additions and 966 deletions
@@ -1,30 +1,22 @@
---
title: T01 summary
status: done
files:
- job-tracker-ui/src/components/DashboardView.tsx
- job-tracker-ui/src/components/RemindersView.tsx
- job-tracker-ui/src/jobWorkspaceRoute.ts
- job-tracker-ui/src/daily-control-loop.test.tsx
verification:
- CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/daily-control-loop.test.tsx
- CI=true npm --prefix job-tracker-ui run build
id: T01
parent: S04
milestone: M001
provides: []
requires: []
affects: []
key_files: []
key_decisions: []
patterns_established: []
drill_down_paths: []
observability_surfaces: []
duration: ""
verification_result: ""
completed_at: 2026-03-27T07:30:18.615Z
blocker_discovered: false
---
Turned dashboard and reminders into actionable entry surfaces instead of dead-end summaries.
# T01: Turn reminders and dashboard into actionable entry surfaces
What changed:
- `job-tracker-ui/src/jobWorkspaceRoute.ts`
- added a single helper for routed job-workspace entry with `open`, `tab`, and optional `followMode`
- `job-tracker-ui/src/components/DashboardView.tsx`
- added a `Needs Follow-up` action section driven by reminder jobs
- wired dashboard actions into the shared routed job-workspace flow
- `job-tracker-ui/src/components/RemindersView.tsx`
- replaced the separate reminder modal loop with routed entry into `/jobs`
- reminders now open the relevant workspace state directly instead of creating another local workflow
- `job-tracker-ui/src/daily-control-loop.test.tsx`
- added focused proof that dashboard and reminders route into the right workspace flow
Verification:
- Focused daily-loop test passed
- Frontend build passed
## What Happened
No summary recorded.
@@ -2,88 +2,21 @@
id: T02
parent: S04
milestone: M001
provides:
- Makes job-table urgency signals actionable and keeps table, reminders, and dashboard on the same routed job-workspace loop.
key_files:
- job-tracker-ui/src/components/JobTable.tsx
- job-tracker-ui/src/daily-control-loop.test.tsx
- job-tracker-ui/src/i18n/translations.ts
- .gsd/milestones/M001/slices/S04/S04-PLAN.md
- .gsd/milestones/M001/slices/S04/tasks/T02-PLAN.md
key_decisions:
- Derived table chips and primary row actions from one shared action-signal model so table urgency and routed next-action behavior cannot drift.
patterns_established:
- Use the shared `/jobs?open=...&tab=...&followMode=...` workspace route from overview surfaces and prove each surface with focused UI/browser checks.
observability_surfaces:
- job-tracker-ui/src/components/JobTable.tsx
- job-tracker-ui/src/daily-control-loop.test.tsx
- Browser UAT on the built app served locally with mocked API routes at http://localhost:4173
- .gsd/milestones/M001/slices/S04/S04-PLAN.md verification/failure-path notes
duration: ~2h
verification_result: passed
completed_at: 2026-03-24T13:55:43+01:00
provides: []
requires: []
affects: []
key_files: []
key_decisions: []
patterns_established: []
drill_down_paths: []
observability_surfaces: []
duration: ""
verification_result: ""
completed_at: 2026-03-27T07:30:18.615Z
blocker_discovered: false
---
# T02: Make the job table expose the right next action and prove the daily loop
**Made the job table show actionable follow-up/package next steps and proved table, reminders, and dashboard all land in the same job workspace flow.**
## What Happened
I first fixed the flagged observability gaps in the slice and task plans so this unit explicitly described its failure-path coverage and inspection surfaces.
In `job-tracker-ui/src/components/JobTable.tsx`, I replaced the split decorative/action logic with a shared action-signal model. The table now derives both row chips and the primary “Next action” control from the same follow-up/package readiness signals, so the visible urgency affordance and the routed action cannot drift apart. Package work now reflects the same readiness inputs already used by the table filters: missing tailored CV, missing notes, or both.
I updated translations in `job-tracker-ui/src/i18n/translations.ts` so the new package-work affordances and details are user-facing copy instead of hardcoded strings.
In `job-tracker-ui/src/daily-control-loop.test.tsx`, I expanded the focused daily-loop proof so the table explicitly participates in the routed loop: the test now clicks a table urgency signal for follow-up work and the tables next-action button for package work, while the earlier reminders/dashboard proofs remain in place.
For runtime verification, I also exercised the built app in a browser. Because `dotnet` is unavailable in this environment, I served the compiled UI locally and mocked the frontends own API contract in-browser, then verified that table, reminders, and dashboard each opened the expected job workspace state.
## Verification
Verified the focused UI test passes, the frontend production build succeeds, and browser UAT confirms the routed daily loop across all three surfaces.
- Focused test: `CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/daily-control-loop.test.tsx`
- Build: `CI=true npm --prefix job-tracker-ui run build`
- Browser UAT on built app (`npx serve -s job-tracker-ui/build -l 4173`) with mocked API contract:
- `/jobs`: clicked table next action for Backend Developer and confirmed Follow-up context + saved cover-letter reuse signal
- `/reminders`: clicked Missing tailored CV → Open and confirmed Tailored CV workspace for Platform Engineer
- `/dashboard`: clicked Follow up card action and confirmed routed follow-up workspace
- Network errors were cleared after route mocking; the verified browser interactions completed without failed mocked requests
## Verification Evidence
| # | Command | Exit Code | Verdict | Duration |
|---|---------|-----------|---------|----------|
| 1 | `CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/daily-control-loop.test.tsx` | 0 | ✅ pass | 4.723s |
| 2 | `CI=true npm --prefix job-tracker-ui run build` | 0 | ✅ pass | 12.969s |
| 3 | Browser UAT on `http://localhost:4173` with mocked `http://localhost:5202/api/*` routes: table → follow-up workspace, reminders → tailored CV workspace, dashboard → follow-up workspace | 0 | ✅ pass | ~4m |
## Diagnostics
Inspect `job-tracker-ui/src/components/JobTable.tsx` to see the shared action-signal derivation that drives both urgency chips and primary next-action buttons.
Run `CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/daily-control-loop.test.tsx` to catch drift between table, reminders, dashboard, and the routed workspace state.
For browser-level inspection, serve the built UI and verify these surfaces route into `/jobs` with the expected workspace content:
- table signal / next-action controls
- reminders Open actions
- dashboard Needs Follow-up actions
## Deviations
Used browser-level API route mocks for manual UAT because the local ASP.NET API could not be started in this environment (`dotnet` is not installed). The shipped UI code was still exercised in a real browser against its own HTTP contract.
## Known Issues
The focused Jest run still emits existing React Router v7 future-flag warnings from the test harness. They do not fail the tasks verification gate and were not introduced by this change.
## Files Created/Modified
- `job-tracker-ui/src/components/JobTable.tsx` — unified actionable urgency chips and primary next-action routing for follow-up and package work
- `job-tracker-ui/src/daily-control-loop.test.tsx` — extended the focused loop test to prove the table participates in the same routed workspace flow
- `job-tracker-ui/src/i18n/translations.ts` — added user-facing copy for package-work affordances and details
- `.gsd/milestones/M001/slices/S04/S04-PLAN.md` — added explicit slice-level failure-path verification guidance
- `.gsd/milestones/M001/slices/S04/tasks/T02-PLAN.md` — added the missing Observability Impact section
No summary recorded.