Skip to content

export: PDF / print document generation — re-planned for v18, superseding the #1301 NOT_PLANNED closure #8346

Description

@os-zhuang

Blocked-by: objectstack-ai/objectui#11958
Blocked-by: #22269
Blocked-by: #22270
Blocked-by: #22271
Ruled: 6051470224 · letter B′ · 2026-10-08T03:19Z

Status

Maintainer decision (2026-08-13): PDF document generation is re-planned and scheduled for v18. This supersedes the #1301 NOT_PLANNED closure (2026-06-27).

Ruling history (what this issue reverses)

Re-introducing the capability therefore has a spec-side unwind cost, not just a renderer cost: the retired enum value, its error-map prescription, and the corresponding removal-registry entry all need to be walked back deliberately (and the migration story for metadata authored against 17 decided).

Why it came back

Solution scoping for an overseas port/terminal customer (2026-08) — and previously the template gap audit (docs/PLATFORM_GAPS_FROM_TEMPLATES.md gap #9, the origin of #1301) — keeps hitting the same wall: statutory / paper deliverables are non-negotiable for billing- and government-adjacent customers. Concrete artifacts in the port scenario alone: invoices, weighbridge tickets, delivery orders, official correspondence, monthly operation reports. Browser Ctrl+P (Console chrome, no pagination) and per-project Puppeteer side-services are the only workarounds today, and every implementation reinvents the latter.

Suggested scope (starting point: the M1–M4 sketch from #1301)

  1. M1 — declarative print templates in spec (header/footer, pagination, tables, related-record blocks).
  2. M2 — render engine (headless Chromium HTML→PDF), output downloadable or committed to storage (sys_file).
  3. M3 — row/detail action integration ("Export PDF", template picker).
  4. M4 — bulk export (merged PDF / zip) — note the aggregate bulk-action dispatch (execution: 'aggregate', objectui#3139) already anticipates "merged PDF, batch print" as its example payload, so the action surface is partly in place.
  5. Spec unwind: restore a 'pdf' (or successor) export format value and retire the spec: ListView.exportOptions is typed as a bare array, but the only renderer reads exportOptions.formats #8010 retirement prescription cleanly.

Related

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions