Skip to content

chore: release devel to main - #481

Merged
cboulanger merged 8 commits into
mainfrom
devel
Sep 16, 2026
Merged

cboulanger merged 8 commits into
mainfrom
devel

Conversation

@cboulanger

Copy link
Copy Markdown
Collaborator

Summary

  • fix: pre-generate backend plugin sandbox client script for production
  • fix: include flavor in GROBID training-data cache key
  • feat: add generic schema URL redirect registry, fix dead grobid schema link
  • chore: update references to renamed schema repo (grobid-footnote-flavour -> fossil)
  • fix: move PDF into selected collection before extraction and allow deleting PDF-only docs
  • fix: prevent duplicate PDF autosearch toasts for the same node
  • feat: purge GROBID training-data cache during garbage collection

🤖 Generated with Claude Code

github-actions Bot and others added 8 commits September 12, 2026 22:56
chore: back-merge v0.61.0 into devel
selectionChanged can fire several times in quick succession for the
same effective selection (e.g. during initial document load), each
scheduling the async autosearch handler. lastNode was only updated
after awaiting the PDF search, so concurrent handlers still saw the
stale value while the first search was in flight and re-triggered the
lookup, spamming the "no match" toast.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…leting PDF-only docs

A failed extraction (e.g. Grobid down) left the PDF stuck in the upload-time
default "_inbox" collection, since the collection sync only ran after a
successful extraction. It also could not be removed because the delete
button was disabled whenever no XML file existed for the document.

Fixes #477

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…our -> fossil)

The mpilhlt/grobid-footnote-flavour repo was renamed to mpilhlt/fossil,
which also moved its GitHub Pages schema site. Update all schema URLs,
repo mentions, and docs accordingly, and rename the test fixture cache
directory to match the new URL-derived path so
test_annotation_config.py finds its committed schema snapshot again.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…a link

GitHub Pages does not redirect after a repo rename, so the old
mpilhlt/grobid-footnote-flavour Pages site (mpilhlt.github.io/grobid-footnote-flavour)
now 404s outright instead of forwarding to mpilhlt/fossil. Documents extracted
before the rename still embed the old schema URL, which would otherwise break
validation permanently.

