diff --git a/README.md b/README.md index e2b8b2d..1232b7b 100644 --- a/README.md +++ b/README.md @@ -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 @@ -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 diff --git a/docs/brand/README.md b/docs/brand/README.md new file mode 100644 index 0000000..e97e20d --- /dev/null +++ b/docs/brand/README.md @@ -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. diff --git a/docs/brand/kmemo-favicon-512.png b/docs/brand/kmemo-favicon-512.png new file mode 100644 index 0000000..0e77131 Binary files /dev/null and b/docs/brand/kmemo-favicon-512.png differ diff --git a/docs/brand/kmemo-favicon-light.svg b/docs/brand/kmemo-favicon-light.svg new file mode 100644 index 0000000..02ac05d --- /dev/null +++ b/docs/brand/kmemo-favicon-light.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/docs/brand/kmemo-favicon.svg b/docs/brand/kmemo-favicon.svg new file mode 100644 index 0000000..c25d50a --- /dev/null +++ b/docs/brand/kmemo-favicon.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/docs/brand/kmemo-lockup-dark.svg b/docs/brand/kmemo-lockup-dark.svg new file mode 100644 index 0000000..0d66aa9 --- /dev/null +++ b/docs/brand/kmemo-lockup-dark.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/brand/kmemo-lockup-light.svg b/docs/brand/kmemo-lockup-light.svg new file mode 100644 index 0000000..0a5c413 --- /dev/null +++ b/docs/brand/kmemo-lockup-light.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/brand/kmemo-lockup-mono-dark.svg b/docs/brand/kmemo-lockup-mono-dark.svg new file mode 100644 index 0000000..782353b --- /dev/null +++ b/docs/brand/kmemo-lockup-mono-dark.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/brand/kmemo-lockup-mono-light.svg b/docs/brand/kmemo-lockup-mono-light.svg new file mode 100644 index 0000000..52726e2 --- /dev/null +++ b/docs/brand/kmemo-lockup-mono-light.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/brand/kmemo-social-preview.png b/docs/brand/kmemo-social-preview.png new file mode 100644 index 0000000..6b99326 Binary files /dev/null and b/docs/brand/kmemo-social-preview.png differ diff --git a/docs/brand/kmemo-symbol-mono.svg b/docs/brand/kmemo-symbol-mono.svg new file mode 100644 index 0000000..dba6b19 --- /dev/null +++ b/docs/brand/kmemo-symbol-mono.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/docs/brand/kmemo-symbol.svg b/docs/brand/kmemo-symbol.svg new file mode 100644 index 0000000..82d7b18 --- /dev/null +++ b/docs/brand/kmemo-symbol.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/docs/brand/kmemo-tokens.css b/docs/brand/kmemo-tokens.css new file mode 100644 index 0000000..4db4082 --- /dev/null +++ b/docs/brand/kmemo-tokens.css @@ -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); +} diff --git a/docs/kmemo-hero.png b/docs/kmemo-hero.png index f5b12f7..6b37ec6 100644 Binary files a/docs/kmemo-hero.png and b/docs/kmemo-hero.png differ