feat: adopt the rebalanced mark and add a wordmark lockup #24

Merged
jknapp merged 1 commits from feat/rebalanced-mark-and-lockup into main 2026-08-13 01:46:32 +00:00
5 changed files with 72 additions and 11 deletions
+1 -1
View File
@@ -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
View File
@@ -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

+24
View File
@@ -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

+13 -5
View File
@@ -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

+24
View File
@@ -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