Skip to content

fix(macos): prevent corrupted small app icons - #570

Open
LJAYi wants to merge 1 commit into
AprilNEA:masterfrom
LJAYi:fix/macos-small-app-icon
Open

fix(macos): prevent corrupted small app icons#570
LJAYi wants to merge 1 commit into
AprilNEA:masterfrom
LJAYi:fix/macos-small-app-icon

Conversation

@LJAYi

@LJAYi LJAYi commented Aug 11, 2026

Copy link
Copy Markdown

Summary

Fix corrupted OpenLogi artwork in macOS small-icon surfaces such as Login Items.

The Rust icns encoder writes the 16×16 and 32×32 images as icp4/icp5 PNG chunks. Although the embedded PNG data is valid, macOS decodes those slots as corrupted pixels. Generating the family with Apple’s native tools produces a compatible chunk layout and restores the expected icon.

Changes

  • generate the iconset with sips and encode it with iconutil
  • remove the direct icns and image dependencies from xtask
  • regenerate AppIcon.icns without the problematic icp4/icp5 chunks

Testing

  • cargo fmt --all -- --check
  • cargo xtask macos icns
  • cargo clippy -p xtask --all-targets -- -D warnings
  • cargo test -p xtask
  • cargo clippy --workspace --exclude openlogi-gui --all-targets -- -D warnings
  • cargo test --workspace --exclude openlogi-gui
  • cargo clippy --workspace --all-targets --features gpui_platform/runtime_shaders -- -D warnings
  • cargo test --workspace --features gpui_platform/runtime_shaders
  • extracted the generated ICNS with iconutil and verified the 16×16 and 32×32 PNGs

Hardware verification: not performed. This machine has Apple Command Line Tools but cannot run GPUI’s default offline Metal compilation without accepting/configuring the full Xcode toolchain; the supported runtime_shaders path passed the full workspace Clippy and test suites.

Reproduction

Corrupted OpenLogi icon in macOS Login Items

@greptile-apps

greptile-apps Bot commented Aug 11, 2026

Copy link
Copy Markdown

Greptile Summary

The PR replaces Rust-based ICNS encoding with Apple’s native macOS icon tools to avoid corrupted small icons.

  • Generates the standard iconset sizes with sips and packages them with iconutil.
  • Removes the no-longer-needed icns and image dependencies from xtask.
  • Regenerates the bundled AppIcon.icns.

Confidence Score: 5/5

The PR appears safe to merge, with no concrete changed-code failures identified.

The generated iconset follows Apple’s expected naming and size layout, native-tool failures propagate to callers, and the dependency removals match the deleted Rust encoder implementation.

Important Files Changed

Filename Overview
xtask/src/commands/macos/bundle.rs Replaces in-process image resizing and ICNS serialization with temporary iconset generation through native macOS tools; no actionable defect identified.
xtask/Cargo.toml Removes the obsolete direct icns and image dependencies consistently with the implementation change.
Cargo.lock Removes the corresponding dependency entries without introducing or upgrading unrelated packages.
crates/openlogi-gui/icon/AppIcon.icns Regenerates the binary application icon using the new native-tool workflow.

Reviews (1): Last reviewed commit: "fix(macos): prevent corrupted small app ..." | Re-trigger Greptile

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.

1 participant