Skip to content

Releases: lmdanavanem/SuniPDF

SuniPDF 0.48.0

Choose a tag to compare

@lmdanavanem lmdanavanem released this 22 Oct 10:39
Immutable release. Only release title and notes can be modified.
6f32c20

SuniPDF 0.48.0 — edit saved measurement vertices

Français · Geometry editing guide

Status: published as stable Latest 0.48.0, source 6f32c20259f6bae6e1b60090fe74acfb5dc69ba7, on 2026-10-22. Previous release.

Changes

  • Select a saved measurement and edit its existing vertices directly on the page. Preview, adjust, Apply and one-step Undo keep acceptance explicit.
  • Preserve the measurement's own calibration, units, precision, identity, replies and quantity fields. Measured quantities and compatible price totals follow the accepted geometry.
  • Keep invalid or stale edits from being applied; support page rotation, crop geometry, cancellation and protected documents through the existing measurement guards.
  • Validate documentation-only changes through a bounded documentation path in CI, while retaining full checks for source, scripts, workflows and release builds.
  • Include the published 0.47.0 Windows packages in portable and MSI upgrade regressions.

Qualification

Exact source passed: ci · release · codeql. 752 tests passed, 10 default ignored. 1388 EN/FR keys. 40 portable scenarios. 34 MSI baselines. 170 MSI logs. No open Code Scanning alerts. Six public downloads and dist copies verified by SHA256. 26 packaged CLI calls verify saved/reopened page scales, explicit geometry replacement, unit conversion, precision, recalibration, stable identity, independent measurements, preserved typed quantity fields and price basis, recalculated totals, invalid/stale refusals and unchanged original files. They do not establish native desktop or ARM64 qualification. Evidence.

Scope

Vertex count and measurement type stay fixed. Vector snapping, adding/removing vertices, batch recalculation and multiple-scale viewports remain open. The existing CLI command is unchanged. Packages remain unsigned; native ARM64, hardware and accessibility qualification remain separate from automated checks.

SuniPDF 0.47.0

Choose a tag to compare

@lmdanavanem lmdanavanem released this 22 Oct 09:13
Immutable release. Only release title and notes can be modified.
db79bc3

SuniPDF 0.47.0 — aligned revision overlays

Français · Revision overlay guide

Status: Windows release qualification passed; stable release.

Scope

Revision overlay opens from All tools or Compare files, without requiring an open document. Select one physical page from each of two saved local PDFs. The base appears in magenta and the revision in cyan, with adjustable revision opacity. Unsaved tab changes are not included.

Align the revision through explicit translation, clockwise rotation and uniform scale, or click two corresponding points on each source image. Preview again after changing the settings; reset clears the alignment. Coordinates are displayed PDF points from the top-left corner, with crop and page rotation accounted for. The base page defines the output canvas; revision content outside it is clipped.

Each PDF is limited to 64 MiB. Each source raster is bounded independently, with a default maximum side of 1536 pixels and an upper limit of 2048. The worker supports cancellation and retains no password in the prepared preview. Both PDFs must permit copying; separate passwords are supported.

Desktop and CLI export a new PNG or JSON report. The report records both source hashes, selected pages, geometry, alignment and rendering settings. Exports recheck the saved sources against their recorded SHA-256 hashes and refuse existing destinations. Neither PDF is modified.

Qualification

Exact-source Windows CI, release packaging and CodeQL checks passed; the workflow links below identify these successful runs. Public-download verification is performed after publication and recorded separately in Project status.

Remaining limits

This is a raster overlay of two explicitly selected pages. Alignment is manual or based on two point pairs; there is no automatic registration, vector comparison, OCR, merged PDF or automatic change outline. Scaling cannot restore detail lost in the source raster. The overlay does not change measurements, page calibration or PDF content. AEC-013 remains partial; AEC-014 remains open. Native/hardware and 1.0 qualification gates remain separate.

Validation: ci | release | codeql.

SuniPDF 0.46.0

Choose a tag to compare

