pi-agent-flow 1.8.29 → 1.8.30

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/README.md CHANGED
@@ -57,8 +57,8 @@ pi install .
57
57
  - **Flow-mode notification** — concise (`mode: name | lite: model - flash: model - full: model`) or verbose (with per-tier flow-name labels) startup message
58
58
  - **Unified batch tools** — `batch` (read/write/edit/delete) and `batch_read` replace separate file tools for cross-cutting work
59
59
  - **Web tool** — built-in `web` search (Brave + DuckDuckGo) and page fetch with HTML→Markdown conversion
60
- - **Sliding system prompt** — lightweight routing reminder dynamically injected before each user message (never part of the static system prompt); switches between spec-driven planning and implement modes based on the `/spec` toggle, stripped from child snapshots to avoid duplication
61
- - **Session snapshot sanitization** — removes sliding prompts, reasoning/thinking artifacts, and non-inheritable content before forking; compresses prior flow results into compact context maps
60
+ - **Steering hint** — lightweight routing reminder dynamically injected before each user message (never part of the static system prompt); switches between spec-driven planning and implement modes based on the `/spec` toggle, stripped from child snapshots to avoid duplication
61
+ - **Session snapshot sanitization** — removes steering hints, reasoning/thinking artifacts, and non-inheritable content before forking; compresses prior flow results into compact context maps
62
62
  - **Shared context inheritance** — child flows receive the parent's sanitized session automatically; write forward-looking intents and let the child pick up context from its inherited snapshot
63
63
  - **Project flow confirmation** — prompts before running project-local flows from `.pi/agents/` for security
64
64
  - **Rich TUI rendering** — collapsed activity-panel view with per-flow stats, live countdowns, scramble-animated act/msg/tps lines, and expanded view with full reports and tool traces
@@ -92,7 +92,7 @@ When you delegate to a flow, the child agent receives an automatic **sanitized f
92
92
  ### How it works
93
93
 
94
94
  1. **Snapshot serialized** — your conversation (files read, commands run, prior flow results) is serialized into a JSONL snapshot.
95
- 2. **Sanitized** — sliding prompts, reasoning/thinking artifacts, and other non-inheritable content are stripped.
95
+ 2. **Sanitized** — steering hints, reasoning/thinking artifacts, and other non-inheritable content are stripped.
96
96
  3. **Compressed** — prior flow tool results are compacted into short summaries: files touched, commands used, outcome status.
97
97
  4. **Forked** — the child agent loads this snapshot via `--session` at startup.
98
98
 
@@ -175,12 +175,12 @@ Flows are aware of their deadline from the moment they start:
175
175
 
176
176
  ## `/spec` Command
177
177
 
178
- Toggle spec-driven planning mode with the `/spec` command. When active, the sliding system prompt instructs the orchestrator to follow a four-phase workflow:
178
+ Toggle spec-driven planning mode with the `/spec` command. When active, the steering hint instructs the orchestrator to follow a four-phase workflow:
179
179
 
180
180
  1. **Investigate** — read package files, tests, and config directly; delegate broad discovery to `[scout]`
181
181
  2. **Discuss** — ask 2–3 targeted, evidence-based questions via `ask_user`, marking the recommended choice with `[preferred]`
182
- 3. **Plan** — delegate to `[build]` to write a structured spec to `.specs/{slug}/spec.md`
183
- 4. **Delegate** — once the spec is confirmed, proceed with implementation flows
182
+ 3. **Recommend Exit** — prompt the user to type `/spec` when ready to proceed; do not initiate builds yourself
183
+ 4. **Synthesize** — on `/spec` deactivation, a plan is auto-generated from the conversation and placed in the editor for review
184
184
 
185
185
  Run `/spec` with a prompt to activate immediately and start investigating:
186
186
 
@@ -14,7 +14,7 @@ export declare function computeActiveTools(optimize: boolean): string[];
14
14
  * Build the before_agent_start system prompt augmentation.
15
15
  *
16
16
  * Adds web steering (when tool optimize is off) and the flow delegation
