28 SEP 2026 · LOCAL FOLLOW-UP TO PR #8673

The T3 logo appears in Linux’s application chooser

Result: verified

The chooser now shows T3 Code’s actual logo instead of Linux’s generic executable icon.

This local change builds on PR #8673 at 21a30a5ec4. The icon change is now committed in 5262e13b1d, with diagnostic follow-ups through 8b5b5b73ec and pushed to PR #8673. No merge was performed.

Final review status: CI and CodeRabbit pass on 8b5b5b73ec; all review threads are resolved. Macroscope correctness and Effect conventions pass. Macroscope declined automatic approval because OAuth callback registration and startup side effects warrant human review. GitHub reports CLEAN and MERGEABLE; the PR remains unmerged.

Before & after

Before — existing PR. T3 Code is discoverable, but its URL-handler entry has no Icon field. GTK displays its generic executable icon.
Before the local change: T3 Code Alpha with a generic blue executable icon
After — local change. The chooser displays the bundled black T3 logo. This screenshot was captured after deleting the simulated AppImage mount, proving that the persistent copy is sufficient.
After the local change: T3 Code Alpha with the real black T3 logo

Actual native GTK 3 chooser screenshots on an isolated X display, using the real registration service and filesystem/process services. The harness sets the dialog heading and uses a harmless executable in place of launching T3 Code. The screenshots are not mockups.

Verification

CheckResult
Native chooserReal T3 logo visibly present; handler remains selectable.
AppImage mount disappearsPersistent icon remains byte-for-byte equal to the bundled production logo; chooser displays it after simulated mount removal.
Custom XDG directory containing spacesAbsolute Icon path resolves and displays correctly.
Repeat registrationDesktop-entry modification time is unchanged.
DiscoveryGIO still lists T3 Code as default, registered and recommended.
Pre-ready registrationTests verify icon and entry are ready before startup yields.
Icon copy failsBoth early and normal registration continue. The existing generic-icon fallback remains available.
Focused automated tests16 tests pass across DesktopLinuxUrlHandler and DesktopPreReadyPlatform.
Desktop typecheck, targeted lint, formatting, diff checkAll pass.

No packaged Electron build or complete OAuth login was exercised. The pushed icon commit has its own CI run; check GitHub for the current result. For the original PR verification, see the original PR report.

What changed locally

The packaged Linux handler copies its bundled PNG to $XDG_DATA_HOME/icons/com.t3tools.T3Code.desktop.png (normally under ~/.local/share) and includes that absolute path in the desktop entry’s Icon= field. This survives AppImage unmounting. The early registration and normal registration use the same destination; normal registration retries the copy. Icon-copy failures do not block URL registration.

Four files changed: DesktopLinuxUrlHandler.ts, DesktopPreReadyPlatform.ts and their existing test files. No new assets or dependencies were added.

Scope: packaged Linux desktop registration. Web, mobile, providers, contracts, remote connections and macOS/Windows behavior are unchanged; unpackaged development keeps its existing entry behavior. This cosmetic change does not need user documentation.

Risk: low. A missing or unwritable icon falls back to the generic appearance. The main remaining verification gap is running the full packaged app; the native chooser and real filesystem behavior are verified.

Temporary X displays were stopped and test fixtures and local screenshot files are removed after publication. Live T3 data and the user’s actual URL-handler defaults were not changed. The source edits are committed locally and pushed to the existing PR.

Implemented and tested by GPT-6-Astra through the Codex harness.