@lmdanavanem lmdanavanem released this 22 Oct 07:36
Immutable release. Only release title and notes can be modified.
3e67639

SuniPDF 0.46.0 — quantity tables and typed business fields

Français · Quantity-table guide

Status: Windows release qualification passed; stable release.

Scope

Quantity table is available from All tools, the measurement controls and the annotation register. It reads saved count markers and measurements alongside their source annotations. Real filters and 50-row pagination keep the displayed rows and their subtotals aligned.

Each eligible annotation can carry an explicit unit price, currency, price-basis unit and rounding precision, plus typed text, number, date and choice columns. Apply fields changes the annotation metadata in one Undo step; Cancel edit discards the draft. Saving the PDF retains the fields. Measurement geometry, annotation identities and review threads are preserved.

Missing quantities and prices stay absent rather than becoming zero. Count, length and area totals retain their units. Prices can convert quantities to a compatible, explicitly selected price basis; currencies are never converted. Costs are rounded per line and summed separately by currency and rounding precision. Missing prices, excluded rows and incomplete cost coverage remain visible.

CSV and JSON exports include source-snapshot provenance, filters and subtotal coverage. Export requires copying permission and a new output file. Edits require annotation permission and a current target. The CLI provides quantity-table, set-quantity-fields and clear-quantity-fields; mutation output is a new PDF copy, including for supported protected inputs.

Qualification

Exact-source Windows CI, release packaging and CodeQL checks passed; the workflow links below identify these successful runs. Public-download verification is performed after publication and recorded separately in Project status.

Remaining limits

AEC-007 remains partial. This release does not provide arbitrary formulas, tax rules, currency exchange, automatic symbol counting, cross-document aggregation or a full estimating system. Angles remain visible but are excluded from additive and priced totals. Ordinary annotations without a supported quantity are not assigned an invented quantity. Column types and choice options must remain consistent within a document; bounds and stale or unsupported metadata can cause an explicit refusal. Native/hardware and 1.0 qualification gates remain separate.

Validation: ci | release | codeql.

SuniPDF 0.45.0

Choose a tag to compare

@lmdanavanem lmdanavanem released this 22 Oct 06:48
Immutable release. Only release title and notes can be modified.
51f07a6

SuniPDF 0.45.0 — reusable annotation libraries

Français · Library guide

Status: Windows release qualification passed; stable release.

Scope

A visible local annotation library lets users save supported drafts, name entries, reuse them, import/export a documented JSON file and remove entries explicitly. Supported templates include shapes, text using standard fonts, polylines/polygons, revision clouds, predefined stamps and embedded PNG images. A flat group contains at most 16 primitives.

Placement uses an explicit origin and scale on the current page, followed by Preview and Apply. Applying a group is one Undo step; its members remain individual PDF annotations with new identities. The library entry remains available; deleting it later does not remove annotations already placed.

The versioned file contains its image data and declared provenance. Import validates types and resource bounds before committing a merged library; conflicts or failures preserve its previous state. Scripts, external paths, PDF identities, review threads and measurement calibrations are excluded. Provenance and licence text are user declarations, not independently verified grants.

CLI management operates on explicit library files. Placing an entry in a PDF requires annotation permission and a new output copy; original files and existing destinations remain protected. Supported encryption is retained.

Qualification

Exact-source Windows CI, release packaging and CodeQL checks passed; the workflow links below identify these successful runs. Public-download verification is performed after publication and recorded separately in Project status.

Remaining limits

This first library does not capture arbitrary existing PDF annotations, preserve arbitrary imported appearances or nest groups. It does not transfer measurements, page scales, attached files or executable actions. AEC-006 remains partial until the broader acceptance criteria are demonstrated. Native/hardware and 1.0 qualification gates remain separate.

Validation: ci | release | codeql.

SuniPDF 0.44.0

Choose a tag to compare

@lmdanavanem lmdanavanem released this 22 Oct 04:19
Immutable release. Only release title and notes can be modified.
7e95078

SuniPDF 0.44.0 — editing saved measurements

Français · Measurement guide

