dsh-theme-mineradio 2.3.4 → 2.3.6

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 (33) hide show
  1. package/README.md +91 -89
  2. package/README.zh.md +91 -89
  3. package/lib/client.js +56 -8
  4. package/lib/types/client/MineradioAppearanceRow.d.ts +72 -72
  5. package/lib/types/client/MineradioControls.d.ts +38 -38
  6. package/lib/types/client/MineradioPluginCard.d.ts +15 -15
  7. package/lib/types/client/audio-reactivity.d.ts +33 -33
  8. package/lib/types/client/cinema-drift.d.ts +20 -20
  9. package/lib/types/client/color-extract.d.ts +14 -14
  10. package/lib/types/client/critters.d.ts +21 -21
  11. package/lib/types/client/fluid-interactions.d.ts +19 -19
  12. package/lib/types/client/fluid-shader.d.ts +57 -57
  13. package/lib/types/client/fluid-tones.d.ts +30 -30
  14. package/lib/types/client/glass-dispersion.d.ts +29 -29
  15. package/lib/types/client/greetings.d.ts +24 -24
  16. package/lib/types/client/host-store.d.ts +24 -0
  17. package/lib/types/client/index.d.ts +21 -21
  18. package/lib/types/client/locales.d.ts +140 -140
  19. package/lib/types/client/mesh.d.ts +18 -18
  20. package/lib/types/client/seam-stamper.d.ts +21 -21
  21. package/lib/types/client/settings-store.d.ts +2 -2
  22. package/lib/types/client/specular-parallax.d.ts +5 -5
  23. package/lib/types/client/spot-core.d.ts +52 -52
  24. package/lib/types/client/spotlight.d.ts +11 -11
  25. package/lib/types/client/star-river.d.ts +43 -43
  26. package/lib/types/client/station-dial.d.ts +24 -24
  27. package/lib/types/client/theme-layer.d.ts +287 -287
  28. package/lib/types/client/wallpaper-store.d.ts +30 -30
  29. package/lib/types/client/whale.d.ts +25 -25
  30. package/lib/types/client/wordmark-badge.d.ts +25 -25
  31. package/lib/types/index.d.ts +9 -9
  32. package/lib/types/invariant.d.ts +15 -15
  33. package/package.json +13 -3
