isKeyRepeated + real Windows clipboard/file dialogs/window title + unloadModel wrapper#122
Merged
Merged
Conversation
…le dialogs, and window title; unloadModel TS wrapper - isKeyRepeated: OS key auto-repeat surfaced as its OWN one-frame edge (new FFI bloom_is_key_repeated + manifest entry — consumers must clear .perry-cache). isKeyPressed stays initial-press-only, so a held jump key never machine-guns; caret navigation is the consumer. Windows queues repeats off lParam bit 30 in both window procs. - Windows clipboard was a STUB: bloom_get/set_clipboard_text now speak CF_UNICODETEXT for real. So were the file dialogs — the editor's Open/Save buttons have silently done nothing on Windows ever — GetOpenFileNameW/GetSaveFileNameW now run with OFN_NOCHANGEDIR (load-bearing: common dialogs change the process CWD by default, which would break every relative asset path afterward). So was setWindowTitle (read the string, discarded it) — SetWindowTextW now. - unloadModel: the FFI existed for years with no TS wrapper, so nothing could ever call it (the root index even re-exported the nonexistent name). Wrapper added; long-lived tools can finally free models. Verified live in the editor: paste into a text field from the system clipboard, filtered outliner, real window title. 158 editor tests + ui-smoke green. Claude-Session: https://claude.ai/code/session_01PmL9WgNMkAgvpYSHEZga8K
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (8)
📝 WalkthroughWalkthroughThe PR adds one-frame OS key-repeat tracking across Windows, native FFI, and TypeScript APIs; implements Windows window title, clipboard, and file dialog operations; and exposes a TypeScript model-unload wrapper. ChangesKey repeat input
Windows native integrations
Model lifecycle binding
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant WindowsWndProc
participant InputState
participant NativeFFI
participant TypeScriptAPI
WindowsWndProc->>InputState: queue_key_repeat(key)
InputState->>InputState: publish repeat edge in begin_frame
TypeScriptAPI->>NativeFFI: bloom_is_key_repeated(key)
NativeFFI->>InputState: is_key_repeated(key)
InputState-->>TypeScriptAPI: 1.0 or 0.0
Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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.
See commit message. One manifest addition (
bloom_is_key_repeated) — consumers must clear.perry-cache/node_modules/.cache/perryon update. Everything else is stub-to-real on the Windows platform crate (clipboard, GetOpen/SaveFileNameW with OFN_NOCHANGEDIR, SetWindowTextW) plus the long-missingunloadModelTS wrapper.Verified live in the editor (clipboard paste into a filtered outliner, real window title); 158 editor tests + ui-smoke green.
https://claude.ai/code/session_01PmL9WgNMkAgvpYSHEZga8K
Summary by CodeRabbit
New Features
Bug Fixes