Skip to content
quarry Timeline
Login

Timeline

50 ancestors of 484deeeee50fb157

2026-08-22
11:01
hue down another notch: 1px edge (color only), spectrum 14% sat / 0.28 alpha check-in: 484deeeee5 user: dmestas tags: trunk
02:36
spectrum quieter still: 22% sat, 0.38 alpha check-in: 4ff52bf154 user: dmestas tags: trunk
02:34
hue returns muted: whisper left edge, slim spectrum only for multi-voice threads check-in: 90d6b989bf user: dmestas tags: trunk
02:32
pull the hue decoration back: no post edges, no spectrum, no hued names — identicons carry identity alone check-in: 8837ad6aaf user: dmestas tags: trunk
02:28
author hue flows through threads: identicon+hue edge per post, hued names, spectrum ribbon, opener pill, hued @mentions

One fnv hue is one person on every surface; mentions resolve only via the contributor fold — never a dead link. check-in: 86b8a6baee user: dmestas tags: trunk

02:20
test pins follow the new board move model and forum list score markup check-in: 941004c442 user: dmestas tags: trunk
02:15
dormant forum rows fade whole-row, not link color check-in: e33969eb13 user: dmestas tags: trunk
02:07
forum list anatomy: opener excerpt, author mark, participant stack, activity sparkline, dormant muting; og:description on threads check-in: 6d66e8fbff user: dmestas tags: trunk
01:53
topic search also reads in-tree .quarry/repo.json topics (memoized cat, search-only) check-in: 04b7878a1c user: dmestas tags: trunk
01:52
topic pills link to /?q=<topic>; fleet filter matches topics and descriptions; breathing room over the pills check-in: 5e4ef95e6e user: dmestas tags: trunk
01:48
About aside stays on branch roots; doc tabs remain default-ref only

repo.about renders default-branch docs — tabs on a branch would show the wrong README as this branch's. Aside sheds doc rows there instead. check-in: 088d49f204 user: dmestas tags: trunk

01:45
scope the menu anchor to the account button — 423 identicons were claiming it

anchor-name on the .avatar class was a global in disguise; the popover anchored to the LAST avatar on /people and opened off-screen. Pinned: exactly one --avatar declaration, on the button selector. check-in: 0b17572152 user: dmestas tags: trunk

01:41
identicons v2: two-tone cells, rounded, hue plate check-in: a67e9b3ba0 user: dmestas tags: trunk
01:38
identicons everywhere (memoized), one avatar size; rails name their branch on hover check-in: 61728cefbd user: dmestas tags: trunk
01:33
identicon avatars (5x5 mirrored grid from the name hash), avatar 36px; bar buttons follow GitHub's control grammar check-in: a8040a0e0a user: dmestas tags: trunk
01:27
bar buttons: rounded squares with full-size icons; unread badge shows the count check-in: 47aa4790e4 user: dmestas tags: trunk
01:12
bar-acts cluster: create/inbox/account share one grid cell check-in: 3c7799732a user: dmestas tags: trunk
01:11
top bar: / focuses search, + create menu (repo-aware), inbox icon with lazy unread dot check-in: 0fd2f8aa8a user: dmestas tags: trunk
00:58
revert Public Sans: back to system-ui check-in: 71e915ee8c user: dmestas tags: trunk
00:56
try Public Sans as the UI face (vendored woff2, latin subsets) check-in: 07eda8c969 user: dmestas tags: trunk
00:45
board tests follow the lane change; gofmt check-in: ff8f1c3a7d user: dmestas tags: trunk
00:44
Board: lanes only when asked, sticky column headers, no lane-field badge inside a lane check-in: 6ee9d1a5e6 user: dmestas tags: trunk
00:43
Board: one move model — drag with signifiers, a Move menu per card, and a moved banner with undo