Status: Windows release qualification passed; stable release. The previous published release and its evidence remain 0.43.0 · publication record.

Audit before this release

Finding Delivered change
The manual measurement dialog supplied an arbitrary 10 m reference over 100 PDF points. No implicit positive reference distance; a valid explicit calibration is required before preview/application.
Saved measurements could be inspected or reused, but not edited. An explicit editor changes the selected measurement's reference distance, unit and precision through Preview then Apply.
The inspector copied the complete page list and generated result JSON every frame. Records and calculated labels are shared in memory; pagination remains bounded to 50 rows.
A temporary scale could override the saved default without a direct way back. Use saved page scale or Clear temporary scale changes only the current page's session state.
Measurement exports did not consistently check copying permission, including details returned by mutation commands. Read/export commands require copying permission. Permitted creation/editing without it returns measurement: null and export_unavailable: true.
Resizing content and annotations changed measurement rectangles without updating their private geometry. That resize mode refuses pages containing supported or recognized imported measurements before committing changes.
Replacing an existing measurement needs stronger checks than displaying it. Editing requires an unchanged expected record, stable unique identity, supported metadata/appearance and annotation permission. Locked, shared, stale or externally changed targets are refused.

Desktop

Open Measurements → Saved measurements → Edit measurement. Change the known reference distance, unit or 0–4 decimal precision. A unit change converts the reference distance physically; a distance change recalculates only this measurement. Angle editing exposes precision only. The measured vertices and reference points remain fixed in the desktop editor.

Inspect the rendered Preview, then select Apply. Replacement retains annotation identity, author, replies and register fields. Cancel leaves the PDF unchanged; successful application uses one Undo/Redo step. Save the PDF to retain the change. Page defaults and other measurements are not recalculated.

Use saved page scale discards a temporary override when a valid default exists. Otherwise Clear temporary scale removes only the temporary calibration. Neither action modifies the PDF or another page's session scale.

CLI

edit-measurement requires --page, --index and --expected-record, a complete record obtained from measurements. It can change kind, vertices, calibration, unit or precision. Explicit calibration requires both --calibration and --known-distance; --use-page-calibration selects the saved page default. Converting an angle into a scaled measurement requires an explicit physical calibration. Angles can be created without a page scale.

Writes require a new --out copy, including with --overwrite. Existing destinations and original files remain protected. Supported encryption and permissions are retained. Detailed JSON export requires copying permission; annotation permission remains independently required for editing. Examples and bounds.

Validation and remaining limits

The validation scope includes real egui control interactions, unit conversion, preview/cancel, stale targets, replacement without duplication, Undo/Redo, save/reopen, encrypted copies, restricted exports and independent qpdf checks. Exact-source Windows CI, release packaging and CodeQL checks passed; the workflow links below identify these successful runs. Detailed qualification evidence is maintained in Project status.

Desktop vertex dragging, batch recalculation, vector snapping, multiple-scale viewports, volumes and real-plan dimensional qualification remain open. Editing is limited to supported measurements in documents up to 128 MiB; unknown or externally modified structures are preserved by refusal. Resizing measured pages is not silently repaired. Local tools remain free and open source. Signing, native ARM64, native accessibility, physical printing and 1.0 acceptance gates remain open.

The planned local sequence is 0.44 editing and corrective work, 0.45 a reusable annotation library, 0.46 quantity columns/totals/export, and 0.47 overlays/revision review. Each stage needs its own scope and evidence; this release does not complete the broader AEC cards. Roadmap.

Validation: ci | release | codeql.

SuniPDF 0.43.0

Choose a tag to compare

@lmdanavanem lmdanavanem released this 22 Oct 02:55
Immutable release. Only release title and notes can be modified.
965fb64

SuniPDF 0.43.0 — saved page scales and measurement inspection

Français · Measurement guide

Status: Windows release qualification passed; stable release.

Save a confirmed page scale inside the PDF and reload it when returning to the document. Saving or removing a page scale is an explicit document edit with Undo/Redo; save the PDF to retain the change on disk. A page's saved scale is separate from temporary calibration and from each existing measurement's immutable scale. Recalibrating new measurements never silently changes earlier quantities.

