Skip to content

Releases: livezingy/DocuVision

v1.12.0 - P-029 evidence verification layer

Choose a tag to compare

@livezingy livezingy released this 05 Oct 14:18
ea9f0dc

P-029 — Evidence-grounded extraction verification layer (gates A/B/C)

Ported the RCT-validated three-gate method (verbatim quote grounding / hedge fidelity / PICO slot completeness) from sciextract handover assets into an in-process �ackend/app/services/evidence/ layer: findings_schema (FindingRecord contract, evidence-findings/1.0, PROMPT_VERSION=v3), closed_lists.json (single-source closed word lists, EN 14 hedge seed), normalize + verifier (V0-V6 ladder, pinned near_match criterion, never silently corrected), gate (fail-closed export + failure ledger + HITL routing). Optional pipeline hook evidence_step gated by EVIDENCE_ENABLED (default off). Golden-set ratchet sentinel: 45 records (35 verbatim_exact / 3 near_match / 7 unsupported, 38/38 faithful, 0 overclaim). Offline QA tools under scripts/qa/.

See CHANGELOG [1.12.0] for full details.

v1.10.0 — Closure (table alignment 3-layer rework + measurement/gate family)

Choose a tag to compare

@livezingy livezingy released this 30 Sep 05:00
a179f09

Release 1.10.0 notes

Tag: v1.10.0
Date: 2026-09-30
Train: Closure batch — table cell alignment rework + measurement / gate family
Cut: docs-only, on top of a179f09 (the code tree is byte-identical to b4e4a55)

Summary

v1.10.0 closes the P-002 / P-020…P-027 track. The only backend behaviour change is P-002 (table cell
alignment): the single "uniform grid geometric containment" path in table_backfill becomes three layers —
T1 value match (row-band + column-window anchored) → T2 geometric (unchanged) → T3 text cluster — with a
backfill sanity gate in front of the amber (value-replacement) branch. Everything else is measurement tooling,
documentation gates, promotion of R&D conclusions, and Lite-era clean-up. Cloud validation ran three gates
(G4/G5/G6) with real before/after numbers.

Added

  • P-002 — three-layer table cell alignment (value match → geometric → cluster) (2026-09-29): see Summary.
    New host module backend/app/services/table_alignment.py (zero migration: the three existing functions stay put,
    one-way import backfill → alignment). Contract additions are purely additive: cell_align_reason (per-cell
    8-value reason grid; null for non-candidate cells), quality.table_backfill.align_reason_counts (8 keys always
    present, sum == candidates), reason on mismatch_details[] and on debug records, a 6th review-table column,
    and sibling_bboxes sibling-table neighbourhood exclusion.
    Geometry constants calibrated on real layouts: EXP_X_MIN_RATIO 0.15 → 0.05; the other three unchanged.
    Golden pins: bank 12×value_match (was 6 green / 6 red), symbol 4×value_match (was 4 red), and a new
    non-uniform gold sample at 5 green / 2 honest red.
    Correctness evidence: the old funnel silently mis-filled 4 cells on mamba p12 (e.g. a numeric cell backfilled
    with a column-header label); the new sanity gate blocks all four as reviewable red.
  • P-020 — OCR quality measurement harness M1+M2 (2026-09-22): a machine-local bypass instrument under
    scripts/measure/ (deliberately not versioned). It never imports the app — it consumes the pipeline's result
    JSON — so historical results stay re-measurable on the same scale. Degraded-specimen synthesis from one forward
    affine matrix, weak GT from a born-digital text layer, line-level CER (micro/corpus/macro), LCS reading order,
    table / non-table / digit slices, cell accuracy, a pinned 15-column CSV and an HTML report. Pinned design points
    D2 (char-only edit-distance DP with a fixed equal-cost tie-break), D7 (GT quad-ised through the same forward
    affine, exact clipping) and D8 (char-level provenance declared structurally unmeasurable).
  • P-022 — retired-reference (tombstone) gate (2026-09-24): an outward-facing doc that references a path / port /
    command / module deleted by a past retirement fails, unless the same line states that it was retired — a notice
    is documentation, a stale instruction is a defect. Literal substring tokens only: no regex, no subprocess, no
    writes. Scope is an allow-list; archived material is exempt with a printed reason. Wired by import into
    audit_agent_ops.py, so the existing required agent-ops-audit check runs it — no CI configuration change.
  • P-023 — test stub scope is now both a rule and a gate (2026-09-25): born from a P-021 CI run that reddened
    Phase A in a file the branch never touched, because a module-level sys.modules["paddle"] stub is installed at
    collection time and outlived the test that needed it. scripts/test_registry_audit.py gains check 5
    (check_stub_scope, stdlib AST, fail-closed on unparsable files), wired into the required audit check, and the
    kernel testing doc states the criterion plus both failure modes.
  • P-026 — public quality case study (2026-09-26): docs/demo/QUALITY_CASE_STUDY.md tells the P-021 story end to
    end — a silent OCR coordinate defect (scale drift 1.1084–1.2257, non-rigid, rotations flattened) found by the
    local measurement harness, traced to one engine preprocessing default, fixed by one init parameter, and locked by
    contract tests. Before/after: 12/15 fixture×spec combos improved, 0 regressions, text volume recovered up to 2.1×,
    and 26/26 responses byte-identical across two independent cloud runs.
  • P-027 — table-structure GT reconciliation on WTW (P-018 P2) (2026-09-28): the local harness gains a
    structure-side scale for tables on the public WTW dataset (ICCV 2021; 14,581 photographed / scanned / web table
    images) — an XML→GT adapter, a self-implemented structure-only TEDS (APTED-style ordered-tree distance with pinned
    insert/delete/update costs), and an evaluate-table CLI scoring detection recall/IoU, row/column/merge occupancy
    agreement, and S-TEDS. Predictions are captured once into a content-addressed cache, so metric revisions cost no
    GPU time. Baseline (2026-09-28, 300-image stratified subset, seed=42): grid_exact 145/300, grid_f1 mean 0.8989,
    mean_s_teds 0.8399, table_recall 0.8300. WTW's ground truth carries no cell text, so the content dimension is
    out of scope here; scores are reported as our own protocol, not an official leaderboard.

