Repository navigation
Conversation
The renderer reaches native code only through the IPC contract in shared/ipc.ts, so on Windows that contract runs over a loopback WebSocket (shared/wire.ts framing) to crates/powermove-host instead of Electron's main process. crates/powermove-windows shows the editor in WebView2 and builds a per-user NSIS installer. The Mac app does not use either crate. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
The Rust host answers web:hello with desktop: true. The bridge then uses native dialogs and the user's own files for open and save, incremental project saves, native fonts and links, and lets Ctrl+V fall through to WebView2's paste so text and images reach the page. The Mac preload and powermove serve keep their behaviour. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
formatShortcut turns Mac glyph labels into Ctrl+Shift+S style labels off macOS; Mac labels are unchanged. Extension cmd+ bindings and selection modifiers accept Ctrl on Windows and Linux. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Panels that share a group key render as tabs in one slot. Drag a header onto another to stack, drag a tab out to split, reorder by dragging. Groups persist with workspaces; saves without group keys load unchanged. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
WebView2 refuses a VideoFrame made from the WebGL canvas, so the exporter falls back to an RGBA copy. Chromium on Windows reports bogus half-window movements right after pointer lock, which sent scrubbed values to their limits; single locked moves larger than a quarter of the window are dropped. The mixer keeps its previous colours when a hidden panel computes none. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Alt+wheel (Option+wheel on Mac) scales every row and track within fixed bounds, keeping the row under the cursor in place. The height is saved per project with the timeline session. Selection gestures also accept Ctrl. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
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
The renderer only reaches native code through the IPC contract in
shared/ipc.ts. On Windows that contract runs over the WebSocket protocolpowermove servealready uses (shared/wire.ts), with a Rust host on the other end.Renderer changes, one commit each:
web-bridge.tshello.desktop, and the Mac app uses the Electron preload.Evidence
Tested on Windows 11:
Failed to construct 'VideoFrame'. After: a 10 s, 1080p VP9 file with Opus audio..pmvsave and open in place, with backups and incremental saves. Opening from a launch argument works.tintmod, which was compiled, published and undone.numfield-pointer-lock.test.tsfailed with "expected 100 to be 52".cargo test -p powermove-host: 108 passed.svelte-check: 0 errors./bin/sh), plus a few timing-sensitive tests. None of these was caused by this PR.Merge Danger
Door: two-way. The Rust crates and scripts are new and the Mac build doesn't use them. The renderer changes are split into separate commits that can be dropped one by one.
Blast Radius: renderer-wide
Known issues the macOS app will face if this merges as is:
ctrlKeyonly off macOS inextensions/timeline/timeline.ts.layout/change docking, dragging and saved workspaces on the Mac too.cmd+bindings and the formatter now branch on the platform. The Mac path is covered by tests but hasn't been run in the Mac app.nativeEditcontract:ipc.tsnow letsnativeEditreturnfalse, meaning "not handled, let the key do its default". The Mac preload returns nothing, which is still treated as handled, so the Mac behaviour should be unchanged.Cargo.tomlat the repo root does nothing to the Mac build, but any CI that globs forCargo.tomlwill now find one.web:runs-attach) andattachExternal.Before merging, run
bun run test,bun run typecheckandbun run dist:macon a Mac. Then try tab groups, shortcut labels, MP4 and WebM export, and paste in the agent composer.