Compare commits

..
4 Commits
5 changed files with 169 additions and 4 deletions
+1
View File
@@ -2,5 +2,6 @@
.zcode/ .zcode/
# Local drafts, held out of the published set # Local drafts, held out of the published set
concepts/
icons/goget.svg icons/goget.svg
icons/nuntius.svg icons/nuntius.svg
+12 -4
View File
@@ -14,7 +14,10 @@ svg-assets/
├── icons/ finished icons, one per project ├── icons/ finished icons, one per project
│ ├── gasm-devkit.svg │ ├── gasm-devkit.svg
│ ├── interpres.svg │ ├── interpres.svg
│ ├── jsbox.svg
│ ├── nfs.svg
│ ├── scripts.svg │ ├── scripts.svg
│ ├── sourcedock.svg
│ ├── tensor.svg │ ├── tensor.svg
│ ├── volumen.svg │ ├── volumen.svg
│ └── xstd.svg │ └── xstd.svg
@@ -26,14 +29,15 @@ Icons live in `icons/` and carry nothing but the project's name; the
## The house style ## The house style
Four icons are the template every other icon follows: Five icons are the template every other icon follows:
[icons/gasm-devkit.svg](icons/gasm-devkit.svg), [icons/gasm-devkit.svg](icons/gasm-devkit.svg),
[icons/scripts.svg](icons/scripts.svg), [icons/scripts.svg](icons/scripts.svg),
[icons/xstd.svg](icons/xstd.svg) and [icons/xstd.svg](icons/xstd.svg),
[icons/tensor.svg](icons/tensor.svg). Each is a rounded badge in one [icons/tensor.svg](icons/tensor.svg) and
[icons/nfs.svg](icons/nfs.svg). Each is a rounded badge in one
hue family carrying a single flat motif, with a thin inner border, a hue family carrying a single flat motif, with a thin inner border, a
quiet backdrop, and a restrained nod to the project's identity. The quiet backdrop, and a restrained nod to the project's identity. The
measured values of all four, for copying: measured values of all five, for copying:
| Icon | Badge gradient, top then bottom | Border tint | Ink | Accents | The nod | | Icon | Badge gradient, top then bottom | Border tint | Ink | Accents | The nod |
|---|---|---|---|---|---| |---|---|---|---|---|---|
@@ -41,6 +45,7 @@ measured values of all four, for copying:
| scripts | `#A61C4A`, `#4C0519` | `#FDA4AF`, opacity 0.45 | `#FFE4E6` window and prompt strokes | `#FCD34D` dot and cursor | the terminal prompt with its amber cursor | | scripts | `#A61C4A`, `#4C0519` | `#FDA4AF`, opacity 0.45 | `#FFE4E6` window and prompt strokes | `#FCD34D` dot and cursor | the terminal prompt with its amber cursor |
| xstd | `#1fb6dd`, `#007a99` | `#B3ECFB`, opacity 0.5 | `#007a99` on white | `#d9f4fc` slabs | the pulled-out C block | | xstd | `#1fb6dd`, `#007a99` | `#B3ECFB`, opacity 0.5 | `#007a99` on white | `#d9f4fc` slabs | the pulled-out C block |
| tensor | `#7C3AED`, `#4C1D95` | `#A78BFA`, opacity 0.45 | `#F5F3FF` cube faces, `#4C1D95` lattice | `#F59E0B`, `#00ADD8` | the Go cyan cell on the cube's left face | | tensor | `#7C3AED`, `#4C1D95` | `#A78BFA`, opacity 0.45 | `#F5F3FF` cube faces, `#4C1D95` lattice | `#F59E0B`, `#00ADD8` | the Go cyan cell on the cube's left face |
| nfs | `#0D9488`, `#134E4A` | `#5EEAD4`, opacity 0.5 | `#ECFDF5` cabinet and tiles, `#99F6E4` link lines | `#FBBF24` folders and LEDs, `#22D3EE` activity LED | the export fanning to its clients from one port |
## The rules ## The rules
@@ -141,7 +146,10 @@ yet.
| `icons/tensor.svg` | tensor, the scientific computing library for Go | | `icons/tensor.svg` | tensor, the scientific computing library for Go |
| `icons/volumen.svg` | volumen, the file-based Markdown blog engine | | `icons/volumen.svg` | volumen, the file-based Markdown blog engine |
| `icons/scripts.svg` | scripts, a DevOps toolbox of standalone Perl scripts | | `icons/scripts.svg` | scripts, a DevOps toolbox of standalone Perl scripts |
| `icons/sourcedock.svg` | sourcedock.dev, the self-hosted Git forge where this whole set berths |
| `icons/interpres.svg` | interpres, TOML 1.0 parser for Go | | `icons/interpres.svg` | interpres, TOML 1.0 parser for Go |
| `icons/nfs.svg` | nfs, a full NFSv4.2 implementation in pure Go, server and client |
| `icons/jsbox.svg` | jsbox, the zero-config development server for plain HTML, CSS and JavaScript |
## Licence ## Licence
+54
View File
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512" role="img" aria-labelledby="title desc">
<title id="title">jsbox, the zero-config development server for plain HTML, CSS and JavaScript</title>
<desc id="desc">An open box seen from above on a yellow badge, its four lighter brown flaps flared outward like opened lid panels and a cream browser window seated in the mouth with a thin shadow gap, amber page lines and a cyan cursor.</desc>
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#FACC15"/>
<stop offset="1" stop-color="#A16207"/>
</linearGradient>
<radialGradient id="halo" cx="0.5" cy="0.5" r="0.5">
<stop offset="0" stop-color="#FEF9C3" stop-opacity="0.14"/>
<stop offset="0.6" stop-color="#FEF9C3" stop-opacity="0.05"/>
<stop offset="1" stop-color="#FEF9C3" stop-opacity="0"/>
</radialGradient>
<filter id="shadowOpenBox" x="-40%" y="-40%" width="180%" height="180%">
<feDropShadow dx="0" dy="9" stdDeviation="11" flood-color="#713F12" flood-opacity="0.45"/>
</filter>
</defs>
<rect width="512" height="512" rx="112" fill="url(#bg)"/>
<rect x="1.5" y="1.5" width="509" height="509" rx="110.5" fill="none" stroke="#FEF08A" stroke-width="3" opacity="0.5"/>
<circle cx="256" cy="256" r="225" fill="url(#halo)"/>
<g filter="url(#shadowOpenBox)">
<!-- lid flaps, flared outward toward the viewer, centred on x=256, y=256 -->
<g fill="#92400E">
<path d="M156 96 H356 L330 140 H182 Z"/>
<path d="M182 372 H330 L356 416 H156 Z"/>
<path d="M96 156 V356 L140 330 V182 Z"/>
<path d="M372 182 V330 L416 356 V156 Z"/>
</g>
<!-- box walls and mouth -->
<rect x="148" y="148" width="216" height="216" rx="26" fill="#78350F"/>
<rect x="164" y="164" width="184" height="184" rx="18" fill="#451A03"/>
<!-- the runtime seated in the mouth: a browser window -->
<g>
<rect x="170" y="170" width="172" height="172" rx="14" fill="#FFF7ED"/>
<path d="M170 184 A14 14 0 0 1 184 170 H328 A14 14 0 0 1 342 184 V204 H170 Z" fill="#78350F"/>
<g fill="#FFF7ED">
<circle cx="192" cy="187" r="5.5"/>
<circle cx="208" cy="187" r="5.5"/>
<circle cx="224" cy="187" r="5.5"/>
</g>
<g fill="#F59E0B">
<rect x="186" y="218" width="96" height="12" rx="6"/>
<rect x="186" y="242" width="134" height="12" rx="6"/>
<rect x="186" y="266" width="70" height="12" rx="6"/>
</g>
<rect x="186" y="292" width="12" height="16" rx="3" fill="#22D3EE"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

