Skip to content

Restore font-free GNOME Wayland window controls - #1928

Open
danielmigueltejedor wants to merge 5 commits into
storytold:mainfrom
danielmigueltejedor:fix/gnome-window-decorations
Open

danielmigueltejedor wants to merge 5 commits into
storytold:mainfrom
danielmigueltejedor:fix/gnome-window-decorations

Conversation

@danielmigueltejedor

@danielmigueltejedor danielmigueltejedor commented Oct 15, 2026 •

Copy link
Copy Markdown

GNOME/Wayland windows could lack caption controls because the desktop build did not enable a client frame renderer. Enable Linux-only winit/wayland-csd-adwaita-notitle for vector minimize, maximize/restore and close buttons without embedding a title font. Ship sctk-adwaita's MIT notice in the AppImage and Flatpak. X11 and server-decoration compositors retain their existing frame path.

Validation of the reviewed source:

  • Native build and complete cargo xtask ci pass, including formatting, workspace/all-target clippy with warnings denied, tests, GPU probe, parity, attribution, layers and WebAssembly. Optional corpus/model/hardware prerequisites are reported as skipped by the repository's CI summary; this does not claim those were available.
  • Native caption buttons maximized, restored, minimized and closed the window; title-bar dragging and lower-right drag-resizing passed in isolated GNOME Shell 51.1 / Mutter 51.1. The clean in-memory-library process exited with status 0.
  • The screenshots show GNOME Shell 51.1 / Mutter 51.0 on Wayland and an X11 application under KWin 6.8.0 through XWayland. KWin retains its existing Breeze frame with no extra client caption bar. This is an isolated KWin compositor, not a complete Plasma Xorg session.

Environment details, source/binary hashes and interaction results. The captures contain generated demo content and no personal photographs. Native Windows/macOS execution and a full Plasma desktop were not run. No editing, raw-development or rendering implementation is changed.

GNOME / Wayland
LightCraft on GNOME Wayland

KWin / X11 application
LightCraft X11 under KWin

GitHub-hosted checks for this fork currently require maintainer authorization (workflow status); the results above are local validation.

@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review.

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: b2130953-a91a-48bc-917a-b2bdfd279f81
📥 Commits

Reviewing files that changed from the base of the PR and between 98946b4 and d367498.

⛔ Files ignored due to path filters: 1
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing: 2
  • apps/lightcraft/Cargo.toml
  • packaging/linux/package.sh

Limit details: You’ve used all 10 included reviews currently available.

Walkthrough

Linux builds add a Wayland Adwaita feature for winit. The repository documents sctk-adwaita, and Flatpak and AppImage packaging install the NOTICE file.

Changes: Linux Window Frame

Layer / File(s) Summary
Configure the Linux dependency
apps/lightcraft/Cargo.toml
Linux builds add winit with default features disabled and wayland-csd-adwaita-notitle enabled.
Include and package the dependency notice
NOTICE, packaging/linux/flatpak/ai.storyteller.lightcraft.yml, packaging/linux/package.sh
NOTICE identifies sctk-adwaita 0.10.1, records its use by winit on Linux, and includes its MIT license text. Flatpak and AppImage packaging install the notice in their documentation directories.

Priority: Normal

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix

Suggested reviewers: echelon

Merge Risk: Minimal · previous review d3674

No actionable merge-blocking risk is established by the reviewed changes.

Architecture risk: Low · up to d3674

The change affects 3 systems.

Changed systems: packaging, apps/lightcraft, NOTICE

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — packaging (service) was modified; 2 changed files map to changed impact.
  • observed — apps/lightcraft (service) was modified; 1 changed file maps to changed impact.
  • observed — NOTICE (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in NOTICE: Adds a notice for sctk-adwaita 0.10.1, used by winit on Linux for vector window controls. It identifies the source commit, records that title-font features are disabled and no Cantarell font is embedded or added to the repository, and reproduces the dependency’s MIT license.
  • observed — Modified behavior in packaging/linux/flatpak/ai.storyteller.lightcraft.yml: Adds installation of NOTICE to the application’s documentation directory.
  • observed — Modified behavior in apps/lightcraft/Cargo.toml: Adds a Linux-only winit dependency configured for Wayland CSD with Adwaita and no embedded title font.
  • observed — Modified behavior in packaging/linux/package.sh: The AppImage packaging stage now installs the repository NOTICE file into the bundled LightCraft documentation directory.
Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly and concisely describes the main change: restoring GNOME Wayland window controls without adding font files.
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Full details: Docstring Coverage

Explanation

Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (1 skipped: 1 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@danielmigueltejedor
danielmigueltejedor marked this pull request as ready for review October 18, 2026 21:56
@danielmigueltejedor
danielmigueltejedor force-pushed the fix/gnome-window-decorations branch 2 times, most recently from 67995c9 to 98946b4 Compare October 20, 2026 01:23

@FredApps FredApps left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Cargo, NOTICE and packaging changes read correctly (the notitle feature avoids embedding a font, and NOTICE now ships in the AppImage and Flatpak). This changes how the window is drawn on Linux, and nothing in CI runs a Wayland session, so please attach a screenshot of the window controls on GNOME/Wayland (state the GNOME version) with maximise, minimise, close and drag-resize each tried, and one from KDE/X11 showing it is unchanged.

@danielmigueltejedor danielmigueltejedor changed the title Fix GNOME/Wayland window controls Restore font-free GNOME Wayland window controls Oct 21, 2026
Preserve LightCraft's current implementation, add font-free Adwaita window controls, license notices, packaging, and original visual-validation artifacts.
emmertex added a commit to emmertex/chromaforge that referenced this pull request Oct 26, 2026
winit's wayland-csd-adwaita-notitle on Linux: vector minimize/maximize/close, no title font. NOTICE carries sctk-adwaita's MIT licence.

Sources: upstream storytold#1928.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
emmertex added a commit to emmertex/chromaforge that referenced this pull request Oct 26, 2026
Keep native Linux CSD controls, preserve X11 fallback and existing
packaging notice paths, and retain Wayland review screenshots.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants