diff --git a/README.md b/README.md index 335aa3b..a5847a6 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ SPDX-FileCopyrightText: 2025-2026 Jonathan D.A. Jewell FFI](https://img.shields.io/badge/FFI-Zig-orange.svg) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/hyperpolymath/gossamer/badge)](https://securityscorecards.dev/viewer/?uri=github.com/hyperpolymath/gossamer) ![Idris2 ABI](https://img.shields.io/badge/ABI-Idris2-purple.svg) [![Green Hosting](https://api.thegreenwebfoundation.org/greencheckimage/jewell.nexus)](https://www.thegreenwebfoundation.org/green-web-check/?url=jewell.nexus) +

gossamer

+ **Build desktop apps that can’t leak resources. By design, not by discipline.** diff --git a/brand/BRAND.adoc b/brand/BRAND.adoc new file mode 100644 index 0000000..1c8439a --- /dev/null +++ b/brand/BRAND.adoc @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: CC-BY-SA-4.0 += Gossamer Brand Pack +:toc: + +== Mark + +The Gossamer mark is a single thin silver filament that traces three +sides of a window frame — entering at one corner, following the native +window's edge, and leaving at the next. It is a *thread over a frame*: +the gossamer-thin shell drawn taut around the OS webview it wraps. The +filament is unbroken — one strand, used once — echoing the `let!` +linear binding at the heart of Gossamer: a webview handle that must be +closed exactly once or the program will not compile. + +The name itself is the symbolism: _gossamer_ is the finest filament of +spider silk — almost weightless, yet under tension it holds. So is the +shell: a ~1 MB native window (no V8, no Node GC, no interpreter) thin +enough to vanish against the OS, strong enough that handle leaks, +IPC mismatches, and permission bypasses become compile errors. + +|=== +| File | Use + +| `icon.svg` | Primary mark with dark background (rounded corners). README, docs, about screens. +| `icon-square.svg` | Transparent background mark. Favicon, app icon, overlay on custom backgrounds. +| `social-preview.svg` | GitHub / Open Graph social preview (1280x640). "gossamer" wordmark + mark. +| `marr-levels.svg` | Explainer: the project at David Marr's three levels of analysis. +| `sandler-submarine.svg` | Impact / case-making: the seven sealed compartments of adoption. +|=== + +== Colours + +[cols="1,1,2"] +|=== +| Name | Hex | Use + +| Thread Silver | `#cbd5e1` | Primary brand colour. The filament tracing the frame, active states, headings. +| Filament Slate | `#94a3b8` | Secondary. The native window frame, IPC channel hints, muted accents. +| Background | `#0d1117` | Dark surfaces. GitHub-dark compatible. +| Foreground | `#e6edf3` | Text on dark background. +| Glow | `#10151c` | Radial background glow behind the mark. +|=== + +== Typography + +Wordmark uses the system font stack: `system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif` at weight 300 (light), lowercase. The tagline _thin shell over native_ is set at the same stack, weight 300. + +No custom font is required. All text is set in the SVG, not a separate font file. + +== Rules + +- The mark always shows one unbroken filament tracing the window frame. Never draw the filament twice or close it into a full loop — the thread is *used once* (the `let!` linearity), not duplicated, not recycled. +- The silver must be `#cbd5e1` — do not approximate with other greys/silvers. +- The wordmark is always lowercase `gossamer`. +- On light backgrounds, invert: slate `#475569` filament and `#1b1f24` text on white/light grey. +- The tagline _thin shell over native_ is the positioning line (Electron/Tauri/Wails alternative), not a marketing strapline; it may appear on repository assets. Sales/marketing straplines never appear on repository assets. + +== Generating raster assets + +[source,shell] +---- +# Requires Inkscape or rsvg-convert (librsvg) + +# Favicon (64x64 PNG) +rsvg-convert -w 64 -h 64 icon-square.svg > favicon-64.png + +# App icon (512x512 PNG) +rsvg-convert -w 512 -h 512 icon.svg > icon-512.png + +# Social preview (1280x640 PNG for GitHub) +rsvg-convert -w 1280 -h 640 social-preview.svg > social-preview.png +---- diff --git a/brand/icon-square.svg b/brand/icon-square.svg new file mode 100644 index 0000000..967f81b --- /dev/null +++ b/brand/icon-square.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/brand/icon.svg b/brand/icon.svg new file mode 100644 index 0000000..af43175 --- /dev/null +++ b/brand/icon.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/brand/marr-levels.svg b/brand/marr-levels.svg new file mode 100644 index 0000000..134d6e4 --- /dev/null +++ b/brand/marr-levels.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + gossamer — at Marr's three levels + one webview shell, read from intent down to substrate + + + + + abstract → concrete + + + + + + + ? + Computational — what & why + Desktop apps that can't leak resources — webview handles can't leak, IPC can't + mismatch, permissions can't be bypassed. By design, not by discipline. No GC, ever. + + + + + + + + Algorithmic — representation & process + Linear `let!` (exactly-once) vs `let` (at-most-once) over region-scoped arenas · + 256-slot capability registry (FIFO) · async IPC + streaming events (gossamer_emit). + + + + + + + + Implementational — physical substrate + Pure Zig FFI to OS webviews (WebKitGTK · WKWebView · WebView2 · Android JNI) + + 13 green Idris2 ABI modules + Ephapax backend. ~1 MB binary — no V8, no Node GC. + diff --git a/brand/sandler-submarine.svg b/brand/sandler-submarine.svg new file mode 100644 index 0000000..7a1497e --- /dev/null +++ b/brand/sandler-submarine.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + gossamer — the seven sealed compartments + impact & case-making, Sandler-submarine logic: seal each before you go deeper + surface + deep + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + + + 1 · Bonding + Open MPL-2.0, green-hosted, + Idris2 ABI proofs in the open + + 2 · Up-front contract + IS a linearly-typed webview + shell; an Electron/Tauri/Wails alt + + + 3 · Pain + Leaked handles, IPC mismatch, + permission bypass, 150 MB GC + + 4 · Budget + Runtime incidents & bloat vs + ~1 MB compiler-checked shell + + + 5 · Decision + `let!` linearity: forget to close + a handle and it won't compile + + 6 · Fulfilment + No-leak / type-safe IPC across + Linux · macOS · Windows · Android + + + 7 · Post-sell + alpha v0.3.1, 173 tests, 13/13 ABI + green; PanLL + IDApTIK adopting + + + diff --git a/brand/social-preview.svg b/brand/social-preview.svg new file mode 100644 index 0000000..6cbb5be --- /dev/null +++ b/brand/social-preview.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gossamer + + thin shell over native · handles can't leak + + + + + +