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>
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# shared-memory
|
# <img src="docs/assets/lockup.svg" alt="shared-memory" width="283">
|
||||||
|
|
||||||
A self-hosted MCP server that gives Claude Code sessions a **shared, persistent
|
A self-hosted MCP server that gives Claude Code sessions a **shared, persistent
|
||||||
memory** plus a **reusable snippet library**, behind your own OIDC login.
|
memory** plus a **reusable snippet library**, behind your own OIDC login.
|
||||||
|
|||||||
+10
-5
@@ -5,12 +5,17 @@
|
|||||||
Three retrieval signals - vector, full-text, tags - converging on a single
|
Three retrieval signals - vector, full-text, tags - converging on a single
|
||||||
memory. The direct match runs straight through at full strength; the two
|
memory. The direct match runs straight through at full strength; the two
|
||||||
ranked neighbours fall back, which is the fusion the search actually does.
|
ranked neighbours fall back, which is the fusion the search actually does.
|
||||||
Opacity is held equal on the outer pair so the mark stays balanced at 16px.
|
|
||||||
|
Every proportion here is set by the 16px browser-tab case. The outer pair
|
||||||
|
is held at .7 (not .55) because below that it rasterises away entirely,
|
||||||
|
the strokes stop at x=30 so the gap to the node doesn't fill in, and the
|
||||||
|
node is r=8.5 so it still reads as a disc. Geometry is identical to
|
||||||
|
public/logo.svg; only the palette differs.
|
||||||
-->
|
-->
|
||||||
<g fill="none" stroke-linecap="round" stroke-width="7">
|
<g fill="none" stroke-linecap="round" stroke-width="7">
|
||||||
<path d="M13 15C25 15 26 32 35 32" stroke="#0092fd" opacity=".55"/>
|
<path d="M12 16C24 16 25 32 30 32" stroke="#0092fd" opacity=".7"/>
|
||||||
<path d="M13 32H35" stroke="#49a9ff"/>
|
<path d="M12 32H30" stroke="#49a9ff"/>
|
||||||
<path d="M13 49C25 49 26 32 35 32" stroke="#0092fd" opacity=".55"/>
|
<path d="M12 48C24 48 25 32 30 32" stroke="#0092fd" opacity=".7"/>
|
||||||
</g>
|
</g>
|
||||||
<circle cx="45" cy="32" r="7.5" fill="#76c0ff"/>
|
<circle cx="46" cy="32" r="8.5" fill="#76c0ff"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 847 B After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,24 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283 64" width="283" height="64" role="img" aria-label="shared-memory">
|
||||||
|
<title>shared-memory</title>
|
||||||
|
<!--
|
||||||
|
Horizontal lockup for headers, docs, and the OAuth consent screen, where a
|
||||||
|
bare 64px glyph is too little and the full app header is too much.
|
||||||
|
|
||||||
|
currentColor, so it inherits the surrounding text colour. That does NOT
|
||||||
|
survive being referenced as <img src>, which resolves currentColor to
|
||||||
|
black - use docs/assets/lockup.svg for anything outside the app.
|
||||||
|
|
||||||
|
`textLength` is not decoration: the wordmark is set in whatever monospace
|
||||||
|
the viewer has, and without a locked advance width the text overruns the
|
||||||
|
viewBox on wider fonts.
|
||||||
|
-->
|
||||||
|
<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="7">
|
||||||
|
<path d="M12 16C24 16 25 32 30 32" opacity=".7"/>
|
||||||
|
<path d="M12 32H30"/>
|
||||||
|
<path d="M12 48C24 48 25 32 30 32" opacity=".7"/>
|
||||||
|
</g>
|
||||||
|
<circle cx="46" cy="32" r="8.5" fill="currentColor"/>
|
||||||
|
<text x="72" y="41" fill="currentColor" textLength="203" lengthAdjust="spacingAndGlyphs"
|
||||||
|
font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"
|
||||||
|
font-size="26" letter-spacing="-0.8">shared<tspan opacity=".45">-</tspan>memory</text>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -3,12 +3,20 @@
|
|||||||
<!--
|
<!--
|
||||||
Transparent, currentColor variant of the mark for in-app use - inherits
|
Transparent, currentColor variant of the mark for in-app use - inherits
|
||||||
the surrounding text color so it works on any surface. The tile version
|
the surrounding text color so it works on any surface. The tile version
|
||||||
used as the favicon lives at app/icon.svg.
|
used as the favicon lives at app/icon.svg, and the horizontal lockup at
|
||||||
|
public/lockup.svg.
|
||||||
|
|
||||||
|
Three retrieval signals converging on a single memory. Proportions are
|
||||||
|
set by the 16px case, which is the one that breaks: the strokes stop at
|
||||||
|
x=30 so the gap to the node survives rasterisation, the outer pair sits
|
||||||
|
at .7 rather than .45 so it doesn't drop out, and the node is r=8.5.
|
||||||
|
The earlier proportions rendered as an indeterminate smear in a browser
|
||||||
|
tab.
|
||||||
-->
|
-->
|
||||||
<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="7">
|
<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="7">
|
||||||
<path d="M13 15C25 15 27 32 37 32" opacity=".45"/>
|
<path d="M12 16C24 16 25 32 30 32" opacity=".7"/>
|
||||||
<path d="M13 32H37"/>
|
<path d="M12 32H30"/>
|
||||||
<path d="M13 49C25 49 27 32 37 32" opacity=".7"/>
|
<path d="M12 48C24 48 25 32 30 32" opacity=".7"/>
|
||||||
</g>
|
</g>
|
||||||
<circle cx="43" cy="32" r="8" fill="currentColor"/>
|
<circle cx="46" cy="32" r="8.5" fill="currentColor"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 648 B After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,24 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283 64" width="283" height="64" role="img" aria-label="shared-memory">
|
||||||
|
<title>shared-memory</title>
|
||||||
|
<!--
|
||||||
|
Horizontal lockup for headers, docs, and the OAuth consent screen, where a
|
||||||
|
bare 64px glyph is too little and the full app header is too much.
|
||||||
|
|
||||||
|
Fixed-colour twin of apps/web/public/lockup.svg, for README and any other
|
||||||
|
context that references the file as <img src> - there currentColor resolves
|
||||||
|
to black and vanishes on a dark page. #0092fd holds on both git-host themes.
|
||||||
|
|
||||||
|
`textLength` is not decoration: the wordmark is set in whatever monospace
|
||||||
|
the viewer has, and without a locked advance width the text overruns the
|
||||||
|
viewBox on wider fonts.
|
||||||
|
-->
|
||||||
|
<g fill="none" stroke="#0092fd" stroke-linecap="round" stroke-width="7">
|
||||||
|
<path d="M12 16C24 16 25 32 30 32" opacity=".7"/>
|
||||||
|
<path d="M12 32H30"/>
|
||||||
|
<path d="M12 48C24 48 25 32 30 32" opacity=".7"/>
|
||||||
|
</g>
|
||||||
|
<circle cx="46" cy="32" r="8.5" fill="#0092fd"/>
|
||||||
|
<text x="72" y="41" fill="#0092fd" textLength="203" lengthAdjust="spacingAndGlyphs"
|
||||||
|
font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"
|
||||||
|
font-size="26" letter-spacing="-0.8">shared<tspan opacity=".45">-</tspan>memory</text>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
Reference in New Issue
Block a user