+65
View File
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512" role="img" aria-labelledby="title desc">
<title id="title">nfs, a full NFSv4.2 implementation in pure Go</title>
<desc id="desc">A pale server cabinet on a sea-teal badge fanning solid link lines down to three client tiles, each carrying a small amber folder.</desc>
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#0D9488"/>
<stop offset="1" stop-color="#134E4A"/>
</linearGradient>
<radialGradient id="halo" cx="0.5" cy="0.5" r="0.5">
<stop offset="0" stop-color="#CCFBF1" stop-opacity="0.12"/>
<stop offset="0.6" stop-color="#CCFBF1" stop-opacity="0.04"/>
<stop offset="1" stop-color="#CCFBF1" stop-opacity="0"/>
</radialGradient>
<filter id="shadowServer" x="-40%" y="-40%" width="180%" height="180%">
<feDropShadow dx="0" dy="9" stdDeviation="11" flood-color="#042F2E" flood-opacity="0.45"/>
</filter>
</defs>
<rect width="512" height="512" rx="112" fill="url(#bg)"/>
<rect x="1.5" y="1.5" width="509" height="509" rx="110.5" fill="none" stroke="#5EEAD4" stroke-width="3" opacity="0.5"/>
<circle cx="256" cy="256" r="225" fill="url(#halo)"/>
<g filter="url(#shadowServer)">
<!-- link lines: one port, one fan, drawn first so shapes sit on top -->
<g fill="none" stroke="#99F6E4" stroke-width="8" stroke-linecap="round" opacity="0.8">
<path d="M256 318 V344"/>
<path d="M256 344 L144 362"/>
<path d="M256 344 L256 362"/>
<path d="M256 344 L368 362"/>
</g>
<!-- server cabinet -->
<g>
<rect x="180" y="104" width="152" height="214" rx="22" fill="#ECFDF5"/>
<g fill="#0F766E">
<rect x="204" y="134" width="76" height="14" rx="7"/>
<rect x="204" y="168" width="76" height="14" rx="7"/>
<rect x="204" y="202" width="76" height="14" rx="7"/>
<rect x="204" y="236" width="76" height="14" rx="7"/>
</g>
<circle cx="302" cy="141" r="7" fill="#22D3EE"/>
<g fill="#FBBF24">
<circle cx="302" cy="175" r="7"/>
<circle cx="302" cy="209" r="7"/>
<circle cx="302" cy="243" r="7"/>
</g>
<rect x="204" y="278" width="104" height="18" rx="9" fill="#0F766E"/>
</g>
<!-- three clients, each with an amber folder -->
<g>
<g fill="#ECFDF5">
<rect x="112" y="362" width="64" height="46" rx="12"/>
<rect x="224" y="362" width="64" height="46" rx="12"/>
<rect x="336" y="362" width="64" height="46" rx="12"/>
</g>
<g fill="#FBBF24">
<path d="M132 376 h10 l4 5 h10 a3 3 0 0 1 3 3 v11 a3 3 0 0 1 -3 3 h-24 a3 3 0 0 1 -3 -3 v-16 a3 3 0 0 1 3 -3 Z"/>
<path d="M244 376 h10 l4 5 h10 a3 3 0 0 1 3 3 v11 a3 3 0 0 1 -3 3 h-24 a3 3 0 0 1 -3 -3 v-16 a3 3 0 0 1 3 -3 Z"/>
<path d="M356 376 h10 l4 5 h10 a3 3 0 0 1 3 3 v11 a3 3 0 0 1 -3 3 h-24 a3 3 0 0 1 -3 -3 v-16 a3 3 0 0 1 3 -3 Z"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