Removed

  • Lite track references stripped from all outward-facing material (documentation catching up with the v1.8 code
    deletion, not a capability change), and dead Lite instructions removed from the living docs.
  • Lite-era files deleted (explicitly authorized, second pass): the 2.9 MB DocVision_Lite.gif, the dead
    lite-preview.e2e.js spec, the broken bootstrap_lite_models.{py,sh}, the orphan
    packages/docuvision-core/models/ tree, and two stale test-support files. Verified after deletion: core
    pytest -q still reports 13 passed, matching the v1.8 baseline.
  • .zcode/ retired by user decision (expected unused for the next six months), together with its .gitignore rule
    and PENDING P-006.
  • ZCode retired from the agent roster; review duty becomes "whoever takes the round", not a named agent.

Changed

  • Acceptance material explicitly archived: the v1.3.0/1.3.1/1.4/1.5/1.6 cloud checklists each got an
    Archived / frozen (2026-09-24) header. Bodies are deliberately untouched — frozen is not the same as rewritten.
  • P-022 promoted out of PENDING into a living doc (docs/architecture/doc-governance.md), registered as
    DOC-1 / DOC-2. The token list deliberately stays in scripts/docs_refs_audit.py as the single source.
  • P-024 — the "propose a new chat" rule gains forced trigger points instead of pure introspection; every
    commit / PR and every CHANGELOG / PENDING write carries one Session-check: line, zero counts included.
  • P-025 — R&D promotion becomes a gate (DOC-3: every PENDING entry carries one > status: line, and a
    landed entry older than 90 days warns) plus a checkpoint (one Promotion-check: line per PENDING / CHANGELOG
    write). Deliberately not machine-checked, with the reason written down.
  • E2 — the unit suite can no longer shrink silently (scripts/unit_suite_pin.py; first pin 7 files / 67 case
    declarations / 0 skips), wired into the required audit check.
  • OCR quality-measurement harness promoted into a living doc (docs/architecture/ocr-quality-harness.md); the
    two transitional local-only drafts were deleted and docs/R&D/README.md was corrected in the same pass.
  • CI core install line de-Lite'd and then dropped (it was installing nothing); stale CI workflow-comment figures
    replaced by pointers at their pins.

