Repository navigation
Releases: LAD47/PDFium-Gate
Release list
0.1.230
0.1.230 — Document Register cleanup
Resulting behavior
The PDFium Gate Document Register keeps its schema-aware Choose columns
control, including empty and alternative status views. The unrelated native
Obsidian Properties chooser is hidden only for the current
pdfium-document-register instance. Other Bases views retain it.
The native control is in a sibling .bases-header, outside .bases-view.
Ownership is checked through the enclosing Bases .view-content. Local
observation reconciles delayed/replaced chrome and view switching; unload
disconnects observation, invalidates queued work and removes owned markers.
Ambiguous or unsupported DOM shapes leave the native control visible.
Temporary UI reporting, the copy button, its report generator, clipboard
handling and all 21 associated translation entries have been removed.
Permanent DOM/lifecycle and column-picker regressions remain in the check pipeline.
Example installation creates PDF Dokumentregister.base only at the Vault
root when missing. It no longer installs or restores a second real register in
the example folder. The duplicate repository example snapshot is removed;
the canonical root-register generator remains. Two pedagogical native Bases,
six synthetic records and the example README remain. Existing root registers,
historical copies, legacy Bases, PDFs and metadata are not automatically
overwritten, moved or deleted.
New register view names use the selected UI language. Existing user-owned Base
files and labels remain untouched. Stored visibility, sorting, filtering,
inline editing, permanent metadata identifiers and values are preserved.
Evidence and scope
Final local 0.1.230 practical confirmation — 19 October 2026
The user confirmed all seven practical tests passed for the final local
0.1.230 candidate:
- Obsidian displays PDFium Gate 0.1.230.
- The Vault-root Document Register opens normally.
- Obsidian's general Properties (Egenskaper) chooser is hidden in the register.
- PDFium Gate's Choose columns (Velg Kolonner) works.
- Copy UI diagnostics (Kopier UI-diagnose) has been removed.
- Other Bases views retain their Properties button.
- The register works after switching between Bases views.
This is user-reported practical confirmation of the final local candidate;
Codex did not access the Vault or repeat these tests.
Earlier 0.1.229 evidence (historical)
The user had separately reported all six practical Obsidian checks passed on
2026-10-19 for the earlier local 0.1.229 register-cleanup build, including correct
native-control identification/marking, local observer ownership and unaffected
other Bases views. Those six checks remain historical evidence for 0.1.229;
they are not the seven final 0.1.230 results above. The confirmed functional
synchronizer is retained unchanged.
The observed DOM, the wrong-container failure and the schema/identity boundary
are permanently documented in
Document Register architecture.
The regression contract
covers future changes and Obsidian upgrades; synthetic DOM tests do not replace
practical testing in Obsidian.
The aggregate local diff was reviewed before versioning. It contains the register,
column/localization and example-installation work described above, its tests and
documentation. Existing AGENTS.md edits and the unrelated temporary patch script
pdfium-gate-register-ryddig-ui-bevar-agents.cjs are preserved locally.
Both are excluded from the proposed release commit; including AGENTS.md
requires separate approval. Neither belongs in the three-file plugin ZIP.
Later staging must use an explicit file selection, not git add -A.
Manifest/package/lockfile, versions.json and the renderer version are aligned on
0.1.230. Plugin ID remains pdfium-gate, minimum Obsidian remains 1.13.7.
There are no new dependencies or metadata/storage migrations beyond the existing
0.1.228 contract. Its older downgrade/restore limitations remain unchanged.
Verification and release status
Required local verification is npm.cmd --logs-max=0 run check and
git diff --check, including deterministic build, native Properties/column
regression, example installation, existing metadata/runtime checks and complete
coverage of all seven official locales.
Previously reported local verification on 2026-10-19: 21/21 pipeline stages
passed with exit 0,
including nine native Properties/column groups, ten retained disk-migration
scenarios, example-installation preservation, existing register editing and
730 keys at 100% coverage in each of the seven locales. Runtime verification
reported deterministicBuild: true and rootOnlyLoad: true; generated
main.js is 4,597,612 bytes. The initial sandbox run stopped at main.js
writing with EPERM; the complete scoped run passed outside the sandbox.
A final targeted search found no temporary register-report code, key/button
labels or old test references in production source, generated runtime, tests
or active documentation. Existing non-target files and AGENTS.md retained
their protected local preparation hashes.
This documentation follow-up changes no production code or version files and
does not rerun the build or project tests. The 21/21 result above belongs to the
reported local candidate. No GitHub Actions verification for 0.1.230 has been
performed or claimed at this point.
This is a local candidate, not a published release. No commit, push, merge, tag,
archive or GitHub Release is created by this preparation. Subsequent GitHub runtime,
immutable archive and publication verification follows RELEASE.md;
Community preview remains optional. Historical release notes and archives are
not rewritten.
0.1.229
0.1.229
Example installation and PDF Document Register
- The Settings example installer includes a copyable
PDF Dokumentregister.baseusing PDFium Gate's custompdfium-document-registerview over real records inFile Metadata/. - Installation creates the working Vault-root register only when missing. An existing working register is preserved unchanged, including user customization. A folder at that path blocks installation before examples are modified.
- The canonical register copy uses the current metadata schema, including
author,source_urland custom fields enabled for the standard Base. Native example Bases remain separate views over synthetic examples. - Reinstalling canonical example files retains the existing explicit confirmation. The working register is never overwritten; the canonical register copy inside the examples folder follows the documented example reset behavior.
- Author and Published online retain the 0.1.228 migration, localization, HTTP(S) validation and unchanged-legacy-URL preservation behavior.
Verification and compatibility
Prepared from verified main baseline be7a4f041168df8c34b6c602fdccd65ca85ee709. The automated suite includes author/source URL regression, ten disk migration scenarios, register keyboard behavior, example register create-once/preservation/conflict safety and deterministic runtime verification.
Local automated verification on 2026-10-13: npm.cmd --logs-max=0 run check exited 0; all 20/20 pipeline steps and 10/10 disk migration scenarios passed, deterministicBuild was true, and generated main.js was 4,592,559 bytes. Author/source URL and example register preservation regressions passed. The initial sandbox attempt stopped at main.js writing with EPERM before tests started; the complete run was approved outside the sandbox. GitHub Actions Build generated runtime run 38462766025 passed for release commit 3c83cdd. The subsequent release-policy edit changes documentation only; production source, runtime and automated checks are unchanged. No new practical Obsidian test is claimed by this release preparation. Earlier user approval of author/source_url belongs to 0.1.228; it does not establish a practically confirmed 0.1.229 runtime baseline.
Plugin ID remains pdfium-gate; minimum Obsidian version remains 1.13.7. This release adds no metadata migration beyond 0.1.228. Returning to 0.1.227 after its schema migration remains unguaranteed and may require a compatible schema backup.
Release gates
On 2026-10-13 the owner explicitly made Community preview scanning optional for the publishing procedure and authorized skipping it for 0.1.229. No Community preview scan is performed or claimed. Full npm run check, GitHub Actions and frozen-archive rebuild verification remain required. Publication uses the manual Publish Community Plugin release workflow from the immutable archive/0.1.229 snapshot. The published 0.1.228 release is preserved.
Authorized one-time archive correction for 0.1.229
Before publication, the owner explicitly authorized one correction of archive/0.1.229 from original commit 3c83cdd to the final verified main commit. The reason is to include the subsequent owner decision making Community preview optional and this exception's audit record. The release and tag were confirmed absent before preparation. Production source, generated runtime and automated controls remain unchanged.
The move must compare the remote ref against that exact original SHA and fail if it differs. This authorization permits exactly one move; it does not authorize later archive rewrites. Once corrected, and permanently after publication, archive/0.1.229 is immutable. The published 0.1.228 release is unaffected.
0.1.228
0.1.228 release candidate
Prepared on 2026-10-13 on feature/0.1.228-email-bundles. This is a candidate, not a published release.
Changes
- New EML/MSG imports use one self-contained
YYYY-MM-DD - EPOST- Subjectfolder with a namesake parent PDF, direct attachments and flattened ZIP members. Collisions apply the same suffix to folder and PDF. Existing imports retain their paths; manual ZIP import preserves archive directories. - Email staging arrival reconciliation handles create, startup and focus through the serialized queue; first-run inventory prevents historical mass import and unchanged failed sources do not cause repeated prompts.
- Archive/parent-link read-back handles bracket-containing member names. Attachment rollback removes only attempt-owned files/records and reports failures.
- Author and Published online metadata fields use a controlled one-time schema upgrade, retain existing identities and disabled states, and preserve deletion after the migration marker is written.
- Factory labels follow UI language while user labels remain unchanged. HTTP(S) URLs are clickable, changed invalid URLs produce localized validation errors and unchanged legacy URLs survive edits to other fields. Register Enter/Escape behavior remains covered.
Verification and scope
Previously completed verification, reported by the owner: 19/19 automated controls passed, 10/10 disk migration scenarios passed, and deterministic build passed. These are prior results, not newly executed by this documentation update.
Practical testing on 2026-10-13: isolated candidate points 1–6 OK, user-confirmed; author and source_url practically approved. Email import, ZIP handling and other approved functions were previously confirmed and are covered by passing automated controls. No additional manual repetition tests are part of this preparation. Practical testing of the entire 0.1.228 candidate is not exhaustive.
Final post-version verification on 2026-10-13: npm.cmd --logs-max=0 run check completed once outside the sandbox with exit code 0, all 19/19 pipeline steps passed, 10/10 disk scenarios passed and deterministicBuild: true. The initial sandbox attempt stopped at runtime writing (EPERM on main.js) before tests started. Generated main.js: 4,589,563 bytes. Expected diagnostics from six injected disk faults were verified successful recovery scenarios. No manual Obsidian tests were run in this preparation.
Compatibility
The schema version remains 1 but accepts the new migrations.author_source_url_v1 extension. Older 0.1.227 contracts reject migrations. Returning to 0.1.227 after schema migration is not guaranteed and may require a compatible schema backup; preserve subsequent schema edits separately. Synthetic compatible-schema restoration passed; whole-plugin downgrade is untested. Process crashes, simultaneous faults and recovery failure are outside the verified scope.
Plugin identity remains pdfium-gate. No existing email folders, metadata UUIDs or record identities are migrated by the EPOST layout change.
Gate before merge
After push, run the mandatory Community Review branch / preview scan against the exact candidate SHA and record date, SHA, complete result and disposition of every finding here. Repeat the scan after relevant candidate changes, as required by RELEASE.md. Scan is pending; merge, tag, archive branch and publication are outside this task.
0.1.227
PDFium Gate 0.1.227
0.1.227 is a usability, localization, document-register and Community-release-quality release candidate.
Highlights
- DocumentInfo now exposes Edit in both the top and bottom action areas, with Cancel and Save available in both places while editing.
- Factory metadata/category defaults follow the selected UI language while stable UUIDs, properties and machine values remain language-independent.
- User-customized metadata labels, category names and option labels remain user-owned and are preserved across language changes.
- Settings is reorganized into compact, collapsible groups.
- The production PDF Document Register is visually and conceptually separated from the synthetic/native Bases learning examples.
- The PDF Document Register is PDF-first, supports persistent per-view column visibility, and includes quick filters for Active, Missing, Errors, Unregistered and All.
- Invalid metadata records expose concrete diagnostics, while register/diagnostic text remains selectable and copyable.
- Multiple records pointing to the same PDF are grouped and compared; duplicate metadata records can be deleted through a guarded identity-revalidated flow that never deletes the PDF.
- Unregistered includes a direct Register all action that reuses the canonical existing-PDF registration flow.
- Missing intentionally remains read-only in the register; maintenance continues through the separate missing-document review flow.
Community Plugin review cleanup
The 0.1.227 candidate also addresses findings from the Community scanner used on 0.1.226:
- the manifest description no longer contains the redundant word “Obsidian”;
- generated Email/Archive runtime bundles use syntax/whitespace minification without identifier minification, reducing
main.jsbelow the 5 MB Community/Sync target; npm run check:communityprevents regression of the manifest, runtime-size and CSS review issues;- active CSS no longer uses the flagged
!important,:has()ortext-decoration-stylepatterns; - the Community release workflow rebuilds/verifies the frozen archive and creates GitHub artifact attestations for
main.js,manifest.jsonandstyles.css; - README documents filesystem access, vault enumeration, clipboard use and the bundled dynamic-code dependency.
Vault enumeration and clipboard access remain intentional product behavior. The scanner's dynamic-code recommendation is traced to the bundled source-map-js dependency via sanitize-html -> postcss -> source-map-js; the dependency audit currently reports no known vulnerable dependencies.
Identity and lifecycle contract
Ordinary PDF identity remains based on permanent filemeta_id UUID plus trusted Obsidian rename/move continuity.
The ordinary PDF lifecycle remains deliberately limited to:
active;missing.
0.1.227 does not reintroduce ordinary-PDF SHA recovery, manual relink or the experimental trashed state.
Practical verification
The 0.1.227 development line has been practically verified for:
- DocumentInfo top/bottom actions;
- Bokmål → English → Bokmål localized factory defaults with user customizations preserved;
- Settings/example-package cleanup;
- PDF-first Document Register and persistent Velg Kolonner;
- quick status filters and invalid-record diagnostics;
- selectable/copyable register text;
- duplicate-record comparison and guarded Delete metadata;
- final Unregistered → Register all closure flow.
Final release-candidate verification and the mandatory Community Review branch / preview scan are performed against the exact versioned candidate before merge/release.
Community preview scan
The mandatory Obsidian Community Review branch / preview scan completed successfully on 2026-10-07 against:
- ref:
fix/0.1.227-localized-defaults; - commit:
3227f5313f5314a94af15826f3e18375b50c3d27; - result: Completed.
This scan is the external Community release gate for the versioned 0.1.227 candidate. Any later change to plugin source, generated runtime, manifest.json, styles.css, dependencies/lockfile, build configuration or release workflow requires a new preview scan before merge/release.
Compatibility
- Obsidian minimum version: 1.13.7
- Desktop only.
- Primary practical baseline: Windows 11 / Obsidian 1.13.7.
Release status
This file describes the 0.1.227 release candidate. Publication is not complete until the exact candidate has passed final repository verification, the mandatory Community preview scan, explicit merge approval, frozen archive/0.1.227, the ordinary GitHub Release and user confirmation through Obsidian Community Plugins.
0.1.226
PDFium Gate 0.1.226
0.1.226 is a release-infrastructure and documentation cleanup for the Obsidian Community Plugins distribution path. It does not intentionally introduce a new PDFium Gate feature set.
Highlights
- Community Plugins is now the documented normal installation and update path.
- The GitHub publishing workflow is renamed to Publish Community Plugin release.
- Normal Community releases are ordinary GitHub Releases, not GitHub prereleases.
- Release publishing is manual-only and requires the matching frozen
archive/<version>branch before publication. - BRAT is removed from the active release/install workflow and remains historical only.
- The root README is reorganized for ordinary Community Plugins users.
- Public manifest author metadata is now
LAD47. - npm dependencies are locked with
package-lock.json. - CI uses
npm ciso generated runtime is built from the same dependency tree locally and on GitHub. - The generated runtime was rebuilt against the locked dependency tree and passed the complete repository verification pipeline.
Practical verification carried forward into this release
The final Email Import / Archive Import behaviors that were still listed as pending after 0.1.225 were practically confirmed before preparing 0.1.226:
- flat Email ZIP attachment layout;
- correct links from the generated email PDF to extracted PDFs;
- retained ZIP provenance in DocumentInfo;
- external ZIP detection and import when a ZIP is copied into the Vault through the operating-system file manager and focus returns to Obsidian.
Compatibility
- Obsidian minimum version: 1.13.7
- Desktop only.
- Current practical baseline: Windows 11 / Obsidian 1.13.7 / Electron 43.3.0.
Verification
Before release preparation, the complete local repository verification pipeline passed with the locked dependency tree:
npm ci
npm run check
Production dependencies also reported no known vulnerabilities with:
npm audit --omit=dev
Distribution
PDFium Gate is distributed to ordinary users through Obsidian Community Plugins.
The GitHub Release must contain:
main.jsmanifest.jsonstyles.css
The exact approved release is frozen under archive/0.1.226 before the Community release workflow is run.
0.1.225
PDFium Gate 0.1.225
0.1.225 is a development/test release focused on Email Import, Archive Import, attachment integrity and safer document-record handling.
Highlights
- Import EML and MSG messages into normal PDFium Gate PDFs.
- Exact-source SHA-256 duplicate detection for imported email.
- Complete attachment list rendered into the generated email PDF.
- Direct clickable links from the generated email PDF to imported attachments.
- One localized sibling attachment folder per imported email.
- Norwegian Bokmål:
… Vedlegg/ - English:
… Attachments/ - equivalent labels for the other supported UI languages.
- Norwegian Bokmål:
- Direct attachments and members from multiple ZIP attachments share the same email attachment folder.
- ZIP members from email are flattened to filenames; the original archive member path remains technical provenance.
- Filename collisions are resolved deterministically with suffixes such as
(2). - ZIP is treated as a transport container, not a normal persistent email attachment document.
- Successful email imports do not require the original EML/MSG to remain in the Vault.
- Exact original EML/MSG retention remains available as an advanced opt-in and is off by default.
- Attachment import is transactional with byte read-back verification and rollback.
- PDF auto-registration races are handled safely and transaction-owned records are rolled back on failure.
- Generic manual Archive Import supports ZIP safety preflight, preserved archive directory structure, PDF registration and Archive Relationships.
- Successful manual ZIP import deletes the source ZIP only after the complete transaction succeeds.
- Failed manual ZIP import rolls back transaction-owned output and offers Keep ZIP / Delete ZIP.
- ZIP files copied through the operating-system file manager are detected through startup/focus reconciliation.
- DocumentInfo can show archive provenance and related files without requiring a live source ZIP path.
- Missing-document and document-record handling received additional fail-closed fixes and regression coverage.
Compatibility
- Obsidian minimum version: 1.13.7
- Desktop only.
- Most practical verification for this release was performed on Windows 11 / Obsidian 1.13.7 / Electron 43.3.0.
Practical verification completed
The development branch has practical confirmation for:
- automatic EML import;
- source staging cleanup after successful verified import;
- direct PDF attachments;
- multiple ZIP attachments in one email;
- one localized email attachment folder;
- source ZIP removal for successful email imports;
- complete attachment lists in generated email PDFs;
- direct opening of imported PDF attachments;
- DocumentInfo provenance for PDFs originating inside ZIP attachments;
- localized Norwegian Bokmål attachment-folder naming.
Remaining test focus for broader users
0.1.225 is still pre-release software. Broader testing is specifically useful for:
- unusual real-world EML/MSG structures and encodings;
- large/mixed ZIP attachments;
- manual ZIP arrival through Windows/macOS/Linux file managers;
- failed/corrupt/password-protected ZIP handling;
- rename/move behavior for imported non-PDF attachments;
- macOS and Linux runtime differences;
- future Obsidian/Electron/Chromium compatibility.
Back up the Vault before testing.
Distribution
GitHub/BRAT release assets:
main.jsmanifest.jsonstyles.css
main.js contains the embedded Main Bridge runtime; main-bridge.js is generated separately for build verification but is not required as a release asset.
0.1.224
BRAT test release. Frozen from archive/0.1.224.
0.1.223
BRAT test release. Frozen from archive/0.1.223.
0.1.222
BRAT test release. Frozen from archive/0.1.222.
0.1.221
BRAT test release. Frozen from archive/0.1.221.