Repository navigation
feat(native): open the native window on every release, with an experimental notice - #809
Merged
Merged
Conversation
…mental notice The first launch of each release chooses the native window (falling back to the web one where it cannot start), so every update is tried on it while it is experimental. A dev build and an install without lich-native are left alone. The first native window a user opens says it is experimental and links to a bug report.
omartelo
added a commit
that referenced
this pull request
Oct 17, 2026
…ve first launch (#816) * fix(ci): switch the release e2e back to the web window after the native first launch The first launch of a release opens the native window since #809, and the macOS and Windows end-to-end checks expected the web one on it. * fix(ci): wait for the native window to attach before the e2e switches back On the slower Intel runner the switch came before the native window had attached, so lich had no window of it to close and both stayed open. lich now logs the attach, and the macOS and Windows checks wait for it. * test(terminal): run the tests that exec a script they wrote, or rebind a freed port, serially #813 ran them in parallel. A test that writes a script and execs it fails with ETXTBSY when another test forks while the script is still open for writing (golang/go#22315), and the port-retry test can lose its freed port to a parallel test's 127.0.0.1:0. Measured on the package: 1 failure in 15 runs before, 0 in 25 after.
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.
While the native window is experimental, every update should land users on it, so we can tell whether it works.
What changes
window.kindtonativeand records the version inwindow.nativeRelease(switchToNativeOnReleaseinmain.go; the decision issystem.SwitchesToNative). A native window that cannot start falls back to the web one, as before. A user who switches back in Settings stays on the web window until the next release.devbuild (task dev) and for an install withoutlich-nativebeside lich (macOS today), which would otherwise fall back on every launch.native.experimentalNoticeSeen, so it shows once per user, not once per release. Strings in all 7 native locales.Not covered
Verification
gofmt,go vet ./...,go test ./internal/system/(newTestSwitchesToNativeOncePerRelease).go vetran with a placeholderfrontend/dist.native/:gofmt,go vet ./...,go test ./....-shotagainst the isolated slice backend, with the seen key unset, shows the dialog.go test ./...and the frontend gate (frontend untouched).