asciify-engine 4.21.0 → 4.23.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.
Files changed (44) hide show
  1. package/README.md +13 -0
  2. package/dist/{animation-presets-DztfFvTc.d.cts → animation-presets-CzM3jLT6.d.cts} +42 -28
  3. package/dist/{animation-presets-Bqupq1Gx.d.ts → animation-presets-a8WDzKDj.d.ts} +42 -28
  4. package/dist/core.cjs +1 -1
  5. package/dist/core.d.cts +5 -4
  6. package/dist/core.d.ts +5 -4
  7. package/dist/core.js +1 -1
  8. package/dist/field.cjs +1 -1
  9. package/dist/field.d.cts +10 -1
  10. package/dist/field.d.ts +10 -1
  11. package/dist/field.js +1 -1
  12. package/dist/{hover-guide-DKRQPtDO.d.cts → hover-catalog-CrmxlmUe.d.cts} +91 -85
  13. package/dist/{hover-guide-DKRQPtDO.d.ts → hover-catalog-CrmxlmUe.d.ts} +91 -85
  14. package/dist/hover-guide-DdFnAnfU.d.cts +9 -0
  15. package/dist/hover-guide-DdFnAnfU.d.ts +9 -0
  16. package/dist/hover.cjs +1 -1
  17. package/dist/hover.d.cts +8 -6
  18. package/dist/hover.d.ts +8 -6
  19. package/dist/hover.js +1 -1
  20. package/dist/index.cjs +1 -1
  21. package/dist/index.d.cts +4 -3
  22. package/dist/index.d.ts +4 -3
  23. package/dist/index.js +1 -1
  24. package/dist/kit.cjs +1 -1
  25. package/dist/kit.d.cts +1 -0
  26. package/dist/kit.d.ts +1 -0
  27. package/dist/kit.js +1 -1
  28. package/dist/{model-BNShxUhx.d.cts → model-C3TTmMXv.d.ts} +2 -1
  29. package/dist/{model-D2L86aNZ.d.ts → model-DAZNnqXr.d.cts} +2 -1
  30. package/dist/studio.cjs +1 -1
  31. package/dist/studio.d.cts +5 -4
  32. package/dist/studio.d.ts +5 -4
  33. package/dist/studio.js +1 -1
  34. package/dist/{types-Bmu4dXdQ.d.ts → types-BnakIXAU.d.ts} +2 -2
  35. package/dist/{types-Cn3wY-ST.d.cts → types-_8MohOZ1.d.cts} +2 -2
  36. package/package.json +1 -1
  37. package/skills/asciify-engine/SKILL.md +3 -3
  38. package/skills/asciify-engine/references/design-matching.md +1 -1
  39. package/skills/asciify-engine/references/glyph-field.md +2 -1
  40. package/skills/asciify-engine/references/kit.md +1 -1
  41. package/skills/asciify-engine/references/looks.md +2 -2
  42. package/skills/asciify-engine/references/studio-effects.md +30 -9
  43. package/skills/asciify-engine/references/studio-workspace.md +7 -8
  44. package/skills/asciify-engine/references/upgrading.md +6 -0
