add PR #3805 saga, unbury script, contributor decay diagram, looping SVG animations, CLAUDE.md style guide

expand "our" section: real Pylons org stats (28 lifetime, 4 active), PR rejection & pivot to downstream migration of 33 repos, BDFL commentary. embed unbury.py source & downloadable file. new contributor-decay diagram. update load-bearing diagram with org-wide data. fix #333333 text on gold nodes. convert all 8 SVG animations from one-shot to infinite loop (13s hold, fade out, restart). add unturf SVG diagram style guide to CLAUDE.md.
This commit is contained in:
russell@unturf.com 2026-03-04 14:22:00 -05:00
parent 66f7f3d9d3
commit cf92f1f613
13 changed files with 938 additions and 212 deletions

View file

@ -221,6 +221,65 @@ venv/bin/python lib/tag_stats.py 5 # only tags with 5+ posts
- Tags should be capitalized (e.g., "Python" not "python")
- Avoid single-use tags; consolidate into broader categories
## UNTURF SVG DIAGRAM STYLE GUIDE
**All diagrams on russell.ballestrini.net & permacomputer sites follow this style.**
### Color Palette (dark/light theme compatible)
- **Background**: always `transparent` (never white or black)
- **Node fills**: medium-dark saturated colors with `fill="white"` text
- Blues: `#4a90d9`, `#1e88e5`, `#0d47a1`, `#1a237e`
- Purples: `#9370db`, `#7b68ee`, `#6c5ce7`, `#4a148c`, `#ab47bc`
- Greens: `#7cb342`, `#1b5e20`, `#00897b`
- Teals: `#00acc1`, `#006064`
- Oranges: `#e65100`, `#e8834a`, `#ff6f00`
- Reds: `#bf360c`, `#b71c1c`, `#880e4f`
- Dark neutrals: `#2c3e50`, `#34495e`, `#546e7a`, `#616161`, `#4e342e`
- **Gold/yellow nodes** (`#f9a825`, `#fdd835`): use `fill="#1a1a1a"` text (NOT `#333333`)
- **Node strokes**: `#999999` (never black)
- **Edges/arrows**: `#aaaaaa` stroke & fill
- **Floating text labels**: `#cccccc` (cluster labels, "translates to", etc.)
- **Accent text**: `#ef5350` (red warnings/claims), `#ff6f00` (orange highlights), `#66ff66` (green positive)
- **Dashed cluster borders**: `stroke="#999999" stroke-dasharray="5,2"`
- **Plaintext labels** (no background): `fill="transparent"` polygon, text `fill="#cccccc"`
### SVG Dimensions
- Root SVG: `width="100%" height="100%"` with `viewBox` (never fixed pt/px)
- RST embed: `:width: 100%` and `:align: center`
### Animation Pattern (CSS only, no JS)
```xml
<defs>
<style type="text/css">
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.anim { opacity: 0; animation: fadeIn 0.8s ease-out forwards; }
.d0 { animation-delay: 0s; }
.d1 { animation-delay: 3s; }
/* ... increment by 2-3s per group */
</style>
</defs>
```
- Wrap each conceptual group in `<g class="anim dN">`
- Groups fade in sequentially (3s apart for major concepts, 1-2s for chain elements)
- Keep total animation under 30s
### Graphviz Dot Conventions
```dot
bgcolor="transparent"
node [fontname="Helvetica" fontsize=12 style="filled,rounded" shape=box color="#999999"]
edge [color="#AAAAAA" arrowsize=0.6 fontcolor="#AAAAAA"]
```
### Post-Processing Checklist
1. Strip `<title>` tags: `sed -i 's/<title>[^<]*<\/title>//g'` (prevents tooltip artifacts)
2. Replace fixed dimensions: `width="100%" height="100%"` keeping viewBox
3. Change cluster label fontcolor from `#aaaaaa` to `#cccccc`
4. Wrap groups with animation classes
5. Verify: no `fill="black"`, no `stroke="black"`, no `fill="#333333"`
## RUSSELL'S PROJECT TECH STACKS
**NEVER assume or guess what language/framework a project uses. Check the actual repo.**