17
- * guide with guard info. The sliding prompt is NOT included here — it
17
+ * guide with guard info. The steering hint is NOT included here — it
18
18
  * is injected dynamically by the context hook in index.ts.
19
19
  *
20
20
  * Returns the augmented systemPrompt, or undefined if the child flow
@@ -19,7 +19,7 @@ export function computeActiveTools(optimize) {
19
19
  * Build the before_agent_start system prompt augmentation.
20
20
  *
21
21
  * Adds web steering (when tool optimize is off) and the flow delegation
22
- * guide with guard info. The sliding prompt is NOT included here — it
22
+ * guide with guard info. The steering hint is NOT included here — it
23
23
  * is injected dynamically by the context hook in index.ts.
24
24
  *
25
25
  * Returns the augmented systemPrompt, or undefined if the child flow
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ import { appendStrategicHintOnce, resetStrategicHintTracker } from "./tool-utils
15
15
  import { createBatchTool, createBatchReadTool, BashProcessTracker, createBatchBashPollTool } from "./batch.js";
16
16
  import { createWebTool } from "./web-tool.js";
17
17
  import { createAskUserTool } from "./ask-user.js";
18
- import { stripSlidingPromptText, stripSlidingPromptsFromMessages, makeSlidingPromptMessage, } from "./sliding-prompt.js";
18
+ import { stripSteeringHintText, stripSteeringHintsFromMessages, makeSteeringHintMessage, } from "./steering-hint.js";
19
19
  import { setupSpecMode } from "./spec-mode.js";
20
20
  import { createTimedBashToolDefinition } from "./timed-bash.js";
21
21
  import { resolveFlowDepthConfig, } from "./depth.js";
@@ -183,29 +183,29 @@ export default function (pi) {
183
183
  return undefined;
184
184
  return { systemPrompt: augmented };
185
185
  });
186
- // Sliding system prompt: insert as a separate system message immediately
187
- // before the latest user message each turn. The sliding prompt is never
186
+ // Steering hint: insert as a separate system message immediately
187
+ // before the latest user message each turn. The steering hint is never
188
188
  // part of the static systemPrompt — it is injected dynamically here only.
189
- // We strip any stray sliding prompt content from systemPrompt as a safety
190
- // net, then insert the fresh prompt as a separate message.
189
+ // We strip any stray steering hint content from systemPrompt as a safety
190
+ // net, then insert the fresh hint as a separate message.
191
191
  // Skipped for child flows (depth > 0) — they have explicit <mission> directives.
