- Introduced `nyaterm-windows-rdp` for Windows Native RDP integration, detailing its architecture and isolation requirements.
- Removed the `nyaterm-activex-helper` crate, including all related files and dependencies, to streamline the project and focus on modern RDP implementations.
- Updated documentation in `AGENTS.md` to reflect these changes and clarify the new architecture.
- Adjusted `Cargo.toml` and `Cargo.lock` to remove references to the deleted ActiveX helper and include the new RDP crate.
- Enhanced CI workflows to configure MSVC for Windows builds, ensuring compatibility with the new RDP implementation.
- Replaced all instances of `gpui-component` with `gpui-kit` across various files to reflect the new naming convention.
- Updated Cargo.toml and documentation to ensure consistency in dependency management and integration boundaries.
- Adjusted comments and code references to align with the new structure, enhancing clarity and maintainability.
- Clarified the usage of `NyaScrollable` for scroll containers in the documentation.
- Removed redundant information regarding `overflow_y_scroll()` and `scrollbar_width` to enhance readability.
Moves the pinned `nyakang/gpui-component` revision from `d44fcb46` to `626ec5fa`,
which rebases the series from `b1e78a51` onto `0bfcb640`, 56 upstream commits
later, and drops one of its four patches.
`fix(theme): re-project scrollbar theme on every palette change` is gone because
upstream fixed the same bug independently in `222cf964`, and better: where the
NyaTerm patch rebuilt only `gpui_base::Theme::scrollbar`, upstream's
`Theme::sync_base` replaces the whole Base projection, and it comes with a
regression test. So `theme_bridge.rs` now calls `Theme::sync_base(cx)` after it
writes the scrollbar colors and mode, and `AGENTS.md` says so. The two guard tests
that assert the Base projection still carries `ScrollbarMode::Hover` after a
same-luminance re-apply pass unchanged, which is what makes the swap safe.
The other three patches are still needed and still apply: `crates/base/src/
scrollbar.rs` and `crates/base/src/dialog.rs` are byte-identical upstream, and the
segmented-tab fix needed a one-line resolution after upstream reworked that render
body — its `w_full` is re-inserted into upstream's shape.
The fork's `.github/workflows/nyaterm.yml` pins the zed revision it validates
against through a config-level `[patch]`; it was stale at `e83a00dc` and now names
`275f31ac`, the revision the previous commit bumped this workspace to. That pin
has to move with this manifest or the branch is verified against a gpui the
application does not use.
Also arriving, needing no changes here: `gpui_component::init` now also runs
`command::init` and `notification::init`, the dock layer was rewritten (NyaTerm
uses none of it), and `cubic_bezier` was aligned with CSS, which is a visual
difference in dialog motion. Those want an eyeball pass in the running app.
Tested on Windows 11: cargo clippy --workspace --all-targets --locked (no errors)
and cargo test --workspace --no-fail-fast, all 28 suites passing. On the fork,
against the matching zed checkout: cargo test -p gpui-base at 574 passed including
both reveal_hover cases, and cargo check -p gpui-component clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The layout guide claimed NyaTerm remembers child-window position, size and modal
relationships. The Tauri implementation did, through a `stateKey` and
`load_child_window_state`; the GPUI port dropped it and this change does not add
it back, so the guide now says what actually happens: where a child window opens,
which ones block the main window and why, which one stays on top, and the
keyboard. Both languages.
`WindowRuntimeStore` was deleted in 15994ef6 along with the global runtime tick
it drove, but `AGENTS.md`, both architecture pages and the `entities` module doc
still listed it as one of the Entity stores.
The previous commit repointed every one of these dependencies at a pinned
fork revision, so nothing under the old `vendor/` was being compiled any
more. It is moved to `temp/`, which `.gitignore` excludes, and kept only so
the sources can still be read locally. 5704 files and roughly 2.13M lines
leave version control; the working tree drops about 112 MB.
`exclude = ["temp"]` is not needed to build — no dependency points there —
but without it cargo refuses to work inside those directories at all,
reporting "current package believes it's in a workspace when it's not". With
it, `temp/vnc-rs` can still be built and tested on its own, which is how the
24 vnc-rs tests that used to ride along with `cargo test --workspace` can be
run when wanted.
`AGENTS.md` (and `CLAUDE.md`, which links to it) and `CONTRIBUTING.md` are
updated to describe the fork workflow instead of a vendored directory,
because their old wording would send a reader to a path that no longer
exists and imply that editing the sources in place is how patches are made.
It is not: editing `temp/` changes nothing that is compiled and reports no
error. Patching means committing to the fork branch, pushing, and bumping
the revision in the root `Cargo.toml`.
Nothing outside `Cargo.toml` referenced these paths — no build script, no
packaging script, no CI workflow — so this is the whole change.
`cargo check --workspace` passes and no package in the resolved graph
resolves through `temp/`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Expanded the documentation for the `nyaterm-remote-desktop` and added information about the new `nyaterm-vnc-helper` crate. Clarified the roles of each helper process, including their IPC contracts and responsibilities for protocol decoding. Updated guidelines for maintaining protocol decoders and testing practices for remote desktop protocols.
Co-Authored-By: Claude Opus 5 (1M context)
- Updated scrollbar mode to `ScrollbarMode::Hover`, allowing scrollbars to reveal on hover and fade out after idle, improving user discoverability.
- Introduced `NyaScrollbarAxis` for better axis management in scrollable components.
- Adjusted scrollbar overlays to span the entire viewport, ensuring consistent interaction and visibility across different UI elements.
- Implemented `Theme::sync_scrollbar_theme` to ensure the scrollbar theme is correctly applied after direct modifications, maintaining visual consistency.
- Added tests to validate new scrollbar behavior and theme synchronization.
- Updated various UI components to utilize NyaScrollable for scroll handling, ensuring all scroll containers render a scrollbar.
- Replaced overflow_scroll() with overflow_scrollbar() in multiple locations to enhance usability and visual consistency.
- Introduced UniformListScrollHandle to share scroll positions across re-renders in specific components, improving user experience during interactions.
- Adjusted scrollbar visibility settings to optimize user discovery and accessibility, particularly in wide tables and complex layouts.
Icons were previously hand-added, so their provenance and licensing lived in
folklore and a mis-painted asset was invisible at runtime: GPUI's `svg()`
reduces a file to an alpha mask, and `img()` keeps its pixels, but nothing
complains when the two are swapped.
Assets are now described by `scripts/icons.manifest` and vendored by
`scripts/sync-icons.sh` from pinned upstream releases, keeping the tree
reproducible and reviewable. `icons/**` stays monochrome and `color/**` full
colour; `scripts/check-icon-references.sh` fails the build when a referenced
asset is missing or painted through the wrong element, and runs in CI.
The lookup tables move out of `formatting/` into a dedicated `features/icons`
module so a ~1000-line brand table is not rebuilt inside a render closure, and
saved connections gain `icon_auto_detect`, which fills in a blank icon from the
detected remote system without ever overwriting a deliberate choice.
- Introduced a searchable session quick switcher for easier navigation between saved connections and local sessions.
- Added an auto-start recording feature that begins recording automatically when a session opens.
- Enhanced terminal functionality to serialize text for reconnecting sessions and allow closing of disconnected panes.
- Improved file explorer and clipboard management with new features and optimizations.
- Updated documentation to reflect these new features and enhancements.