feat: versie op één plek, zichtbaar in de app, en com.example eruit #544

Merged
brenno merged 4 commits from feat/release-administratie into main 2026-07-22 11:47:12 +00:00
Owner

Summary

The administrative half of #520. The parts that need certificates or another operating system are deliberately untouched.

Part of #520 — that issue stays open.

Changes

  • One version. It lived in pubspec.yaml and hard-coded in export_metadata.dart, which lands in the metadata of every exported PDF and PPTX — so a bumped release would have shipped files announcing the old version. Now derived from a single constant, with test/version_consistency_test.dart holding the two together.
  • Visible in the app. The About panel shows it, which is what SECURITY.md asks reporters to quote. New string through l10n.d and translated across all 31 languages.
  • com.example gone from windows/runner/Runner.rc and linux/CMakeLists.txt. Authenticode over a binary naming com.example as publisher is indefensible, and a Flatpak with that app-id is not publishable.
  • CHANGELOG, SECURITY.md and USER_GUIDE brought in line.

[Unreleased] is deliberately left alone. Turning it into a dated version heading is a release action, and that is the maintainer's to take.

Not in scope, and why

Code signing, notarisation, hardened runtime, and actually building Windows and Linux need certificates and other machines. Shipping artefacts (LICENSE, THIRD_PARTY_NOTICES, sbom/, checksums, signatures) alongside a binary follows from having a release process, which does not exist yet.

Verification

The mechanical work was done by a subagent in an isolated worktree. It branched from an older main, so I rebased it onto current main before reviewing — without that, merging would have reverted the two security fixes that landed meanwhile (#542, #543).

make check green, run by me on the rebased branch.

## Summary The administrative half of #520. The parts that need certificates or another operating system are deliberately untouched. Part of #520 — that issue stays open. ## Changes - **One version.** It lived in `pubspec.yaml` *and* hard-coded in `export_metadata.dart`, which lands in the metadata of every exported PDF and PPTX — so a bumped release would have shipped files announcing the old version. Now derived from a single constant, with `test/version_consistency_test.dart` holding the two together. - **Visible in the app.** The About panel shows it, which is what `SECURITY.md` asks reporters to quote. New string through `l10n.d` and translated across all 31 languages. - **`com.example` gone** from `windows/runner/Runner.rc` and `linux/CMakeLists.txt`. Authenticode over a binary naming `com.example` as publisher is indefensible, and a Flatpak with that app-id is not publishable. - CHANGELOG, SECURITY.md and USER_GUIDE brought in line. **`[Unreleased]` is deliberately left alone.** Turning it into a dated version heading is a release action, and that is the maintainer's to take. ## Not in scope, and why Code signing, notarisation, hardened runtime, and actually building Windows and Linux need certificates and other machines. Shipping artefacts (LICENSE, THIRD_PARTY_NOTICES, sbom/, checksums, signatures) alongside a binary follows from having a release process, which does not exist yet. ## Verification The mechanical work was done by a subagent in an isolated worktree. It branched from an older `main`, so I rebased it onto current `main` before reviewing — without that, merging would have reverted the two security fixes that landed meanwhile (#542, #543). `make check` green, run by me on the rebased branch.
De versie stond op twee plekken die geen compiler aan elkaar knoopt:
pubspec.yaml en de letterlijke '0.2.0' in kOciDeckProducer, die in de
metadata van elke geëxporteerde PDF/PPTX belandt. kOciDeckVersion is nu de
ene Dart-constante waar kOciDeckProducer (en straks het About-paneel) uit
put, en test/version_consistency_test.dart vergelijkt hem bij elke testrun
tegen pubspec.yaml — een uiteenlopende versie faalt voortaan hard in plaats
van stil een oud versienummer te exporteren.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
SECURITY.md vraagt een melder de versie te noemen, maar er was nergens in
de app een plek om hem af te lezen. Nieuwe sectie "Versie" bovenaan het
About-paneel toont kOciDeckVersion (dezelfde constante als de
exportmetadata) met een korte uitleg waarom dat nummer ertoe doet. De
uitleg gaat door make add-l10n (31 vertalingen); "Versie" zelf bestond al
als d()-sleutel.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Runner.rc (Windows CompanyName/copyright) en linux/CMakeLists.txt (de GTK
APPLICATION_ID) droegen nog de Flutter-sjabloonidentiteit com.example. Een
Authenticode-handtekening of Flatpak-app-id die com.example als uitgever
noemt is niet verdedigbaar. macOS gebruikt al com.dewinter.ocideck
(macos/Runner/Configs/AppInfo.xcconfig) — dezelfde identiteit nu ook hier.

iOS en Android dragen com.example.ocideck nog wél; dat viel buiten de scope
van issue #520 (die noemt alleen Windows en Linux) en is niet aangeraakt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
docs(release): CHANGELOG, SECURITY.md en USER_GUIDE bij de versie-zichtbaarheid
Some checks failed
CI / Gate (Linux) · Format · Analyze · Coverage (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Web hardening (push) Has been cancelled
CI / Docs links (push) Has been cancelled
CI / Supply-chain (Trivy · advisory) (push) Has been cancelled
CI / Gate (Linux) · Format · Analyze · Coverage (pull_request) Has been cancelled
CI / Test (macos-latest) (pull_request) Has been cancelled
CI / Test (windows-latest) (pull_request) Has been cancelled
CI / Web hardening (pull_request) Has been cancelled
CI / Docs links (pull_request) Has been cancelled
CI / Supply-chain (Trivy · advisory) (pull_request) Has been cancelled
dc4be393d3
SECURITY.md beweerde nog op drie plekken dat de app geen versie toont — dat
klopte tot deze tak, maar niet meer nu het About-paneel hem laat zien.
Gecorrigeerd naar wat wél waar blijft: er is geen releasetag, het nummer
verandert niet bij elke commit, en de commit-hash blijft de enige
identifier die een deployment echt vastpint.

USER_GUIDE.md noemt de versie bij de bestaande alinea over het
licentiescherm. CHANGELOG.md krijgt twee Unreleased-items: de
versiezichtbaarheid en het weghalen van com.example uit de Windows-/
Linux-identiteit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit a51c8a6533 into main 2026-07-22 11:47:12 +00:00
brenno deleted branch feat/release-administratie 2026-07-22 11:47:13 +00:00
Sign in to join this conversation.
No description provided.