package/README.md CHANGED
@@ -646,6 +646,19 @@ const field = mountGlyphField(canvas, {
646
646
 
647
647
  It needs WebGL2 on a GPU: `isGlyphFieldSupported()` is false without it or on software WebGL, and slow devices step down to 1× pixels and then still ambient motion. Keep a poster or the `/studio` renderer as the fallback. A still field stops drawing once its wake settles. Measured in Playwright Chromium on an Apple M4 Pro at 1440 × 900 and device pixel ratio 2, a full-viewport field held 120 fps (9 ms 95th-percentile frame) under continuous pointer movement; measure your own targets. See the [field guide](skills/asciify-engine/references/glyph-field.md) and [brand field example](examples/glyph-field.ts). It is a separate entry: the root, `/core`, `/hover` and `/studio` never load it.
648
648
 
649
+ ## 4.23: dialogs always render, sharper motion cues, cleaner hovers
650
+
651
+ - Kit fields inside an open modal dialog always get a WebGL context: fields covered by the dialog give theirs up and come back when it closes. A released field hands its canvas back at once (Safari counts dead contexts toward its limit), and a field whose context is lost recovers onto a fresh canvas.
652
+ - Depth is fused from focus, haze, a horizon prior, texture and saliency with an edge-aware filter; Drift finds water (including non-blue seas by reflection), sky, cloud and falling water, and holds everything else still. The classic core renderer shares the same motion code. Analysis follows grid changes and reads the ungraded photo.
653
+ - Water settles cleanly; Ripple and Emboss draw their own rings on dark or transparent ground; glyph fields take `scope`; video subjects update as the video plays; the hover catalog (`HOVER_CONTROLS`, `DEFAULT_HOVER`, `resolveHover`) is exported once. On the GPU path, Trail keeps the artwork's ground and Water moves whole cells.
654
+
655
+ ## 4.22: photo-aware motion and finish
656
+
657
+ - A new set of still-image motions read the photo's own light, form, highlights, detail and estimated depth: `relight`, `sheen` (specular sweep), `glow` (highlight bloom), `shimmer` (glints), `parallax`, `push`, `focus`, `mist`, `current` (drift) and `develop`.
658
+ - Retired motions keep working through `DEPRECATED_STUDIO_MOTIONS`: caustics → sheen, grain → shimmer, trace → relight, tidal/weave/breeze → current, reform/print/unfold → develop.
659
+ - Optical finish: bloom is a wide soft glow around highlights, and grain is fine film grain weighted to the midtones.
660
+ - Animation presets are re-paired with the new motions, plus a new Depth study.
661
+
649
662
  ## 4.21: premium hovers that know the subject
650
663
 
651
664
  - Six new hovers: `loupe`, `reveal`, `repel`, `tilt`, `haze` and `bleed`; `scatter`, `elastic` and `ripple` are refined, and `rake` is deprecated (it plays `silk`).
@@ -1,4 +1,4 @@
1
- import { A as AmbientMotion, S as SurfaceHover } from './hover-guide-DKRQPtDO.cjs';
1
+ import { A as AmbientMotion, S as SurfaceHover } from './hover-catalog-CrmxlmUe.cjs';
2
2
 
3
3
  interface StudioAnimationPreset {
4
4
  readonly id: string;
@@ -19,11 +19,11 @@ interface StudioAnimationPreset {
19
19
  declare const STUDIO_ANIMATION_PRESETS: readonly [{
20
20
  readonly id: "quiet-light";
21
21
  readonly label: "Quiet light";
22
- readonly description: "Stationary detail with slowly turning light and a soft magnifying wake.";
22
+ readonly description: "A key light circles the subject’s own relief, with a soft magnifying wake.";
23
23
  readonly motion: {
24
24
  readonly type: "relight";
25
25
  readonly speed: 0.6;
26
- readonly amount: 0.7;
26
+ readonly amount: 0.8;
27
27
  };
28
28
  readonly hover: {
29
29
  readonly effect: "lens";
@@ -32,26 +32,26 @@ declare const STUDIO_ANIMATION_PRESETS: readonly [{
32
32
  };
33
33
  }, {
34
34
  readonly id: "living-paper";
35
- readonly label: "Living paper";
36
- readonly description: "A gentle traveling bend and a directional pull under your cursor.";
35
+ readonly label: "Memory";
36
+ readonly description: "A slow push toward the subject; the image leans toward your cursor.";
37
37
  readonly motion: {
38
- readonly type: "breeze";
39
- readonly speed: 0.8;
40
- readonly amount: 0.6;
38
+ readonly type: "push";
39
+ readonly speed: 0.5;
40
+ readonly amount: 0.8;
41
41
  };
42
42
  readonly hover: {
43
- readonly effect: "smudge";
44
- readonly radius: 0.4;
45
- readonly strength: 0.5;
43
+ readonly effect: "tilt";
44
+ readonly radius: 0.5;
45
+ readonly strength: 0.45;
46
46
  };
47
47
  }, {
48
48
  readonly id: "silver-grain";
49
- readonly label: "Silver grain";
50
- readonly description: "Slow highlight glints with a fluid character trail.";
49
+ readonly label: "Silver light";
50
+ readonly description: "Sparse glints on bright detail, with a fluid character trail.";
51
51
  readonly motion: {
52
52
  readonly type: "shimmer";
53
- readonly speed: 0.75;
54
- readonly amount: 0.85;
53
+ readonly speed: 0.6;
54
+ readonly amount: 0.9;
55
55
  };
56
56
  readonly hover: {
57
57
  readonly effect: "trail";
@@ -60,26 +60,26 @@ declare const STUDIO_ANIMATION_PRESETS: readonly [{
60
60
  };
61
61
  }, {
62
62
  readonly id: "ripple-study";
63
- readonly label: "Ripple study";
64
- readonly description: "Soft moving light and expanding tonal rings on an anchored grid.";
63
+ readonly label: "Still water";
64
+ readonly description: "Smooth water and sky drift like a cinemagraph; your stroke sends out rings.";
65
65
  readonly motion: {
66
- readonly type: "caustics";
66
+ readonly type: "current";
67
67
  readonly speed: 0.6;
68
- readonly amount: 0.55;
68
+ readonly amount: 0.8;
69
69
  };
70
70
  readonly hover: {
71
71
  readonly effect: "ripple";
72
72
  readonly radius: 0.45;
73
- readonly strength: 0.75;
73
+ readonly strength: 0.7;
74
74
  };
75
75
  }, {
76
76
  readonly id: "unfolding-print";
77
- readonly label: "Unfolding print";
78
- readonly description: "Panels turn and reassemble; your cursor dissolves a soft path.";
77
+ readonly label: "Darkroom";
78
+ readonly description: "The print develops from its highlights; your cursor dissolves a soft path.";
79
79
  readonly motion: {
80
- readonly type: "unfold";
80
+ readonly type: "develop";
81
81
  readonly speed: 0.7;
82
- readonly amount: 0.75;
82
+ readonly amount: 1;
83
83
  };
84
84
  readonly hover: {
85
85
  readonly effect: "dissolve";
@@ -88,18 +88,32 @@ declare const STUDIO_ANIMATION_PRESETS: readonly [{
88
88
  };
89
89
  }, {
90
90
  readonly id: "silk-flow";
91
- readonly label: "Silk flow";
92
- readonly description: "A slow current with directional folds that follow your hand.";
91
+ readonly label: "Morning mist";
92
+ readonly description: "Mist drifts through the distance; directional folds follow your hand.";
93
93
  readonly motion: {
94
- readonly type: "current";
94
+ readonly type: "mist";
95
95
  readonly speed: 0.6;
96
- readonly amount: 0.55;
96
+ readonly amount: 1;
97
97
  };
98
98
  readonly hover: {
99
99
  readonly effect: "silk";
100
100
  readonly radius: 0.4;
101
101
  readonly strength: 0.5;
102
102
  };
103
+ }, {
104
+ readonly id: "depth-study";
105
+ readonly label: "Depth study";
106
+ readonly description: "A slow parallax drift from the photo’s own depth, with a loupe under your cursor.";
107
+ readonly motion: {
108
+ readonly type: "parallax";
109
+ readonly speed: 0.6;
110
+ readonly amount: 0.9;
111
+ };
112
+ readonly hover: {
113
+ readonly effect: "loupe";
114
+ readonly radius: 0.35;
115
+ readonly strength: 0.55;
116
+ };
103
117
  }];
104
118
 
105
119
  export { STUDIO_ANIMATION_PRESETS as S, type StudioAnimationPreset as a };
@@ -1,4 +1,4 @@
1
- import { A as AmbientMotion, S as SurfaceHover } from './hover-guide-DKRQPtDO.js';
1
+ import { A as AmbientMotion, S as SurfaceHover } from './hover-catalog-CrmxlmUe.js';
2
2
 
3
3
  interface StudioAnimationPreset {
4
4
  readonly id: string;
@@ -19,11 +19,11 @@ interface StudioAnimationPreset {
19
19
  declare const STUDIO_ANIMATION_PRESETS: readonly [{
20
20
  readonly id: "quiet-light";
21
21
  readonly label: "Quiet light";
22
- readonly description: "Stationary detail with slowly turning light and a soft magnifying wake.";
22
+ readonly description: "A key light circles the subject’s own relief, with a soft magnifying wake.";
23
23
  readonly motion: {
24
24
  readonly type: "relight";
25
25
  readonly speed: 0.6;
26
- readonly amount: 0.7;
26
+ readonly amount: 0.8;
27
27
  };
28
28
  readonly hover: {
29
29
  readonly effect: "lens";
@@ -32,26 +32,26 @@ declare const STUDIO_ANIMATION_PRESETS: readonly [{
32
32
  };
33
33
  }, {
34
34
  readonly id: "living-paper";
35
- readonly label: "Living paper";
36
- readonly description: "A gentle traveling bend and a directional pull under your cursor.";
35
+ readonly label: "Memory";
36
+ readonly description: "A slow push toward the subject; the image leans toward your cursor.";
37
37
  readonly motion: {
38
- readonly type: "breeze";
39
- readonly speed: 0.8;
40
- readonly amount: 0.6;
38
+ readonly type: "push";
39
+ readonly speed: 0.5;
40
+ readonly amount: 0.8;
41
41
  };
42
42
  readonly hover: {
43
- readonly effect: "smudge";
44
- readonly radius: 0.4;
45
- readonly strength: 0.5;
43
+ readonly effect: "tilt";
44
+ readonly radius: 0.5;
45
+ readonly strength: 0.45;
46
46
  };
47
47
  }, {
48
48
  readonly id: "silver-grain";
49
- readonly label: "Silver grain";
50
- readonly description: "Slow highlight glints with a fluid character trail.";
49
+ readonly label: "Silver light";
50
+ readonly description: "Sparse glints on bright detail, with a fluid character trail.";
51
51
  readonly motion: {
52
52
  readonly type: "shimmer";
53
- readonly speed: 0.75;
54
- readonly amount: 0.85;
53
+ readonly speed: 0.6;
54
+ readonly amount: 0.9;
55
55
  };
56
56
  readonly hover: {
57
57
  readonly effect: "trail";
@@ -60,26 +60,26 @@ declare const STUDIO_ANIMATION_PRESETS: readonly [{
60
60
  };
61
61
  }, {
62
62
  readonly id: "ripple-study";
63
- readonly label: "Ripple study";
64
- readonly description: "Soft moving light and expanding tonal rings on an anchored grid.";
63
+ readonly label: "Still water";
64
+ readonly description: "Smooth water and sky drift like a cinemagraph; your stroke sends out rings.";
65
65
  readonly motion: {
66
- readonly type: "caustics";
66
+ readonly type: "current";
67
67
  readonly speed: 0.6;
68
- readonly amount: 0.55;
68
+ readonly amount: 0.8;
69
69
  };
70
70
  readonly hover: {
71
71
  readonly effect: "ripple";
72
72
  readonly radius: 0.45;
73
- readonly strength: 0.75;
73
+ readonly strength: 0.7;
74
74
  };
75
75
  }, {
76
76
  readonly id: "unfolding-print";
77
- readonly label: "Unfolding print";
78
- readonly description: "Panels turn and reassemble; your cursor dissolves a soft path.";
77
+ readonly label: "Darkroom";
78
+ readonly description: "The print develops from its highlights; your cursor dissolves a soft path.";
79
79
  readonly motion: {
80
- readonly type: "unfold";
80
+ readonly type: "develop";
81
81
  readonly speed: 0.7;
82
- readonly amount: 0.75;
82
+ readonly amount: 1;
83
83
  };
84
84
  readonly hover: {
85
85
  readonly effect: "dissolve";
@@ -88,18 +88,32 @@ declare const STUDIO_ANIMATION_PRESETS: readonly [{
88
88
  };
89
89
  }, {
90
90
  readonly id: "silk-flow";
91
- readonly label: "Silk flow";
92
- readonly description: "A slow current with directional folds that follow your hand.";
91
+ readonly label: "Morning mist";
92
+ readonly description: "Mist drifts through the distance; directional folds follow your hand.";
93
93
  readonly motion: {
94
- readonly type: "current";
94
+ readonly type: "mist";
95
95
  readonly speed: 0.6;
96
- readonly amount: 0.55;
96
+ readonly amount: 1;
97
97
  };
98
98
  readonly hover: {
99
99
  readonly effect: "silk";
100
100
  readonly radius: 0.4;
101
101
  readonly strength: 0.5;
102
102
  };
103
+ }, {
104
+ readonly id: "depth-study";
105
+ readonly label: "Depth study";
106
+ readonly description: "A slow parallax drift from the photo’s own depth, with a loupe under your cursor.";
107
+ readonly motion: {
108
+ readonly type: "parallax";
109
+ readonly speed: 0.6;
110
+ readonly amount: 0.9;
111
+ };
112
+ readonly hover: {
113
+ readonly effect: "loupe";
114
+ readonly radius: 0.35;
115
+ readonly strength: 0.55;
116
+ };
103
117
  }];
104
118
 
105
119
  export { STUDIO_ANIMATION_PRESETS as S, type StudioAnimationPreset as a };