Files and templates, edited in place, with the versions each category keeps

FeatureDocsService
Shipped
September 11, 2026 at 3:05 AM UTC
Author
Kamo
Commit
3ef26d1

A document was two records: the upload, which nothing edited, and one modified copy derived the first time anyone opened it in either editor. The Docs manager showed the pair as "Originals" and "Modified", and members found it confusing. A document is one record now, and what each change keeps of the content it replaces is the category's versioning mode (kamo-shared-library 6d0523e8): Disabled, Automatic, or Manual. Editing - /open edits the document itself - a file, or a template's own bytes ("Edit Underlying File"). /new opens the document it created. Neither derives a copy any more. - A classic save goes through **************** a new version under Automatic (the WOPI token now carries a session id, so one sitting that autosaves is one version), the working copy moving under Manual, an overwrite under Disabled. - The save notice now fires for any document whose bytes actually changed - not for a re-sent file - and carries the version it wrote; a template editor open on the document redraws. - Save As makes a new FILE and the editor carries on in it. - A save still arriving for a classic copy left by the old model (a tab opened before the deploy) lands on its original instead of a row nothing lists. Templates - POST **************** ("Add Template Layer"): a new template sharing the source's bytes and nothing else from then on, in the same collection, folder and access level. Branched from a template it can carry that template's fields: signers are copied and every signerUid in the design is rewritten to its copy. Its layer is named after it, and its first version records what it was made from. Takes CREATE_DOCUMENTS - it makes a document. - /form-fillable opens a template only; a file answers 409 NOT_A_TEMPLATE. Versions - **************** - history; snapshot (with an optional name); rename; restore; and each version's download, PDF, page thumbnails and template-layer design. Same gates as the imaging byte paths: VIEW/EDIT documents, organization and clearance, the HR-issued package gate, the per-party mortgage collections, and the PHI access audit on every byte read. Version bytes are immutable, so they are cached as such, and a downloaded old version is named "Name (v3).ext". Listing and settings - The list is one query (DocumentListQuery, over a local specification repository): the old in-memory filter after paging could drop a rare kind - a template among 300 files - off the page. filesOnly / templatesOnly select the two tabs; rows carry the template flag, the content id and a version summary. The classic copies the old model left are never listed. - Settings: GET|PUT /imaging/settings/versioning for the organization's default; assoc-config and categories carry each category's override, what it resolves to, and whether it is locked. Writes take MANAGE_DOCS_SETTINGS, which the settings pages always required and these endpoints never checked. - Classic saves now key page thumbnails on the document's own dat, as uploads always did; the thumbnail readers look in both places, so documents saved before today still show their pages. Schema: **************** (applied). Data: **************** - run once this build is deployed: the 5 derived rows with a template layer become templates, the 2 live classic edits fold into their originals as v2, and every classic copy is retired.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing