Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
**A semantic cache for LLM calls on Kotlin/JVM — that refuses to serve you the wrong answer.**

[![CI](https://github.com/NaCode-Studios/Kmemo/actions/workflows/ci.yml/badge.svg)](https://github.com/NaCode-Studios/Kmemo/actions/workflows/ci.yml)
[![Maven Central](https://img.shields.io/maven-central/v/io.github.nacode-studios/kmemo-core?label=Maven%20Central)](https://central.sonatype.com/artifact/io.github.nacode-studios/kmemo-core)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
[![Kotlin](https://img.shields.io/badge/Kotlin-2.4-7F52FF.svg?logo=kotlin)](https://kotlinlang.org)
[![API docs](https://img.shields.io/badge/API%20docs-Dokka-blue.svg)](https://nacode-studios.github.io/Kmemo/)
[![Maven Central](https://img.shields.io/maven-central/v/io.github.nacode-studios/kmemo-core?label=Maven%20Central&labelColor=080C18&color=5B9CFF)](https://central.sonatype.com/artifact/io.github.nacode-studios/kmemo-core)
[![License](https://img.shields.io/badge/license-Apache%202.0-1E2A45?labelColor=080C18)](LICENSE)
[![Kotlin](https://img.shields.io/badge/Kotlin-2.4-7F52FF?logo=kotlin&logoColor=white&labelColor=080C18)](https://kotlinlang.org)
[![API docs](https://img.shields.io/badge/API%20docs-Dokka-1E2A45?labelColor=080C18)](https://nacode-studios.github.io/Kmemo/)

An exact-match cache misses "how do I reverse a list in Python" when it has already answered "python
list reverse". A semantic cache does not: it embeds the prompt, finds the closest one it has seen, and
Expand Down Expand Up @@ -249,7 +249,8 @@ opening a pull request; if you change the public API, run `./gradlew apiDump` an

## License

Licensed under the [Apache License 2.0](LICENSE).
Licensed under the [Apache License 2.0](LICENSE). Brand assets — wordmark, symbol, and the colour and
type tokens — are in [`docs/brand`](docs/brand).

## Sponsor

Expand Down
36 changes: 36 additions & 0 deletions docs/brand/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Kmemo brand assets

The logo is the whole name — the node **K** followed by **memo**. The K on its own is a tile, not the
logo, and "memo" is never separated from it.

| File | Use |
| --- | --- |
| `kmemo-lockup-dark.svg` | the logo on a dark surface |
| `kmemo-lockup-light.svg` | the logo on a light surface |
| `kmemo-lockup-mono-dark.svg` / `-mono-light.svg` | one flat ink |
| `kmemo-symbol.svg` / `kmemo-symbol-mono.svg` | the K on its own — internal use |
| `kmemo-favicon.svg` / `-light.svg` / `kmemo-favicon-512.png` | favicon, avatar, app icon |
| `kmemo-social-preview.png` | the GitHub social preview (2560×1280) |
| `kmemo-tokens.css` | colour, type, space, radius and elevation tokens |
| [`../kmemo-hero.png`](../kmemo-hero.png) | the README banner (2560×680) |

Every SVG here is self-contained — the wordmark is outlined, so it renders identically whether or not
Space Grotesk is installed.

**Construction** — a 1000 em grid with a cap height of 700. The stem is 115 (Space Grotesk 600's stem
weight, so the mark and the letters carry the same black); the diagonals are 105, 9% lighter, because at
equal weight a diagonal reads heavier. Terminals are round (r 82) and overshoot cap line and baseline by
10; the vertex sits at 55% of the height, not halfway. K/m kerns `-0.012em`, the wordmark tracks
`-0.032em`. Clear space is the x-height. Minimum size is 15px of body — below that, only the K in its disc.

**One accent** — amber on the high node. The low node is a terminal, not a second signal.

**Type** — Space Grotesk 600 (headings and wordmark), IBM Plex Sans (body), JetBrains Mono (code,
metrics, labels).

**Colour** — ink `#05070E` → `#16203A`, borders `#1E2A45` / `#22314F`, text `#F2F6FF` down to `#6B7A96`.
Blue `#5B9CFF` is primary, amber `#F5B54A` is the single accent, and Kotlin purple `#7F52FF` is reserved
for platform references.

**Don't** — separate "memo" from the K · make the low node amber · add gradients, shadows or outlines ·
swap the typeface or alter the tracking · rotate, skew or stretch the K.
Binary file added docs/brand/kmemo-favicon-512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions docs/brand/kmemo-favicon-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions docs/brand/kmemo-favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions docs/brand/kmemo-lockup-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions docs/brand/kmemo-lockup-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions docs/brand/kmemo-lockup-mono-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions docs/brand/kmemo-lockup-mono-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/brand/kmemo-social-preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/brand/kmemo-symbol-mono.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/brand/kmemo-symbol.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
72 changes: 72 additions & 0 deletions docs/brand/kmemo-tokens.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
:root {
/* Ink — dark first */
--kmemo-ink-950: #05070E;
--kmemo-ink-900: #080C18;
--kmemo-ink-850: #0B1020;
--kmemo-ink-800: #121A2E;
--kmemo-ink-700: #16203A;
--kmemo-border-600: #1E2A45;
--kmemo-border-500: #22314F;

/* Text */
--kmemo-text: #F2F6FF;
--kmemo-text-secondary: #C3CEE2;
--kmemo-text-muted: #94A3BE;
--kmemo-text-faint: #6B7A96;

/* Blue — primario */
--kmemo-blue-300: #BFD8FF;
--kmemo-blue-400: #7FB0FF;
--kmemo-blue-500: #5B9CFF;
--kmemo-blue-600: #3B82F6;
--kmemo-blue-700: #2563EB;

/* Amber — accento unico */
--kmemo-amber-300: #FFD79A;
--kmemo-amber-400: #F5B54A;
--kmemo-amber-500: #E09A26;

/* Kotlin purple — solo citazioni di piattaforma */
--kmemo-purple-500: #7F52FF;

/* Semantica cache */
--kmemo-hit: #3ED598;
--kmemo-below-threshold: #F5B54A;
--kmemo-rejected-guard: #FF6B6B;
--kmemo-verifier: #A78BFA;

/* Light mode derivato */
--kmemo-light-bg: #F7F9FD;
--kmemo-light-surface: #FFFFFF;
--kmemo-light-border: #DFE6F2;
--kmemo-light-text: #0B1020;
--kmemo-light-muted: #55637C;

/* Tipografia */
--kmemo-font-display: "Space Grotesk", system-ui, sans-serif;
--kmemo-font-body: "IBM Plex Sans", system-ui, sans-serif;
--kmemo-font-mono: "JetBrains Mono", ui-monospace, monospace;
--kmemo-tracking-display: -0.032em;

/* Spazio (base 4) */
--kmemo-space-1: 4px;
--kmemo-space-2: 8px;
--kmemo-space-3: 12px;
--kmemo-space-4: 16px;
--kmemo-space-6: 24px;
--kmemo-space-8: 32px;
--kmemo-space-12: 48px;
--kmemo-space-16: 64px;
--kmemo-space-24: 96px;

/* Raggi */
--kmemo-radius-sm: 6px;
--kmemo-radius-md: 10px;
--kmemo-radius-lg: 14px;
--kmemo-radius-xl: 20px;
--kmemo-radius-full: 999px;

/* Elevazione: nel dark è luce, non ombra */
--kmemo-elev-1: 0 0 0 1px var(--kmemo-border-500);
--kmemo-elev-2: 0 0 0 1px rgba(91,156,255,.08), 0 18px 40px -18px rgba(91,156,255,.35);
}
Binary file modified docs/kmemo-hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.