Skip to content

v2.0.0: self-contained Windows package, OCR installer, attributions, release workflow - #20

Merged
AmrasElessar merged 4 commits into
mainfrom
claude/zen-goodall-grcfvb
Oct 25, 2026
Merged

AmrasElessar merged 4 commits into
mainfrom
claude/zen-goodall-grcfvb

Conversation

@AmrasElessar

Copy link
Copy Markdown
Owner

Summary / Özet

Prepares the v2.0.0 release and fixes what came up while trying the first package on other PCs.

Self-contained Windows package

  • Problem: on PCs without Python, Baslat (Windows).bat failed with "'py' is not recognized".
  • AdminPDFToolkit-<v>-Windows.zip now bundles the embeddable Python and every library. You unzip it, double-click, and it works offline with nothing to install.
  • Built by scripts/build_windows_portable.py.

OCR on Windows

  • Tesseract is now found in its default install folders, not only on PATH.
  • OCR Kur (Windows).bat installs Tesseract via winget and adds the Turkish language data in a per-user folder, so that step needs no admin rights.
  • The first start offers to run it. The error message now explains what to do.

Licences and attribution

  • THIRD_PARTY_LICENSES.md now credits every direct and transitive library, external program, font, dataset and published algorithm. The Python table is generated by scripts/python_licenses.py.
  • The UI serves this page at /licenses.txt, together with the full licence texts of every bundled npm package.
  • The header links to the source code (AGPL §13) and to the licences.
  • pdf.js's LICENSE now ships with the app.
  • Adds an Adobe trademark note.

Fonts

  • Liberation Sans/Serif/Mono (SIL OFL 1.1) ship as metric-compatible stand-ins for Arial, Times New Roman and Courier New.
  • All other fonts come from the device. Fonts installed on the server are no longer sent to other devices.

Release

  • Version 2.0.0.
  • .github/workflows/release.yml:
    • Builds the Windows package on windows-latest, then starts it with no system Python on PATH.
    • Builds and starts the Linux/macOS package.
    • On a v* tag, publishes both packages to a GitHub release with notes from CHANGELOG.md.
    • Runs as a build check on PRs that touch packaging.

Type of change / Değişiklik tipi

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📝 Documentation update
  • 🔧 Refactor / chore
  • 🔒 Security fix

Checklist

  • I have read CONTRIBUTING.md
  • Server checks pass (ruff check, ruff format --check, mypy, pytest: 292 passed)
  • Web checks pass (npm run check && npm run build)
  • I have added tests that prove my fix is effective or that my feature works (tool lookup incl. version order, per-user tessdata, LAN font restriction, Liberation fallback)
  • I have updated CHANGELOG.md ([2.0.0])
  • User-facing strings are in both Turkish and English
  • The UI stays keyboard-accessible (WCAG 2.1 AA): axe audit passed on all 12 screens (light/dark)
  • Documentation is updated (both Turkish and English sections of README.md)

Linked issues / Bağlı issue'lar

None.

Screenshots (UI changes only)

The header gets two small links next to the version, "AGPL-3.0 · Kaynak kod" and "Lisanslar"; no other UI changes.

Test plan / Test planı

  • Local runs:
    • Full pytest suite and the axe e2e audit.
    • Built the Linux/macOS package, unzipped it, started the server, and checked the health endpoint, the UI and /licenses.txt.
    • Checked that every dependency has a Windows wheel for cp313 (resolved with uv against x86_64-pc-windows-msvc): about 120 MB zipped.
  • In this PR's CI, the Release workflow:
    • builds the Windows package on windows-latest;
    • starts it from the unzipped folder with PATH reduced to System32;
    • checks the health endpoint, the UI, and that at least 40 tools load.
  • Not verified, needs a real Windows PC: the PowerShell OCR installer (winget, then downloading the Turkish data).

Generated by Claude Code

…ders

The UB-Mannheim Tesseract installer and Ghostscript don't add themselves
to PATH, so OCR reported 'Tesseract is not installed' although it was.
core/tools.find_tool checks PATH, then Program Files (newest version
first) and Homebrew folders, and puts the folder on PATH for OCRmyPDF.
The language list is no longer cached when Tesseract is missing, so
installing it while the app runs works after a retry. The error now
says where to get Tesseract and to tick the Turkish language pack.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XKGev7S7KWmgSAMGCQtAar
…ystem fonts

- scripts/install-ocr-windows.ps1 (+ .bat): installs Tesseract with winget
  and adds the Turkish language data in a per-user folder; offered on the
  first start. The server uses that folder (TESSDATA_PREFIX) automatically.
- THIRD_PARTY_LICENSES.md credits every direct and transitive library,
  external program, font, dataset and published algorithm with its licence
  (Python table generated by scripts/python_licenses.py). The UI serves it
  at /licenses.txt followed by the full licence texts of every npm package
  in the bundle (collected at build time); the header links to the source
  code (AGPL-3.0 section 13) and the licences. pdf.js LICENSE ships with
  its copied assets; text-layer.css credits pdf.js.
- Liberation Sans/Serif/Mono (SIL OFL 1.1) are bundled as free,
  metric-compatible stand-ins for Arial, Times New Roman and Courier New.
  Fonts installed on the server are no longer sent to other devices; LAN
  browsers preview with their own fonts. Adobe trademark note.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XKGev7S7KWmgSAMGCQtAar
- scripts/build_package.py builds dist/AdminPDFToolkit-<version>.zip
  (server + built UI, start/OCR launchers with CRLF, docs, OKUBENI.txt).
- scripts/release_notes.py: install steps + the version's CHANGELOG section.
- .github/workflows/release.yml: on a v* tag, checks it matches VERSION,
  builds the UI and the package, smoke-tests the unzipped package, and
  publishes the GitHub release with the zip.
- Version 2.0.0; CHANGELOG [2.0.0] includes the changes since the preview.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XKGev7S7KWmgSAMGCQtAar
On PCs without Python the start script failed ('py' not recognized, the
Microsoft Store python stub). The Windows release package now carries the
embeddable Python and every library: unzip, double-click, works offline.

- scripts/build_windows_portable.py: embeds the python.org embeddable
  build matching the build interpreter, installs the server wheel and its
  dependencies into python/Lib/site-packages, drops OpenCV's video-only
  FFmpeg plug-in, adds launchers (normal, LAN, OCR) and OKUBENI.
- release.yml: Windows job builds it on windows-latest and starts the
  unzipped package with no system Python on PATH; Linux/macOS job builds
  and starts the Python package; publish job (tags only) attaches both.
  Runs on PRs touching packaging as a build check.
- start-windows.bat: verifies Python really runs (skips the Store stub)
  and otherwise points to the Windows package; OCR offer moved to
  scripts/offer-ocr.bat, shared by both packages.
- README, release notes, licences and changelog updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XKGev7S7KWmgSAMGCQtAar
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

@AmrasElessar
AmrasElessar merged commit 32458c7 into main Oct 25, 2026
22 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.

3 participants