6 Commits
Author SHA1 Message Date
jknapp bd7a1ca59a Merge pull request 'feat: adopt the rebalanced mark and add a wordmark lockup' (#24) from feat/rebalanced-mark-and-lockup into main 2026-08-13 01:46:31 +00:00
jknapp a3f28c52a5 Merge pull request 'feat: support Microsoft Entra ID as an OIDC provider' (#22) from feat/entra-id-support into main 2026-08-13 01:46:29 +00:00
shadowdaoandClaude Opus 5 5d06095883 feat: adopt the rebalanced mark and add a wordmark lockup
The shipped mark failed the one size it most needed to survive. At 16px
in a browser tab its outer strokes rasterised away entirely and the
2.5px gap between stroke and node filled in, so the favicon rendered as
an indeterminate horizontal smear rather than as anything. Three changes
fix it, all driven by that case and verified by rendering rather than by
reasoning: strokes stop at x=30 so the gap survives, outer opacity goes
.45/.55 -> .7 so the neighbours stay visible, and the node grows to
r=8.5 so it still reads as a disc.

This is not a rebrand. The mark is the same three-signals-converging
figure and keeps whatever recognition it has earned; only its
proportions changed. icon.svg and logo.svg had drifted slightly apart
(different node radii and stroke ends) and are now geometrically
identical, differing only in palette.

Adds the lockup, which had no asset at all, in two variants because one
cannot serve both jobs: public/lockup.svg uses currentColor for in-app
use, and docs/assets/lockup.svg fixes the colour to #0092fd for the
README. An <img src> reference resolves currentColor to black, so the
currentColor variant would be invisible against a dark README. The
wordmark carries textLength, without which it overruns the viewBox on
wider monospace fonts.

Concepts and the reasoning behind the ones not chosen are on the
docs/logo-concepts branch.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 14:09:56 -07:00
shadowdaoandClaude Opus 5 2c127886ff docs: draft ten logo concepts
Eight fresh directions plus two refinements of the shipped mark, each
authored as a real currentColor SVG in the app's house style rather than
as a description, so any of them can be dropped straight in and the
favicon tile is a mechanical derivation.

Every mark was rendered at 120/32/24/16px and looked at, which changed
the set three times: the braid came out as a plain multiplication sign
and was rebuilt with actual over/under crossings, the anchor was
rebalanced to three-fold symmetry, and the first return-arc read even
more like a copyright glyph than the current one.

The finding that matters is not one of the eight. The mark shipping
today fails at 16px — its outer strokes drop out to rasterisation and
the 2.5px gap to the node fills in, so the favicon renders as a smear.
Concept 09 fixes that in five lines and is worth taking regardless of
whether anything here replaces the mark.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 10:51:47 -07:00
shadowdaoandClaude Opus 5 4d6694620a docs: add the Entra ID provider walkthrough
The README's OIDC section is written against Authentik and stays that
way; Entra differs enough that inlining it would have doubled a file
that is already 32k. The new doc parallels the README's A/B structure so
the two are diffable, and leads with the traps, since every one of them
surfaces as an opaque 401 rather than as anything resembling its cause:
the access token version, the tenant-specific authority, `aud` being the
client-ID GUID while the requested scope is an `api://` URI, redirect-URI
platform types, and group GUIDs.

Sections 7 and 10b document the identity and overage behaviour shipped
in the previous commit, including the one upgrade-ordering caveat: an
existing Entra deployment should sign a user into the Web UI once before
reconnecting their MCP client, or the pre-migration row is stranded.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 10:51:39 -07:00
shadowdaoandClaude Opus 5 6e9628b073 docs: record the memory API decisions, including the one declined
Keeps the reasoning behind PR #19 next to the code, since none of it is
recoverable from the diff: why memory_get stopped returning the embedding
and tsvector, why memory_patch refuses ambiguous matches rather than
picking one, and why memory_append was dropped as redundant with patch.

Also records P3 (mechanising file->memory mirroring) as DECLINED with its
reasoning and, more usefully, the condition that would reopen it — the
mirror going stale again now that patching is cheap. The evidence we had
pointed at edit cost, which P2 fixed; if drift recurs the cause was
attention instead, and the answer is probably to remove the duplication
rather than build a drift detector for it.

Notes two traps for anyone extending this: content_tsv is a generated
column so full-text search cannot rot after a patch (only the embedding
needs recomputing), and the obvious "does search find the patched text"
acceptance check therefore passes on an implementation that skips
re-embedding entirely.

The brief previously lived outside the repo. Moved rather than copied —
two hand-maintained copies is the exact drift problem described in the
document.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 15:10:36 -07:00