192
192
  pi.on("context", async (event) => {
193
193
  if (currentDepth > 0)
194
194
  return undefined;
195
- // Always strip old sliding prompt messages to prevent accumulation
196
- const { messages, changed: messagesChanged } = stripSlidingPromptsFromMessages(event.messages);
195
+ // Always strip old steering hint messages to prevent accumulation
196
+ const { messages, changed: messagesChanged } = stripSteeringHintsFromMessages(event.messages);
197
197
  // Find latest user message
198
198
  const userIndices = messages
199
199
  .map((m, i) => (m.role === "user" ? i : -1))
200
200
  .filter((i) => i !== -1);
201
201
  if (userIndices.length === 0) {
202
- // No user message yet: strip any stray sliding text from systemPrompt
202
+ // No user message yet: strip any stray steering hint text from systemPrompt
203
203
  // (safety net for /new or early-session), but don't inject a new one —
204
204
  // it will appear on the first user message.
205
205
  let systemPrompt = event.systemPrompt;
206
206
  let systemPromptChanged = false;
207
207
  if (typeof systemPrompt === "string") {
208
- const stripped = stripSlidingPromptText(systemPrompt);
208
+ const stripped = stripSteeringHintText(systemPrompt);
209
209
  if (stripped !== systemPrompt) {
210
210
  systemPrompt = stripped;
211
211
  systemPromptChanged = true;
@@ -218,12 +218,12 @@ export default function (pi) {
218
218
  result.systemPrompt = systemPrompt;
219
219
  return (messagesChanged || systemPromptChanged) ? result : undefined;
220
220
  }
221
- // Strip sliding from the static systemPrompt so it only appears once,
221
+ // Strip steering hint from the static systemPrompt so it only appears once,
222
222
  // as a separate message right before the latest user message.
223
223
  let systemPrompt = event.systemPrompt;
224
224
  let systemPromptChanged = false;
225
225
  if (typeof systemPrompt === "string") {
226
- const stripped = stripSlidingPromptText(systemPrompt);
226
+ const stripped = stripSteeringHintText(systemPrompt);
227
227
  if (stripped !== systemPrompt) {
228
228
  systemPrompt = stripped;
229
229
  systemPromptChanged = true;
@@ -232,7 +232,7 @@ export default function (pi) {
232
232
  const lastUserIndex = userIndices[userIndices.length - 1];
233
233
  const modified = [
234
234
  ...messages.slice(0, lastUserIndex),
235
- makeSlidingPromptMessage(messages[lastUserIndex]),
235
+ makeSteeringHintMessage(messages[lastUserIndex]),
236
236
  ...messages.slice(lastUserIndex),
237
237
  ];
238
238
  const result = { messages: modified };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,10 @@ export declare class FastRNG {
31
31
  }
32
32
  export declare function makeAnimationSeed(text: string, timestamp: number): number;
33
33
  export declare function hashNoise(seed: number, charIndex: number, tick: number, depth: number): number;
34
+ /** Thin braille spark: single-dot and sparse two-dot patterns for afterglow "pop" */
35
+ declare const THIN_BRAILLE_SPARK = "\u2802\u2804\u2808\u2810\u2820\u2840\u2880\u2803\u2806\u2809\u2818\u2830\u2841\u2882";
34
36
  declare function selectScrambleChar(depth: number, dist: number, elapsed: number, seed?: number, textLen?: number): string;
37
+ declare function selectSparkChar(seed: number, charIndex: number, tick: number): string;
35
38
  declare const CYAN_GLOW = "\u001B[38;2;0;255;204m";
36
39
  declare const WARM_GLOW = "\u001B[38;2;251;176;169m";
37
40
  declare const PEACH_GLOW = "\u001B[38;2;251;200;193m";
@@ -47,10 +50,14 @@ interface IlluminateConfig {
47
50
  spread: number;
48
51
  glowIntensity: 'high' | 'medium' | 'low' | 'variable';
49
52
  initialTimeOffset?: number;
53
+ crestOnly?: boolean;
54
+ spark?: boolean;
50
55
  }
51
56
  declare const ILLUMINATE_CONFIGS: Record<string, IlluminateConfig>;
52
57
  export type ScrambleMode = 'stream' | 'cascade' | 'ripple' | 'illuminate';
53
58
  export { selectScrambleChar };
59
+ export { selectSparkChar };
60
+ export { THIN_BRAILLE_SPARK };
54
61
  export { ILLUMINATE_CONFIGS };
55
62
  export type { IlluminateConfig };
56
63
  export { CYAN_GLOW, WARM_GLOW, PEACH_GLOW, ORANGE_GLOW, SKY_GLOW, WHITE_GLOW, BOLD_ON, BOLD_OFF, RESET_COLOR };
@@ -1 +1 @@
1
- {"version":3,"file":"scramble.d.ts","sourceRoot":"","sources":["../src/scramble.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scramble.d.ts","sourceRoot":"","sources":["../src/scramble.ts"],"names":[],"mappings":"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"}
package/dist/scramble.js CHANGED
@@ -75,9 +75,11 @@ const DEEP_GLITCH = '·∘∙+*~!?⟐⟑✧✦⠁⠂⠃⠄⠅⠆⠇ᚠᚢᚦᚨ
75
75
  /** Mid glitch: lowercase alphabet + braille/runic + geometric shapes for mid depth (3) */
76
76
  const MID_GLITCH = 'ᚠᚢᚦᚨᚻᛟᛝ◇◈△▽○●◎';
77
77
  /** Shallow glitch: numbers/brackets + shade blocks + light box-drawing for outer depths (4+) */
78
- const SHALLOW_GLITCH = '0123456789\\/[]{}|░▚▞⠁⠂⠃';
78
+ const SHALLOW_GLITCH = '·∘∙⠁⠂⠃⠄⠅⠆~?+-';
79
79
  /** Classic ASCII-safe set for stream/cascade/ripple fallback */
80
80
  const SCRAMBLE_CHARS = '·∘∙~?+-*/[]{}<>_○◎';
81
+ /** Thin braille spark: single-dot and sparse two-dot patterns for afterglow "pop" */
82
+ const THIN_BRAILLE_SPARK = '⠂⠄⠈⠐⠠⡀⢀⠃⠆⠉⠘⠰⡁⢂';
81
83
  function selectScrambleChar(depth, dist, elapsed, seed, textLen) {
82
84
  const tickMs = (textLen !== undefined && textLen < 20) ? 300 : 150;
83
85
  const tick = Math.floor(elapsed / tickMs);
@@ -119,6 +121,11 @@ function selectScrambleChar(depth, dist, elapsed, seed, textLen) {
119
121
  return SHALLOW_GLITCH[idx < 0 ? idx + SHALLOW_GLITCH.length : idx];
120
122
  }
121
123
  }
124
+ function selectSparkChar(seed, charIndex, tick) {
125
+ const n = hashNoise(seed, charIndex, tick, 88);
126
+ const idx = Math.floor(n * THIN_BRAILLE_SPARK.length);
127
+ return THIN_BRAILLE_SPARK[idx < 0 ? idx + THIN_BRAILLE_SPARK.length : idx];
128
+ }
122
129
  // ---------------------------------------------------------------------------
123
130
  // ANSI truecolor neon glow constants (illuminate mode)
124
131
  // ---------------------------------------------------------------------------
@@ -137,40 +144,40 @@ const DIM_OFF = '\x1b[22m';
137
144
  * dim (SGR 2) so enclosing dim context survives scramble transitions. */
138
145
  const ILLUMINATE_CLOSE = '\x1b[39m';
139
146
  const ILLUMINATE_CONFIGS = {
140
- aimLabel: { color: CYAN_GLOW, duration: 400, spread: 1.0, glowIntensity: 'high' },
141
- actLabel: { color: WARM_GLOW, duration: 400, spread: 1.0, glowIntensity: 'high' },
142
- msgLabel: { color: PEACH_GLOW, duration: 400, spread: 1.0, glowIntensity: 'high' },
143
- msgContent: { color: 'dynamic', duration: 675, spread: 1.0, glowIntensity: 'variable', initialTimeOffset: 30 },
144
- tps: { color: ORANGE_GLOW, duration: 120, spread: 0.5, glowIntensity: 'medium' },
147
+ aimLabel: { color: CYAN_GLOW, duration: 280, spread: 1.0, glowIntensity: 'high', crestOnly: true, spark: false },
148
+ actLabel: { color: WARM_GLOW, duration: 280, spread: 1.0, glowIntensity: 'high', crestOnly: true, spark: false },
149
+ msgLabel: { color: PEACH_GLOW, duration: 280, spread: 1.0, glowIntensity: 'high', crestOnly: true, spark: false },
150
+ msgContent: { color: 'dynamic', duration: 473, spread: 1.0, glowIntensity: 'variable', initialTimeOffset: 30 },
151
+ tps: { color: ORANGE_GLOW, duration: 84, spread: 0.5, glowIntensity: 'medium', crestOnly: true, spark: false },
145
152
  };
146
153
  // ---------------------------------------------------------------------------
147
154
  // Timing constants
148
155
  // ---------------------------------------------------------------------------
149
- const RIPPLE_DUR_DEFAULT = 530;
156
+ const RIPPLE_DUR_DEFAULT = 371;
150
157
  const RIPPLE_SPREAD_DEFAULT = 1;
151
- const MIN_RIPPLE_INTERVAL = 600;
152
- const DEPTH_BAND_MAX = 13;
153
- const TPS_FLASH_DUR = 150;
158
+ const MIN_RIPPLE_INTERVAL = 420;
159
+ const DEPTH_BAND_MAX = 7;
160
+ const TPS_FLASH_DUR = 105;
154
161
  const TPS_FLASH_SPREAD = 0.5;
155
- const AFTERGLOW_MS = 700;
156
- const ECHO_AFTERGLOW_MS = 3500;
157
- const FLASH_AFTERGLOW_MS = 195; // shorter afterglow for TPS/KPI value flashes
158
- const PULSE_WINDOW_MS = 2550;
159
- const PULSE_CYCLE_MS = 1425;
160
- const CASCADE_FRAME_MS = 16;
161
- const CASCADE_MAX_START = 40;
162
- const CASCADE_MAX_LENGTH = 40;
163
- const CASCADE_FLASH_MAX_START = 5;
164
- const CASCADE_FLASH_MAX_LENGTH = 8;
162
+ const AFTERGLOW_MS = 300;
163
+ const ECHO_AFTERGLOW_MS = 500;
164
+ const FLASH_AFTERGLOW_MS = 137; // shorter afterglow for TPS/KPI value flashes
165
+ const PULSE_WINDOW_MS = 600;
166
+ const PULSE_CYCLE_MS = 998;
167
+ const CASCADE_FRAME_MS = 11;
168
+ const CASCADE_MAX_START = 28;
169
+ const CASCADE_MAX_LENGTH = 28;
170
+ const CASCADE_FLASH_MAX_START = 4;
171
+ const CASCADE_FLASH_MAX_LENGTH = 6;
165
172
  // Illuminate phrase buffering
166
- const MAX_PHRASE_BUFFER_TIME = 800;
173
+ const MAX_PHRASE_BUFFER_TIME = 560;
167
174
  const MIN_PHRASE_LENGTH = 60;
168
175
  // Drain timeout: partial chunk ripples when text stops changing for this long.
169
176
  // Tokens arrive ~200ms apart at 196 TPS; 350ms is long enough to avoid firing
170
177
  // during active streaming but short enough to feel responsive when tool calls pause.
171
- const MSG_CHUNK_DRAIN_MS = 350;
178
+ const MSG_CHUNK_DRAIN_MS = 245;
172
179
  // TPS hysteresis
173
- const SECONDARY_RIPPLE_DELAY_MS = 120;
180
+ const SECONDARY_RIPPLE_DELAY_MS = 84;
174
181
  const SECONDARY_RIPPLE_STRENGTH = 0.75;
175
182
  // TPS hysteresis
176
183
  const TPS_HYSTERESIS_PCT = 0.15;
@@ -209,6 +216,8 @@ function easeOutQuad(t) {
209
216
  return 1 - (1 - t) * (1 - t);
210
217
  }
211
218
  export { selectScrambleChar };
219
+ export { selectSparkChar };
220
+ export { THIN_BRAILLE_SPARK };
212
221
  export { ILLUMINATE_CONFIGS };
213
222
  export { CYAN_GLOW, WARM_GLOW, PEACH_GLOW, ORANGE_GLOW, SKY_GLOW, WHITE_GLOW, BOLD_ON, BOLD_OFF, RESET_COLOR };
214
223
  export const DEFAULT_MODE = 'illuminate';
@@ -580,7 +589,7 @@ export function applyRipples(text, ripples, now, config, targetText, resolvedMas
580
589
  const dist = Math.abs(idx - activeRipples[i].pos);
581
590
  const depth = radii[i] - dist;
582
591
  if (depth > 0) {
583
- const fade = 1 - smoothstep(DEPTH_BAND_MAX - 1, DEPTH_BAND_MAX + 2, depth);
592
+ const fade = 1 - smoothstep(DEPTH_BAND_MAX - 0.5, DEPTH_BAND_MAX + 0.5, depth);
584
593
  if (fade > 0) {
585
594
  const cappedDepth = Math.min(depth, DEPTH_BAND_MAX);
586
595
  combinedDepth += cappedDepth * fade; // Additive for interference
@@ -601,7 +610,7 @@ export function applyRipples(text, ripples, now, config, targetText, resolvedMas
601
610
  for (let i = 0; i < afterglowCount; i++) {
602
611
  const dist = Math.abs(idx - afterglowData[i].pos);
603
612
  if (dist < afterglowData[i].maxReach) {
604
- const primaryAg = 1 - Math.min(1, afterglowData[i].timeSinceExpiry / 500);
613
+ const primaryAg = 1 - Math.min(1, afterglowData[i].timeSinceExpiry / 350);
605
614
  const secondaryAg = 0.4 * (1 - Math.min(1, afterglowData[i].timeSinceExpiry / AFTERGLOW_MS));
606
615
  if (primaryAg > afterglowIntensity || secondaryAg > afterglowIntensity) {
607
616
  bestAgIdx = i;
@@ -612,28 +621,39 @@ export function applyRipples(text, ripples, now, config, targetText, resolvedMas
612
621
  }
613
622
  if (maxDepth > 0) {
614
623
  const seed = activeRipples[bestIdx].seed ?? 0;
615
- const jitterTick = Math.floor(now / 60);
616
- const depthJitter = (hashNoise(seed, bestDist, jitterTick, 99) * 2 - 1) * 0.35;
624
+ const jitterTick = Math.floor(now / 42);
625
+ const depthJitter = (hashNoise(seed, bestDist, jitterTick, 99) * 2 - 1) * 0.15;
617
626
  const jitteredDepth = Math.max(0.1, maxDepth + depthJitter);
618
627
  const char = selectScrambleChar(jitteredDepth, bestDist, bestElapsed, seed, text.length);
619
628
  if (config) {
620
- let prefix = illuminatePrefix(maxDepth, bestElapsed, bestDur, config, combinedDepth);
621
629
  const crestDepth = radii[bestIdx] - bestDist;
622
- if (config.color === 'dynamic' && crestDepth > 0 && crestDepth < 1.5) {
623
- // Alternate cyan/orange at crest based on character position, no bold
624
- if (bestDist % 2 === 0) {
625
- prefix = '\x1b[38;2;0;230;220m'; // cyan
630
+ const isCrest = !config.crestOnly || (crestDepth > 0 && crestDepth < 2.0);
631
+ let prefix = '';
632
+ if (isCrest) {
633
+ prefix = illuminatePrefix(maxDepth, bestElapsed, bestDur, config, combinedDepth);
634
+ if (config.color === 'dynamic' && crestDepth > 0 && crestDepth < 1.5) {
635
+ // Alternate cyan/orange at crest based on character position, no bold
636
+ if (bestDist % 2 === 0) {
637
+ prefix = '\x1b[38;2;0;230;220m'; // cyan
638
+ }
639
+ else {
640
+ prefix = '\x1b[38;2;255;165;50m'; // orange
641
+ }
626
642
  }
627
- else {
628
- prefix = '\x1b[38;2;255;165;50m'; // orange
643
+ }
644
+ if (prefix) {
645
+ if (!inColor || currentPrefix !== prefix) {
646
+ if (inColor)
647
+ segments[segCount++] = ILLUMINATE_CLOSE;
648
+ segments[segCount++] = prefix;
649
+ inColor = true;
650
+ currentPrefix = prefix;
629
651
  }
630
652
  }
631
- if (!inColor || currentPrefix !== prefix) {
632
- if (inColor)
633
- segments[segCount++] = ILLUMINATE_CLOSE;
634
- segments[segCount++] = prefix;
635
- inColor = true;
636
- currentPrefix = prefix;
653
+ else if (inColor) {
654
+ segments[segCount++] = ILLUMINATE_CLOSE;
655
+ inColor = false;
656
+ currentPrefix = '';
637
657
  }
638
658
  segments[segCount++] = char;
639
659
  }
@@ -650,26 +670,22 @@ export function applyRipples(text, ripples, now, config, targetText, resolvedMas
650
670
  const agRipple = afterglowRipples[bestAgIdx];
651
671
  const timeSinceExpiry = now - agRipple.time - agRipple.dur;
652
672
  // Discrete post-ripple glitch pops: 3 brief bursts after ripple expires
653
- const popWidth = 80;
654
- const popGap = 160;
673
+ const popWidth = 40;
674
+ const popGap = 60;
655
675
  const inInitialPopWindow = (timeSinceExpiry >= 0 && timeSinceExpiry < popWidth)
656
676
  || (timeSinceExpiry >= popWidth + popGap && timeSinceExpiry < 2 * popWidth + popGap)
657
- || (timeSinceExpiry >= 2 * (popWidth + popGap) && timeSinceExpiry < 3 * (popWidth + popGap));
658
- const inEchoPopWindow = agRipple.contentChange !== false && ((timeSinceExpiry >= 1560 && timeSinceExpiry < 1560 + 80)
659
- || (timeSinceExpiry >= 2140 && timeSinceExpiry < 2140 + 80)
660
- || (timeSinceExpiry >= 3220 && timeSinceExpiry < 3220 + 80));
661
- const inPopWindow = inInitialPopWindow || inEchoPopWindow;
662
- const agTick = Math.floor(now / 80);
677
+ || (timeSinceExpiry >= 2 * (popWidth + popGap) && timeSinceExpiry < 2 * (popWidth + popGap) + popWidth);
678
+ const agTick = Math.floor(now / 40);
663
679
  const glitchRoll = bestAgIdx >= 0 ? hashNoise(agRipple.seed ?? 0, idx, agTick, 77) : 1;
664
680
  const popTarget = Math.min(0.045, 4 / Math.max(1, text.length));
665
- const shouldScramble = inPopWindow && bestAgIdx >= 0 && afterglowRipples[bestAgIdx].dur >= 300 && glitchRoll < popTarget;
681
+ const shouldScramble = inInitialPopWindow && bestAgIdx >= 0 && afterglowRipples[bestAgIdx].dur >= 210 && glitchRoll < popTarget;
666
682
  if (shouldScramble) {
667
683
  if (config) {
668
684
  let agPrefix;
669
685
  if (config.color === 'dynamic') {
670
686
  // Cooling ember: warm at start, fading to dim cool
671
687
  // Echo pops get minimum intensity so chars stay visible long after ripple
672
- const effectiveIntensity = inEchoPopWindow ? Math.max(afterglowIntensity, 0.3) : afterglowIntensity;
688
+ const effectiveIntensity = afterglowIntensity;
673
689
  const emberR = Math.round(200 + 55 * effectiveIntensity);
674
690
  const emberG = Math.round(100 + 60 * effectiveIntensity);
675
691
  const emberB = Math.round(40 + 20 * effectiveIntensity);
@@ -688,7 +704,10 @@ export function applyRipples(text, ripples, now, config, targetText, resolvedMas
688
704
  }
689
705
  const agDepth = afterglowIntensity * 4.5;
690
706
  const agElapsed = now - agRipple.time - agRipple.dur;
691
- const char = selectScrambleChar(agDepth, 0, agElapsed, agRipple.seed, text.length);
707
+ const useSpark = config?.spark !== false;
708
+ const char = useSpark
709
+ ? selectSparkChar(agRipple.seed ?? 0, idx, agTick)
710
+ : selectScrambleChar(agDepth, 0, agElapsed, agRipple.seed, text.length);
692
711
  segments[segCount++] = char;
693
712
  }
694
713
  else {
@@ -708,7 +727,7 @@ export function applyRipples(text, ripples, now, config, targetText, resolvedMas
708
727
  currentPrefix = '';
709
728
  }
710
729
  if (pulseIntensity !== undefined) {
711
- const settleTick = Math.floor(now / 250);
730
+ const settleTick = Math.floor(now / 175);
712
731
  const settleRoll = hashNoise(42, idx, settleTick, 33);
713
732
  if (settleRoll < 0.05) {
714
733
  const settlePrefix = (hashNoise(42, idx, settleTick, 55) < 0.5)
@@ -751,7 +770,7 @@ function spawnSecondaryRipple(primary) {
751
770
  return {
752
771
  ...primary,
753
772
  time: primary.time + delay,
754
- dur: primary.dur * 0.85,
773
+ dur: primary.dur * 0.6,
755
774
  spread: primary.spread * SECONDARY_RIPPLE_STRENGTH,
756
775
  seed: (primary.seed ?? 0) + 1,
757
776
  contentChange: primary.contentChange,