@@ -1,20 +1,20 @@
1
- /**
2
- * Cinematic camera for the ambient scene — makes the backdrop read as a 3D
3
- * stage rather than a flat wallpaper:
4
- *
5
- * 1. CURSOR PARALLAX + 3D TILT (the "wow"): the fluid board (far) and the
6
- * star-river (near) shift, tilt (rotateX/rotateY under perspective) and
7
- * roll at different rates as the pointer moves — the near layer travels
8
- * ~2× further, so moving the mouse parallax-reveals real depth.
9
- * 2. IDLE DRIFT (the "breathe"): a slow low-frequency sine sway + roll so
10
- * the scene keeps floating when the pointer is still — a 2D port of
11
- * Mineradio's `cineTheta = sin(t*0.08)*0.012` idle orbit.
12
- *
13
- * Pure CSS-transform work (one rAF, GPU-composited); reduced-motion renders
14
- * nothing (the scene stays a clean static frame).
15
- */
16
- export interface CinemaDriftHandle {
17
- dispose(): void;
18
- }
19
- /** Start the cinematic camera over the ambient scene. */
20
- export declare function startCinemaDrift(ambient: HTMLElement): CinemaDriftHandle;
1
+ /**
2
+ * Cinematic camera for the ambient scene — makes the backdrop read as a 3D
3
+ * stage rather than a flat wallpaper:
4
+ *
5
+ * 1. CURSOR PARALLAX + 3D TILT (the "wow"): the fluid board (far) and the
6
+ * star-river (near) shift, tilt (rotateX/rotateY under perspective) and
7
+ * roll at different rates as the pointer moves — the near layer travels
8
+ * ~2× further, so moving the mouse parallax-reveals real depth.
9
+ * 2. IDLE DRIFT (the "breathe"): a slow low-frequency sine sway + roll so
10
+ * the scene keeps floating when the pointer is still — a 2D port of
11
+ * Mineradio's `cineTheta = sin(t*0.08)*0.012` idle orbit.
12
+ *
13
+ * Pure CSS-transform work (one rAF, GPU-composited); reduced-motion renders
14
+ * nothing (the scene stays a clean static frame).
15
+ */
16
+ export interface CinemaDriftHandle {
17
+ dispose(): void;
18
+ }
19
+ /** Start the cinematic camera over the ambient scene. */
20
+ export declare function startCinemaDrift(ambient: HTMLElement): CinemaDriftHandle;
@@ -1,14 +1,14 @@
1
- /**
2
- * Wallpaper color extraction — a small, dependency-free dominant-hue finder.
3
- *
4
- * The wallpaper (image or video frame) is drawn onto a tiny canvas, and the
5
- * pixels are folded into a circular hue histogram weighted by saturation and
6
- * mid-lightness, so gray/black/white areas contribute nothing and the result
7
- * is the image's most vivid, representative hue. Returns a single hue in
8
- * degrees (0-360), or null when the source is too desaturated to read.
9
- */
10
- /**
11
- * Extract the dominant hue from a canvas-image source (img / video / canvas).
12
- * @returns a hue in degrees, or null when the source yields no vivid color.
13
- */
14
- export declare function extractDominantHue(source: CanvasImageSource): number | null;
1
+ /**
2
+ * Wallpaper color extraction — a small, dependency-free dominant-hue finder.
3
+ *
4
+ * The wallpaper (image or video frame) is drawn onto a tiny canvas, and the
5
+ * pixels are folded into a circular hue histogram weighted by saturation and
6
+ * mid-lightness, so gray/black/white areas contribute nothing and the result
7
+ * is the image's most vivid, representative hue. Returns a single hue in
8
+ * degrees (0-360), or null when the source is too desaturated to read.
9
+ */
10
+ /**
11
+ * Extract the dominant hue from a canvas-image source (img / video / canvas).
12
+ * @returns a hue in degrees, or null when the source yields no vivid color.
13
+ */
14
+ export declare function extractDominantHue(source: CanvasImageSource): number | null;
@@ -1,21 +1,21 @@
1
- /**
2
- * Ambient marine-life scene: the markup the layer injects behind the app
3
- * frame — brand-fish silhouettes drifting, a shrimp or two crawling the
4
- * bottom, rising bubbles, twinkling plankton. Positions, sizes, and
5
- * per-critter timing ride inline styles; the motion itself lives in
6
- * aqua.module.css (and silences under prefers-reduced-motion).
7
- */
8
- /**
9
- * The complete ambient scene markup: one fixed, click-transparent container
10
- * the layer prepends to <body> while enabled and removes on disable. The
11
- * deepseek.com fluid shader canvas forms the board; marine life rides over it.
12
- */
13
- export declare const AMBIENT_SCENE: string;
14
- /** Build the ambient container element (or reuse an existing one). */
15
- export declare function ensureAmbientScene(): HTMLElement;
16
- /** Remove the ambient container wherever it lives. */
17
- export declare function removeAmbientScene(): void;
18
- /** Add the page edge-fade bands (5px gradient blur over the chat content). */
19
- export declare function ensurePageFades(): void;
20
- /** Remove the edge-fade bands. */
21
- export declare function removePageFades(): void;
1
+ /**
2
+ * Ambient marine-life scene: the markup the layer injects behind the app
3
+ * frame — brand-fish silhouettes drifting, a shrimp or two crawling the
4
+ * bottom, rising bubbles, twinkling plankton. Positions, sizes, and
5
+ * per-critter timing ride inline styles; the motion itself lives in
6
+ * aqua.module.css (and silences under prefers-reduced-motion).
7
+ */
8
+ /**
9
+ * The complete ambient scene markup: one fixed, click-transparent container
10
+ * the layer prepends to <body> while enabled and removes on disable. The
11
+ * deepseek.com fluid shader canvas forms the board; marine life rides over it.
12
+ */
13
+ export declare const AMBIENT_SCENE: string;
14
+ /** Build the ambient container element (or reuse an existing one). */
15
+ export declare function ensureAmbientScene(): HTMLElement;
16
+ /** Remove the ambient container wherever it lives. */
17
+ export declare function removeAmbientScene(): void;
18
+ /** Add the page edge-fade bands (5px gradient blur over the chat content). */
19
+ export declare function ensurePageFades(): void;
20
+ /** Remove the edge-fade bands. */
21
+ export declare function removePageFades(): void;
@@ -1,19 +1,19 @@
1
- /**
2
- * Fluid interaction feeds: buttons ripple on hover/click with a damped
3
- * stir (the shader settles the wake softly). Scroll wakes were removed by
4
- * request — feedback stays action-driven and gentle. Coordinates are
5
- * normalized per the single full-screen canvas so the ripple lands where
6
- * the action happened. Site policy (no passive mouse trail) is preserved.
7
- */
8
- import type { FluidShaderHandle } from './fluid-shader.ts';
9
- /** The one live fluid surface. */
10
- export interface FluidTargets {
11
- main: FluidShaderHandle;
12
- mainCanvas: HTMLCanvasElement;
13
- }
14
- /**
15
- * Attach the button ripple listeners.
16
- * @param targets - the fluid handle and its canvas.
17
- * @returns disposer removing every listener.
18
- */
19
- export declare function attachFluidInteractions(targets: FluidTargets): () => void;
1
+ /**
2
+ * Fluid interaction feeds: buttons ripple on hover/click with a damped
3
+ * stir (the shader settles the wake softly). Scroll wakes were removed by
4
+ * request — feedback stays action-driven and gentle. Coordinates are
5
+ * normalized per the single full-screen canvas so the ripple lands where
6
+ * the action happened. Site policy (no passive mouse trail) is preserved.
7
+ */
8
+ import type { FluidShaderHandle } from './fluid-shader.ts';
9
+ /** The one live fluid surface. */
10
+ export interface FluidTargets {
11
+ main: FluidShaderHandle;
12
+ mainCanvas: HTMLCanvasElement;
13
+ }
14
+ /**
15
+ * Attach the button ripple listeners.
16
+ * @param targets - the fluid handle and its canvas.
17
+ * @returns disposer removing every listener.
18
+ */
19
+ export declare function attachFluidInteractions(targets: FluidTargets): () => void;
@@ -1,57 +1,57 @@
1
- /**
2
- * Faithful port of the deepseek.com join-section fluid shader
3
- * (`ds-join-shader-bg`): a WebGL2 two-pass fluid simulation — a quarter-res
4
- * flow field (decay + pointer brush with velocity, ping-ponged between two
5
- * framebuffers) sampled by a full-res domain-warped noise renderer with
6
- * swirl iterations and a three-color soft blend. Shader sources are verbatim
7
- * from the site bundle; uniform wiring, the 30fps throttle, the 1.5x pixel
8
- * ratio cap, and the pointer-listener policy (touch and Windows skip the
9
- * mouse feed) are replicated exactly. Reduced-motion renders one static
10
- * frame instead of the loop.
11
- */
12
- /** Site-default parameters (the join-section look). */
13
- export interface FluidParams {
14
- mouseRadius: number;
15
- mouseStrength: number;
16
- decay: number;
17
- distortBoost: number;
18
- noiseBoost: number;
19
- swirlBoost: number;
20
- speed: number;
21
- distortion: number;
22
- swirl: number;
23
- swirlIterations: number;
24
- scale: number;
25
- rotation: number;
26
- proportion: number;
27
- softness: number;
28
- shapeScale: number;
29
- offsetX: number;
30
- offsetY: number;
31
- color1: string;
32
- color2: string;
33
- color3: string;
34
- }
35
- /** The exact default parameter set shipped by the site. */
36
- export declare const SITE_FLUID_PARAMS: FluidParams;
37
- /** Handle returned by {@link attachFluidShader}. */
38
- export interface FluidShaderHandle {
39
- /** Update simulation parameters (e.g. a palette switch) without re-mounting. */
40
- setParams: (params: FluidParams) => void;
41
- /** Stir the fluid at normalized coordinates with a velocity burst (wakes). */
42
- stir: (x: number, y: number, vx: number, vy: number) => void;
43
- /** Audio reactivity: bass energy 0..1 speeds the flow and amplifies the
44
- * turbulence (ripple amplitude). */
45
- setAudioLow: (level: number) => void;
46
- /** Pause or resume the simulation loop. A paused board keeps the last frame. */
47
- setRunning: (on: boolean) => void;
48
- /** Stop the loop and release listeners. */
49
- dispose: () => void;
50
- }
51
- /**
52
- * Mount the fluid simulation on a canvas and run it until disposed.
53
- * @param canvas - full-size canvas element (CSS-sized by the ambient layer).
54
- * @param params - simulation parameters (site defaults are the natural input).
55
- * @returns the live handle.
56
- */
57
- export declare function attachFluidShader(canvas: HTMLCanvasElement, params: FluidParams): FluidShaderHandle;
1
+ /**
2
+ * Faithful port of the deepseek.com join-section fluid shader
3
+ * (`ds-join-shader-bg`): a WebGL2 two-pass fluid simulation — a quarter-res
4
+ * flow field (decay + pointer brush with velocity, ping-ponged between two
5
+ * framebuffers) sampled by a full-res domain-warped noise renderer with
6
+ * swirl iterations and a three-color soft blend. Shader sources are verbatim
7
+ * from the site bundle; uniform wiring, the 30fps throttle, the 1.5x pixel
8
+ * ratio cap, and the pointer-listener policy (touch and Windows skip the
9
+ * mouse feed) are replicated exactly. Reduced-motion renders one static
10
+ * frame instead of the loop.
11
+ */
12
+ /** Site-default parameters (the join-section look). */
13
+ export interface FluidParams {
14
+ mouseRadius: number;
15
+ mouseStrength: number;
16
+ decay: number;
17
+ distortBoost: number;
18
+ noiseBoost: number;
19
+ swirlBoost: number;
20
+ speed: number;
21
+ distortion: number;
22
+ swirl: number;
23
+ swirlIterations: number;
24
+ scale: number;
25
+ rotation: number;
26
+ proportion: number;
27
+ softness: number;
28
+ shapeScale: number;
29
+ offsetX: number;
30
+ offsetY: number;
31
+ color1: string;
32
+ color2: string;
33
+ color3: string;
34
+ }
35
+ /** The exact default parameter set shipped by the site. */
36
+ export declare const SITE_FLUID_PARAMS: FluidParams;
37
+ /** Handle returned by {@link attachFluidShader}. */
38
+ export interface FluidShaderHandle {
39
+ /** Update simulation parameters (e.g. a palette switch) without re-mounting. */
40
+ setParams: (params: FluidParams) => void;
41
+ /** Stir the fluid at normalized coordinates with a velocity burst (wakes). */
42
+ stir: (x: number, y: number, vx: number, vy: number) => void;
43
+ /** Audio reactivity: bass energy 0..1 speeds the flow and amplifies the
44
+ * turbulence (ripple amplitude). */
45
+ setAudioLow: (level: number) => void;
46
+ /** Pause or resume the simulation loop. A paused board keeps the last frame. */
47
+ setRunning: (on: boolean) => void;
48
+ /** Stop the loop and release listeners. */
49
+ dispose: () => void;
50
+ }
51
+ /**
52
+ * Mount the fluid simulation on a canvas and run it until disposed.
53
+ * @param canvas - full-size canvas element (CSS-sized by the ambient layer).
54
+ * @param params - simulation parameters (site defaults are the natural input).
55
+ * @returns the live handle.
56
+ */
57
+ export declare function attachFluidShader(canvas: HTMLCanvasElement, params: FluidParams): FluidShaderHandle;
@@ -1,30 +1,30 @@
1
- /**
2
- * Continuous fluid palette: hue (0-360) and depth (0-100) sliders drive the
3
- * shader colors directly through HSL interpolation — stepless, no preset
4
- * steps. Depth 0 = the deep, saturated version of the hue (e.g. #8B0000 for
5
- * red), depth 100 = the pale, light version (e.g. #FFCCCB); the deep base
6
- * stop stays near-neutral so the colorless areas keep their true color.
7
- */
8
- export interface FluidToneColors {
9
- /** Bright bloom stop. */
10
- color1: string;
11
- /** Mid wash stop. */
12
- color2: string;
13
- /** Deep base stop (near-neutral). */
14
- color3: string;
15
- }
16
- /** The slider's 0/360 lands directly on the hue (HUE_BASE 0 keeps the
17
- * Mineradio default at 44 = champagne gold), sweeping clockwise around the
18
- * wheel — 44 lands on warm amber, 180 on mint. */
19
- export declare const HUE_BASE = 0;
20
- /**
21
- * Palette for the given hue (0-360) and depth (0-100), per scheme.
22
- * The depth ramp is piecewise: the lower half sweeps from the absolute
23
- * extreme — pure black in dark mode, the deep saturated shade (e.g. #8B0000
24
- * for red) in light mode — up to the shipped mid look; the upper half
25
- * sweeps from mid to pale (#FFCCCB for red). Stepless HSL interpolation.
26
- */
27
- export declare function fluidToneColors(dark: boolean, hue: number, depth: number): FluidToneColors;
28
- /** Vivid, fixed-lightness colour for a hue — used to fill the rainbow-strip
29
- * thumb so it always shows the picked colour in dark and light mode alike. */
30
- export declare function fluidHueSwatch(hue: number): string;
1
+ /**
2
+ * Continuous fluid palette: hue (0-360) and depth (0-100) sliders drive the
3
+ * shader colors directly through HSL interpolation — stepless, no preset
4
+ * steps. Depth 0 = the deep, saturated version of the hue (e.g. #8B0000 for
5
+ * red), depth 100 = the pale, light version (e.g. #FFCCCB); the deep base
6
+ * stop stays near-neutral so the colorless areas keep their true color.
7
+ */
8
+ export interface FluidToneColors {
9
+ /** Bright bloom stop. */
10
+ color1: string;
11
+ /** Mid wash stop. */
12
+ color2: string;
13
+ /** Deep base stop (near-neutral). */
14
+ color3: string;
15
+ }
16
+ /** The slider's 0/360 lands directly on the hue (HUE_BASE 0 keeps the
17
+ * Mineradio default at 44 = champagne gold), sweeping clockwise around the
18
+ * wheel — 44 lands on warm amber, 180 on mint. */
19
+ export declare const HUE_BASE = 0;
20
+ /**
21
+ * Palette for the given hue (0-360) and depth (0-100), per scheme.
22
+ * The depth ramp is piecewise: the lower half sweeps from the absolute
23
+ * extreme — pure black in dark mode, the deep saturated shade (e.g. #8B0000
24
+ * for red) in light mode — up to the shipped mid look; the upper half
25
+ * sweeps from mid to pale (#FFCCCB for red). Stepless HSL interpolation.
26
+ */
27
+ export declare function fluidToneColors(dark: boolean, hue: number, depth: number): FluidToneColors;
28
+ /** Vivid, fixed-lightness colour for a hue — used to fill the rainbow-strip
29
+ * thumb so it always shows the picked colour in dark and light mode alike. */
30
+ export declare function fluidHueSwatch(hue: number): string;
@@ -1,29 +1,29 @@
1
- /**
2
- * Mineradio glass dispersion filter — a reworked, single-tint port of the
3
- * player's `mineradio-control-glass-filter`.
4
- *
5
- * The original couples refraction and RGB channel split (which screen-blends
6
- * into an ugly magenta/purple). Here the two are separated:
7
- *
8
- * - REFRACTION: a colourless `feDisplacementMap` warps the backdrop through
9
- * a generated noise map (a blurred rounded-rect "clear centre" + red/blue
10
- * gradients), so the things behind the glass visibly bend at the edges.
11
- * - EDGE TINT: the refracted backdrop is laterally shifted and differenced
12
- * against itself (`feBlend mode="difference"`), which isolates the edge
13
- * signal only; a `feColorMatrix` then fills that signal with a SINGLE
14
- * user-picked hue, luminance-driven alpha (so it stays transparent and
15
- * edge-only), screen-blended over the refraction.
16
- *
17
- * The tint hue is adjustable at runtime via `setTint(hue)`. Chromium-only
18
- * (SVG `url()` in `backdrop-filter` is unsupported by Safari/Firefox); the
19
- * layer keeps its plain blur fallback there.
20
- */
21
- export interface GlassDispersionHandle {
22
- /** Re-colour the edge tint (hue in degrees, continuous). */
23
- setTint(hue: number): void;
24
- /** Set the refraction strength (0-100 — the feDisplacementMap scale). */
25
- setRefraction(scale: number): void;
26
- dispose(): void;
27
- }
28
- /** Start the glass dispersion filter and stamp the enabling attribute. */
29
- export declare function startGlassDispersion(): GlassDispersionHandle;
1
+ /**
2
+ * Mineradio glass dispersion filter — a reworked, single-tint port of the
3
+ * player's `mineradio-control-glass-filter`.
4
+ *
5
+ * The original couples refraction and RGB channel split (which screen-blends
6
+ * into an ugly magenta/purple). Here the two are separated:
7
+ *
8
+ * - REFRACTION: a colourless `feDisplacementMap` warps the backdrop through
9
+ * a generated noise map (a blurred rounded-rect "clear centre" + red/blue
10
+ * gradients), so the things behind the glass visibly bend at the edges.
11
+ * - EDGE TINT: the refracted backdrop is laterally shifted and differenced
12
+ * against itself (`feBlend mode="difference"`), which isolates the edge
13
+ * signal only; a `feColorMatrix` then fills that signal with a SINGLE
14
+ * user-picked hue, luminance-driven alpha (so it stays transparent and
15
+ * edge-only), screen-blended over the refraction.
16
+ *
17
+ * The tint hue is adjustable at runtime via `setTint(hue)`. Chromium-only
18
+ * (SVG `url()` in `backdrop-filter` is unsupported by Safari/Firefox); the
19
+ * layer keeps its plain blur fallback there.
20
+ */
21
+ export interface GlassDispersionHandle {
22
+ /** Re-colour the edge tint (hue in degrees, continuous). */
23
+ setTint(hue: number): void;
24
+ /** Set the refraction strength (0-100 — the feDisplacementMap scale). */
25
+ setRefraction(scale: number): void;
26
+ dispose(): void;
27
+ }
28
+ /** Start the glass dispersion filter and stamp the enabling attribute. */
29
+ export declare function startGlassDispersion(): GlassDispersionHandle;
@@ -1,24 +1,24 @@
1
- /**
2
- * Hero greeting pool: time-of-day buckets, random pick per new-session
3
- * mount, no immediate repeat. Disabling the Aqua layer resets the hero back
4
- * to the stock greeting for the active locale.
5
- */
6
- /**
7
- * Pick the greeting for the next hero mount.
8
- * @param locale - active locale id (`zh` pools by time of day; anything else
9
- * uses the English pool).
10
- * @returns the greeting string.
11
- */
12
- export declare function pickGreeting(locale: string): string;
13
- /**
14
- * Restore the stock hero copy for the active locale (called when the Aqua
15
- * layer is switched off, so the UI returns to its original wording).
16
- * @param locale - active locale id.
17
- */
18
- export declare function resetHeroCopy(locale: string): void;
19
- /**
20
- * Mineradio placeholder for the hero composer, matched to the active locale.
21
- * @param locale - active locale id.
22
- * @returns the placeholder string.
23
- */
24
- export declare function mineradioPlaceholder(locale: string): string;
1
+ /**
2
+ * Hero greeting pool: time-of-day buckets, random pick per new-session
3
+ * mount, no immediate repeat. Disabling the Aqua layer resets the hero back
4
+ * to the stock greeting for the active locale.
5
+ */
6
+ /**
7
+ * Pick the greeting for the next hero mount.
8
+ * @param locale - active locale id (`zh` pools by time of day; anything else
9
+ * uses the English pool).
10
+ * @returns the greeting string.
11
+ */
12
+ export declare function pickGreeting(locale: string): string;
13
+ /**
14
+ * Restore the stock hero copy for the active locale (called when the Aqua
15
+ * layer is switched off, so the UI returns to its original wording).
16
+ * @param locale - active locale id.
17
+ */
18
+ export declare function resetHeroCopy(locale: string): void;
19
+ /**
20
+ * Mineradio placeholder for the hero composer, matched to the active locale.
21
+ * @param locale - active locale id.
22
+ * @returns the placeholder string.
23
+ */
24
+ export declare function mineradioPlaceholder(locale: string): string;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Host store adapter. Mineradio 2.3.1 talks to `@deepseek-ai/dsh-client-store`;
3
+ * 2.3.2+ talks to `@deepseek-ai/dsh-client-runtime/client`.
4
+ */
5
+ export interface EngineStoreHandle<State, Actions> {
6
+ spec: unknown;
7
+ create: (scopeKey?: string) => {
8
+ actions: Actions;
9
+ getSnapshot: () => State;
10
+ subscribe: (fn: () => void) => () => void;
11
+ store: unknown;
12
+ clearPersisted: () => void;
13
+ };
14
+ }
15
+ type DefineStoreFn = <State, Actions extends Record<string, (...args: never[]) => unknown>>(decl: {
16
+ init: () => State;
17
+ persist?: string;
18
+ actions: {
19
+ [K in keyof Actions]: (draft: State, ...args: Parameters<Actions[K]>) => void;
20
+ };
21
+ }) => EngineStoreHandle<State, Actions>;
22
+ export declare function loadHostDefineStore(requireFn: (id: string) => unknown): DefineStoreFn;
23
+ export declare const defineStore: DefineStoreFn;
24
+ export {};
@@ -1,21 +1,21 @@
1
- /**
2
- * Mineradio client plugin body: the toggleable cinematic glass skin. Owns the
3
- * durable enable flag (localStorage), applies/retracts the theme layer through
4
- * {@link MineradioLayer}, and registers two settings surfaces:
5
- * - the master on/off card into the Plugins section (`settings.plugin.item`,
6
- * same shape as the other plugin cards);
7
- * - every glass knob into the General section's Appearance row area
8
- * (`settings.general.item`, right under 外观).
9
- * One click on the master switch returns the stock UI (every layer is an
10
- * effect, disposed on flip).
11
- */
12
- import type { Context } from '@deepseek-ai/cordis';
13
- import './mineradio.module.css';
14
- import './fonts.module.css';
15
- /** Required services: theme override stack plus the settings-card surfaces. */
16
- export declare const inject: string[];
17
- /**
18
- * Client plugin body.
19
- * @param ctx - client cordis context.
20
- */
21
- export declare function apply(ctx: Context): void;
1
+ /**
2
+ * Mineradio client plugin body: the toggleable cinematic glass skin. Owns the
3
+ * durable enable flag (localStorage), applies/retracts the theme layer through
4
+ * {@link MineradioLayer}, and registers two settings surfaces:
5
+ * - the master on/off card into the Plugins section (`settings.plugin.item`,
6
+ * same shape as the other plugin cards);
7
+ * - every glass knob into the General section's Appearance row area
8
+ * (`settings.general.item`, right under 外观).
9
+ * One click on the master switch returns the stock UI (every layer is an
10
+ * effect, disposed on flip).
11
+ */
12
+ import type { Context } from '@deepseek-ai/cordis';
13
+ import './mineradio.module.css';
14
+ import './fonts.module.css';
15
+ /** Required services: theme override stack plus the settings-card surfaces. */
16
+ export declare const inject: string[];
17
+ /**
18
+ * Client plugin body.
19
+ * @param ctx - client cordis context.
20
+ */
21
+ export declare function apply(ctx: Context): void;