The Measurements workspace lists the current page's saved measurements, their values, units and calibration. Navigate to a measurement or explicitly reuse its physical scale for new measurements. Angles do not provide a physical scale. Reading the list leaves the PDF unchanged. Unsupported metadata is reported rather than guessed.

The CLI adds page-calibration, set-page-calibration and remove-page-calibration. measure --use-page-calibration explicitly uses the saved scale and converts it into the requested unit. Mutations write a new PDF copy, preserve supported encryption and refuse overwriting an existing destination or the original file. Saving page metadata requires document-modification permission; annotation-only PDFs can still use temporary calibration to add permitted measurements.

Page scales use a bounded, versioned open metadata record in PDF user coordinates. Rotation retains the physical scale; an incompatible crop or page geometry is refused. Page edits, document switches and delayed worker replies cannot silently transfer a scale to another page or overwrite a more recent local calibration. Existing saved annotations keep their own geometry and values.

Published 0.42.0 ZIP and MSI packages join the upgrade regression baselines. Exact-source Windows CI, release packaging and CodeQL checks passed.

Release verification resumes interrupted downloads of its pinned test converter instead of discarding partial transfers. Download limits, final size/SHA256 checks, publisher signature verification and installation restricted to disposable test runners remain enforced.

Editing saved vertices, global recalculation, vector snapping, multiple-scale viewports and real-plan qualification remain open. Local features remain free and open source. Windows packages remain unsigned. ARM64 is cross-compiled; native ARM64 hardware and physical dimensional accuracy are not qualified by automated tests.

Validation: ci | release | codeql.

SuniPDF 0.42.0

Choose a tag to compare

@lmdanavanem lmdanavanem released this 22 Oct 00:21
Immutable release. Only release title and notes can be modified.
96ad768

SuniPDF 0.42.0 — measurements directly on the page

Français · Measurement guide

Status: Windows release qualification passed; stable release.

Measurements have a dedicated, labelled button beside All tools and their own workspace. Calibrate a page by clicking two points and entering the known distance. Draw lengths, polylines, polygon perimeters, polygon areas and angles directly on the PDF. A live overlay shows the draft geometry and result; Shift constrains a segment horizontally or vertically. Backspace removes the last point, and Escape cancels the drawing.

Lengths and angles open the PDF preview after their final point. Finish a polyline or polygon with Enter, a double-click or Preview measurement. Apply adds the actual annotation; Cancel leaves the document unchanged. Saving preserves geometry, calibration and the value in the PDF, and Undo removes them together. The tool remains active for repeated measurements.

Page scales are separate within the current document session. Changing units converts the calibration. Ordinary annotation edits preserve confirmed scales; page geometry or structural changes invalidate them. An unfinished drawing cannot silently follow a page, document or tool change.

Automated coverage includes English/French toolbar visibility at narrow widths, actual egui pointer events, calibration, preview/apply, duplicate double-click prevention, keyboard controls, page isolation and stale drafts. Exact-source Windows CI, release packaging and CodeQL checks passed.

The session calibration is not saved as a shared page property. Switching tabs preserves each document's scale. Closing and reopening a document requires recalibration for new measurements; saved annotations retain their own scale. Editing saved vertices, snapping to PDF vectors, multi-scale viewports and global recalculation remain separate backlog items. Imported proprietary measurement metadata remains unsupported. Local features remain free and open source.

Windows packages remain unsigned. ARM64 is cross-compiled; native ARM64 hardware and physical measurement accuracy are not qualified by automated tests.

Validation: ci | release | codeql.

SuniPDF 0.41.0

Choose a tag to compare

@lmdanavanem lmdanavanem released this 21 Oct 22:27
Immutable release. Only release title and notes can be modified.
8e36a4b

