Skip to content
quarry Timeline
Login

Timeline

10 most recent check-ins occurring on or after 2026-08-23 23:34:44.

More ↑
2026-08-24
09:41
landing page: probe the tip pair instead of scanning for the record

zit#134: landing show has to walk the whole store to FIND the record before it can answer about it, and quarry already folded that record out of its own index. zit merge --probe names the two check-ins, so the walk disappears -- 0.005s against 0.18s on this forge's own store, and the gap widens with store size, not with the number of landings.

Probing the same tips the cache is keyed on also closes a race: the key was built from resolved tips while the probe re-resolved a branch name, so a push landing between the two cached an answer under a key it did not describe.

An unresolvable tip now skips the probe instead of keying on ':' -- every landing whose branch could not be resolved shared that one cache entry and could be served another landing's verdict. check-in: bb05986ad8 user: dmestas tags: trunk

02:57
notes: the notes-filtered timeline is a door, not a dead end

Without a tab, /timeline?y=e is where somebody browsing notes stands, and it offered no way to the page that reads them as a feed. The other two doors — the About panel and the docs page — are not where a reader who just filtered a timeline is looking. check-in: 16e8738cb6 user: dmestas tags: trunk

02:40
merge forum/landing separation with trunk check-in: f0f4f7c525 user: dmestas tags: trunk
02:39
forum: landings are not forum content

A landing is a forum thread — that is what a stock fossil clone reads — but it is a decision record with its own surface. Off the listing and out of the count, which must agree. An existing thread URL redirects to the record rather than 404ing a link that used to work. check-in: 302ca7fae6 user: dmestas tags: trunk

02:39
merge notes into trunk check-in: 1ff2886793 user: dmestas tags: trunk
02:38
notes: one row per technote, not one per edit

Fossil registers one timeline event per technote; quarry registered one per artifact. libfossil has 50 technote artifacts under 26 event ids, so its timeline showed a superseded title five rows above its own correction. The collapse is in the event trigger — insert, then evict every loser for the event id — which is order-independent, as the fold requires: a clone delivers artifacts in wire order.

Notes are no longer a tab. Fossil's built-in menu has none, and libfossil, which uses them as a milestone feed, overrode mainmenu to add TODOs and FIXMEs without adding one. They are reached from the About panel, the docs page and the timeline filter instead, and the listing is a feed with excerpts rather than a list of links.

Every edit stays readable, as a wiki page's revisions are.

Fixes an authoring bug found on the way: zitcli never passed --time, so an edit re-filed the note at the moment it was edited and it moved in the timeline. The filing time is now a field on both forms. closed check-in: ac80214995 user: dmestas tags: notes

02:34
spectrum: separate colliding voices by lightness, never by hue

Two names whose hues land 7 degrees apart painted one block. Near collisions are a birthday bound, not bad luck, so the bar resolves what is in the thread — stepping a colliding voice to the identicon's other lightness. The hue never moves: it is the identity. check-in: e1e9619d0d user: dmestas tags: trunk

00:06
pages must be revalidated, not guessed at

An HTML response carried no cache directive and no validator, which does not mean do not cache — it lets the browser choose a freshness lifetime. Safari chose one, and served a timeline rendered before a deploy while the server answered with another; the reader sees stale state with no way to tell.

no-cache rather than no-store: the copy is still kept and reused after revalidation, so the back button stays instant. Only reuse without asking is wrong, and every one of these pages is a view of moving state. check-in: ece3b20f3d user: dmestas tags: trunk

2026-08-23
23:43
docs list: a byline inside a link stays plain

An anchor inside an anchor is invalid — the parser closes the outer one at the inner, which tore every docs row in half. The docs list and the wiki home card are whole-card links, so their bylines go back to plain mark-and-name; the row already goes somewhere.

a.who is inline rather than inline-flex for the same family of reason: a flex box is atomic and cannot flow with the text around it. check-in: 01e7bce146 user: dmestas tags: trunk

23:34
state the page's own address, so enhancement works behind basic auth

A URL with credentials (http://user:pw@host/) leaves them on document.baseURI even though location is cleaned, and fetch() refuses any URL carrying credentials — so every enhancement failed at once: diff toggle, unread poll, diff sentinel. A server-stated <base> fixes all of them without script, since the server knows the URL from its own routing and never from userinfo.

The toggle also swallowed its own fallback: replaceState to a credential-free URL throws on such a page, and it ran before @get while __prevent had already cancelled the link — neither swap nor navigation. Cosmetics now cannot fail the click. check-in: c35d8c4b5b user: dmestas tags: trunk

More ↓