You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: mesher/client/README.md
+45-15Lines changed: 45 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
This package is the canonical TanStack dashboard app for Mesher.
4
4
5
-
It runs as a Vite-powered TanStack Start app from `hyperpush-mono/mesher/client/` and stays on the existing mock-data and client-state contract. Do not add backend calls, server functions, or widened URL/search-param semantics here as part of path-migration work.
5
+
It runs as a Vite-powered TanStack Start app from `hyperpush-mono/mesher/client/` and now exercises the Issues route through a provider-owned same-origin `/api/v1` seam for both live reads and the supported maintainer actions. The shell stays visually intact by overlaying truthful Mesher issue/detail/timeline state onto the existing mock-shaped dashboard model, so unsupported fields remain visible and explicitly shell-only instead of disappearing or pretending to be live.
6
6
7
7
## Package root
8
8
@@ -21,8 +21,9 @@ npm --prefix mesher/client ci
21
21
npm --prefix mesher/client run dev
22
22
npm --prefix mesher/client run build
23
23
PORT=3001 npm --prefix mesher/client run start
24
-
npm --prefix mesher/client run test:e2e:dev
25
-
npm --prefix mesher/client run test:e2e:prod
24
+
bash mesher/scripts/seed-live-issue.sh
25
+
npm --prefix mesher/client run test:e2e:dev -- --grep "issues live"
26
+
npm --prefix mesher/client run test:e2e:prod -- --grep "issues live"
26
27
```
27
28
28
29
From this package directory:
@@ -32,40 +33,69 @@ npm ci
32
33
vite dev
33
34
vite build
34
35
node server.mjs
35
-
npm run test:e2e:dev
36
-
npm run test:e2e:prod
36
+
bash ../scripts/seed-live-issue.sh
37
+
npm run test:e2e:dev -- --grep "issues live"
38
+
npm run test:e2e:prod -- --grep "issues live"
37
39
```
38
40
39
41
## Runtime contract
40
42
41
43
-`vite dev` starts the local dashboard dev server on port `3000` by default.
42
44
-`vite build` produces the production bundle in `dist/`.
43
45
-`node server.mjs` serves the built app and static assets from `dist/client`.
44
-
-`test:e2e:dev` verifies the direct-entry route and shell-state parity against the dev server.
45
-
-`test:e2e:prod` verifies the same parity contract against the built production server.
46
+
-`test:e2e:dev` verifies the live Issues seam against the dev server and same-origin Mesher proxy.
47
+
-`test:e2e:prod` verifies the same live seam against the built production server.
48
+
-`bash mesher/scripts/seed-live-issue.sh` deterministically seeds the read-proof issue and resets the action-proof issue back to an open/unresolved state before live verification.
49
+
50
+
## Live Issues seam
51
+
52
+
- Overview reads go through same-origin `/api/v1/projects/default/*` routes.
53
+
- Selecting an issue reads `/api/v1/issues/:issue_id/events?limit=1`, `/api/v1/events/:event_id`, and `/api/v1/issues/:issue_id/timeline` through the provider-owned state path.
54
+
- Supported live maintainer actions are `Resolve`, `Reopen`, and `Ignore`, which call same-origin `/api/v1/issues/:issue_id/{resolve,unresolve,archive}` from the existing detail action row.
55
+
- The UI intentionally uses a mixed live/mock overlay: live Mesher truth replaces supported fields, while unsupported shell sections keep explicit fallback values.
56
+
-`AI Analysis`, issue-link chrome, bounty chrome, and the retained proof-rail buttons remain visible but shell-only; they are not claimed as live backend actions.
57
+
- Backend read and mutation failures are surfaced through the mounted Radix toaster and `issues-shell` / detail-panel `data-*` attributes instead of silently reverting.
46
58
47
59
## Important files
48
60
49
61
-`src/routes/` — TanStack route tree for the dashboard shell and direct-entry pages.
50
62
-`src/router.tsx` and `src/routeTree.gen.ts` — router assembly.
51
63
-`server.mjs` — package-local production bridge for the built app.
-`components/ui/toaster.tsx` and `hooks/use-toast.ts` — mounted Radix toast surface reused for live read and mutation failures.
54
69
-`app/globals.css` — shared global styles imported by the TanStack root route.
55
70
56
71
## Verification notes
57
72
58
-
The canonical proof surface for this package is package-local:
73
+
The canonical full-shell proof rail layers both seed helpers with the assembled walkthrough and the existing live Issues/admin+ops suites:
59
74
60
75
```bash
61
-
npm --prefix mesher/client run build
62
-
npm --prefix mesher/client run test:e2e:dev
63
-
npm --prefix mesher/client run test:e2e:prod
76
+
bash mesher/scripts/seed-live-issue.sh
77
+
bash mesher/scripts/seed-live-admin-ops.sh
78
+
npm --prefix mesher/client run test:e2e:dev -- --grep "issues live|admin and ops live|seeded walkthrough"
79
+
npm --prefix mesher/client run test:e2e:prod -- --grep "issues live|admin and ops live|seeded walkthrough"
80
+
```
81
+
82
+
-`tests/e2e/seeded-walkthrough.spec.ts` is the canonical route-to-route shell proof. It covers direct-entry and in-app navigation parity across Issues, Performance, Solana Programs, Releases, Alerts, Bounties, Treasury, and Settings.
83
+
-`tests/e2e/live-runtime-helpers.ts` owns the shared same-origin request tracking, direct-backend rejection, and filtered runtime diagnostics used by the walkthrough and route-level live suites.
84
+
-`bash mesher/scripts/seed-live-issue.sh` resets the seeded live Issues read/action fixtures.
85
+
-`bash mesher/scripts/seed-live-admin-ops.sh` resets the seeded Alerts and Settings admin/ops fixtures used by the assembled rail.
86
+
87
+
The narrower route-level verification commands remain useful when you are only iterating on the Issues seam:
88
+
89
+
```bash
90
+
bash mesher/scripts/seed-live-issue.sh
91
+
npm --prefix mesher/client run test:e2e:dev -- --grep "issues live"
92
+
npm --prefix mesher/client run test:e2e:prod -- --grep "issues live"
64
93
```
65
94
66
-
When a move or refactor breaks the package contract, expect the first signal to appear as one of:
95
+
When the seam regresses, the first signal should appear as one of:
67
96
68
-
- a missing file under `mesher/client/`
97
+
- a failed same-origin `/api/v1` request in Playwright request tracking
98
+
- a visible destructive toast for mutation or selected-issue read failures
99
+
- a mismatched `issues-shell` or `issue-detail-panel``data-*` attribute
69
100
- a broken `dev`, `build`, `start`, or `test:e2e:*` script
70
-
- a Playwright console/request failure in `tests/e2e/dashboard-route-parity.spec.ts`
0 commit comments