New in 0.41.0

  • Manual plan counts. In Comment choose Manual count, set an equipment/type group and click items on the plan. Each real Stamp marker represents one item. Move/delete with normal annotation tools and Undo/Redo. Regroup through the register while preserving identity and geometry. Totals are recomputed from actual markers, with no symbol recognition implied.

  • Document-wide annotation register. Search standard/custom fields, apply named filters, sort and navigate to the actual markup. Keep business statuses and disciplines separate from standard PDF Review states. Add up to 16 custom text fields; each edit has one Undo step and refuses stale snapshot targets.

  • Traceable CSV/JSON snapshots. Export every filtered row and marker-linked group totals. Preserve unknowns; escape spreadsheet formula prefixes. Malformed/unsupported SuniPDF records or ambiguous count identities refuse complete export. New-copy guards retain original PDFs, existing files and AES permissions.

  • PDF permissions. Shared annotation writers enforce the annotation right for moves, deletion, replies and other edits; page-geometry maintenance retains its separate modification authorization. Incomplete page inventories and malformed count identities refuse register export.

  • QA dependency maintenance. Replace test-only Pillow with pinned 13.0.0 Windows wheels; retain all previous image and independent-reader checks. Local tools remain free and open source.

  • Retained migrations and PDF checks. Published 0.40.0 ZIP/MSI packages join earlier baselines. No new third-party runtime package was introduced; serde is already in the locked dependency tree.

Validation

Main CI and release workflow passed on 8e36a4bf2d2396e6cff92cea4fd006c8c964c62f: 643 tests, zero failures, 10 default ignored; 1198 EN/FR keys, 33 portable scenarios, 27 MSI baselines/135 logs. CodeQL Rust/Python/Actions passed with zero open alerts.

The independent page-decoration gate passed 100 cases, 339 CLI calls and 14 qpdf checks, covering rotations, cropped geometry, transparency, six text zones, numbering, protected documents and refusals. The actual downloaded CLI also passed retained security, local-review, object-order, PDF 2.0, 14 PDF-inspection and 20 visual-signature image cases. Independent readers, software rendering, OCR, corpus, Office and mutation gates remain included. Hosted full-workspace tests cover the new headless dialog behavior; they do not qualify native Windows interaction. The identical application code passed local core/CLI Clippy before the final test-only fixture corrections. A previous feature revision passed 372 local core/CLI tests, desktop compilation and 100 CLI scenarios; later local test compilation exhausted workstation memory. The final complete workspace tests and Clippy passed in hosted Windows CI.

Scope and limits

  • Counts are explicit manual SuniPDF markers, one item per marker. No visual symbol detection, automatic counting or proprietary count metadata import is claimed.
  • Register limits are 1000 pages, 10000 annotations in total, 4096 per page, 4 MiB of metadata and 64 levels of replies. Unsupported or malformed SuniPDF metadata refuses the complete export. Register viewing/export requires PDF copy permission.
  • Named filters use exact text; search includes custom fields. Modification dates retain PDF syntax and sort lexically, without timezone normalization. Custom fields are text only, maximum 16; typed/formula columns and sorting by arbitrary custom keys remain future work.
  • Exports describe the current in-memory PDF snapshot. JSON preserves null values and count-to-marker references. CSV uses empty cells for unknowns, quotes all values and escapes spreadsheet formula prefixes. Existing output files and originals are never replaced.
  • Local functions stay free and open source. Projects edits remain deferred.
  • Packages remain unsigned without an independent publication key. ARM64 is cross-built only. Native hardware, physical printing, Narrator, installed updater interaction, broader hostile/customer corpus and PDF/A/PDF/UA conformance remain separate 1.0 qualification.

Projects edits remain deferred at the owner's request; repository roadmap and evidence are updated, without a fresh Projects synchronization claim.

Français

Repères de comptage persistants placés par clic sur les plans PDF locaux, regroupement, déplacement/suppression avec Annuler, changement de groupe sans changer l’identité et export des totaux reliés aux repères. Le tableau de toutes les annotations ajoute recherche, filtres nommés, tri, navigation, statuts métier, disciplines et champs texte personnalisés, avec exports CSV/JSON protégés. Les changements refusent les cibles périmées et préservent originaux et permissions. Pillow 13.0.0 remplace la dépendance vulnérable réservée aux tests. Les paquets 0.40.0 rejoignent les migrations. Les écritures communes vérifient le droit PDF d’annotation pour déplacements, suppressions, réponses et autres modifications ; l’export refuse aussi les inventaires de pages incomplets et les identités de comptage malformées.

