/** * Motions recovered from the closed vNext gallery draft. * Visual duplicates of the live catalog are omitted; these ids were not on main. */ import type { MotionDef } from "./types.ts"; export const RECOVERED_MOTIONS: readonly MotionDef[] = [ { id: "ember-trail", name: "Ember Trail", category: "wishcraft", kind: "generator", channels: ["signal", "workingGlyph"], colorRole: "motionHot", fallbackGlyph: "*", loop: "while-active", generator: { geometry: "ember", trail: 5, direction: "forward", intervalMs: 85, ease: "pulse" }, description: "Longer ember wake behind the travelling head.", }, { id: "wisp-drift", name: "Wisp Drift", category: "wishcraft", kind: "frames", channels: ["ambient", "workingGlyph"], colorRole: "motionDim", fallbackGlyph: "o", loop: "ambient", frames: ["·", "o", "O", "o"], description: "Softer phase drift for idle whitespace.", }, { id: "sigil-bloom", name: "Sigil Bloom", category: "wishcraft", kind: "generator", channels: ["signal", "deckTransient"], colorRole: "accent", fallbackGlyph: "+", loop: "finite", generator: { geometry: "bloom", radius: 3, intervalMs: 65, ease: "pulse" }, description: "Expanding sigil that settles on success.", }, { id: "heat-propagate", name: "Heat Propagate", category: "wishcraft", kind: "generator", channels: ["signal", "panelIndicator"], colorRole: "motionHot", fallbackGlyph: "#", loop: "while-active", generator: { geometry: "heat", trail: 5, direction: "forward", intervalMs: 75, ease: "linear" }, description: "Thermal diffusion across block cells.", }, { id: "knot-travel", name: "Knot Travel", category: "wishcraft", kind: "generator", channels: ["signal"], colorRole: "primary", fallbackGlyph: "-", loop: "while-active", generator: { geometry: "stitch", trail: 3, direction: "forward", intervalMs: 95, ease: "linear" }, description: "A tighter travelling knot than stitch-travel.", }, { id: "lantern-glow", name: "Lantern Glow", category: "wishcraft", kind: "frames", channels: ["workingGlyph", "ambient"], colorRole: "motionHot", fallbackGlyph: "*", loop: "ambient", frames: ["·", "◇", "◈", "◆", "◈", "◇"], description: "Lantern flicker without a travelling rail.", }, { id: "forge-pulse", name: "Forge Pulse", category: "wishcraft", kind: "frames", channels: ["workingGlyph", "panelIndicator"], colorRole: "warning", fallbackGlyph: "#", loop: "while-active", frames: ["░", "▒", "▓", "█", "▓", "▒"], description: "Industrial pulse for long tool runs.", }, { id: "mist-veil", name: "Mist Veil", category: "wishcraft", kind: "frames", channels: ["ambient"], colorRole: "motionDim", fallbackGlyph: ".", loop: "ambient", frames: [" ", "·", "˙", "·"], description: "Near-invisible ambient mist.", }, { id: "star-fall", name: "Star Fall", category: "wishcraft", kind: "generator", channels: ["signal", "deckTransient"], colorRole: "motionHot", fallbackGlyph: "*", loop: "while-active", generator: { geometry: "path", intervalMs: 110, ease: "linear" }, description: "Stars drop along constellation edges.", }, { id: "crucible-boil", name: "Crucible Boil", category: "wishcraft", kind: "generator", channels: ["signal", "panelIndicator"], colorRole: "motionHot", fallbackGlyph: "=", loop: "while-active", generator: { geometry: "liquid", intervalMs: 130, ease: "breathe" }, description: "Liquid cells rise and fall with activity.", }, { id: "lunar-orbit", name: "Lunar Orbit", category: "matrix", kind: "generator", channels: ["workingGlyph", "ambient"], colorRole: "secondary", fallbackGlyph: "O", loop: "ambient", generator: { geometry: "orbit", radius: 3, trail: 2, intervalMs: 300, ease: "breathe" }, description: "Slow orbital node for night work.", }, { id: "wing-pulse", name: "Wing Pulse", category: "matrix", kind: "frames", channels: ["workingGlyph"], colorRole: "secondary", fallbackGlyph: "^", loop: "while-active", frames: ["<", "^", ">", "v"], description: "ASCII-friendly dual metronome.", }, { id: "petal-orbit", name: "Petal Orbit", category: "matrix", kind: "frames", channels: ["workingGlyph", "deckTransient"], colorRole: "accent", fallbackGlyph: "*", loop: "finite", frames: ["·", "✧", "✦", "✶", "✦", "✧"], description: "Radial petals that open and close.", }, { id: "constellation-step", name: "Constellation Step", category: "matrix", kind: "generator", channels: ["signal"], colorRole: "motionHot", fallbackGlyph: "*", loop: "while-active", generator: { geometry: "path", intervalMs: 100, ease: "linear" }, description: "Step from node to node on the star map.", }, { id: "moon-phase", name: "Moon Phase", category: "matrix", kind: "frames", channels: ["workingGlyph", "ambient"], colorRole: "secondary", fallbackGlyph: "O", loop: "ambient", frames: ["●", "◐", "○", "◑"], description: "Four-phase lunar cycle.", }, { id: "diamond-spin", name: "Diamond Spin", category: "matrix", kind: "frames", channels: ["workingGlyph"], colorRole: "accent", fallbackGlyph: "+", loop: "while-active", frames: ["◇", "◈", "◆", "◈"], description: "Rotating diamond for thinking.", }, { id: "ripple-surface", name: "Ripple Surface", category: "procedural", kind: "generator", channels: ["signal", "panelIndicator"], colorRole: "motionTrail", fallbackGlyph: "~", loop: "finite", generator: { geometry: "wave", trail: 4, intervalMs: 60, ease: "pulse" }, description: "Short concentric wavefront.", }, { id: "orbital-spin", name: "Orbital Spin", category: "procedural", kind: "generator", channels: ["workingGlyph", "ambient"], colorRole: "secondary", fallbackGlyph: "o", loop: "while-active", generator: { geometry: "orbit", radius: 2, intervalMs: 90, ease: "linear" }, description: "Tight orbital spin for tools.", }, { id: "sine-sweep", name: "Sine Sweep", category: "procedural", kind: "generator", channels: ["signal"], colorRole: "motionTrail", fallbackGlyph: "~", loop: "while-active", generator: { geometry: "wave", trail: 3, intervalMs: 100, ease: "breathe" }, description: "Breathing sine across the track.", }, { id: "dual-helix", name: "Dual Helix", category: "procedural", kind: "frames", channels: ["workingGlyph"], colorRole: "motionTrail", fallbackGlyph: "%", loop: "while-active", frames: ["⡀", "⣀", "⣄", "⣤", "⣦", "⣶", "⣷", "⣿"], description: "Second helix strand, denser than helix.", }, { id: "foam", name: "Foam", category: "procedural", kind: "frames", channels: ["ambient", "signal"], colorRole: "motionDim", fallbackGlyph: ".", loop: "ambient", frames: ["·", "°", "˙", "°"], description: "Surface foam for liquid presets.", }, { id: "current", name: "Current", category: "procedural", kind: "generator", channels: ["signal"], colorRole: "primary", fallbackGlyph: "~", loop: "while-active", generator: { geometry: "wave", trail: 2, direction: "reverse", intervalMs: 85, ease: "linear" }, description: "Reverse current under the rail.", }, { id: "slash-spin", name: "Slash Spin", category: "classic", kind: "frames", channels: ["workingGlyph"], colorRole: "textMuted", fallbackGlyph: "/", loop: "while-active", frames: ["/", "-", "\\", "|"], description: "Slash-led ASCII spinner.", }, { id: "block-pulse", name: "Block Pulse", category: "classic", kind: "frames", channels: ["panelIndicator"], colorRole: "primary", fallbackGlyph: "#", loop: "while-active", frames: ["░", "▒", "▓", "█"], description: "Block density pulse.", }, { id: "arrow-cycle", name: "Arrow Cycle", category: "classic", kind: "frames", channels: ["workingGlyph", "signal"], colorRole: "accent", fallbackGlyph: ">", loop: "while-active", frames: [">", "»", "→", "»"], description: "Forward arrow cycle.", }, { id: "fat-band", name: "Fat Band", category: "procedural", kind: "generator", channels: ["signal"], colorRole: "motionHot", fallbackGlyph: "~", loop: "while-active", generator: { geometry: "wave", trail: 4, intervalMs: 80, ease: "linear" }, description: "Opt-in topographic streaming rail. The default sweep stays a single status row.", }, ];