Skip to content
quarry Check-in [4831e9bef1]
Login

Check-in [4831e9bef1]

Overview
Comment:index: fold attachments (A card)

The last data delta against fossil. quarry parsed the A card into an Attach and dropped it, so attachments were invisible: sqlite showed none of its 11, tcl none of its 3,333. Both now match fossil's own table exactly.

Fossil models attachments as a log, not a set — the newest card per filename wins and a card with no source is a DELETION — so resolving them wrong resurrects deleted files. Real corpora exercise that: 1 deleted on sqlite, 10 on tcl.

Content is not linkable yet. Serving arbitrary attached bytes needs a decided Content-Disposition and CSP posture, so the page names each file and the raw-artifact route stays its own decision.

Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 4831e9bef139922c452ffbdede08f9f7200926a05bb91a066f75a949f5ddb31c
User & Date: dmestas on 2026-08-16 18:34:05.986
Other Links: manifest | tags
Context
2026-08-16
19:27
attachments: serve content, gated by the A card

A download route completes the previous slice. The bytes come from 'zit artifact --raw'; the index gates which hashes are servable, so this cannot become read-any-artifact-by-hash, and a deleted attachment stops being reachable by URL. An older revision of a live file still is — fossil keeps attachment history.

The route is hostile to its own payload: always a download, never an inline render, octet-stream regardless of what was stored, nosniff, and a deny-all CSP. Reads are capped at 32MiB and refused rather than truncated. check-in: 0a228d956b user: dmestas tags: trunk

18:34
index: fold attachments (A card)

The last data delta against fossil. quarry parsed the A card into an Attach and dropped it, so attachments were invisible: sqlite showed none of its 11, tcl none of its 3,333. Both now match fossil's own table exactly.

Fossil models attachments as a log, not a set — the newest card per filename wins and a card with no source is a DELETION — so resolving them wrong resurrects deleted files. Real corpora exercise that: 1 deleted on sqlite, 10 on tcl.

Content is not linkable yet. Serving arbitrary attached bytes needs a decided Content-Disposition and CSP posture, so the page names each file and the raw-artifact route stays its own decision. check-in: 4831e9bef1 user: dmestas tags: trunk

18:12
write plane: author the C and N cards zit#77 opened

technote gains a Title field: the C card is what a timeline renders as the note's name, and zit refuses to attach it later, so it is write-once at save time. The edit form prefills it.

forum posts and replies now carry an N card. quarry's form invites markdown, but an omitted card is text/x-fossil-wiki by fossil's rule, so a markdown post was rendering as wiki markup — the same default wiki.save and technote.add already applied.

Tags (--tag) stay unadopted: repeatable inputs need a slice field the ops layer does not encode yet. check-in: 89c60b6ca1 user: dmestas tags: trunk

Changes