Plan counts and markup register · Image stamps and decorations · Guide français · Full changelog

SuniPDF 0.40.0

Choose a tag to compare

@lmdanavanem lmdanavanem released this 21 Oct 20:01
Immutable release. Only release title and notes can be modified.
5e2d270

New in 0.40.0

  • Calibrated local measurements. In Rich annotations choose Length, Polyline, Perimeter, Area or Angle, enter vertices and a known two-point distance, choose metric or decimal feet/inches and precision, then Preview and Apply. Each annotation keeps its own calibration and geometry. Undo removes both; generic moves/resize/label edits are refused to prevent stale values. measure creates a new PDF copy and measurements exports supported JSON records.

  • Image stamps. Embed an aspect-fitted local image with alpha in a real Stamp annotation. Preview before Apply; source-image changes cannot change the prepared candidate. Move, comment replies and deletion use the existing annotation tools.

  • Atomic text decorations. Preflight all selected pages and margins; refuse invalid pages, margins or overflowing text without partially modifying the document. No silent shrinking or truncation.

  • Local-first AEC roadmap. 26 cards cover takeoffs, registers, libraries, overlays, revisions and advanced plan workflows. This is a bounded measurement foundation, not complete AEC parity. Local features remain free and open source.

  • Retained migrations and PDF checks. Published 0.39.0 ZIP/MSI packages join earlier baselines. No runtime dependency was added.

Validation

Main CI and release workflow passed on 5e2d2705411b2b82d7f03bf78c0217ce49f261b5: 637 tests, zero failures, 10 default ignored; 1163 EN/FR keys, 32 portable scenarios, 26 MSI baselines/130 logs. CodeQL Rust/Python/Actions passed with zero open alerts.

The independent page-decoration gate passed 80 cases, 256 CLI calls and 10 qpdf checks, covering rotations, cropped geometry, transparency, six text zones, numbering, protected documents and refusals. The actual downloaded CLI also passed retained security, local-review, object-order, PDF 2.0, 14 PDF-inspection and 20 visual-signature image cases. Independent readers, software rendering, OCR, corpus, Office and mutation gates remain included. Hosted full-workspace tests cover the new headless dialog behavior; they do not qualify native Windows interaction. The local full-workspace Clippy attempt exhausted Windows memory; local core/CLI checks and exact-source hosted Clippy/tests provide separate evidence.

Scope and limits

  • Measurement vertices and calibration are entered as displayed-page coordinates in Rich annotations. Maximum 128 vertices and 0–4 decimal places; simple polygons only. Feet/inches are decimal units.
  • Each annotation has its own calibration. Recreate it to change geometry or scale; generic move/resize/label edits are refused to prevent stale takeoffs. No page-wide recalibration, vector snapping, viewport scales, volume, symbol recognition or automatic counting is claimed.
  • Measurement JSON records use a documented SuniPDF format; Proprietary measurement compatibility and universal imported-metadata support are not claimed. The AEC backlog acceptance criteria remain open where incomplete.
  • Image stamps are limited to 64 MiB encoded, 4096 pixels per side and four million pixels. Embedded pixels are independent of the source image after Apply. No digital-signature or identity verification is implied.
  • Local tools remain free and open source. Projects edits remain deferred.
  • Windows packages remain unsigned without an independent publication key; ARM64 is cross-built only. Native hardware, printing, Narrator, installed updater interaction, broader hostile/customer corpus and PDF/A/PDF/UA conformance remain separate 1.0 qualification.

Projects edits remain deferred at the owner's request; repository roadmap and evidence are updated, without a fresh Projects synchronization claim.

Français

