A coding agent could develop this repo's Go packages and could not develop the application: every path to running YellowJacket ended in a blocking GTK window, so 265 bound methods, 46 events, 33 component directories and 13 stores had exactly one form of verification available — `tsc --noEmit`. The unlock is that `wails dev`'s dev server on :34115 serves the real frontend with the real generated bindings against the same Go backend a desktop window attaches to, so a plain Chromium under Xvfb gets a fully functional app. Four test tiers now exist, cheapest first: - `make ui-test` — 313 Vitest tests in a real browser in ~2 s, no app, no backend, no display. Works because `frontend/wailsjs/` is a pure passthrough to `window.go`/`window.runtime`, so faking just those two globals runs the real bindings and the real store code. - `make test` — services in-process, asserting on the payload the frontend would receive, via a new `events.Emit` wrapper. - `make dev-headless` + `playwright-cli` — the real app, driven interactively, with an event bridge on `window.__yjEvents` and a dev-only control surface at `/__test/`. - `make e2e` — 19 of those flows frozen as Playwright specs. `events.Emit(ctx, …)` replaces all 35 direct `runtime.EventsEmit` call sites: wails' `getEvents` `log.Fatalf`s on any context without its runtime, so those paths could not run under test and a background worker could take the app down. Four packages had each hand-rolled the same guard; nine more guarded on `ctx != nil`, which does not help. `TestNoDirectRuntimeEmits` fails the build on a new one. Fixtures are generated, not committed (`make testdata`), and seeds are built by *running the app* — never by hand-writing config and DB rows, which would be a second description of a valid YJ_HOME. `.gitea/workflows/ci.yml` is the first workflow here that tests anything; the other three only package, so `gitea_ci` reported only packaging jobs and misled anyone asking whether a push was healthy. Both jobs were prototyped to green in a bare ubuntu:24.04 container before the YAML was written, which immediately caught `make lint` linting three configurations that nothing builds: all three passes omitted `webkit2_41`, so wails resolved webkit2gtk-4.0 — which Arch still ships and Ubuntu 24.04 dropped. Operational instructions live in `.pi/skills/yellowjacket-dev/`, measured discoveries in `.planning/NOTES.md`, and architecture in `CLAUDE.md` — split by tense, not by topic, because a topical split gives every new fact two plausible homes. `make skill-check` fails a commit if the skill cites a make target that does not exist.
279 lines
8.9 KiB
YAML
279 lines
8.9 KiB
YAML
lockfileVersion: '9.0'
|
|
|
|
settings:
|
|
autoInstallPeers: true
|
|
excludeLinksFromLockfile: false
|
|
|
|
importers:
|
|
|
|
.:
|
|
devDependencies:
|
|
'@playwright/test':
|
|
specifier: ^1.56.0
|
|
version: 1.62.1
|
|
'@types/node':
|
|
specifier: ^26.2.0
|
|
version: 26.2.0
|
|
typescript:
|
|
specifier: ^7.0.2
|
|
version: 7.0.2
|
|
|
|
packages:
|
|
|
|
'@playwright/test@1.62.1':
|
|
resolution: {integrity: sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==}
|
|
engines: {node: '>=20'}
|
|
hasBin: true
|
|
|
|
'@types/node@26.2.0':
|
|
resolution: {integrity: sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==}
|
|
|
|
'@typescript/typescript-aix-ppc64@7.0.2':
|
|
resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [ppc64]
|
|
os: [aix]
|
|
|
|
'@typescript/typescript-darwin-arm64@7.0.2':
|
|
resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [arm64]
|
|
os: [darwin]
|
|
|
|
'@typescript/typescript-darwin-x64@7.0.2':
|
|
resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [x64]
|
|
os: [darwin]
|
|
|
|
'@typescript/typescript-freebsd-arm64@7.0.2':
|
|
resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [arm64]
|
|
os: [freebsd]
|
|
|
|
'@typescript/typescript-freebsd-x64@7.0.2':
|
|
resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [x64]
|
|
os: [freebsd]
|
|
|
|
'@typescript/typescript-linux-arm64@7.0.2':
|
|
resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [arm64]
|
|
os: [linux]
|
|
|
|
'@typescript/typescript-linux-arm@7.0.2':
|
|
resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [arm]
|
|
os: [linux]
|
|
|
|
'@typescript/typescript-linux-loong64@7.0.2':
|
|
resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [loong64]
|
|
os: [linux]
|
|
|
|
'@typescript/typescript-linux-mips64el@7.0.2':
|
|
resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [mips64el]
|
|
os: [linux]
|
|
|
|
'@typescript/typescript-linux-ppc64@7.0.2':
|
|
resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [ppc64]
|
|
os: [linux]
|
|
|
|
'@typescript/typescript-linux-riscv64@7.0.2':
|
|
resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [riscv64]
|
|
os: [linux]
|
|
|
|
'@typescript/typescript-linux-s390x@7.0.2':
|
|
resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [s390x]
|
|
os: [linux]
|
|
|
|
'@typescript/typescript-linux-x64@7.0.2':
|
|
resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [x64]
|
|
os: [linux]
|
|
|
|
'@typescript/typescript-netbsd-arm64@7.0.2':
|
|
resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [arm64]
|
|
os: [netbsd]
|
|
|
|
'@typescript/typescript-netbsd-x64@7.0.2':
|
|
resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [x64]
|
|
os: [netbsd]
|
|
|
|
'@typescript/typescript-openbsd-arm64@7.0.2':
|
|
resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [arm64]
|
|
os: [openbsd]
|
|
|
|
'@typescript/typescript-openbsd-x64@7.0.2':
|
|
resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [x64]
|
|
os: [openbsd]
|
|
|
|
'@typescript/typescript-sunos-x64@7.0.2':
|
|
resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [x64]
|
|
os: [sunos]
|
|
|
|
'@typescript/typescript-win32-arm64@7.0.2':
|
|
resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [arm64]
|
|
os: [win32]
|
|
|
|
'@typescript/typescript-win32-x64@7.0.2':
|
|
resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==}
|
|
engines: {node: '>=16.20.0'}
|
|
cpu: [x64]
|
|
os: [win32]
|
|
|
|
fsevents@2.3.2:
|
|
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
|
|
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
|
os: [darwin]
|
|
|
|
playwright-core@1.62.1:
|
|
resolution: {integrity: sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==}
|
|
engines: {node: '>=20'}
|
|
hasBin: true
|
|
|
|
playwright@1.62.1:
|
|
resolution: {integrity: sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==}
|
|
engines: {node: '>=20'}
|
|
hasBin: true
|
|
|
|
typescript@7.0.2:
|
|
resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==}
|
|
engines: {node: '>=16.20.0'}
|
|
hasBin: true
|
|
|
|
undici-types@8.3.0:
|
|
resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==}
|
|
|
|
snapshots:
|
|
|
|
'@playwright/test@1.62.1':
|
|
dependencies:
|
|
playwright: 1.62.1
|
|
|
|
'@types/node@26.2.0':
|
|
dependencies:
|
|
undici-types: 8.3.0
|
|
|
|
'@typescript/typescript-aix-ppc64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-darwin-arm64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-darwin-x64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-freebsd-arm64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-freebsd-x64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-linux-arm64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-linux-arm@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-linux-loong64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-linux-mips64el@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-linux-ppc64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-linux-riscv64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-linux-s390x@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-linux-x64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-netbsd-arm64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-netbsd-x64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-openbsd-arm64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-openbsd-x64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-sunos-x64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-win32-arm64@7.0.2':
|
|
optional: true
|
|
|
|
'@typescript/typescript-win32-x64@7.0.2':
|
|
optional: true
|
|
|
|
fsevents@2.3.2:
|
|
optional: true
|
|
|
|
playwright-core@1.62.1: {}
|
|
|
|
playwright@1.62.1:
|
|
dependencies:
|
|
playwright-core: 1.62.1
|
|
optionalDependencies:
|
|
fsevents: 2.3.2
|
|
|
|
typescript@7.0.2:
|
|
optionalDependencies:
|
|
'@typescript/typescript-aix-ppc64': 7.0.2
|
|
'@typescript/typescript-darwin-arm64': 7.0.2
|
|
'@typescript/typescript-darwin-x64': 7.0.2
|
|
'@typescript/typescript-freebsd-arm64': 7.0.2
|
|
'@typescript/typescript-freebsd-x64': 7.0.2
|
|
'@typescript/typescript-linux-arm': 7.0.2
|
|
'@typescript/typescript-linux-arm64': 7.0.2
|
|
'@typescript/typescript-linux-loong64': 7.0.2
|
|
'@typescript/typescript-linux-mips64el': 7.0.2
|
|
'@typescript/typescript-linux-ppc64': 7.0.2
|
|
'@typescript/typescript-linux-riscv64': 7.0.2
|
|
'@typescript/typescript-linux-s390x': 7.0.2
|
|
'@typescript/typescript-linux-x64': 7.0.2
|
|
'@typescript/typescript-netbsd-arm64': 7.0.2
|
|
'@typescript/typescript-netbsd-x64': 7.0.2
|
|
'@typescript/typescript-openbsd-arm64': 7.0.2
|
|
'@typescript/typescript-openbsd-x64': 7.0.2
|
|
'@typescript/typescript-sunos-x64': 7.0.2
|
|
'@typescript/typescript-win32-arm64': 7.0.2
|
|
'@typescript/typescript-win32-x64': 7.0.2
|
|
|
|
undici-types@8.3.0: {}
|