+37
View File
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512" role="img" aria-labelledby="title desc">
<title id="title">sourcedock.dev, the self-hosted dock where source berths</title>
<desc id="desc">A dark crate on a steel badge with a glowing amber mouth across its top and amber code brackets on its doors, an opened source container.</desc>
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#CBD5E1"/>
<stop offset="1" stop-color="#64748B"/>
</linearGradient>
<filter id="shadowCrate" x="-40%" y="-40%" width="180%" height="180%">
<feDropShadow dx="0" dy="9" stdDeviation="11" flood-color="#1E293B" flood-opacity="0.45"/>
</filter>
</defs>
<rect width="512" height="512" rx="112" fill="url(#bg)"/>
<rect x="1.5" y="1.5" width="509" height="509" rx="110.5" fill="none" stroke="#F8FAFC" stroke-width="3" opacity="0.5"/>
<g filter="url(#shadowCrate)">
<rect x="112" y="386" width="288" height="14" rx="7" fill="#334155"/>
<rect x="240" y="176" width="32" height="28" rx="6" fill="#F8FAFC"/>
<rect x="249" y="176" width="14" height="20" rx="4" fill="#FBBF24"/>
<rect x="128" y="196" width="256" height="44" rx="20" fill="#FBBF24"/>
<rect x="138" y="200" width="236" height="8" rx="4" fill="#F8FAFC" opacity="0.85"/>
<rect x="128" y="216" width="256" height="170" rx="24" fill="#1E293B"/>
<circle cx="150" cy="228" r="7" fill="#E2E8F0"/>
<circle cx="362" cy="228" r="7" fill="#E2E8F0"/>
<g fill="#E2E8F0">
<rect x="140" y="336" width="20" height="20" rx="4"/>
<rect x="352" y="336" width="20" height="20" rx="4"/>
</g>
<rect x="253" y="244" width="6" height="134" fill="#CBD5E1"/>
<g fill="#FBBF24">
<path d="M232 267 L198 301 L232 335 L246 321 L226 301 L246 281 Z"/>
<path d="M280 267 L314 301 L280 335 L266 321 L286 301 L266 281 Z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB