aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers/plans/2026-10-23-companion.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-23 13:58:18 +0200
committerDanilo M. <danix@danix.xyz>2026-10-23 13:58:18 +0200
commit2b2e8a0ea6345cbf16741154dc326bf8c7ba312a (patch)
tree8991e06939e940319984f836d699890f91b27f1d /docs/superpowers/plans/2026-10-23-companion.md
parent14a2c755d6b4488c8572dcfa5d64f673fae9cedc (diff)
downloadquickshell-2b2e8a0ea6345cbf16741154dc326bf8c7ba312a.tar.gz
quickshell-2b2e8a0ea6345cbf16741154dc326bf8c7ba312a.zip
companion: the dress set, a shoved frame, several references per frame
The dress frames are made. What the tries taught is in frames.txt beside each line: klein turns the blindfold into an eye mask under strong expressions, so those take it off (BARE) and the rest name it as one solid band (EYES); standing "shoved" read as walking in four seeds, so it is airborne, edited from the seed-7 attempt kept in candidates/; a back view fits "watch", her watching the screen while the user types; klein would neither draw the game's Virtuous Treaty nor move a sword, nor turn her three-quarters, so muse takes only the arms of her official art. gen-frames now takes several references per frame (a + b): the first is edited, the rest are images the prompt points at. The leotard set loses the blindfold too. shoved gets a frame of its own instead of mad: in the spec's table and the plan's Mood.js and its test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'docs/superpowers/plans/2026-10-23-companion.md')
-rw-r--r--docs/superpowers/plans/2026-10-23-companion.md5
1 files changed, 4 insertions, 1 deletions
diff --git a/docs/superpowers/plans/2026-10-23-companion.md b/docs/superpowers/plans/2026-10-23-companion.md
index 371e9fa..3543b88 100644
--- a/docs/superpowers/plans/2026-10-23-companion.md
+++ b/docs/superpowers/plans/2026-10-23-companion.md
@@ -281,6 +281,9 @@ for (let i = 0; i < ladder.length; i++) {
assert.strictEqual(state(all), ladder[i][0], "everything from " + ladder[i][0] + " down");
}
+// Shoved has a frame of its own: knocked off balance, glaring at the balloon.
+assert.deepStrictEqual(M.pick(calm({ shoved: true })), { state: "shoved", frame: "shoved" });
+
// Idle levels and their frames.
assert.deepStrictEqual(M.pick(calm({ idle: 1 })), { state: "bored", frame: "sleepy" });
assert.deepStrictEqual(M.pick(calm({ idle: 2 })), { state: "yawn", frame: "yawn" });
@@ -396,7 +399,7 @@ function pick(s) {
if (since < T.destruct) return st("destruct", "base");
if (since < T.destruct + T.scorched) return st("scorched", "scorched");
if (s.dodging) return st("dodge", "base");
- if (s.shoved) return st("shoved", "mad");
+ if (s.shoved) return st("shoved", "shoved");
if (s.recording) return st("listen", "listen");
if (s.busy) return st("think", "think");
if (s.now - s.repliedAt < T.waveHold) return st("wave", "wave");