Skip to content

Feat: Several windows in one process, the Host's half (FR-53) - #370

Merged
b-re-w merged 6 commits into
developfrom
feat/fr53-desktop-windows
Oct 29, 2026
Merged

b-re-w merged 6 commits into
developfrom
feat/fr53-desktop-windows

Conversation

@b-re-w

@b-re-w b-re-w commented Oct 27, 2026

Copy link
Copy Markdown
Member

The Rust and wire half of FR-53 for the desktop, for #355. The Kotlin renderer half (opening and closing platform windows, the events, the properties) follows in its own change.

  • SPEC: the chosen wire numbers in FR-53.10 (widget 45, commands 23 and 24, events 39 to 47, properties 150 to 168).
  • Schema and protocol: the Window widget, its properties and handlers, nine events, SetWindowTheme and FocusWindow; SetWindow carries the mode and the last-window policy in the spare bits of its resizable word, so a single-window app sends the same bytes as before. The schema hash changes (FR-7).
  • Host: window size and zoom are kept per Window node; a window anywhere but under the root, or a node moved between windows, is a ProtocolError.
  • Rust API: LaunchBuilder::windows, on_last_window_closed, Window(on_close_request), current_window(), on_window_requested, on_application_reopen, and tear_off_key / on_window_drag_over on Column, Row and Box.
  • Kotlin: stand-in arms in the interpreter so the regenerated protocol compiles.

Generated files are regenerated from CI's artifact.

A Window widget (45), its properties and handlers (150 to 168), nine window events
(39 to 47) and the SetWindowTheme and FocusWindow commands (23, 24). SetWindow carries
the mode and the last-window policy in the spare bits of its resizable word, so a
single-window application sends the bytes it always sent. Window size and zoom are kept
per Window node, a window anywhere but under the root or a node moved between windows is
a ProtocolError, and the Rust API gets LaunchBuilder::windows, on_last_window_closed,
Window, current_window and the two root registrations.

The Kotlin interpreter gets stand-in arms so the generated protocol compiles; the platform
windows are the renderer's part. Generated files follow from CI.
@b-re-w
b-re-w marked this pull request as ready for review October 29, 2026 11:52
@b-re-w b-re-w added the run-heavy-ci Run the heavy CI workflows on this pull request's head label Oct 29, 2026
@b-re-w
b-re-w merged commit 93b39f9 into develop Oct 29, 2026
48 of 49 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-heavy-ci Run the heavy CI workflows on this pull request's head

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant