Repository navigation
feat: Adds helium browser support - #35
Conversation
Add ci.yml — a per-PR and push-to-main gate that runs gofmt, go vet and both
suites; release.yml now runs its test steps through the same shared scripts.
Both render pass/fail counts and coverage into the GitHub Actions job summary
(.github/scripts/{go,web}-test-summary.sh) and still fail the job on a red test.
Frontend coverage is measured over the .ts logic layer via a new
@vitest/coverage-v8 devDep; the .tsx DOM/xterm boundary stays out of the
denominator (invariant #1). CLAUDE.md documents the local gate — fmt, vet, test,
build before every commit or PR. Previously CI ran no tests on PRs at all.
`task mutation` runs go-gremlins/gremlins over the module; scope a package with `task mutation -- ./internal/store/`. .gremlins.yaml pins workers to 1, which is load-bearing: the default one-worker-per-CPU runs mutant test binaries in parallel and the SQLite-backed store tests then contend and time out en masse (every mutant TIMED OUT, efficacy 0%). Single-worker efficacy on internal/store is ~97% with zero timeouts. timeout-coefficient gives slow packages (terminal spawns real PTYs) headroom before a genuine hang is declared timed out.
open()'s ADD COLUMN migrations were only ever run against a current-schema database, where every ALTER is a duplicate-column no-op — the branch where a migration actually applies (err == nil) had no test. Seed a database with the pre-migration schema (sessions without kind/path/…, projects without position) and assert open() adds the missing columns and they round-trip through AddSession/LoadState. Mutation testing flagged the gap: internal/store efficacy goes 97.4% -> 100%, killing the surviving `err != nil` -> `err == nil` mutant at store.go:130.
macOS is Unix, so the terminal (creack/pty), shell and folder picker (osascript via ncruces/zenity) already run through the shared !windows seams and the whole binary cross-compiles for darwin. The one gap was browser discovery: macOS installs live in .app bundles, never on PATH. Add candidates_darwin.go + darwinBrowserCandidates (Chrome/Chromium/Edge/Brave under /Applications and ~/Applications), narrowing candidates_unix.go to `!windows && !darwin`, mirroring the Windows seam and keeping the pure list testable off-macOS. task build:mac cross-compiles arm64 + amd64; the release workflow gains a macos-latest job that runs the backend suite — real PTY tests on Apple Silicon — and ships both-arch raw binaries. Unsigned (Gatekeeper) and no .dmg yet; recorded in Known Ceilings.
Move the [Unreleased] entries under a 0.6.0 - 2026-07-16 heading and refresh the compare links. 0.6.0 ships the PR-badge-on-cards feature, persistent structured logging, the Windows installer + GUI-subsystem build, discreet scrollbars, the single-line diff-reference fix, and the experimental macOS build.
v0.6.0 ships experimental macOS and Windows builds. Update the platform badge and the Platform note with the per-OS runtime needs (browser + folder picker).
Diff ran `git diff --numstat HEAD`, which errors in a freshly `git init`'d repo (no HEAD) and returned early, skipping the untracked-file counting block. The +/- badge on the session card and footer showed +0 -0 even though the review panel rendered the full diff. Resolve the diff base the way DiffText already does — fall back to git's empty tree when HEAD is missing — and wrap the numstat parse in an err == nil guard so a numstat failure never skips the untracked block.
Session card tooltip showed only the working directory, so a long label clipped in the card was unreadable without widening the sidebar. Expand it into a mini card that opens to the right: full label, path, branch, PR and diff badge — reusing the git/pr data the card already computes. Theme it to match the card (bg-card, border, foreground/muted text) instead of the default inverted pill, and let the tooltip arrow inherit the popup background so it follows any themed instance.
lich's Windows binary is built for the GUI subsystem (-H=windowsgui) and has no console of its own. Any console tool it spawns via exec.Command — git, gh, claude — therefore got a fresh console window allocated by the OS per call. With git status polled every ~3s per session card and the gh PR lookup firing on every window focus, the desktop filled with console windows and the machine became unusable. Add internal/winexec.Hide, which sets CREATE_NO_WINDOW on Windows and is a no-op everywhere else, and route every Windows-reachable console spawn through it: git/gh in internal/project (via a package-local command() helper) and the claude CLI in internal/claudeplugin.
|
Added a new register on CHANGELOG.md, commenting about the addition of helium-browser to be supported along other chromium-family browsers |
candidates_unix_test.go was tagged `!windows`, but the file it exercises (candidates_unix.go) is `!windows && !darwin`. On darwin the test still compiled in and called the *darwin* browserCandidates(), whose list is the .app paths plus chromium/google-chrome — so chromium-browser, google-chrome-stable, helium-browser and brave were all absent and the membership loop hit t.Fatalf. Per-PR CI is Linux-only so it stayed green; the macOS job only runs on a release tag (release.yml), where it would turn red. - Tag the test `!windows && !darwin` so it compiles only where that browserCandidates() actually lives. - Pin the exact Unix list with slices.Equal, mirroring the darwin/windows tests — membership alone missed order and stray-entry regressions. - CI: cross-compile build + vet for linux/darwin/windows on every PR, so a broken build tag fails the PR instead of a release tag.
…upport # Conflicts: # CHANGELOG.md
|
Thanks for this, @JoJowAkaGioGiow — really nice contribution, and thanks for keeping the docs and install script in sync too. I went to review it and ended up pushing a fix on top ( The While I was in there, I swapped the And so we don't only catch this kind of thing at release, I added a cross-compile step to On helium being Linux-only: that matches the changelog ("Linux Chromium-family shell"), so all good. If Helium ever ships macOS/Windows builds and you want parity, it's just adding it to each one's candidate list — easy follow-up. |
Adds
helium-browseras a supported Chromium-family browser on Linux.Changes
helium-browserin the Unix browser candidate list.helium-browser.Testing
testtask validations;