/** * Extra gallery motions. Kept beside the signature catalog so the core * file stays the event matrix, not a 50-entry wall of frames. */ import type { MotionDef } from "./types.ts"; export const EXTRA_MOTIONS: readonly MotionDef[] = [ { id: "ember-drift", name: "Ember Drift", category: "wishcraft", kind: "frames", channels: ["workingGlyph", "ambient"], colorRole: "motionHot", fallbackGlyph: "*", loop: "ambient", frames: ["·", "✦", "·", " "], description: "Soft lantern sparks while the session waits.", }, { id: "sigil-spark", name: "Sigil Spark", category: "wishcraft", kind: "frames", channels: ["deckTransient", "borderEmphasis"], colorRole: "accent", fallbackGlyph: "+", loop: "finite", frames: ["·", "+", "✦", "+"], description: "A brief sigil flash on capture or insert.", }, { id: "lantern-pulse", name: "Lantern Pulse", category: "wishcraft", kind: "generator", channels: ["workingGlyph", "signal"], colorRole: "motionHot", fallbackGlyph: "o", loop: "while-active", generator: { geometry: "ember", trail: 2, intervalMs: 110, ease: "breathe" }, description: "Breathing ember for long thinks.", }, { id: "knot-bind", name: "Knot Bind", category: "wishcraft", kind: "generator", channels: ["signal"], colorRole: "primary", fallbackGlyph: "x", loop: "while-active", generator: { geometry: "stitch", trail: 3, direction: "reverse", intervalMs: 95, ease: "linear" }, description: "A knot tightens toward the active tool.", }, { id: "vellum-stroke", name: "Vellum Stroke", category: "wishcraft", kind: "generator", channels: ["signal"], colorRole: "text", fallbackGlyph: "-", loop: "while-active", generator: { geometry: "write", intervalMs: 80, ease: "linear" }, description: "Ink line grows as the model writes.", }, { id: "crucible-seethe", name: "Crucible Seethe", category: "wishcraft", kind: "generator", channels: ["signal", "panelIndicator"], colorRole: "warning", fallbackGlyph: "=", loop: "while-active", generator: { geometry: "liquid", intervalMs: 130, ease: "pulse" }, description: "Melt level rises with tool heat.", }, { id: "star-pulse", name: "Star Pulse", category: "wishcraft", kind: "frames", channels: ["workingGlyph", "deckTransient"], colorRole: "motionHot", fallbackGlyph: "*", loop: "finite", frames: ["·", "✦", "✧", "✦"], description: "Constellation node flash.", }, { id: "wisp-veil", name: "Wisp Veil", category: "wishcraft", kind: "frames", channels: ["ambient"], colorRole: "motionDim", fallbackGlyph: ".", loop: "ambient", frames: [".", "·", "˙", "·"], description: "Barely-there idle veil.", }, { id: "rune-trace", name: "Rune Trace", category: "wishcraft", kind: "generator", channels: ["signal", "deckTransient"], colorRole: "accent", fallbackGlyph: "+", loop: "finite", generator: { geometry: "bloom", radius: 1, intervalMs: 60, ease: "pulse" }, description: "Geometry traces and settles.", }, { id: "forge-spark", name: "Forge Spark", category: "wishcraft", kind: "generator", channels: ["workingGlyph", "signal"], colorRole: "motionHot", fallbackGlyph: "#", loop: "while-active", generator: { geometry: "heat", trail: 2, intervalMs: 70, ease: "linear" }, description: "Short heat sparks on the rail.", }, { id: "thread-pull", name: "Thread Pull", category: "wishcraft", kind: "generator", channels: ["signal"], colorRole: "secondary", fallbackGlyph: "-", loop: "while-active", generator: { geometry: "stitch", trail: 1, intervalMs: 120, ease: "linear" }, description: "A single thread is drawn across the lane.", }, { id: "glass-glint", name: "Glass Glint", category: "wishcraft", kind: "generator", channels: ["signal"], colorRole: "motionHot", fallbackGlyph: ">", loop: "while-active", generator: { geometry: "refract", trail: 1, intervalMs: 100, ease: "linear" }, description: "A glint walks the capsule edge.", }, { id: "infinity-walk", name: "Infinity Walk", category: "matrix", kind: "frames", channels: ["workingGlyph"], colorRole: "accent", fallbackGlyph: "8", loop: "while-active", frames: ["∞", "8", "∞", "o"], description: "Figure-eight walk for thinking.", }, { id: "lunar-phase", name: "Lunar Phase", category: "matrix", kind: "frames", channels: ["workingGlyph", "ambient"], colorRole: "secondary", fallbackGlyph: "O", loop: "ambient", frames: ["●", "◕", "◑", "◔", "○", "◔", "◑", "◕"], description: "Slow moon phases for night work.", }, { id: "wing-beat", name: "Wing Beat", category: "matrix", kind: "frames", channels: ["workingGlyph"], colorRole: "secondary", fallbackGlyph: "^", loop: "while-active", frames: ["⟨ ⟩", "‹ ›", "· ·", "‹ ›"], description: "Paired wings keep time.", }, { id: "petal-open", name: "Petal Open", category: "matrix", kind: "frames", channels: ["deckTransient"], colorRole: "accent", fallbackGlyph: "*", loop: "finite", frames: [".", "*", "✦", "*"], description: "Petals open once and rest.", }, { id: "constellation", name: "Constellation", category: "matrix", kind: "generator", channels: ["signal", "deckTransient"], colorRole: "motionHot", fallbackGlyph: "*", loop: "while-active", generator: { geometry: "path", intervalMs: 140, ease: "linear" }, description: "Stars light in path order.", }, { id: "meridian", name: "Meridian", category: "matrix", kind: "generator", channels: ["signal"], colorRole: "secondary", fallbackGlyph: "|", loop: "while-active", generator: { geometry: "orbit", radius: 1, intervalMs: 160, ease: "breathe" }, description: "A meridian arc crosses the lane.", }, { id: "eclipse", name: "Eclipse", category: "matrix", kind: "frames", channels: ["workingGlyph", "panelIndicator"], colorRole: "textMuted", fallbackGlyph: "O", loop: "while-active", frames: ["○", "◐", "●", "◑"], description: "Cover and uncover the working glyph.", }, { id: "gyre", name: "Gyre", category: "matrix", kind: "generator", channels: ["workingGlyph", "signal"], colorRole: "accent", fallbackGlyph: "@", loop: "while-active", generator: { geometry: "orbit", radius: 3, trail: 2, clockwise: true, intervalMs: 90, ease: "linear" }, description: "Tight orbital gyre.", }, { id: "helix-phase", name: "Helix Phase", category: "procedural", kind: "frames", channels: ["workingGlyph", "signal"], colorRole: "motionTrail", fallbackGlyph: "%", loop: "while-active", frames: ["⠁", "⠉", "⠋", "⠛", "⠟", "⠿", "⠟", "⠛"], description: "Intertwined helix cycle.", }, { id: "wave-stream", name: "Wave Stream", category: "procedural", kind: "generator", channels: ["signal"], colorRole: "primary", fallbackGlyph: "~", loop: "while-active", generator: { geometry: "wave", trail: 6, intervalMs: 75, ease: "linear" }, description: "Progressive sine along the rail.", }, { id: "ripple-ring", name: "Ripple Ring", category: "procedural", kind: "generator", channels: ["signal", "panelIndicator"], colorRole: "motionTrail", fallbackGlyph: "~", loop: "finite", generator: { geometry: "wave", trail: 3, intervalMs: 55, ease: "pulse" }, description: "One ripple, then rest.", }, { id: "orbit-spin", name: "Orbit Spin", category: "procedural", kind: "generator", channels: ["workingGlyph"], colorRole: "secondary", fallbackGlyph: "o", loop: "while-active", generator: { geometry: "orbit", radius: 1, intervalMs: 80, ease: "linear" }, description: "Fast orbital spin for tools.", }, { id: "cascade", name: "Cascade", category: "procedural", kind: "frames", channels: ["signal"], colorRole: "motionTrail", fallbackGlyph: "=", loop: "while-active", frames: ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█", "▇", "▅"], description: "Falling levels down the lane.", }, { id: "braid", name: "Braid", category: "procedural", kind: "frames", channels: ["workingGlyph", "signal"], colorRole: "primary", fallbackGlyph: "x", loop: "while-active", frames: ["╱", "╳", "╲", "╳"], description: "Two strands braid while work runs.", }, { id: "pulse-train", name: "Pulse Train", category: "procedural", kind: "frames", channels: ["panelIndicator", "workingGlyph"], colorRole: "motionHot", fallbackGlyph: "|", loop: "while-active", frames: ["▏", "▎", "▌", "▎"], description: "Regular pulses for long jobs.", }, { id: "sawtooth", name: "Sawtooth", category: "procedural", kind: "generator", channels: ["signal"], colorRole: "warning", fallbackGlyph: "/", loop: "while-active", generator: { geometry: "linear", trail: 4, intervalMs: 70, ease: "linear" }, description: "Hard ramp across the rail.", }, { id: "dots", name: "Dots", category: "classic", kind: "frames", channels: ["workingGlyph"], colorRole: "textMuted", fallbackGlyph: ".", loop: "while-active", frames: [". ", ".. ", "...", " ..", " .", " "], description: "Classic waiting dots.", }, { id: "pipe-spin", name: "Pipe Spin", category: "classic", kind: "frames", channels: ["workingGlyph"], colorRole: "textMuted", fallbackGlyph: "|", loop: "while-active", frames: ["|", "/", "-", "\\"], description: "ASCII pipe spinner.", }, { id: "arrows", name: "Arrows", category: "classic", kind: "frames", channels: ["workingGlyph", "signal"], colorRole: "primary", fallbackGlyph: ">", loop: "while-active", frames: ["> ", ">> ", ">>>", " >>", " >"], description: "Chevrons travel forward.", }, { id: "clock", name: "Clock", category: "classic", kind: "frames", channels: ["workingGlyph"], colorRole: "textMuted", fallbackGlyph: "o", loop: "while-active", frames: ["o", "O", "0", "O"], description: "Phase clock in ASCII-safe glyphs.", }, { id: "triangle", name: "Triangle", category: "classic", kind: "frames", channels: ["workingGlyph"], colorRole: "accent", fallbackGlyph: "^", loop: "while-active", frames: ["▲", "▶", "▼", "◀"], description: "Rotating triangle.", }, { id: "hash-fill", name: "Hash Fill", category: "classic", kind: "frames", channels: ["panelIndicator"], colorRole: "primary", fallbackGlyph: "#", loop: "while-active", frames: ["# ", "## ", "### ", "####"], description: "ASCII fill bar.", }, { id: "box-spin", name: "Box Spin", category: "classic", kind: "frames", channels: ["workingGlyph"], colorRole: "textMuted", fallbackGlyph: "+", loop: "while-active", frames: ["┌", "┐", "┘", "└"], description: "Corner-box spinner.", }, { id: "nimbus", name: "Nimbus", category: "wishcraft", kind: "frames", channels: ["workingGlyph", "ambient"], colorRole: "motionHot", fallbackGlyph: "O", loop: "ambient", frames: ["·", "∘", "○", "◌", "○", "∘"], description: "Calm phase drift — a softer alternative to wisp for quiet presets.", }, { id: "copper-switch", name: "Copper Switch", category: "wishcraft", kind: "frames", channels: ["signal", "deckTransient", "borderEmphasis"], colorRole: "accent", fallbackGlyph: "|", loop: "finite", frames: ["▁", "▃", "▅", "▇", "▅", "▃", "▁"], description: "A one-shot rising-and-falling bar on tool end or success — no lingering motion.", }, ];