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
4 changes: 2 additions & 2 deletions brand/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,12 @@ from those verdicts:

The brand face is **Rubik 700** — chosen (2026-08) by a three-lens panel over fourteen
candidate faces and the incumbent: its rounded stems and terminals share the pine's corner
language, warm enough for kishi, credible enough for Latch, and a living 300–900 variable
language, warm enough for consumer work, credible enough for Latch, and a living 300–900 variable
family for headings. The wordmark is set in Rubik 700 at +0.02em tracking (near-neutral, per the blind selection verdict) and shipped as
outlines (no font dependency); regenerate it with
[`design/gen-wordmark.mjs`](design/gen-wordmark.mjs) (vendored OFL font in
`design/fonts/`). Use Rubik for headings in brand materials; body copy stays system.
Product UIs keep their own voices (kishi and Latch run JetBrains Mono as UI identity —
Product UIs keep their own voices (Latch runs JetBrains Mono as UI identity —
deliberately divergent from the umbrella brand).

## Usage
Expand Down
5 changes: 2 additions & 3 deletions brand/design/build-boards.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ ${FOOT}`);
${eyebrow('Foundations · type & color pass · August 2026')}
<div style="display: flex; flex-direction: column; gap: 14px">
<h2>The face</h2>
<p style="font-size: 13px; line-height: 1.55; margin: 0; max-width: 66ch; text-wrap: pretty">The brand face is <strong>Rubik 700</strong> — chosen by a three-lens panel (personality, mark harmony, production) over fourteen candidate faces and the incumbent: its rounded stems and terminals share the pine&#39;s corner language, warm enough for kishi, credible enough for Latch, a living 300–900 variable family for headings. The wordmark is set in Rubik 700 at +0.02em tracking and shipped as outlines (no font dependency); the generator and vendored OFL font live in brand/design/. Product UIs keep their own voices (kishi and Latch run JetBrains Mono as UI identity — deliberately divergent from the umbrella brand).</p>
<p style="font-size: 13px; line-height: 1.55; margin: 0; max-width: 66ch; text-wrap: pretty">The brand face is <strong>Rubik 700</strong> — chosen by a three-lens panel (personality, mark harmony, production) over fourteen candidate faces and the incumbent: its rounded stems and terminals share the pine&#39;s corner language, warm enough for consumer work, credible enough for Latch, a living 300–900 variable family for headings. The wordmark is set in Rubik 700 at +0.02em tracking and shipped as outlines (no font dependency); the generator and vendored OFL font live in brand/design/. Product UIs keep their own voices (Latch runs JetBrains Mono as UI identity — deliberately divergent from the umbrella brand).</p>
<div style="font-family: Rubik, sans-serif; font-weight: 700; font-size: 30px; letter-spacing: 0.02em">AaBbCcDdEe 0123456789</div>
<div style="display: flex; flex-direction: column; gap: 10px; background: #ffffff; border: 1px solid rgba(32,32,32,0.08); border-radius: 14px; padding: 22px">
<div style="font-size: 11px; color: #6a6a68; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600">Proof — outlines vs the live face</div>
Expand Down Expand Up @@ -295,8 +295,7 @@ ${FOOT}`);
<div style="display: flex; flex-direction: column; gap: 14px">
<h2>Browser tabs</h2>
<div style="background: #202124; border-radius: 14px 14px 0 0; padding: 10px 12px 0; display: flex; gap: 4px">
${tab('kishi — show up as the most you', true)}
${tab('Latch — grip-test your repo')}
${tab('Latch — grip-test your repo', true)}
${tab('Bly — your career agent')}
</div>
</div>
Expand Down
3 changes: 1 addition & 2 deletions brand/design/canvas/Applications.dc.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ <h2>Org profile</h2>
<div style="display: flex; flex-direction: column; gap: 14px">
<h2>Browser tabs</h2>
<div style="background: #202124; border-radius: 14px 14px 0 0; padding: 10px 12px 0; display: flex; gap: 4px">
<div style="display: flex; align-items: center; gap: 8px; background: #2d2d30; border-radius: 8px 8px 0 0; padding: 8px 14px; font-size: 11.5px; color: #FCFCFC; white-space: nowrap"><svg width="16" style="display:block;height:auto" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 834 834"> <rect width="834" height="834" rx="186" fill="#202020"/> <g transform="translate(106.2,65.8) scale(1.265)"><path fill="#FFD100" d="M249.4,78.9Q270.9,40.5 286.8,81.5L342.7,226.1Q350.7,246.6 328.7,245.1L185.1,235Q163.1,233.5 173.9,214.3Z"/><path fill="#FFD100" d="M236.9,175Q263.9,140.3 285.8,178.4L413.8,401.1Q424.7,420.2 402.8,418.6L293.1,411Q283.1,410.3 282.4,420.2L279.8,457.2Q278.8,472.1 263.8,471.1L217.9,467.9Q203,466.8 204,451.9L206.6,414.9Q207.3,405 197.3,404.3L87.6,396.6Q65.6,395.1 79.1,377.7Z"/></g> </svg> <span>kishi — show up as the most you</span></div>
<div style="display: flex; align-items: center; gap: 8px; background: transparent; border-radius: 8px 8px 0 0; padding: 8px 14px; font-size: 11.5px; color: #9a9a98; white-space: nowrap"><svg width="16" style="display:block;height:auto" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 834 834"> <rect width="834" height="834" rx="186" fill="#202020"/> <g transform="translate(106.2,65.8) scale(1.265)"><path fill="#FFD100" d="M249.4,78.9Q270.9,40.5 286.8,81.5L342.7,226.1Q350.7,246.6 328.7,245.1L185.1,235Q163.1,233.5 173.9,214.3Z"/><path fill="#FFD100" d="M236.9,175Q263.9,140.3 285.8,178.4L413.8,401.1Q424.7,420.2 402.8,418.6L293.1,411Q283.1,410.3 282.4,420.2L279.8,457.2Q278.8,472.1 263.8,471.1L217.9,467.9Q203,466.8 204,451.9L206.6,414.9Q207.3,405 197.3,404.3L87.6,396.6Q65.6,395.1 79.1,377.7Z"/></g> </svg> <span>Latch — grip-test your repo</span></div>
<div style="display: flex; align-items: center; gap: 8px; background: #2d2d30; border-radius: 8px 8px 0 0; padding: 8px 14px; font-size: 11.5px; color: #FCFCFC; white-space: nowrap"><svg width="16" style="display:block;height:auto" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 834 834"> <rect width="834" height="834" rx="186" fill="#202020"/> <g transform="translate(106.2,65.8) scale(1.265)"><path fill="#FFD100" d="M249.4,78.9Q270.9,40.5 286.8,81.5L342.7,226.1Q350.7,246.6 328.7,245.1L185.1,235Q163.1,233.5 173.9,214.3Z"/><path fill="#FFD100" d="M236.9,175Q263.9,140.3 285.8,178.4L413.8,401.1Q424.7,420.2 402.8,418.6L293.1,411Q283.1,410.3 282.4,420.2L279.8,457.2Q278.8,472.1 263.8,471.1L217.9,467.9Q203,466.8 204,451.9L206.6,414.9Q207.3,405 197.3,404.3L87.6,396.6Q65.6,395.1 79.1,377.7Z"/></g> </svg> <span>Latch — grip-test your repo</span></div>
<div style="display: flex; align-items: center; gap: 8px; background: transparent; border-radius: 8px 8px 0 0; padding: 8px 14px; font-size: 11.5px; color: #9a9a98; white-space: nowrap"><svg width="16" style="display:block;height:auto" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 834 834"> <rect width="834" height="834" rx="186" fill="#202020"/> <g transform="translate(106.2,65.8) scale(1.265)"><path fill="#FFD100" d="M249.4,78.9Q270.9,40.5 286.8,81.5L342.7,226.1Q350.7,246.6 328.7,245.1L185.1,235Q163.1,233.5 173.9,214.3Z"/><path fill="#FFD100" d="M236.9,175Q263.9,140.3 285.8,178.4L413.8,401.1Q424.7,420.2 402.8,418.6L293.1,411Q283.1,410.3 282.4,420.2L279.8,457.2Q278.8,472.1 263.8,471.1L217.9,467.9Q203,466.8 204,451.9L206.6,414.9Q207.3,405 197.3,404.3L87.6,396.6Q65.6,395.1 79.1,377.7Z"/></g> </svg> <span>Bly — your career agent</span></div>
</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions brand/design/canvas/BRAND-BRIEF.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ Whatever direction wins here gets productionized in the repo pipeline
unless a direction demands otherwise).
- **Who:** a tiny human team + a fleet of AI agents, openly AI-built. Register:
"Thoughtful tools, built with care" — calm, warm-competent, craft.
- **Products:** Latch (dev tool, pass/fail scoring UI), Bly (career agent in your inbox),
kishi (consumer dating kit). One umbrella brand over all three. Product UIs keep their
- **Products:** Latch (dev tool, pass/fail scoring UI), Bly (career agent in your inbox).
One umbrella brand over both. (kishi, a consumer kit, was wound down 2026-09-11.) Product UIs keep their
own interior face (JetBrains Mono).
- **Media:** web (light + dark first-class, WCAG AA) and paper (grayscale survival, ink
coverage limits, 12pt body floor).
Expand Down
2 changes: 1 addition & 1 deletion brand/design/canvas/Foundations.dc.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<div style="font-size: 11px; font-weight: 600; letter-spacing: 0.22em; color: #6a6a68; text-transform: uppercase">Foundations · type & color pass · August 2026</div>
<div style="display: flex; flex-direction: column; gap: 14px">
<h2>The face</h2>
<p style="font-size: 13px; line-height: 1.55; margin: 0; max-width: 66ch; text-wrap: pretty">The brand face is <strong>Rubik 700</strong> — chosen by a three-lens panel (personality, mark harmony, production) over fourteen candidate faces and the incumbent: its rounded stems and terminals share the pine&#39;s corner language, warm enough for kishi, credible enough for Latch, a living 300–900 variable family for headings. The wordmark is set in Rubik 700 at +0.02em tracking and shipped as outlines (no font dependency); the generator and vendored OFL font live in brand/design/. Product UIs keep their own voices (kishi and Latch run JetBrains Mono as UI identity — deliberately divergent from the umbrella brand).</p>
<p style="font-size: 13px; line-height: 1.55; margin: 0; max-width: 66ch; text-wrap: pretty">The brand face is <strong>Rubik 700</strong> — chosen by a three-lens panel (personality, mark harmony, production) over fourteen candidate faces and the incumbent: its rounded stems and terminals share the pine&#39;s corner language, warm enough for consumer work, credible enough for Latch, a living 300–900 variable family for headings. The wordmark is set in Rubik 700 at +0.02em tracking and shipped as outlines (no font dependency); the generator and vendored OFL font live in brand/design/. Product UIs keep their own voices (Latch runs JetBrains Mono as UI identity — deliberately divergent from the umbrella brand).</p>
<div style="font-family: Rubik, sans-serif; font-weight: 700; font-size: 30px; letter-spacing: 0.02em">AaBbCcDdEe 0123456789</div>
<div style="display: flex; flex-direction: column; gap: 10px; background: #ffffff; border: 1px solid rgba(32,32,32,0.08); border-radius: 14px; padding: 22px">
<div style="font-size: 11px; color: #6a6a68; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600">Proof — outlines vs the live face</div>
Expand Down
2 changes: 1 addition & 1 deletion brand/design/canvas/canvas.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"annotations": [
{ "id": "brief", "x": 980, "y": -520, "w": 420, "text": "Brand modernization, Aug 2026 — the mark now reads pine-first while keeping the original's rounded geometry, Cyber Yellow, and lean.\nSource of truth: github.com/yellow-pine/.github → brand/. Board sources: brand/design/ in the same repo — edit masters there, rebuild, then refresh these boards." },
{ "id": "panel-verdict", "x": 1420, "y": -520, "w": 400, "text": "Four directions were rendered and scored by a three-lens critique (strategy / production / semantics) with true 16px favicon tests.\nShipped = C's silhouette + B's lean; v2.1 retuned it (deeper tier step, sturdier trunk from A) so ONE mark serves every size." },
{ "id": "rollout", "x": 1900, "y": 1320, "w": 340, "text": "Rollout still open: kishi.fyi / latch.fyi / bly.fyi favicons + headers still serve v1 (they live in grove). Swap them app-by-app using brand/icon.svg." }
{ "id": "rollout", "x": 1900, "y": 1320, "w": 340, "text": "Rollout still open: latch.fyi / bly.fyi favicons + headers still serve v1 (they live in grove). Swap them app-by-app using brand/icon.svg." }
],
"launch": { "view": "canvas" }
}
7 changes: 2 additions & 5 deletions profile/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,12 @@

A small product studio.

Yellow Pine is a small team working alongside AI agents, building focused software. Two hosted
products so far, plus the developer tools we needed ourselves and released.
Yellow Pine is a small team working alongside AI agents, building focused software. One hosted
product and one local-first app so far, plus the developer tools we needed ourselves and released.

- **[Latch](https://latch.fyi)**: scores a public GitHub repository two ways, for AI coding
agents and for human newcomers. Six category scores, a one-line verdict on each, and a
prioritized list of fixes with the score impact of each one.
- **[kishi](https://kishi.fyi)**: turns an honest look at seven parts of a life into a staged
plan you can actually follow. Every step is sourced, and check-ins keep it true as your life
changes.
- **[bly](https://bly.fyi)**: a career agent that runs a job search out of your own inbox, on
your own machine. Free, open source, local-first.
- **[zsh-github-dark](https://github.com/yellow-pine/zsh-github-dark)**: a minimalist zsh and
Expand Down
Loading