Skip to content

Phase 13: retire the CustomTkinter GUI - #44

Merged
Phantom-VK merged 4 commits into
mainfrom
feat/rebuild-13-cutover
Aug 26, 2026
Merged

Phantom-VK merged 4 commits into
mainfrom
feat/rebuild-13-cutover

Conversation

@Phantom-VK

@Phantom-VK Phantom-VK commented Aug 26, 2026

Copy link
Copy Markdown
Owner

Final phase of the GUI rebuild. Removes src/norefund/gui/ (5,592 lines) and the customtkinter/Pillow/tkinterdnd2 dependencies. The React UI is now the only UI.

  • src/norefund/gui/ deleted; its Tk-specific test files were already removed in an earlier packaging pass, and format.test.ts already covers the formatting logic that moved to the frontend
  • main.py's --gui launch now starts norefund.desktop.app instead of the deleted Tk App class; kept the existing plain-text CLI analyze mode (norefund file.pdf --model ...) rather than dropping it, since it has nothing to do with the Tk GUI
  • pyproject.toml pruned (customtkinter, Pillow — confirmed unused anywhere in src/, dnd optional group), uv.lock regenerated and committed alongside it
  • packaging/norefund.spec's PyInstaller excludes list no longer names customtkinter
  • CLAUDE.md and README.md rewritten to describe the app as it now is (desktop/ + frontend/ layout, real model/provider counts, current view list, macOS xattr -cr note)
  • Full gate green: pytest (250 passed), ruff, frontend typecheck/test (102 passed)/build, and a real packaging/build.py run whose frozen binary launches and stays up

Note: GUI_REVIEW.md/GUI_PERFORMANCE.md, which the phase doc says to archive to docs/history/, don't exist anywhere in this repo — nothing to move. Cold-start time and idle memory per platform aren't instrumented in this pass (no Windows/macOS hardware available here); left as an open follow-up rather than fabricated numbers.

Test plan

  • pytest — 250 passed
  • ruff check src/ — clean
  • cd frontend && npm run typecheck && npm test && npm run build — clean, 102 tests passed
  • python packaging/build.py — builds, frozen binary launches and stays up (Xvfb)
  • CI green on all three OSes (Windows/macOS/Linux matrix)

Removed customtkinter, Pillow (unused anywhere in src/), and the dnd
optional group (tkinterdnd2) now that gui/ is gone. main.py's --gui path
now launches norefund.desktop.app instead of the deleted Tk App class;
kept main.py's plain-text CLI analyze mode (norefund <file> --model ...)
rather than repointing the console script straight at desktop.app:main,
since that mode has nothing to do with the Tk GUI and dropping it would
be an unrelated regression. norefund.spec's PyInstaller excludes list no
longer names customtkinter -- it's not a dependency to exclude anymore.
Both still described the retired CustomTkinter GUI (python -m
norefund.gui.app, norefund --gui as a Tk launch, a 10-model feature list,
gui/ in the project structure tree). Rewrote to match the app as it now
is: desktop/ + frontend/ layout, actual model/provider counts, the full
current view list, and the macOS xattr -cr note alongside the existing
Windows SmartScreen one.

GUI_REVIEW.md and GUI_PERFORMANCE.md, which GUI_REBUILD/13-CUTOVER.md
says to archive to docs/history/, don't exist anywhere in this repo --
nothing to move.
Full gate run on Linux (this dev machine):
- pytest: 250 passed
- ruff check src/: clean
- frontend: npm run typecheck, npm test (102 passed), npm run build: clean
- python packaging/build.py: builds, PyInstaller one-dir output 125.0 MB,
  frozen binary launches and stays up under Xvfb (exit 124 = killed by
  the 5s timeout while still running, same pass condition build.yml uses)

Bundle sizes from the v0.1.0 release build (github.com/Phantom-VK/NoRefund/releases/tag/v0.1.0),
compressed release artifact sizes:
- Linux tar.gz: ~65 MB
- Windows installer (Inno Setup .exe): ~33.7 MB
- macOS tar.gz: ~64 MB

Cold start time to first paint and idle memory are not instrumented by
this pass -- they need a real per-OS interactive measurement (a headless
Linux Xvfb run doesn't give a meaningful "time to first paint" number,
and there's no Windows/macOS hardware in this environment). Left as an
open follow-up rather than reporting fabricated numbers.
@Phantom-VK Phantom-VK self-assigned this Aug 26, 2026
@Phantom-VK
Phantom-VK merged commit 8ed0898 into main Aug 26, 2026
5 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.

1 participant