50 ancestors of 3df10d7f783a208d
|
2026-08-22
| ||
| 16:28 |
caps phase 5b: the capability matrix as executable spec
Each row driven twice — the letter alone must open its surface, and every OTHER letter together must not. Router resolves the repo from the request body for ops that carry it as a field (repos/update). check-in: 3df10d7f78 user: dmestas tags: fossil-caps | |
| 16:23 |
caps phase 5a: web write paths gate on capabilities
gateCap on every forum/wiki/ticket/technote/chat POST; caps plane separated from sessions (WithCaps) so enforcement doesn't imply a login page; an ungated forge stays ungated. Harness proves category caps reach surfaces and that removing a letter closes the same request. check-in: 54cc5168ca user: dmestas tags: fossil-caps | |
| 16:12 | gofmt: comment alignment in api tests check-in: be45fccb29 user: dmestas tags: fossil-caps | |
| 16:11 |
caps phases 2-3: ops declare fossil capabilities; router and web gate on them
RFC 0004 §4 table encoded on all ~45 ops; RouterWithCaps refines each Auth floor with EffectiveCaps; web gates and TrustedAuthor read caps with role fallback. Harness proves o/3/a separation end to end. check-in: 31437ec328 user: dmestas tags: fossil-caps | |
| 14:34 | merge trunk (composer fixes) into fossil-caps check-in: 03ca7e41fb user: dmestas tags: fossil-caps | |
| 14:27 | composer card clips its corners: square textarea no longer paints over the rounded border check-in: 347a061cc1 user: dmestas tags: trunk | |
| 14:27 | merge fossil-caps: caps phase 1; composer hidden fix check-in: c5fe4789aa user: dmestas tags: trunk | |
| 14:19 | composer: hidden wins over the split pane's flex check-in: 5498b20014 user: dmestas tags: fossil-caps | |
| 14:19 |
caps phase 1: fossil cap strings in OLTP, EffectiveCaps expansion, roles→caps migration
RFC 0004 §3/§5. v never implies u; a excludes s x y; s is universal; blank nobody+anonymous = private. Migration runs on every open, idempotent, never clobbers explicit caps. check-in: be3686ccbe user: dmestas tags: fossil-caps | |
| 14:18 | composer: Preview tab lives in composer.js — per-composer pane, posts the draft as body; preview endpoint is a plain fragment check-in: 34e1534151 user: dmestas tags: trunk | |
| 14:13 | RFC 0004: fossil capability compatibility — plan check-in: 6bb1c20891 user: dmestas tags: trunk | |
| 13:15 | mirror threads: per-post Reply points at the upstream post — a button must never aim at a composer that cannot exist check-in: eae00faa15 user: dmestas tags: trunk | |
| 11:38 |
threads render as the DAG they are: tree order + indent, Reply button at each post's foot, aimed composer autofocuses
The header reply link relied on fragment scroll, which browsers skip when the fragment is unchanged — 'clicked reply, nothing happened'. check-in: 8294c8101a user: dmestas tags: trunk | |
| 11:30 | answering the root is thread traffic (unsub sticks); answering a post is personal check-in: 747979ed51 user: dmestas tags: trunk | |
| 11:29 |
the reply DAG, kept: per-post replies, parent links name their author, answered authors always notified
forum.reply takes to= (a specific post); the composer aims via ?reply-to with a visible banner; the replied-to author joins the notification set even unsubscribed, deduped by TxnID. check-in: 152f575aab user: dmestas tags: trunk | |
| 11:24 | spectrum segments: identicon deep shade, each a link to its post anchor check-in: 1a859293ee user: dmestas tags: trunk | |
| 11:22 | spectrum: continuous constant-height bar, rounded only at the ends check-in: f78cd21498 user: dmestas tags: trunk | |
| 11:18 | spectrum as beads: gapped rounded segments in the post-edge recipe check-in: f322cdbe4a user: dmestas tags: trunk | |
| 11:18 |
tests assert structure and data, never display copy; spectrum up to the middle level
data-score / f-pinned / hot-formula / f-hidden hooks exist for the tests; copy and glyphs are design surface, free to change. check-in: dfc78137a3 user: dmestas tags: trunk | |
| 11:15 | root test follows the counted explore link check-in: 9960c3555b user: dmestas tags: trunk | |
| 11:14 | explore link count: reach FleetTotal through the root context check-in: 09ab5ece67 user: dmestas tags: trunk | |
| 11:13 | dashboard explore link names the fleet size check-in: c3f1705062 user: dmestas tags: trunk | |
| 11:12 | merge ticket-editor: ticket page is the editor; [label] (url) links check-in: 5968b5fc36 user: dmestas tags: trunk | |
| 11:05 | markdown: [label] (url) with a space is still a link closed check-in: 38f6f9f5de user: dmestas tags: ticket-editor | |
| 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 | ticket editor: title and description edit in place; ticket.set takes description; edits and retitles are timeline events check-in: c65320c1c3 user: dmestas tags: ticket-editor | |
| 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:13 | ticket editor: data-on:change is the spelling Datastar fires; composer footer wraps on phones check-in: 145ae81167 user: dmestas tags: ticket-editor | |
| 02:10 | Ticket page is the editor: sidebar selects, remark composer with close/reopen, field changes in the timeline check-in: 86631cfb47 user: dmestas tags: ticket-editor | |
| 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 | |