50 descendants and 50 ancestors of 49e0b01516e4ff54
|
2026-08-20
| ||
| 00:11 | timeline filters: chip, wrap-as-units, select is the submit check-in: 3c041bf322 user: dmestas tags: trunk | |
|
2026-08-19
| ||
| 23:58 | check-in page: fossil's info shape — message first, diff inline check-in: a0b988a38f user: dmestas tags: trunk | |
| 22:40 | side-by-side diffs; theme-token tints check-in: 888a58e2d6 user: dmestas tags: trunk | |
| 22:35 | hunk counts disambiguate header lookalikes; fuzz the parser check-in: fe9e2824e0 user: dmestas tags: trunk | |
| 22:13 | lexer errors render plain; hunk bands drop the @@ plumbing check-in: a81a88dfde user: dmestas tags: trunk | |
| 22:07 | regenerate api docs check-in: 89bbcfa771 user: dmestas tags: trunk | |
| 22:07 | hunk starts survive JSON: split the shared tag check-in: 2ed7c4d9fb user: dmestas tags: trunk | |
| 21:56 | structured diffs: model in the op, marks, gutters, syntax check-in: cc6091b1f7 user: dmestas tags: trunk | |
| 19:33 | errorlog file, prefillable tickets, file-ticket buttons check-in: e374d16182 user: dmestas tags: trunk | |
| 18:52 | error journal: ring, panic recovery, fleet panel, first-sighting notify check-in: 1412e9e4e7 user: dmestas tags: trunk | |
| 18:16 | signed-in landing: your repos, activity, your work check-in: d70d892f6e user: dmestas tags: trunk | |
| 18:05 | square the … button check-in: 8cecf1383d user: dmestas tags: trunk | |
| 18:03 | the … button can never be clipped: nav scrolls, button sits outside check-in: 09e73646c1 user: dmestas tags: trunk | |
| 17:57 | ink underline owns the transition; active drawer tab surfaces; bar can never overflow check-in: ac79723910 user: dmestas tags: trunk | |
| 17:52 | section pages drop the h1 the active tab already says check-in: 4273ca0017 user: dmestas tags: trunk | |
| 17:51 | underline tabs with view transitions; graduated nav collapse; morphing doc tabs check-in: 99aa81cb79 user: dmestas tags: trunk | |
| 17:22 | branch and tag pages; underline tabs; plural grammar check-in: f79a82987c user: dmestas tags: trunk | |
| 17:11 | repo landing: About panel and document tabs check-in: 8ae30f598b user: dmestas tags: trunk | |
| 17:09 | repo config: homepage and topics check-in: 7b40eea6c8 user: dmestas tags: trunk | |
| 17:02 | landing live at load: revision signal + one-shot repaint check-in: 7c2a7e2f18 user: dmestas tags: trunk | |
| 16:50 | highlight indented code blocks; stop iOS inflating pre text check-in: 02590f4b47 user: dmestas tags: trunk | |
| 15:55 | a fleet must name its --data; no arbitrary default check-in: 36f4db57ac user: dmestas tags: trunk | |
| 15:48 | 404 keeps repo context; footer clears the iPhone home indicator check-in: c03c61c2f7 user: dmestas tags: trunk | |
| 15:42 | a blob parent is inherent history, not loss check-in: 8a96f742c6 user: dmestas tags: trunk | |
| 13:32 | deleted wiki pages leave the list; tombstone keeps history check-in: 1d30199cf8 user: dmestas tags: trunk | |
| 13:25 | fix stray brace that dropped header CSS; retire the legend check-in: 16170b3922 user: dmestas tags: trunk | |
| 13:21 | track today's regression tests check-in: ed1865610a user: dmestas tags: trunk | |
| 13:17 | tooltips: absolute-only; column tips open downward check-in: d0e4fd35af user: dmestas tags: trunk | |
| 13:09 | tooltips anchor implicitly, one per trigger check-in: 5f36c67422 user: dmestas tags: trunk | |
| 12:55 | tooltips: hover-only custom tip; avatar uses the native one check-in: 16091c7717 user: dmestas tags: trunk | |
| 12:50 | verify the search index at open; rebuild on mismatch check-in: 180e7a964d user: dmestas tags: trunk | |
| 12:44 | Reset rebuilds the shape; repo.reindex repairs in process check-in: a72b83a394 user: dmestas tags: trunk | |
| 12:35 | private tickets leave no public trace; writes can still reach them check-in: f6a6523eea user: dmestas tags: trunk | |
| 12:29 | ingest: hold the cursor until fold lands; stall with backoff check-in: 02f05e4245 user: dmestas tags: trunk | |
| 12:12 | ticket.config reads at the tip hash, so cat memoizes check-in: b2169a82f5 user: dmestas tags: trunk | |
| 12:09 | configure ticket vocabulary check-in: 3d66de729c user: dmestas tags: trunk | |
| 12:03 | .quarry/tickets.json: repo-owned ticket vocabulary check-in: 94b35f0a27 user: dmestas tags: trunk | |
| 11:20 | priority view: age tiebreak, never recency check-in: e7f1adc964 user: dmestas tags: trunk | |
| 11:13 | tickets default to priority order; fix broken edit form check-in: 2956c743ac user: dmestas tags: trunk | |
| 11:07 | ticket list: priority sort and triage badges check-in: 23d74b9af3 user: dmestas tags: trunk | |
| 10:59 | fleet: mirror struct missed the Gaps field check-in: f820bcc6fc user: dmestas tags: trunk | |
| 10:39 | kanban: swimlanes, vocabulary columns, triage fields check-in: ca35336d81 user: dmestas tags: trunk | |
| 10:12 | ticket replies go to icomment, not the description check-in: f05601436b user: dmestas tags: trunk | |
| 09:10 | add social card metadata pointing at the mark check-in: 3185c0595d user: dmestas tags: trunk | |
| 03:17 | adopt the Q mark as logo and favicon; dot branch tips check-in: c62e017c84 user: dmestas tags: trunk | |
| 03:17 | track source that was never added to the store check-in: 08b23c4de9 user: dmestas tags: trunk | |
| 03:04 | marks: colour and depth treatments on L2b check-in: 638bc9adaa user: dmestas tags: trunk | |
| 02:59 | marks: shorter tails for the L2 line check-in: cc6f09478a user: dmestas tags: trunk | |
| 02:51 | marks: add the L variants check-in: 8e21609380 user: dmestas tags: trunk | |
| 02:35 | add a wordmark picker at /marks check-in: 6faa3dc93b user: dmestas tags: trunk | |
| 02:27 | header mark: flat silhouette, themed check-in: 49e0b01516 user: dmestas tags: trunk | |
| 02:21 | a repository's name opens its files, not its timeline check-in: 5475ad479c user: dmestas tags: trunk | |
| 02:18 | header: the mark replaces the wordmark check-in: a9c29a581d user: dmestas tags: trunk | |
| 02:05 | ticket board: server-grouped columns, form-submitted moves check-in: 90db1cc731 user: dmestas tags: trunk | |
| 01:14 | invalidate leaf memo only on real ingest; index the tag lookup check-in: cd014ee9b5 user: dmestas tags: trunk | |
| 00:36 | leaf status from zit, not re-derived; index schema version check-in: a3814a4eb3 user: dmestas tags: trunk | |
| 00:06 | detect lost artifacts, repair once, then report check-in: bd55e3a4cb user: dmestas tags: trunk | |
|
2026-08-18
| ||
| 23:56 | detect and repair index gaps left by the bounded event window check-in: ff869515bd user: dmestas tags: trunk | |
| 23:05 | fleet fragment test follows the controls out of the morph check-in: b5d1be0dc2 user: dmestas tags: trunk | |
| 23:04 | live filter: debounced form-serialized stream, controls outside the morph check-in: dcbfa94c8f user: dmestas tags: trunk | |
| 22:45 | fleet count against the fleet; replace the native search clear check-in: 8922b17a67 user: dmestas tags: trunk | |
| 22:34 | fleet stream: send the same data the page rendered check-in: da11bb2f4e user: dmestas tags: trunk | |
| 22:13 | morph safety test; refresh a stale header comment check-in: 6c88726c75 user: dmestas tags: trunk | |
| 22:12 | assert morphed regions hold no stateful widgets check-in: a8ffd42e31 user: dmestas tags: trunk | |
| 22:09 | tooltip: CSS-only, keyboard-reachable, after basecoat check-in: 8716bda9ab user: dmestas tags: trunk | |
| 21:57 | footer: protect the render time, collapse brand and version first check-in: 976a0fbb1d user: dmestas tags: trunk | |
| 21:54 | fleet: put the icon legend above the table it explains check-in: b0dcf5b184 user: dmestas tags: trunk | |
| 21:51 | popover test: strip comments before scanning the rule check-in: d1f24b16f2 user: dmestas tags: trunk | |
| 21:51 | popover: do not lay out a closed menu check-in: 0f80f70360 user: dmestas tags: trunk | |
| 21:45 | favicon: embed the quarry mark check-in: c77e3a64e3 user: dmestas tags: trunk | |
| 21:28 | fleet: drop the duplicate heading check-in: d08c109f36 user: dmestas tags: trunk | |
| 21:17 | tickets: honour is_private; fix trigger conflict clause aborting refolds check-in: 55309263a2 user: dmestas tags: trunk | |
| 21:06 | clone: offer fossil where the store has no submanifest; fix menu item overflow check-in: fdbe0098e1 user: dmestas tags: trunk | |
| 20:55 | tickets: stop rendering fossil's private contact fields check-in: 3918395e1f user: dmestas tags: trunk | |
| 20:47 | tickets: list open by default, closed opt-in check-in: c4080bd6b6 user: dmestas tags: trunk | |
| 20:23 | content tables scroll themselves instead of the page check-in: f9278e8d03 user: dmestas tags: trunk | |
| 20:09 | icon columns explained at every width; centre the footer text check-in: 7b59bbf957 user: dmestas tags: trunk | |
| 20:01 | column headers: visible labels, not popover tooltips; page the people list check-in: 2ccee11f4f user: dmestas tags: trunk | |
| 19:56 | fleet mirror rows, footer clearance, licenses page leads with our own check-in: e0a1db3b72 user: dmestas tags: trunk | |
| 19:37 | footer: fixed full-width with legal links; licenses and privacy pages check-in: d8553b89a3 user: dmestas tags: trunk | |
| 19:21 | repo header: stats strip, ref switcher popover, clone box with download menu check-in: e7fb66c4df user: dmestas tags: trunk | |
| 19:11 | explore: repositories/people tabs, folded contributor table check-in: be4c4284f1 user: dmestas tags: trunk | |
| 18:51 | chrome: lighter dark secondary, centred search, quiet focus ring, no duplicate home heading check-in: 90c75cd912 user: dmestas tags: trunk | |
| 18:40 | tickets: record cmimetype on authored text check-in: f7ba4868d5 user: dmestas tags: trunk | |
| 18:31 | chrome: neutral surface token, full-width bar, anchored animated popover, compact fleet counts check-in: 3c43c1de30 user: dmestas tags: trunk | |
| 18:25 | header: full-width top bar, account popover with avatar check-in: b3ac263fee user: dmestas tags: trunk | |
| 18:19 | palette: whiter dark text, muted orange, themed highlight tokens check-in: 1d80a6cffa user: dmestas tags: trunk | |
| 18:01 | global search: fan out across repos with per-repo facets check-in: ae68223b22 user: dmestas tags: trunk | |
| 16:01 | fleet: carry filter and sort into the live stream check-in: d54bc03817 user: dmestas tags: trunk | |
| 14:54 | gruvbox palette, server-side theme switcher, context-scoped search check-in: 6d9997bbb4 user: dmestas tags: trunk | |
| 14:41 | archive: disk cache, zip format, immutable ETag; tree-bar cleanup check-in: b8afd21148 user: dmestas tags: trunk | |
| 14:11 | theme form controls; drop inline width overrides check-in: 93899cc429 user: dmestas tags: trunk | |
| 14:07 | ticket detail: drop duplicate title, fields as a dl check-in: eb6cc56c07 user: dmestas tags: trunk | |
| 13:55 | tickets: list layout, title first check-in: 3862cf6012 user: dmestas tags: trunk | |
| 13:48 | dates: render relative everywhere; strip markup from list titles check-in: 414f5a0e06 user: dmestas tags: trunk | |
| 13:40 |
nav: pills with compact counts; stop long tokens overflowing
The repo nav's width was a function of its numbers — tk's 25557 and 5809 made a visibly different nav from a small repo's, wrapping to three lines on a phone. Counts go compact (25K, 5.8K, 1.2M, four characters max) with the exact figure in the badge title, and each entry is a pill rather than a word beside a loose number. Nav width is now identical across repositories. Separately: sqlite has wiki pages named after check-in hashes, 40-char unbreakable tokens that pushed the page 300px past a phone viewport. main now breaks over-long words; pre keeps its own scroll. check-in: 15c39013de user: dmestas tags: trunk | |
| 13:25 |
landing page: vendor octicons, real columns, description spans the row
Three fixes for one screenshot. The icons were CSS masks with inline data: URIs — valid in Chrome, invalid under iOS Safari's stricter parsing, so every icon rendered as a grey block. Now an SVG sprite of six Octicons (MIT, ledgered); no encoding to get wrong. Alignment needed real table columns. CSS grid aligns within one grid, so a per-row grid gave every row its own widths and nothing lined up. Measured: stat cells now share right edges across rows exactly. And the description spans the full row instead of sitting in column one, which had made that column as wide as the longest sentence and pushed the numbers off a phone. No horizontal scroll at 320-1280px; the mirror column drops below 30rem. check-in: 60e5e5ebb6 user: dmestas tags: trunk | |
| 13:11 |
landing page: stats as aligned badges, not a sentence
A sentence of stats is a different width in every row, so nothing lines up and the column is hard to scan. Four fixed slots — check-ins, contributors, mirror freshness, last activity — each an icon and a number, in a grid so the numbers align down the page. Durations go compact (34m, 12h, 3d) for the same reason; the exact instant stays in the title and datetime. Every badge keeps a title, because an icon alone states nothing. check-in: 7bf20af78a user: dmestas tags: trunk | |
| 12:44 |
landing page: drop the commit message, show activity signals
An aggregator listing showed whatever the last commit happened to say — written for people already in that repo's context, the widest thing in the row, and on a phone one entry filled the screen. GitHub and Forgejo list description and activity and neither shows a commit message. Replaced with what a stranger can use: last activity, check-ins, contributors, and mirror freshness. The last is there because mirroring created an ambiguity — a repo quiet upstream and a mirror failing for a week look identical if all you see is 'last activity'. Contributors rides the memoized Counts, so it costs nothing per request. check-in: 012cdff6c9 user: dmestas tags: trunk | |
| 11:42 |
repo.delete: destroy a repository, with two brakes
Removing a repository's disk space meant going to the shell and doing it without quarry knowing, which is worse than quarry doing it. Deletion now purges the store, the derived index, and every forge row keyed to the repository — grants, sync users, mirror, webhooks, CI records — in one transaction, so a new repository of the same name cannot inherit somebody's credentials. Two brakes. confirm must equal the name: a yes/no prompt is answered reflexively, typing the name requires having read which repository is about to go. And the store is removed ONLY when it lives under this node's repositories root — quarry serves stores it did not create, and this forge runs on a corpus of exactly those, so deleting one named by --repo would destroy a checkout somebody else manages. Verified: the attempt on pikchr refuses and says to unregister instead. check-in: a8d2831bf4 user: dmestas tags: trunk | |
| 11:33 |
repo.add: seed a new repository's first check-in
A repository with no check-ins has an unborn trunk, so the timeline, the file tree and every clone instruction have nothing to point at. Optional README, license (MIT or BSD-2) and .zitignore give it a born trunk, which is why GitHub offers the same three at creation. The copyright line is left as <copyright holder> rather than filled with the account name: a copyright naming the wrong person is worse than one that is visibly unfinished, and an account is a login, not a legal entity. Seeding is refused on a clone, which arrives with its own history, and paths are checked against the repository root before anything is written. check-in: c5b6d979e2 user: dmestas tags: trunk | |