Fixed

  • P-021 — POST /api/v1/ocr returned polygons outside the uploaded pixel frame (fix landed 2026-09-24):
    ocr_service._init_engine built the engine without use_doc_unwarping, so PaddleOCR's doc preprocessor ran
    UVDoc unwarping (default on) and the returned polygons described a warped canvas rather than the input image
    (measured as a non-rigid frame: scale 1.11–1.23 per probe, rotations flattened). One-line fix, net-zero on lines;
    locked by backend/tests/test_ocr_service_engine_params.py (stubs paddle, no GPU / Paddle) with a negative
    control. Post-fix cloud readings: scale 0.9992–1.0001, residual 0.6–1.1 px, rotation amplitude preserved; text
    usability 12 improved / 0 regressions / 3 unchanged. Accepted side effect: book.jpg (a genuinely curved spread)
    loses 27% of its text.
  • Two kind: full test files no longer leak their paddle / cv2 stubs (P-023; found by the new check 5 on its
    first real run) — the local suite had been red for that reason alone.
  • P-019 — module-map §6 A3 row single-sourced: the row's own copies of five §3 infra numbers are gone (one had
    already drifted); §3 is now the single numeric source.

Verification

Gate Result
G4 (cloud) judge 1-6/9 PASS; judge 7 (golden-diff whitelist) closed with the approved whitelist; judges 8/9 covered by G1 unit tests + golden pins
G5 (cloud) INV-A1 / A2 / A3 zero violations; candidate-cell set identical before/after; red rate p12 58.2% → 0.8%, p29 97% → 25.4%
G6 (cloud) WTW sentinel PASS — re-scoring the same cache is byte-identical and wtw_metrics.csv sha256 matches the P-027 baseline
Local pytest 442 passed; audit / lint / docs_refs 0 error / 0 warning

Full detail — including the honest boundaries and the execution-time rulings X1–X5 — is in the CHANGELOG
[1.10.0] section and docs/architecture/provenance-review.md §4/§5.

Upgrade / migration

  • No schema, API or configuration migration.
  • Contract additions are purely additive (new reason grid + counts + reason fields + a 6th review-table column),
    so existing consumers keep working. Consumers that assert an exact review_list shape or a fixed review-table
    column count must add the new column.
  • Known discrepancy: APP_VERSION...
Read more

v1.9.0 — Frontend train (KIE meta-row fix + giant-function splits)

Choose a tag to compare

@livezingy livezingy released this 30 Sep 05:00

Release 1.9.0 notes

Tag: v1.9.0
Date: 2026-09-20
Train: Frontend batch — scope, per-item evidence and acceptance records live in docs/architecture/v1.9-roadmap.md
Version: APP_VERSION 1.8.4 → 1.9.0

Summary

v1.9.0 is a frontend-only batch. S1 fixes the KIE metadata rows shown on non-KIE tasks, S2 splits six giant
functions by module (verbatim moves, zero behaviour change), S3 closes as a conclusion-only evaluation, and S4
wires-or-retires the two registered orphans. No backend contract change. The train deliberately adds no cloud
GPU gate, because it has no GPU-dependent work (recorded as an honest note in the roadmap).

Fixed

  • P-007 — non-KIE tasks no longer render KIE metadata. The result panel's KIE confidence / KIE fields
    summary rows now key off kie_confidence_source: the backend guarantees that field is non-empty only when
    attempted && succeeded, so layout tasks and the runtime_error / skipped_doc_type failure paths no longer
    show a false 0%. The KIE warning block (failure / skip reason) still renders per kieAttempted, because there
    it carries real information.
    Coverage added in the same batch: vitest 4 states + 1 e2e case, including an e2e mock quality preset extension —
    the quality panel's visible render path previously had zero e2e coverage.

Removed

  • Floating progress card (D11) retired: the #floatingProgressCard markup in index.html and its styles.css
    rules are gone. The card had had no JS driver since v1.8.2 (its module was never imported and never loaded by the
    browser) — dead UI. The only user-visible effect is one block of markup that never displayed.
  • modules/utils/geometry.js retired: its only production importer had already been removed as a dead import in
    the v1.8.3 clean-up, and its five geometry helpers had no remaining caller. The unit tests that covered it only
    (paper coverage over dead code) were removed with it.

Internal (no product behaviour change)

  • Six giant functions split by feature (result-panels/{text,tables,figures}, overlay-render, pipeline/run) —
    verbatim moves, zero behaviour change. The pipeline domain gains a same-domain sibling task-socket.js holding
    the WebSocket / fallback-polling implementation (forced by the file line budget; see roadmap §S2 for the ruling).
  • Governance / CI entries are deliberately not merged into this section (2026-09-20 merge policy: the governance
    batch had already been staunched by v1.8.4). The CI and gate changes made during this train (vitest into CI,
    lint F6/F7 guards, the tsc evaluation conclusion) are recorded in roadmap §S0 / §S3 and the commit history.

Verification

Layer Result
vitest suite runs inside the required lint job; green on the landing tree
e2e Playwright suite green
Gate audit_agent_ops.py 0 error / 0 warning

