Skip to content

Prepare Printy for its first public release - #1

Merged
noidee-dev merged 8 commits into
mainfrom
kepler/prep-live-release
Sep 23, 2026
Merged

noidee-dev merged 8 commits into
mainfrom
kepler/prep-live-release

Conversation

@noidee-dev

Copy link
Copy Markdown
Contributor

Brings the repository to a state where it can be made public and released.

Application

  • Verlauf screen — the backend has had list_jobs_cmd and reprint_job_cmd since the core engine; only the UI was missing, cut by a deadline decision. Reprint is offered only on finished jobs (it enqueues a new job, so offering it on a queued one would duplicate the file) and a refused reprint now reports why instead of failing silently.
  • Über screen — version read from the running binary, links, and a committed list of 664 third-party licences generated by scripts/gen-licenses.sh.
  • Both wired into the sidebar; a new test asserts every nav entry resolves to a route.

Release readiness

  • Public README (the old one was still the Tauri template) and the MIT LICENSE that package.json already claimed.
  • ci.yml — pull requests previously ran no checks at all. The engine job runs on Windows, not Ubuntu: the GDI path and the rasteriser are cfg'd out everywhere else, so a Linux run would report success for code it never compiled.
  • Release workflow gains a signed/notarized macOS universal build, a Homebrew cask bump, and the Discord announcement.
  • Scaffold leftovers removed; dependencies updated within their ranges.

Known limitation, documented rather than hidden

macOS prints through CUPS, which has no "shrink but never enlarge" mode. With Inhalt an Seite anpassen off, an oversized page is cropped there, where Windows shrinks it. The spec calls cropping data loss, so this is called out in the README, the installation page and a dedicated reference page.

Verification

  • 183 frontend tests, 143 engine tests, tsc --noEmit and the production build all pass.
  • The app was launched and both new screens exercised.
  • docs/WINDOWS-VERIFICATION.md still has to be run on real hardware before tagging — it cannot be automated.

🤖 Generated with Claude Code

noidee-dev and others added 8 commits September 23, 2026 12:16
The backend has had list_jobs_cmd and reprint_job_cmd since the core
engine landed; only the screen was missing, cut by a deadline decision.

Two departures from the implementation plan's Task 8, both deliberate:

- Reprint is offered only on done and failed jobs. reprint_job_cmd
  enqueues a *new* job rather than reviving the old one, so offering it
  on a queued or printing job would put the same file in the queue
  twice.
- A refused reprint reports why. The common case is a file that has
  since been moved into printed/ or deleted, and the planned version
  swallowed that error entirely.

The filter is a query parameter rather than a predicate over a cached
array, so "Nur Fehler" stays correct past the row limit. Previous rows
are held while the new query resolves; without that, toggling the filter
drops to the loading state and blanks the list for a frame.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Reads the version through get_app_version_cmd rather than importing
package.json, for the same reason the sidebar does: a copy in the
frontend can drift from what the release workflow stamps into
Cargo.toml.

gen-licenses.sh merges cargo license and license-checker output into one
committed asset, so the shipped app always has a list and the build
never depends on the network. 664 entries, none unknown.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both screens exist now, so the navigation no longer has to stay short to
avoid pointing at components that do not exist.

Paths are German, matching the UI strings and the existing /ordner/:id
routes; the implementation plan's English ones predate that convention.
The new test asserts every nav entry resolves to a route, because a link
to a path the router does not know renders an empty main and reads as a
crash.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The README was still the Tauri template ("This template should help get
you started"), and package.json declared MIT with no LICENSE file to
back it. Both block making the repository public.

The README states the macOS fit-to-page limitation rather than leaving
someone to discover it at the printer.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
tauri.svg and vite.svg were left over from the template and referenced
nowhere. index.html claimed lang="en" for a German interface.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Everything within the declared semver ranges. Major bumps are all dev
tooling (TypeScript 7, Vite 8, Vitest 5, jsdom 30) and are deliberately
left for after the first release: they change nothing for a user and are
exactly the kind of churn that breaks one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
build-windows.yml only triggers on push, so pull requests ran no checks
at all.

The engine job runs on Windows rather than Ubuntu on purpose: the GDI
printing path and the pdfium rasteriser are cfg'd out everywhere else,
so a Linux run would compile a different program and report success for
code it never looked at. cargo clippy on macOS flags twenty-odd of those
symbols as dead, which is the same observation from the other side.

Also aligns build-windows.yml to Node 22, matching the other workflows.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The macOS half mirrors the shared workflow's build-macos job step for
step so the two stay comparable. It needs no pdfium: macOS renders
through the system print service rather than rasterising itself.

The tap job dispatches bump.yml with kind=cask, gated on a non-prerelease
run -- Homebrew has no concept of a prerelease and brew upgrade would
hand a beta to everyone.

minimumSystemVersion is set explicitly so the app, the README badge and
the cask's depends_on all claim the same floor instead of inheriting
Tauri's 10.13 default.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noidee-dev
noidee-dev merged commit f67df0d into main Sep 23, 2026
2 checks passed
@noidee-dev
noidee-dev deleted the kepler/prep-live-release branch September 23, 2026 10:35
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