Removes the pick-up mode (it never rendered: data-attr-hidden is not a Datastar attribute), the per-column drop buttons and the per-card select+move form. Cards show a grip and a grab cursor; the column under a drag lights up; a native Move popover lists the other columns as plain forms, so it works by keyboard, touch and without script. /move answers Datastar with the fragment and a plain post with a redirect; both show 'Moved X from A to B · undo'. check-in: 110001e141 user: dmestas tags: trunk

00:36
dashboard: explicit grants are ownership and outrank the admin flag; repo.add grants its creator

Fleet view stays as the fallback for an admin with nothing granted. check-in: 8ce14aaaf3 user: dmestas tags: trunk

00:35
Board leaves the reading column; columns have one width; fold/unfold from every header

Full-bleed board with 22rem columns, so a card is the same width wherever it sits. Folding is the reader's choice carried in ?fold=A,B; a chevron on each header folds or opens it, and a folded column shows its real count. Before any choice, empty columns fold. check-in: d60c602cd2 user: dmestas tags: trunk

00:32
dashboard: site admins see the fleet — GrantsFor carries the '' marker

me.feed keyed on grants[''] but nothing ever wrote it; an admin with no explicit rows saw an empty dashboard. check-in: b7d4a089fb user: dmestas tags: trunk

2026-08-21
23:12
live rendered authoring: split pane renders as you type; poll builder edits the source

Production renderer feeds the pane (plain fragment endpoint); a fenced poll grows structured inputs that rewrite the block. Raw markdown stays the source of truth; no-JS is still a plain textarea. check-in: 1b34fa7b8e user: dmestas tags: trunk

22:56
board: folded strips name the column in plain text, not a rotated pill check-in: a2d6d20dc3 user: dmestas tags: trunk
21:23
gofmt check-in: 236ae2e1d1 user: dmestas tags: trunk
21:23
Ticket board fits the page: columns wrap, empty ones fold to strips, stacked on phones

Seven status columns no longer scroll the page sideways. Empty columns fold to a GitHub-style strip (still a drop target; its name links to ?col=Status to open it). Open columns share the row with a 16rem floor and wrap past it; on a phone they stack and the strips become chips. check-in: b01e1d54d5 user: dmestas tags: trunk

20:40
markdown composer: Write/Preview tabs, slash commands, described check-in links; forum hashes resolve

Preview runs the production render pipeline (markup.preview op). Check-in refs carry their comment as hover title + visible excerpt. composer.js loads only on composer pages — the base stays one-script. check-in: 420206e59f user: dmestas tags: trunk

20:19
forum polish: post cards, vote pill, mod kebab, composer card, primary buttons; timeline badge names forum/technote

Flat timeline events fell into a wiki-else-ticket badge; full kind map now. check-in: 3ace765565 user: dmestas tags: trunk

20:12
vote arrows patch in place via datastar; moderation trust bar is RepoAdmin

Plain form path keeps its redirect. Write-role gate made trusting Write unreachable — a repo that opts into moderation reviews non-admin posts. check-in: bb65c455a3 user: dmestas tags: trunk

20:00
merge trunk fork: concurrent heads 0e669d2a + 63958353 check-in: 554e966570 user: dmestas tags: trunk
19:58
diff: window chain test; ignore dev.local.mk check-in: 63958353c1 user: dmestas tags: trunk
19:54
merge quarry-forum: votes, hot, anchors, announcements, polls, moderation + AI hooks, subscriptions check-in: 0e669d2ad5 user: dmestas tags: trunk
19:51
Merge mirror-posture: repository posture, read-only mirrors, fleet page as rows check-in: e61bc36d43 user: dmestas tags: trunk
19:49
forum subscriptions: auto-sub on authoring, reply/mention fanout, unsub sticks

Fanout rides the write path only (a reindex can never re-notify); delivery/dedup stays in the notify companion via TxnID. closed check-in: 893885b3d5 user: dmestas tags: quarry-forum

19:45
forum moderation + AI hooks: pre-commit staging, public append-only log

Approval births the artifact (nothing to un-sync); synced-in posts get hide-with-reason. Hook (--forum-hook) is advisory, async, fails open to hold-for-human; automated actions logged publicly as 'hook'. check-in: 1b5f71c338 user: dmestas tags: quarry-forum