The full per-item acceptance command list and the adversarial section are in docs/architecture/v1.9-roadmap.md.

Upgrade / migration

  • APP_VERSION is now 1.9.0 (reported by /health and as the OpenAPI version).
  • No schema, API or configuration migration.

v1.5.0 — Queue persistence (Batch + HITL SQLite)

Choose a tag to compare

@livezingy livezingy released this 05 Aug 02:29

Release 1.5.0 notes

Tag: v1.5.0
Date: 2026-08-05
Train: Queue persistence (Batch + HITL) — first minor with SQLite-backed restart recovery

Summary

v1.5.0 adds single-file SQLite persistence for Pro Batch jobs and HITL review items so queue state survives :8000 process restarts. Runtime memory remains the live cache; DB is crash-recovery only. No Redis / Alembic / multi-replica.

Added

  • backend/app/services/persistence/queue_store.py: QueueStore Protocol + SqliteQueueStore (WAL, threading.Lock, column registry for batch_jobs / hitl_reviews).
  • BatchService.attach_store / load_from_db / _persist / _persist_async: upsert on create and status flips; processing→paused (task processing→pending) on load; no auto GPU resume.
  • HitlReviewQueue.attach_store / load_from_db / async enqueue / resolve(..., edited_fields=): persist human corrections in edited_fields + resolved_at; original payload unchanged.
  • Config SQLITE_DB_PATH (default data/docuvision.sqlite, relative to backend/ cwd); .gitignore backend/data/.
  • Tests: backend/tests/test_queue_persistence.py (local-runnable, no paddle).
  • Cloud gate: MERGE_MAIN_v1.5_CLOUD_CHECKLIST.md (BATCH-PERSIST-001, HITL-PERSIST-001).

Fixed

  • resume_batch: when no pending tasks remain after restart demotion, finalize to completed/failed/cancelled instead of sticking in PROCESSING.

Changed

  • APP_VERSION default 1.5.0.
  • hitl_queue.enqueue / resolve are async (orchestrator + resolve route await them).
  • Living doc: v1.5-roadmap.md Schema + Adversarial check (edited_fields column).

Out of scope

  • tasks dict in main.py (single-task results) still in-memory.
  • Webhook subscription persistence, Redis, task-level SQL query, HITL edit history/diff.

Verification (hard gate passed 2026-08-05)

Layer Result
Local mock pytest backend/tests/test_queue_persistence.py — 7 passed
BATCH-PERSIST-001 Cloud path B: batch completed survives restart
HITL-PERSIST-001 Cloud: seed → resolve(edited_fields) → restart → sqlite intact
CI PR #12 — KIE Phase A kie-contract SUCCESS

Upgrade / migration

  • First start creates tables via CREATE TABLE IF NOT EXISTS (no Alembic).
  • Ensure process cwd is backend/ (or set DOCUVISION_SQLITE_DB_PATH to an absolute path).
  • After unexpected kill of a mid-flight batch, UI/API may show paused; call POST /api/v1/batch/{id}/resume to continue or finalize.

v1.4.0 — Table mapping + HITL + PDF Tools + backend hardening

Choose a tag to compare

@livezingy livezingy released this 29 Jul 02:28
0634837

Release 1.4.0 notes

Tag: v1.4.0
Date: 2026-06-30
Train: table mapping productization + HITL editable review + PDF Tools UI + backend hardening (webhook auth/SSRF, Phase1 form parity, dead-config cleanup)

Summary

v1.4 delivers vertical table column mapping for born-digital PDFs (table_template → mapped_table_rows), a Table mapping processing mode in Analysis Options with document-profile eligibility, an editable Reviews (HITL) tab for KIE validation failures, a PDF Tools nav tab (merge / split / metadata), and batch MappedRows Excel export. Backend hardening: webhook registration gated by DOCUVISION_WEBHOOK_ENABLED + admin token + SSRF guard; Phase1 /api/v1/documents:analyze Form parity with legacy /analyze; dead config removed (chart/ocr/financial_report/table_areas); debug directory traversal hardened; fake make_searchable_pdf replaced with 501.

Added

