@natjswenson/devlog 0.11.2 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -15
- package/image-style/style-guide.example.md +37 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,21 +2,57 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@natjswenson/devlog` are documented here.
|
|
4
4
|
|
|
5
|
-
## 0.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
5
|
+
## 0.12.0 (2026-07-28) — five composition slots; stop defaulting to before/after
|
|
6
|
+
|
|
7
|
+
Minor rather than patch: this adds three new named composition slots, so covers
|
|
8
|
+
generated after it will legitimately look different from covers generated before.
|
|
9
|
+
Style-guide prose only — no code changed.
|
|
10
|
+
|
|
11
|
+
- **Added: three composition slots**, taking the set from two to five. *Axis /
|
|
12
|
+
timeline* for posts about ordering, timing or a race; *nested / containment*
|
|
13
|
+
for scope, sandboxing, or a thing living inside a thing; *field / distribution*
|
|
14
|
+
for many items, sampling, coverage, or one anomaly among many.
|
|
15
|
+
- **Fixed: compositional monoculture across a run.** Two-node before/after fits
|
|
16
|
+
almost any post *badly*, because nearly anything can be framed as a
|
|
17
|
+
transformation — so it was the slot the model kept reaching for. Fifty covers
|
|
18
|
+
that are each individually fine but all split-scene-with-a-connecting-line read
|
|
19
|
+
as one template with the labels swapped. That is the anti-similarity failure at
|
|
20
|
+
the level of the whole publication rather than the individual cover, which
|
|
21
|
+
nothing was checking for. The guide now requires identifying which slot each
|
|
22
|
+
reference cover from `cover-context` used, and picking a different one if two or
|
|
23
|
+
more already share the intended slot.
|
|
24
|
+
- **Added: no rounded incidental shapes.** The no-rounded-corners rule now names
|
|
25
|
+
the shapes reached for without thinking — speech bubbles, callout balloons, pill
|
|
26
|
+
badges, tooltips, rounded terminal chrome — and says to check every `rx`/`ry`
|
|
27
|
+
and `border-radius` before rendering. One rounded bubble in an otherwise square
|
|
28
|
+
composition collapses the cover into web-app chrome.
|
|
29
|
+
- **Added: never print a number the post did not state.** A figure that looks like
|
|
30
|
+
a measurement ("0 edits left", "3x faster", "~40ms") must appear literally in the
|
|
31
|
+
`## Shipped` text or the summary; fair entailment is not enough, because set in
|
|
32
|
+
mono on a cover it reads as something measured, and a reader who goes looking
|
|
33
|
+
for it will not find it. When the point is zero, draw the absence rather than
|
|
34
|
+
asserting a count.
|
|
35
|
+
|
|
36
|
+
## 0.11.2 (2026-07-28) — attempted npm-page fix; did NOT work
|
|
37
|
+
|
|
38
|
+
- **Attempted and failed: making npmjs.com render the README.** 0.11.1 put
|
|
39
|
+
README.md, LICENSE and CHANGELOG.md into the tarball (verified by downloading
|
|
40
|
+
the published artifact), which fixed what `npm install` delivers. This release
|
|
41
|
+
additionally staged those files into the package directory before
|
|
42
|
+
`npm publish` was invoked, on the theory that npm populates the registry
|
|
43
|
+
manifest's `readme` field from disk at that point. **It did not work.** After
|
|
44
|
+
publishing, `npm view <pkg> readme` still returns the literal string
|
|
45
|
+
`ERROR: No README data found!` for both packages.
|
|
46
|
+
That field appears to be sticky: it was set once by an early release that had
|
|
47
|
+
no README, and republishing with one present does not overwrite it. Since
|
|
48
|
+
npmjs.com only falls back to reading the tarball when the field is *absent*
|
|
49
|
+
(compare `zod`, which renders fine with none at all), the stale error string
|
|
50
|
+
keeps winning.
|
|
51
|
+
The ineffective staging step was reverted in the release workflow; the
|
|
52
|
+
`prepack` hook stays, because the tarball fix is real and verified. **The npm
|
|
53
|
+
web page for both packages is still blank** — an open issue, likely needing
|
|
54
|
+
npm support to clear the cached field.
|
|
55
|
+
Code unchanged in both skills.
|
|
20
56
|
|
|
21
57
|
## 0.11.1 (2026-07-28) — publish the README, LICENSE and CHANGELOG to npm
|
|
22
58
|
|
|
@@ -82,15 +82,39 @@ Never leave the band empty under a one-line headline. Whitespace is part of the
|
|
|
82
82
|
only when it's *between* composed elements — a gap with nothing on either side of it is
|
|
83
83
|
just a hole.
|
|
84
84
|
|
|
85
|
-
**
|
|
85
|
+
**Five named composition slots** — pick one per post:
|
|
86
86
|
- **Single centered hero** — one freehand mechanism, nothing else, inside the hero zone.
|
|
87
87
|
- **Two-node before/after** — a left node, a right node, and a connecting line, all
|
|
88
88
|
three freehand shapes (never catalog icons) — for a post about a transformation or a
|
|
89
89
|
fix.
|
|
90
|
+
- **Axis / timeline** — one horizontal (or vertical) run with marks, labels, and events
|
|
91
|
+
positioned along it. For anything about *ordering*, *timing*, or *a race*: what fired
|
|
92
|
+
when, what arrived late, what overlapped. The marks carry the meaning, not boxes.
|
|
93
|
+
- **Nested / containment** — one shape inside another, or a stack of layers, showing
|
|
94
|
+
what wraps what, what's isolated from what, or where a boundary sits. For posts about
|
|
95
|
+
scope, sandboxing, encapsulation, or a thing living inside a thing.
|
|
96
|
+
- **Field / distribution** — many small marks whose *arrangement* is the point: a
|
|
97
|
+
scatter, a cluster with an outlier, a grid with holes, a shape emerging from noise.
|
|
98
|
+
For posts about many items, sampling, coverage, or one anomaly among many.
|
|
90
99
|
|
|
91
100
|
These are placement/proportion guidance, not literal templates — the actual shapes
|
|
92
101
|
inside each slot are still freehand per post.
|
|
93
102
|
|
|
103
|
+
**Do not default to two-node.** It is the easiest slot to reach for and it fits almost
|
|
104
|
+
any post *badly*, because nearly everything can be framed as before/after. That framing
|
|
105
|
+
is the single biggest threat to this set: fifty covers that are each individually fine
|
|
106
|
+
but all split-scene-with-a-connecting-line read as one template with the labels swapped,
|
|
107
|
+
which is the anti-similarity failure at the level of the whole publication rather than
|
|
108
|
+
the individual cover.
|
|
109
|
+
|
|
110
|
+
So, before you commit to a slot: **look at the reference covers `cover-context` handed
|
|
111
|
+
you and identify which slot each one used.** If two or more of them used the slot you
|
|
112
|
+
were about to pick, pick a different one — and only override that if the post's mechanism
|
|
113
|
+
genuinely cannot be drawn any other way, which is rarer than it feels. Reach for
|
|
114
|
+
single-centered-hero more often than instinct suggests; one well-drawn mechanism with
|
|
115
|
+
nothing beside it is usually stronger than a comparison, and it is the slot most likely
|
|
116
|
+
to be under-used across a long run.
|
|
117
|
+
|
|
94
118
|
**A third option, when the post is genuinely about code or a terminal session:** the
|
|
95
119
|
`.term` panel treatment (see Palette below) may fill some or all of `#hero-zone` instead
|
|
96
120
|
of a freehand mechanism — a real, believable command/output snippet drawn from the
|
|
@@ -258,13 +282,24 @@ summary as on-image text.
|
|
|
258
282
|
edges, fold lines, or any texture overlay — the paper is a flat hex, not a vintage
|
|
259
283
|
poster prop.
|
|
260
284
|
- Don't round any corner or drop any shadow, on the illustration or anywhere else on the
|
|
261
|
-
cover — PRESS structure comes from rules and whitespace, never rounded chrome.
|
|
285
|
+
cover — PRESS structure comes from rules and whitespace, never rounded chrome. This
|
|
286
|
+
includes *incidental* shapes you reach for without thinking: speech bubbles, callout
|
|
287
|
+
balloons, pill badges, tooltips, rounded terminal chrome. A speech bubble is a
|
|
288
|
+
rectangle with a triangular tail, not a lozenge. Check every `rx`/`ry` on an SVG rect
|
|
289
|
+
and every `border-radius` before you render — a single rounded bubble in an otherwise
|
|
290
|
+
square composition is the tell that collapses the whole cover into web-app chrome.
|
|
262
291
|
- Don't let orange spread across the cover — one signature moment (see The accent law),
|
|
263
292
|
never orange as a fill color for multiple shapes, never a background wash.
|
|
264
293
|
- Don't set the headline, eyebrow, or numerals in the serif voice — that voice is for
|
|
265
294
|
commentary only; structure is always the display face.
|
|
266
295
|
- Don't invent editorial props that aren't backed by real data: no fabricated issue
|
|
267
296
|
numbers, no barcodes, no pull-quotes that aren't an actual quote from the post.
|
|
297
|
+
- Don't print a number the post didn't state. A figure that *looks* like a measurement
|
|
298
|
+
("0 edits left", "3x faster", "~40ms") must appear literally in the `## Shipped` text
|
|
299
|
+
or the summary. A fair entailment is not enough: once it's set in mono on the cover it
|
|
300
|
+
reads as something that was measured, and a reader who goes looking for it in the post
|
|
301
|
+
won't find it. If the point is "none" or "zero," draw the absence — an empty frame, a
|
|
302
|
+
severed line, a gap where marks used to be — rather than asserting a count.
|
|
268
303
|
- Don't leave old terminal furniture lying around outside a `.term` panel — no blinking
|
|
269
304
|
cursor, no bare `_` suffix, no stray `$` prompt as decoration. The dark palette now
|
|
270
305
|
belongs to exactly one place, the `.term` panel, and only when it's real code.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@natjswenson/devlog",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Release dev log generator \u2014 Claude Code skill + preview app for publishing version-release dev logs, written in your voice, to your site",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Nate Swenson",
|