Conversation
Three-crate Cargo workspace (common/server/client), Leptos CSR page rendering "kolu" served by Axum, Nix build with crane WASM pipeline, process-compose dev workflow, Playwright e2e smoke tests.
- GitHub Actions CI with vira (build) + Playwright e2e tests - Move code-review skill to directory format (SKILL.md) - AGENTS.md instructs auto-run of /code-review after changes - CLAUDE.md symlink to AGENTS.md
- CI uses self-hosted runners (x86_64-linux, aarch64-darwin) with vira - justfile auto-detects nix devshell via nix_shell variable - e2e test recipe uses nix_shell for all tool invocations - Add nix-justfile skill documenting these conventions
Nix devshell already provides browsers via PLAYWRIGHT_BROWSERS_PATH. The install command tries to run `su` which fails on CI runners.
- Add --no-sandbox and --disable-gpu for Chromium on headless NixOS CI - Hash-rename JS/WASM/CSS in nix clientDist for cache busting - Add invalid-states and dead-code sections to code-review skill
- Replace hand-written style.css with Tailwind CSS (standalone CLI) - Trunk dev uses `data-trunk rel="tailwind-css"` for hot reload - Nix prod runs tailwindcss CLI to generate minified CSS - Add --host and --port CLI args to kolu-server via clap - Add concise README with dev/prod/architecture sections
- Add --disable-setuid-sandbox and --disable-dev-shm-usage flags for Playwright Chromium on NixOS CI runners - Comment out aarch64-darwin CI build (too slow), keep matrix structure - Fix deprecated env_var_or_default -> env in justfile - Update skills (code-review: tailwind rule, nix-justfile: env fix) - Minor README wording tweak
Use ubuntu-latest + setup-node for e2e instead of NixOS self-hosted runner. Playwright downloads its own browsers natively. Nix is still available for `nix run` (webServer in playwright config).
- Add vira.hs pipeline config with cache.nixos.asia/oss on master - Pre-build with `nix build` before e2e tests so `nix run` is instant (was timing out at 120s building from scratch on ubuntu-latest)
Add nixConfig with extra-substituters in flake.nix and --accept-flake-config in e2e CI step to pull cached derivations.
Keep only e2e tests on ubuntu-latest. Nix build + cache is handled by self-hosted Vira runners.
Poll commit statuses for signoff/vira/* before running e2e tests. On push to master, e2e runs immediately (wait-for-vira is skipped).
Replace hand-rolled polling script with purpose-built action that waits for commit statuses by name.
The JS glue code from wasm-bindgen references kolu-client_bg.wasm by its original name. Hash-renaming the WASM file without updating the JS reference caused a 404 in production builds.
`playwright install --with-deps` was for CI only; locally the devshell provides browsers via PLAYWRIGHT_BROWSERS_PATH. Kept in CI workflow.
Disable GitHub Actions e2e workflow (too slow). Instead, `just ci` runs e2e tests locally and posts signoff/e2e commit status via gh CLI.
srid
added a commit
that referenced
this pull request
Mar 23, 2026
Add pnpm override to force serialize-javascript >=7.0.3, resolving Dependabot alert #1 (CVE via RegExp.flags and Date.prototype.toISOString).
srid
added a commit
that referenced
this pull request
Mar 23, 2026
## Summary - Adds pnpm override for `serialize-javascript@^7.0.3` to resolve [Dependabot alert #1](https://github.com/juspay/kolu/security/dependabot/1) - The vulnerable `[email protected]` was a transitive dep via `@rollup/plugin-terser` - Updated `fetchPnpmDeps` hash in `nix/modules/typescript.nix` ## Test plan - [x] `nix build` passes
Closed
This was referenced Apr 3, 2026
srid
added a commit
that referenced
this pull request
Apr 14, 2026
Ralph iteration #1 (issue #440). **Flake class addressed**: After-hook TypeError cascade — when a scenario fails from ECONNRESET (or any other browser/server crash during the run), the After hook's unguarded `this.page.screenshot()` throws `TypeError: Cannot read properties of undefined (reading 'screenshot')`, turning one flake into two. Same shape applies to `context.close()` on an already-torn-down context. Documented in #320, commit bec1500. **Fix (test-only, per #440 constraint)**: wrap the screenshot path in a `this.page`-presence check + try/catch, and wrap `context.close()` in a try/catch. Cleanup failures no longer mask the original scenario failure in Cucumber's report. **Measurements (iteration #1)**: - baseline: 0 CI runs (starting point — full `just ci e2e` loop deferred to subsequent iterations due to single-session time budget) - fix type: defensive guard in `packages/tests/support/hooks.ts` - lines changed: 1 file, +22 / -4 - no server/client/common code touched - no timeout bumps
This was referenced Apr 14, 2026
srid
added a commit
that referenced
this pull request
Apr 18, 2026
Per Lowy review: canvasMaximized was bundling three independent volatilities (client UI signal + server module-level state + SavedSession) into one propagation chain — but no consumer actually needed cross-client awareness. It's a per-tab view preference, like minimap-expanded. - Move signal to makePersisted (localStorage) in useViewState - Drop the createEffect server mirror + maxHydrated ordering hack (Hickey #1: temporal coupling between effect and useSessionRestore) - Drop the field from SavedSessionSchema, SetCanvasMaximizedInputSchema, contract, router, server terminals.ts, session.ts, session.test.ts - Drop hydrate-on-mount + restore-on-button from useSessionRestore - Revert state.ts to SCHEMA_VERSION 1.15.0 (1.16.0 never shipped)
This was referenced Apr 18, 2026
This was referenced Apr 29, 2026
srid
added a commit
that referenced
this pull request
May 6, 2026
…a renderer factory Hickey #1: the virtualization-mode predicate was decided at the constructor site (vanilla vs. virtualized class) and re-checked at the render site (containerWrapper vs. fileContainer), with nothing enforcing that the two branches stay in sync. Extract the pairing into a `createDiffRenderer` / `createFileRenderer` factory so a future render-option addition can't be applied to one arm and missed on the other. Also addresses Hickey #2 (collapsed ternary) and Lowy #3 (the branch point is now named and commented inside the factory).
srid
added a commit
that referenced
this pull request
May 6, 2026
…low constraint Lowy #1: the `class` prop is forwarded to the host element regardless of virtualization mode, but in the virtualized branch that element IS Pierre's file container (which lives inside the <Virtualizer>'s scroll surface). Applying `overflow-*` there silently breaks the intersection-observer math that drives windowing. Document the constraint at the prop boundary so a future caller can't ship the broken combination without seeing the contract first.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hello world Leptos app.