Annotations locales de longueur, polyligne, périmètre, surface polygonale simple et angle : calibration explicite sur deux points, unités métriques/impériales décimales, précision et données JSON. Chaque mesure conserve son échelle et sa géométrie ; aperçu, Annuler et copies CLI préservent les originaux. Tampons Stamp avec image intégrée, proportions et transparence. Filigranes texte/numérotation : vérification de toutes les pages et refus atomique des marges invalides ou débordements. Paquets 0.39.0 ajoutés aux migrations. Backlog AEC de 26 cartes donnant priorité aux fonctions locales.

Measurements · Image stamps and decorations · Guide français · Full changelog

SuniPDF 0.39.0

Choose a tag to compare

@lmdanavanem lmdanavanem released this 20 Oct 10:27
Immutable release. Only release title and notes can be modified.
24e3dcd

New in 0.39.0

  • Reusable local presets. In Watermark or Page numbers, choose a named preset to load a draft. Save a new configuration under a unique name or delete explicitly. Text/image watermarks, page numbers and six-zone headers/footers are supported.

  • Atomic preferences. Failed writes keep active preferences. Names are unique ignoring case, with 16 presets maximum and 64-character names. Older settings keep defaults; malformed preset entries are skipped without resetting other valid preferences. Settings loading is bounded to 1 MiB.

  • Explicit document scope. Choosing a preset changes only the dialog draft. Apply runs the existing guarded edit; Cancel does not apply it. Page selection is checked each time. Explicit preset Save/Delete persists independently of cancelling the document operation. Image presets reference the original file, which must remain available; missing/invalid images are refused on Apply.

  • Office cold starts. Version probes now use the same headless startup options as conversion and allow a cancellable 30-second cold-start budget. Conversion remains bounded to 120 seconds, with package/version validation, output limits and source-preservation checks retained.

  • Retained migrations and PDF checks. Published 0.38.0 ZIP/MSI packages join earlier baselines. No runtime dependency was added.

Validation

Main CI and release workflow passed on 24e3dcd0978fd74fb63d1c43aa8e668f5774fe04: 628 tests, zero failures, 10 default ignored; 1149 EN/FR keys, 31 portable scenarios, 25 MSI baselines/125 logs. CodeQL Rust/Python/Actions passed with zero open alerts.

The independent page-decoration gate passed 42 cases, 148 CLI calls and 2 qpdf checks, covering rotations, cropped geometry, transparency, six text zones, numbering, protected documents and refusals. The actual downloaded CLI also passed retained security, local-review, object-order, PDF 2.0, 14 PDF-inspection and 20 visual-signature image cases. Independent readers, software rendering, OCR, corpus, Office and mutation gates remain included. Headless tests cover the new dialog/preferences behavior; they do not qualify native Windows interaction.

Scope and limits

  • At most 16 desktop presets with 64-character unique names. Text is single-line and bounded. Page scope is not saved.
  • Image presets reference the original path; missing/invalid images are refused on Apply. Explicit preset save/delete persists independently of cancelling document application.
  • No macro, CLI preset import/export or signing-identity storage. Native Windows interaction remains unqualified.
  • Windows packages remain unsigned without an independent publication key; ARM64 is cross-built only. Explorer and MCP remain open.
  • Physical hardware, interactive installed updates/save, named third-party readers, broader hostile/customer corpus and PDF/A/PDF/UA conformance remain separate 1.0 qualification.

Projects edits remain deferred at the owner's request; repository roadmap and evidence are updated, without a fresh Projects synchronization claim.

Français

Modèles locaux nommés pour filigranes texte/image, numéros et six zones d’en-tête/pied. Charger un brouillon, enregistrer sous un nom unique ou supprimer explicitement. Écriture atomique, préférences préservées en cas d’échec et modèles invalides isolés. Portée des pages explicite et images référencées par chemin. Paquets 0.38.0 ajoutés aux migrations. Vérification de version Office sans interface avec une limite annulable de 30 secondes au démarrage à froid ; limites de conversion et gardes de sécurité conservées.

Usage and limits · Guide français · Full changelog