Filed by the domain:spec seat 3 of objectstack-ai/objectstack (seat post objectstack-ai/objectstack#18883, session_01RPo7FUd6bSnAfkWMAKi848). This is card ② of the split that objectstack-ai/objectstack#8346's ruling of record 6051470224 orders (letter B′, maintainer 「8346 B′」). ⛔ Not a claim.
The ruling (verbatim, the clauses this card carries)
The template is a page. … The page gains an optional print declaration: paper size and orientation, margins, header and footer blocks, page numbering, page-break hints, mapped to print CSS (@page, repeated table heads, break-inside). A printable block subset is defined and linted …
Preview is the page itself in the console, plus the browser's print preview; no new visual designer …
M1, zero server: the print declaration, the printable subset and its lint, and a "print" action on the record page that opens the browser's print preview of the bound page.
② objectui, the print CSS mapping, the printable blocks, the record page's print action (domain:ui)
-
PageSchema.print (PagePrintSchema) is closed, with no defaults:
paperSize (A4 | A5 | Letter | Legal; A4 when omitted) and orientation (portrait | landscape; portrait when omitted), mapped to @page { size };
margins { top, right, bottom, left } in millimetres, mapped to @page margin;
repeatHeader / repeatFooter, under which the page's own header / footer region repeats on every sheet;
pageNumbers, mapped to a @page margin box with counter(page) / counter(pages);
repeatTableHeaders (on when omitted), mapped to thead { display: table-header-group };
avoidBreakInside, mapped to break-inside: avoid on every block.
Every key's describe names this card as its consumer. The liveness ledger carries them as planned, naming this card, and they move to live when this card's renderer reads them.
-
print is accepted only on record, home and app pages with regions. The parse refuses it on slotted / html / jsx / react pages and on list / utility pages.
-
PRINTABLE_PAGE_COMPONENT_TYPES (13) and PRINT_REFUSED_PAGE_COMPONENT_TYPES (39, each with its reason) are exported from @objectstack/spec/ui. The lint rule print-page-block-unprintable refuses every other block inside a print page at os validate / os build and the page save door.
What this card does (objectui)
- Print CSS from
page.print: @page size, orientation, margins and page-number boxes; repeated header and footer regions; repeated table heads; break-inside. The page renders on screen exactly as before; print only adds the print stylesheet.
- The 13 printable blocks print whole. Read the subset from the spec's exported set; do not keep a second list.
- Known gap (from the contract review of ①):
record:line_items prints every line only up to its renderer cap, 500 unless limit is set. Under print, lift the cap, or make the truncation visible on paper. A silent partial table is the failure the subset exists to prevent.
- The record page's "print" action opens the browser's print preview of the bound print page (M1, zero server).
- objectui's leftover sentence "PDF export … declined as NOT PLANNED" is rewritten the way ① rewrote
LIST_VIEW_EXPORT_PDF_RETIRED. It appears in types/src/objectql.ts, ListView.tsx, ReportViewer.tsx and the app-shell styles.css (measured by ①'s dev).
Unlock
objectui consumes @objectstack/spec as a published package, so this card is workable once an installable @objectstack/spec exports PagePrintSchema and PRINTABLE_PAGE_COMPONENT_TYPES. That means the v18 pre line (next dist-tag), or a stable release. The card is filed pm:on-hold for that reason.
Restart-when: an installable @objectstack/spec (npm, any dist-tag) exports PagePrintSchema and PRINTABLE_PAGE_COMPONENT_TYPES
Reader who acts: the objectui domain:ui execution seat, once restarted. domain:ui is named by the ruling, and priority:p2 / target:v18 are inherited from the parent.
Filed by the
domain:specseat 3 ofobjectstack-ai/objectstack(seat post objectstack-ai/objectstack#18883,session_01RPo7FUd6bSnAfkWMAKi848). This is card ② of the split that objectstack-ai/objectstack#8346's ruling of record6051470224orders (letter B′, maintainer 「8346 B′」). ⛔ Not a claim.The ruling (verbatim, the clauses this card carries)
What card ① fixed (objectstack-ai/objectstack#22158, PR objectstack-ai/objectstack#22193)
PageSchema.print(PagePrintSchema) is closed, with no defaults:paperSize(A4 | A5 | Letter | Legal; A4 when omitted) andorientation(portrait | landscape; portrait when omitted), mapped to@page { size };margins { top, right, bottom, left }in millimetres, mapped to@pagemargin;repeatHeader/repeatFooter, under which the page's ownheader/footerregion repeats on every sheet;pageNumbers, mapped to a@pagemargin box withcounter(page)/counter(pages);repeatTableHeaders(on when omitted), mapped tothead { display: table-header-group };avoidBreakInside, mapped tobreak-inside: avoidon every block.Every key's describe names this card as its consumer. The liveness ledger carries them as
planned, naming this card, and they move to live when this card's renderer reads them.printis accepted only onrecord,homeandapppages with regions. The parse refuses it on slotted / html / jsx / react pages and onlist/utilitypages.PRINTABLE_PAGE_COMPONENT_TYPES(13) andPRINT_REFUSED_PAGE_COMPONENT_TYPES(39, each with its reason) are exported from@objectstack/spec/ui. The lint ruleprint-page-block-unprintablerefuses every other block inside a print page atos validate/os buildand the page save door.What this card does (objectui)
page.print:@pagesize, orientation, margins and page-number boxes; repeated header and footer regions; repeated table heads;break-inside. The page renders on screen exactly as before;printonly adds the print stylesheet.record:line_itemsprints every line only up to its renderer cap, 500 unlesslimitis set. Underprint, lift the cap, or make the truncation visible on paper. A silent partial table is the failure the subset exists to prevent.LIST_VIEW_EXPORT_PDF_RETIRED. It appears intypes/src/objectql.ts,ListView.tsx,ReportViewer.tsxand the app-shellstyles.css(measured by ①'s dev).Unlock
objectui consumes
@objectstack/specas a published package, so this card is workable once an installable@objectstack/specexportsPagePrintSchemaandPRINTABLE_PAGE_COMPONENT_TYPES. That means the v18 pre line (nextdist-tag), or a stable release. The card is filedpm:on-holdfor that reason.Restart-when: an installable
@objectstack/spec(npm, any dist-tag) exportsPagePrintSchemaandPRINTABLE_PAGE_COMPONENT_TYPESReader who acts: the objectui
domain:uiexecution seat, once restarted.domain:uiis named by the ruling, andpriority:p2/target:v18are inherited from the parent.