Skip to content

Fix "headers ended early" downloads and haru's look on Windows - #6

Merged
beingsuz merged 3 commits into
mainfrom
claude/project-thread-p8xp41
Sep 26, 2026
Merged

beingsuz merged 3 commits into
mainfrom
claude/project-thread-p8xp41

Conversation

@beingsuz

@beingsuz beingsuz commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

Requested by beingsuz · project thread

Wallpaper downloads

Before: downloading a wallpaper in haru v0.7.0 on Windows failed with "fetch failed: malformed response: headers ended early".

After: the download tries other CDN hosts and avoids the servers that hang up.

How: bumps the tapline submodule from 1c5153d to 8c439f1, tapline main after UnhingedSoftware/tapline#3 merged. That brings in tapline #3 (the CDN fix) and tapline #2 (the bug pass), which haru had not picked up. An earlier commit here pinned 1b133b6, tapline #3's branch head, which had been cut before tapline #2 and so did not contain it.

Windows visuals (thread)

Before: on Windows in light mode, buttons, checkboxes and fields were light grey with light text on them (the Preview page's button looked blank), headings and the "haru" title were dark on dark, haru.exe had no icon in Explorer, screens were called DISPLAY6, and the control socket field suggested /run/user/1000/lwe.sock.

After: haru is dark everywhere with a dark title bar, the exe carries its icon, screens show the monitor's own name (or "Display 6" when it has none), and the socket placeholder is the real default path.

How: egui keeps one style per theme and follows the system's. On Windows in light mode it switched to its stock light style on the first frame, underneath haru's own panel colours. theme::apply now sets the dark theme, gives both theme slots haru's style, and sends SetTheme(Dark) for the title bar. The icon is packaging/haru.ico embedded by embed-resource from crates/haru/build.rs; the build fails rather than shipping an exe without it. Monitor names come from display-info (Windows-only dependency, so no new unsafe in haru), looked up only when the set of screens changes; commands to kirie still use kirie's name.

Verified

  • cargo clippy --workspace --all-targets -D warnings clean on Linux and cross-compiled for x86_64-pc-windows-gnu; cargo test --workspace passes on Linux (175 tests, re-run against tapline 8c439f1), including new tests for the monitor labels.
  • The cross-built haru.exe contains the icon group (checked with wrestool).
  • Under Wine, which reports light mode like beingsuz's Windows does, the old build reproduced the light buttons and dark headings, and the new one renders dark throughout.

Not verified: nothing run on real Windows, the MSVC release build's resource compiler step, friendly monitor names on real monitors (Wine has none), and no live download.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DDe3iPz1un8WXmFsmkHec4

Moves the tapline submodule from 1c5153d to 1b133b6, which picks CDN
hosts the way SteamKit does, retries manifest fetches on other hosts and
stops reusing connections the CDN has already closed. It also brings in
tapline #2 (the bug pass), which haru had not picked up yet.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JPbjRcr2kuhRi1wBhGk1ax
@coderabbitai

coderabbitai Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 69217c15-7be0-4c70-9934-7eecbb245ec4

📥 Commits

Reviewing files that changed from the base of the PR and between 28ce3a6 and 55e46eb.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • packaging/haru.ico is excluded by !**/*.ico
📒 Files selected for processing (15)
  • Cargo.toml
  • crates/haru-apply/Cargo.toml
  • crates/haru-apply/src/engine.rs
  • crates/haru-apply/src/kirie.rs
  • crates/haru-apply/src/lib.rs
  • crates/haru-apply/src/monitors.rs
  • crates/haru-apply/src/relaunch.rs
  • crates/haru-ui/src/app.rs
  • crates/haru-ui/src/library.rs
  • crates/haru-ui/src/settings.rs
  • crates/haru-ui/src/theme.rs
  • crates/haru/Cargo.toml
  • crates/haru/build.rs
  • crates/haru/haru.rc
  • tapline
 _______________________________________________________________________________________________________________
< Walking on water and developing software from a specification are easy if both are frozen. - Edward V. Berard >
 ---------------------------------------------------------------------------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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.

❤️ Share

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

@beingsuz beingsuz self-assigned this Sep 26, 2026
…tors

On Windows in light mode most of haru was unreadable: buttons, checkboxes
and fields came out light grey with haru's light text on them, and headings
went dark on haru's dark panels. egui keeps a style per theme and follows the
system's, so the first frame swapped in its stock light style underneath
haru's own panel colours. Linux rarely reports a theme, so it never showed.
haru now asks for the dark theme outright, gives both slots its style, and
asks for a dark title bar.

- haru.exe carries its icon as a resource (embed-resource), so Explorer and
  the taskbar show it rather than the blank default.
- Screens kirie calls DISPLAY6 are shown by the monitor's own name
  ("DELL U2720Q"), or "Display 6" when it has none. Commands still use
  kirie's name.
- The control socket field's placeholder is the real default path, not a
  Linux one.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DDe3iPz1un8WXmFsmkHec4
@beingsuz beingsuz changed the title Fix "headers ended early" when downloading a wallpaper Fix "headers ended early" downloads and haru's look on Windows Sep 26, 2026
The previous pin, 1b133b6, was tapline #3's branch head, which was cut
from 1c5153d and so did not contain tapline #2 (auth token ACL, ffi
event loss, SteamAppId message). 8c439f1 is tapline main after #3
merged and carries both.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BjWixYpwMjeckvBT82WjHZ
@beingsuz
beingsuz marked this pull request as ready for review September 26, 2026 02:40
@beingsuz
beingsuz merged commit c656fc3 into main Sep 26, 2026
3 checks passed
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