Add optional frameless Linux desktop windows - #1785
Open
salemsayed wants to merge 2 commits into
Open
Conversation
salemsayed
marked this pull request as ready for review
August 18, 2026 15:29
# Conflicts: # apps/desktop/src/main.ts
ymichael
added a commit
that referenced
this pull request
Aug 24, 2026
## What was wrong The Pi bridge tests exercise real Node child processes, but the two install-gate cases that cold-start the catalog child inherited Vitest’s 5 s default and the conformance wrapper passed only a 10 s per-wait protocol budget. Under the 4-vCPU packages shard contention, the same fork-helper path took 11.47 s in its correctly budgeted lifecycle test, so these smaller limits expired while valid bridge work was still running. Vitest does not cancel a timed-out async body; because each install-gate scenario then reused JSON-RPC request id `1` with a fresh stdout capture, a late response from the timed-out scenario could satisfy the next test and produce the unsupported/not-installed assertion cascade. The failures are visible in the [main run](https://github.com/get-bb/bb/actions/runs/32699848174) and unrelated [PR #1781](https://github.com/get-bb/bb/actions/runs/32718468577) and [PR #1785](https://github.com/get-bb/bb/actions/runs/32718467431) runs. ## What changed The two install-gate cases that actually cold-start RPC children now use the same 30 s class of test budget as the neighboring Pi process tests, and conformance waits up to 30 s for each protocol response while retaining the existing 60 s wrapper. Install-gate request ids are monotonic across the file, so any late result remains diagnostic noise instead of being mistaken for another scenario’s response. Assertions and production behavior are unchanged. This is test-only and does not change the host-daemon wire protocol. ## How you verified Before the change, the cited CI runs crossed the old limits, and a controlled local stress run with 64 competing CPU burners stretched the unchanged conformance test to 18.4 s and the two install-gate process cases to 4.64 s and 4.35 s. After the change, three identical stress rounds passed all 6 focused tests; conformance took 12.01 s, 11.96 s, and 11.87 s without losing `session/fork-identity`. - `pnpm exec vitest run src/bridge/bridge.install-gate.test.ts src/bridge/bridge.conformance.test.ts --config vitest.config.ts --reporter=dot --maxWorkers=1` — 6 passed - `pnpm exec turbo run test --filter=bb-plugin-provider-pi --force` — 17 files, 104 tests passed - `pnpm exec turbo run typecheck --filter=bb-plugin-provider-pi --force` — 4 Turbo tasks passed - `pnpm exec turbo run build --filter=@bb/server --force` — 4 Turbo tasks passed - `pnpm exec oxfmt plugins/provider-pi/src/bridge/bridge.install-gate.test.ts plugins/provider-pi/src/bridge/bridge.conformance.test.ts --check` — passed > AGENT GENERATED: by GPT-5.6-Sol
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.
Summary
--no-window-framestartup optionWhy
Tiling Wayland compositors such as Hyprland already provide window movement,
resizing, borders, and close controls. Electron's native Linux menu/title bar
duplicates that chrome and consumes vertical space. This opt-in mode lets those
users rely on their window manager without changing the default experience for
other Linux desktops.
The option is startup-only because Electron chooses
framewhen constructing aBrowserWindow. macOS and Windows ignore the Linux-only flag.Screenshots
Before — native Linux frame:
After —
--no-window-frame:Validation
pnpm --filter @bb/desktop test— 34 files, 217 tests passedpnpm --filter @bb/desktop typecheckgit diff --checkbb-0.38.0-x86_64.AppImage