19:42
Fleet row menu is a native anchored popover: light-dismiss, Esc, and the account menu's item sizing

Menu buttons inherit the page font, which also fixes the theme button in the account menu. closed check-in: 395f704c28 user: dmestas tags: mirror-posture

19:34
forum polls: fenced-block definition, OLTP ballots, no-script widget

The block syncs as markdown (fossil peers render it readably); option range and close date re-read from the body at cast time, never the form. check-in: e674e718a8 user: dmestas tags: quarry-forum

19:29
forum announcements: maintainer-only category, pinned strip, home surfacing

Category is OLTP policy on an untouched artifact (fossil peers see a plain thread); forum.announce enforces who-may-post via op auth level. check-in: 8aff98bb76 user: dmestas tags: quarry-forum

19:29
gofmt check-in: 25ea8c86a4 user: dmestas tags: mirror-posture
19:29
Fleet page as list rows: one row per store, problems first, healthy folded, stacks on a phone

Ingest health and mirror posture join on one row; zero counts vanish and non-zero ones become chips. With any problem the healthy rows fold behind a disclosure. Summary strip with bulk actions; the page never scrolls sideways. 3,237px tall with horizontal scroll on a phone → one screen. check-in: 67e8dbee5f user: dmestas tags: mirror-posture

19:23
forum anchors: threads mentioning a check-in backlink from its page

Extracted at fold (hex refs with a digit), resolved only at render — the page's own hash is the honesty gate. schemaVersion 3→4 (rebuild). check-in: debc1f4c9f user: dmestas tags: quarry-forum

19:19
forum hot tab: published HN-style decay ranking over votes

Bounded to threads active in 30 days; formula printed on the page. Hand-computed order pinned in TestSortForumHot. check-in: cf172ec6c6 user: dmestas tags: quarry-forum

19:17
forum votes: OLTP vote store, forum.vote op, arrows + derived scores

Score is always derived from vote rows (no counter); votes are forge-local 0001 §8 state, never synced. Umbrella plan: ticket aa351dec. check-in: 2fd88bc87a user: dmestas tags: quarry-forum

19:10
Posture follow-ups: gate write pages on mirrors, detach needs an acknowledgement, one-click re-attach, fleet table fits, fleet search filters

Edit/new pages for tickets, wiki, forum, technotes return 403 on a read-only mirror and their links point upstream. Detach goes through a confirmation with a fork acknowledgement; re-attach is one click with the drift warning. The header chip drops its words at phone width; explore shows mirror/fork badges. /fleet: host-only upstream, 1h/24h intervals, relative dates, kebab menu for the rare actions, and the header box filters both tables. /new loses its duplicate heading. check-in: ee78c5201b user: dmestas tags: mirror-posture

18:34
mirror.set/writes report state; re-attaching returns writes to refused; fleet action buttons stay on one line check-in: 074cb8072f user: dmestas tags: mirror-posture
18:28
Surface repository posture: header badge, failing notice, explore glyph and kind filter, fleet admin, creation choice

Every repo page carries the posture from repo.get. Mirrors show 'mirror of <host>' linked upstream, a failing upstream is said in words under the bar, and write affordances on a read-only mirror point at the upstream's pages. Explore marks mirrors and filters by kind. /fleet shows state and writes per row with pull / edit / allow writes / detach; the add form also edits. /new offers Start empty, Import and own, or Mirror. check-in: 9689ddd05e user: dmestas tags: mirror-posture

18:16
Repository posture: mirrors carried on the repo model, refuse local writes by default

repo.get returns mirror{tracking,url,state,acceptWrites,...} and detachedFrom. mirror.detach replaces mirror.delete and keeps the upstream as provenance; mirror.writes opts a mirror into local writes. Pushes, tickets, wiki, forum and technotes on a tracking mirror are refused (403) naming the upstream. A URL change clears failures recorded against the old peer. check-in: d980bf4d71 user: dmestas tags: mirror-posture