Add register_schema_redirect()/resolve_schema_location() to schema_validator.py:
a small, generic prefix-based redirect registry that any plugin can populate
for schema locations it owns, so future URL moves don't need one-off code in
the validator itself. The grobid plugin registers the grobid-footnote-flavour
-> fossil redirect in its config init, which always runs (even when the GROBID
server itself isn't configured/available), so old documents keep validating.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The cache key was doc_id+revision only, so re-extracting or
re-downloading a document under a different processing flavor
silently served the previous flavor's cached feature file, missing
the flavor-specific columns (e.g. the extra columns emitted by the
article/footnotes-refs segmentation model). The bulk /download route
also fetched every document with a single global flavor query param
instead of each document's own flavor recorded in its TEI encodingDesc
label.

Fixes #480

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
app/src is removed after the frontend build in the Dockerfile, but
generate_sandbox_client_script() parsed backend-plugin-sandbox.js from
that directory at runtime to build window.sandbox. In production this
silently produced an empty method list, breaking every sandbox call
(e.g. "sandbox.callPluginApi is not a function" when ending sessions
in the Active Sessions admin plugin).

Pre-generate the script at build time into app/web/sandbox-client.js
and fall back to it when app/src is absent, while keeping live
extraction in development.

Fixes #478

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The cache is fully reproducible (re-extracted from GROBID on demand),
so GC can safely wipe it wholesale rather than leaving cleanup solely
to the file.deleted event handler, which only fires on soft-delete.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Release preview

Merging this PR (as a merge commit) will publish v0.62.0.

semantic-release --dry-run output
[7:50:01 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ  Analyzing commit: feat: add generic schema URL redirect registry, fix dead grobid schema link

GitHub Pages does not redirect after a repo rename, so the old
mpilhlt/grobid-footnote-flavour Pages site (mpilhlt.github.io/grobid-footnote-flavour)
now 404s outright instead of forwarding to mpilhlt/fossil. Documents extracted
before the rename still embed the old schema URL, which would otherwise break
validation permanently.

Add register_schema_redirect()/resolve_schema_location() to schema_validator.py:
a small, generic prefix-based redirect registry that any plugin can populate
for schema locations it owns, so future URL moves don't need one-off code in
the validator itself. The grobid plugin registers the grobid-footnote-flavour
-> fossil redirect in its config init, which always runs (even when the GROBID
server itself isn't configured/available), so old documents keep validating.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
[7:50:01 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ  The release type for the commit is minor
[7:50:01 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ  Analyzing commit: chore: update references to renamed schema repo (grobid-footnote-flavour -> fossil)

The mpilhlt/grobid-footnote-flavour repo was renamed to mpilhlt/fossil,
which also moved its GitHub Pages schema site. Update all schema URLs,
repo mentions, and docs accordingly, and rename the test fixture cache
directory to match the new URL-derived path so
test_annotation_config.py finds its committed schema snapshot again.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
[7:50:01 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ  The commit should not trigger a release
[7:50:01 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ  Analyzing commit: fix: move PDF into selected collection before extraction and allow deleting PDF-only docs

A failed extraction (e.g. Grobid down) left the PDF stuck in the upload-time
default "_inbox" collection, since the collection sync only ran after a
successful extraction. It also could not be removed because the delete
button was disabled whenever no XML file existed for the document.

Fixes #477

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
[7:50:01 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ  The release type for the commit is patch
[7:50:01 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ  Analyzing commit: fix: prevent duplicate PDF autosearch toasts for the same node

selectionChanged can fire several times in quick succession for the
same effective selection (e.g. during initial document load), each
scheduling the async autosearch handler. lastNode was only updated
after awaiting the PDF search, so concurrent handlers still saw the
stale value while the first search was in flight and re-triggered the
lookup, spamming the "no match" toast.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
[7:50:01 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ  The release type for the commit is patch
[7:50:01 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ  Analyzing commit: Merge pull request #471 from mpilhlt/chore/back-merge-v0.61.0

chore: back-merge v0.61.0 into devel
[7:50:01 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ  The commit should not trigger a release
[7:50:01 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ  Analysis of 8 commits complete: minor release
[7:50:01 AM] [semantic-release] › ✔  Completed step "analyzeCommits" of plugin "@semantic-release/commit-analyzer"
[7:50:01 AM] [semantic-release] › ℹ  The next release version is 0.62.0
[7:50:01 AM] [semantic-release] › ℹ  Start step "generateNotes" of plugin "@semantic-release/release-notes-generator"
[7:50:01 AM] [semantic-release] › ✔  Completed step "generateNotes" of plugin "@semantic-release/release-notes-generator"
[7:50:01 AM] [semantic-release] › ⚠  Skip v0.62.0 tag creation in dry-run mode
[7:50:01 AM] [semantic-release] › ✔  Published release 0.62.0 on default channel
[7:50:01 AM] [semantic-release] › ℹ  Release note for version 0.62.0:
# 0.62.0 (https://github.com/mpilhlt/pdf-tei-editor/compare/v0.61.0...v0.62.0) (2026-09-16)

### Bug Fixes

    * include flavor in GROBID training-data cache key ([f0197cb](https://github.com/mpilhlt/pdf-tei-editor/commit/f0197cb8c47e93968b6750083581927eb52b01c1)), closes [#480](https://github.com/mpilhlt/pdf-tei-editor/issues/480)
    * move PDF into selected collection before extraction and allow deleting PDF-only docs ([87aa216](https://github.com/mpilhlt/pdf-tei-editor/commit/87aa2169093a3570e9d5e8060828b68cae28bb8f)), closes [#477](https://github.com/mpilhlt/pdf-tei-editor/issues/477)
    * pre-generate backend plugin sandbox client script for production ([1154718](https://github.com/mpilhlt/pdf-tei-editor/commit/115471857272611e9f398f3c902f6f7fb5bd3eea)), closes [#478](https://github.com/mpilhlt/pdf-tei-editor/issues/478)
    * prevent duplicate PDF autosearch toasts for the same node ([1773f52](https://github.com/mpilhlt/pdf-tei-editor/commit/1773f5237e56e674283a0bb7cd6f1ebd2e8ef5a3))

### Features

    * add generic schema URL redirect registry, fix dead grobid schema link ([8bd6fc6](https://github.com/mpilhlt/pdf-tei-editor/commit/8bd6fc6c8f00516c3c207769cbbdff8e747eb909))
    * purge GROBID training-data cache during garbage collection ([b43e7f6](https://github.com/mpilhlt/pdf-tei-editor/commit/b43e7f6d530c09a3a6374500b186a3ab21936eb9))

npm notice
npm notice New major version of npm available! 11.19.0 -> 12.0.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.0.2
npm notice To update run: npm install -g npm@12.0.2
npm notice

Preview generated by semantic-release --dry-run. Do not squash devel → main PRs.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results

All tests passed!

Tests were run in a containerized environment (E2E tests included). Changed files were analyzed and only relevant tests were executed.

@cboulanger
cboulanger merged commit 4f849e4 into main Sep 16, 2026
2 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 0.62.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant