@koreanhole/opencodex 2.95.2 → 2.95.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/gui/README.md ADDED
@@ -0,0 +1,95 @@
1
+ # opencodex dashboard
2
+
3
+ This is the Vite/React dashboard used by `ocx gui` in packaged installs.
4
+
5
+ ## Source checkout development
6
+
7
+ Run the proxy and dashboard as two separate dev processes:
8
+
9
+ ```bash
10
+ # terminal 1, repo root
11
+ bun run dev:proxy
12
+
13
+ # terminal 2, repo root
14
+ bun run dev:gui
15
+ ```
16
+
17
+ The root proxy dev server exposes API endpoints such as `/healthz`, `/v1/responses`,
18
+ and `/api/*`. It serves `GET /` only when a packaged dashboard build exists at
19
+ `gui/dist`, so a fresh clone should use the Vite dev server while editing the UI.
20
+
21
+ ## Build
22
+
23
+ From the repo root:
24
+
25
+ ```bash
26
+ bun run build:gui
27
+ ```
28
+
29
+ That command installs/builds this dashboard and copies the production assets into
30
+ the package layout used by `ocx gui`.
31
+
32
+ ## Lint and React Doctor
33
+
34
+ ```bash
35
+ cd gui
36
+ bun run lint # ESLint — hard local/CI gate (`GUI lint` in CI)
37
+ bun run doctor # React Doctor vs origin/main (changed-scope, gates on findings)
38
+ bun run doctor:full # Full-tree React Doctor (gates on findings)
39
+ ```
40
+
41
+ From the repo root:
42
+
43
+ ```bash
44
+ bun run doctor:gui # same as gui doctor
45
+ bun run doctor:gui:full
46
+ bun run setup:hooks # pre-push runs doctor when gui/ changed
47
+ ```
48
+
49
+ | Tool | Role |
50
+ |------|------|
51
+ | **ESLint** (`bun run lint`) | Hard gate in CI and expected before merge |
52
+ | **React Doctor** (`bun run doctor`) | Gating React health check pinned to react-doctor 0.9.11 (`blocking: warning`). Pre-push runs it only if `gui/` changed and fails the push on findings. The CI workflow fails the job on any finding |
53
+
54
+ Fix ESLint errors first. Use `doctor` / `doctor:full` for deeper React triage.
55
+
56
+ ## Quota popover hover browser regression
57
+
58
+ ```bash
59
+ cd gui
60
+ bun run build
61
+ bun run test:quota-hover
62
+ ```
63
+
64
+ This opt-in check is not part of CI. It moves a real pointer from a quota chip into its popover in an
65
+ installed Chrome/Chromium (`CHROME_BIN` when not on PATH), which happy-dom unit tests cannot hit-test.
66
+ Rebuild after changing CSS: it uses the production CSS in `dist`.
67
+
68
+ ## Sidebar version browser regression
69
+
70
+ ```bash
71
+ cd gui
72
+ bun run build
73
+ bun run test:sidebar-version
74
+ ```
75
+
76
+ This opt-in check uses an installed Chrome/Chromium through its local DevTools
77
+ protocol, with no Playwright dependency or automatic browser download. Set
78
+ `CHROME_BIN` to the executable when it is not on PATH (including macOS/Windows).
79
+ It fails with an actionable error when the browser or production build is missing;
80
+ it does not silently skip assertions.
81
+
82
+ The offline fixture uses the production CSS bundle and App header markup, not
83
+ copied CSS rules. Across 128 combinations of light/dark theme, eight viewport
84
+ widths, four release/prerelease/build strings and two font sizes, it verifies full
85
+ text visibility, containment, short release text staying on one line, and
86
+ no intersection with the mobile drawer close button. A short badge stays beside
87
+ the product name whenever the measured row budget allows it; larger OS font
88
+ fallbacks may move the complete badge below the name rather than clip it. Results and a screenshot are
89
+ written to `.tmp/sidebar-version-browser/`; pass an output directory after the
90
+ command to change it. No management API, proxy credentials, or live providers are
91
+ used.
92
+
93
+ Chrome's sandbox stays enabled by default. `CHROME_NO_SANDBOX=1` is an explicit
94
+ opt-in only for an already-isolated root test container that cannot run Chrome's
95
+ sandbox; it is not needed or recommended on a normal workstation.