Skip to content

Fix audit findings: layout robustness, exit persistence, autostart, icon packaging - #16

Merged
ZFordDev merged 6 commits into
mainfrom
fix/audit-findings
Aug 22, 2026
Merged

Fix audit findings: layout robustness, exit persistence, autostart, icon packaging#16
ZFordDev merged 6 commits into
mainfrom
fix/audit-findings

Conversation

@ZFordDev

Copy link
Copy Markdown
Owner

Summary

Fixes from the v1.0.0 codebase audit (crash-class items first):

P0 — crash-class

  • load_layout no longer lets a wrong-shape layout file escape as an uncaught TypeError; unreadable or malformed layouts fall back to defaults
  • Widget entries with non-numeric geometry or a non-string disk field are dropped before QRectF instantiation instead of crashing startup

P1 — data loss

  • Unified exit path: GlassHUD._quit became public shutdown(); tray Exit now saves the layout exactly like the HUD context menu Exit, so widget/size edits are no longer lost

P2 — packaging / correctness

  • Autostart entries: frozen builds launch the bundle binary without the meaningless -m src args; Windows/Linux entries quote executables containing spaces; macOS plist built from one shared argument list
  • Tray icon moved to src/assets/icon.svg, resolved package-relative and shipped via package-data — wheels no longer produce a blank tray icon (verified with a test wheel install)

Cleanup

  • Removed the legacy unsupported glasshub-updater/ prototype; README now states updates come from GitHub Releases only

Docs

DocsHub pages updated in lockstep (see the matching ZFordDev/DocsHub pull request): full six-widget default layout example, geometry-validation wording, compat modules listed, updater references dropped.

Testing

  • ruff format --check . pass
  • ruff check . pass
  • pytest -q offscreen: 14 passed, includes 6 new regression tests covering malformed layouts, shutdown persistence, tray routing, and autostart generation

- wrong-shape layout JSON no longer escapes load_layout as TypeError
- widget entries with non-numeric geometry or non-string disk are dropped
- regression tests cover both malformed-layout paths
- GlassHUD._quit becomes public shutdown() used by both exit routes
- tray Exit now saves the layout instead of quitting silently
- regression tests cover shutdown persistence and tray routing
- frozen builds launch the bundle binary without -m src
- Windows/Linux entries quote executable paths containing spaces
- macOS plist builds ProgramArguments from the shared argument list
- move assets/icon.svg to src/assets so wheels include it
- resolve the icon package-relative in TrayManager
- point PyInstaller add-data at the packaged location
- delete the unsupported placeholder package
- README now states updates come from GitHub Releases
@ZFordDev
ZFordDev merged commit ff26bb2 into main Aug 22, 2026
3 checks passed
@ZFordDev
ZFordDev deleted the fix/audit-findings branch August 22, 2026 02:32
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