Area Detail
Table mapping Processing mode table_mapping + templates bank_statement, invoice_line_items; analyze with enable_layout=false, table_template; UI Mapped rows tab.
Document profile Upload pre-scan via POST /document/profile; eligibility hint (Ready for table mapping / scan blocked).
HITL Reviews UI Editable field grid, Save (PATCH /api/v1/tasks/{id}/kie-fields), Approve/Reject; hitl_policy (full / lite / off).
PDF Tools UI Top nav tab: merge (≥2 PDF), split, metadata JSON.
Batch mapped export XLSX MappedRows sheet; manifest mapped_bank_statement_3; MAPPED-BATCH-001 script.
Phase1 form parity POST /api/v1/documents:analyze now accepts full Form set (layout/table/formula/seal/KIE toggles, engine overrides, formula thresholds, table_template, enable_hitl) — matches legacy /api/v1/analyze.
Tests / CI Backend/core contract tests; Phase A workflow extended; Playwright process-table-mapping.e2e.js (UI-TM-), process-pdf-tools.e2e.js (UI-PT-); test_phase1_analyze_form.py, test_webhook_service.py extended.
Ops accelerate for KIE device_map=auto; KIE model path discovery; GET /api/v1/health for AI Studio.

Changed

  • APP_VERSION default 1.4.0.
  • Table mapping analyze path: document_type=general, no KIE — does not enqueue HITL (Reviews tab serves KIE validation failures only).
  • batch_export_service._task_kie_fields: removed dead quality branch.
  • Debug artifact download (GET /api/v1/jobs/{job_id}/debug/{filename}): Path.is_relative_to replaces startswith to block sibling-directory traversal.
  • Cloud merge gate: MERGE_MAIN_v1.4_CLOUD_CHECKLIST.md.

Security

  • Webhook registration hardened (breaking). Two-layer gating:
    • DOCUVISION_WEBHOOK_ENABLED (default false): disabled → GET/POST /api/v1/webhooks return 404, dispatch_event_async returns [].
    • DOCUVISION_WEBHOOK_ADMIN_TOKEN: enabled → X-DocuVision-Admin-Token header required; fail-closed when token empty.
  • SSRF guard: webhook URL host resolved and rejected if private/loopback (127/10/169.254/192.168/172.16/::1/fc00::/7/fe80::/10). Does not defend DNS rebinding (v1.5+).

Removed

  • enable_ocr per-block OCR dead config (standalone /api/v1/ocr unchanged).
  • chart_step / enable_chart / ChartService (no callers).
  • financial_report document type (breaking: unsupported_document_type).
  • table_areas ROI across Pro/Lite/core (breaking: Lite /extract/auto no longer accepts table_areas).
  • POST /api/v1/pdf-tools/searchable → 501 (fake make_searchable_pdf deleted; searchable PDF deferred to v1.5+).

Not in v1.4.0 (explicit deferrals)

Item Target
table_areas ROI UI v1.5+
Custom column alias API post-v1.4
Webhook subscription UI v1.5+
Webhook DNS-rebinding defense v1.5+
PDF searchable / form-fill productization v1.5+ (v1.5-roadmap.md)
Batch / HITL / Webhook persistence v1.5+

Upgrade / migration

  • Integrators: optional analyze form field table_template=bank_statement|invoice_line_items with enable_layout=0, enable_table=1, enable_kie=0 for ETL-style mapped rows.
  • Webhook users (breaking): set DOCUVISION_WEBHOOK_ENABLED=true + DOCUVISION_WEBHOOK_ADMIN_TOKEN=<secret> to register; pass X-DocuVision-Admin-Token header.
  • Batch: use manifest mapped_bank_statement_3 or set options.table_template in batch options JSON.
  • HITL: queue remains in-memory; restart clears pending reviews.
  • Cloud validation: run v1.4 checklist (extends v1.3.1 gate with MAP-TEMPLATE-001 + MAPPED-BATCH-001 + webhook/Phase1/traversal hardening).

Verification minimum

Layer Command
Phase A v1.4 Pro + core file set in CLOUD_VALIDATION.md §阶段 A (incl. test_phase1_analyze_form.py, test_webhook_service.py)
Pro UI (no GPU) cd frontend && npm run test:unit && npm run test:e2e (includes UI-TM-* / UI-PT-*)
Lite cd apps/lite/backend && pytest tests/ -q; npm run test:e2e:lite
Table mapping (GPU/CPU) MAP-TEMPLATE-001 in MERGE_MAIN_v1.4_CLOUD_CHECKLIST.md
Batch mapped pwsh -File test_data/scripts/run_batch_mapped_acceptance.ps1
Webhook hardening pytest tests/test_webhook_service.py -q; manual 404/401/400/200 chain (see checklist §9)

Full gate: MERGE_MAIN_v1.4_CLOUD_CHECKLIST.md.

Related (unchanged from v1.3.x)

  • Pro pdf_digital → docuvision-core table path (CORE-PDF-001).
  • Lite server-side preview (LITE-PREVIEW-001).
  • KIE field validation (KIE-VAL-001).

See KNOWN_LIMITATIONS.md for MVP bounds (English headers, memory queues, scan PDF blocked for table mapping).

maintenance on v1.3.0 P0 baseline — scope trim + Lite preview hardening

Choose a tag to compare

@livezingy livezingy released this 24 Jun 01:44

v1.3.1 removes unused Lite/Pro surface area introduced or planned in v1.3.0, replaces Lite client-side PDF rendering with a server-side preview API (aligned with Pro page-image flow), and fixes Pro Playwright E2E mocks after UI/API deletions.

v1.2.0 — Multipage KIE + Batch UI

Choose a tag to compare

@livezingy livezingy released this 12 Jun 02:41

Release 1.2.0 — Multipage KIE + Batch Processing UI

Date: 2026-06-12
Tag: v1.2.0
Baseline: v1.1.0 (Pro KIE query fields on main)

Highlights

  • kie_pages (PDF): 1, ranges, or all (max 5 pages). Per-page VL + document-level merge; kie_fields_by_page and quality.kie_pages_*.
  • Batch API: full orchestrator pipeline; GET /batch/{id}/export.csv (kie / summary / failures) and export.json.
  • Pro UI: Batch Processing tab — multi-file upload, progress, pause/resume/retry, CSV/JSON download. Options snapshot from Process tab Analysis Options.
  • Queue fixes: run selected queue item first; multipage preview page count; layout + kie_pages=all on raster no longer 400.

Cloud acceptance

Merge gate (2026-06-12): Phase A 37/37, MP-002, H-Batch 6/6 kie_production_hit, layout batch, pause/resume, UI smoke — see MERGE_MAIN_v1.2_CLOUD_CHECKLIST.md and KIE_TEST_RUN_TRACKER.md.

Not in this release

  • Batch Excel export; Lite batch API.
  • Generic field validation engine; document_type=custom; field bbox overlay.
  • Playwright UI E2E (planned in test_data/AutoTest/PRO_UI_E2E_PLAN.md).

Upgrade

  • Pull main at tag v1.2.0 or merge feature/batch-ui.
  • APP_VERSION / /health api_version → 1.2.0; restart python run.py after deploy.
  • Batch options must include document_type when KIE is enabled (not auto).
  • Re-run CLOUD_VALIDATION.md Phase A + MP + H-Batch if you customize KIE or batch locally.

Next (post-1.2)

Field validation (feature/kie-field-validation), Playwright E2E P0, optional MP 3p standalone — see RELEASE_1.1_CHECKLIST.md §6.

Pro KIE query fields

Choose a tag to compare

@livezingy livezingy released this 04 Jun 07:44

Release 1.1.0 — Pro KIE query fields

Date: 2026-06-04
Tag: v1.1.0
Baseline: v1.0.1 (Pro + Lite on main)

Highlights

  • kie_query_fields: extend built-in KIE YAML schema at runtime (Azure Query Fields style, max 20 fields, extend-only).
  • API: POST /api/v1/analyze, POST /api/v1/documents:analyze, batch options.
  • Pro UI: Analysis Options → Advanced → Additional KIE fields.
  • Quality: kie_query_fields_requested / kie_query_fields_filled (query fill rate does not affect KIE-ACCEPT-002).

Cloud acceptance

Not in this release

  • Full document_type=custom, template persistence, field bbox overlay.
  • Batch Processing product UI, multi-page PDF KIE, generic validation engine.

Upgrade

  • Pull main at tag v1.1.0 or merge PR from feature/pro-v1.1-custom-fields.
  • No breaking change to fixed 5-type KIE without kie_query_fields.
  • Re-run CLOUD_VALIDATION.md Phase A–F if you customize KIE prompts locally.

Next (post-1.1)

See RELEASE_1.1_CHECKLIST.md §6 — Batch UI, field validation, multi-page KIE.

DocuVision 1.0.1

Choose a tag to compare

@livezingy livezingy released this 03 Jun 06:57

Maintenance release: DocuVision Lite on main, dead-code cleanup, CI/docs alignment. Pro KIE scope unchanged from 1.0.

v1.0.0 — Layout + Qwen KIE baseline

Choose a tag to compare

@livezingy livezingy released this 21 May 10:06

All notable changes to this project are documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.