dsh-folia 1.6.0 → 2.0.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 (86) hide show
  1. package/README.beginner.md +13 -13
  2. package/README.en.md +25 -25
  3. package/README.md +378 -62
  4. package/assets/about/README.md +89 -0
  5. package/assets/readme/mascot-eating-rice-1280x1784.jpg +0 -0
  6. package/cordis.patch.yml +16 -86
  7. package/lib/about/README.md +2 -2
  8. package/lib/client.js +3736 -89
  9. package/lib/components/about-notice/index.js +125 -0
  10. package/lib/components/about-notice/routes/about-qr.js +92 -0
  11. package/lib/components/about-notice/routes/github-stars.js +143 -0
  12. package/lib/components/fonts/client.build.json +22 -0
  13. package/lib/components/fonts/index.js +129 -0
  14. package/lib/components/fonts/lib/client.fonts.js +656 -0
  15. package/lib/components/fonts/routes/fontsets.js +415 -0
  16. package/lib/components/fonts/routes/system-fonts.js +530 -0
  17. package/lib/components/fonts/src/appearance-font-section.js +389 -0
  18. package/lib/components/fonts/src/client.js +82 -0
  19. package/lib/components/fonts/src/fontset-editor.js +209 -0
  20. package/lib/components/fx/client.build.json +16 -0
  21. package/lib/components/fx/index.js +44 -0
  22. package/lib/components/fx/lib/client.fx.js +847 -0
  23. package/lib/components/fx/src/client.js +75 -0
  24. package/lib/components/fx/src/ext-fx.js +155 -0
  25. package/lib/components/fx/src/fx-layer.js +635 -0
  26. package/lib/components/mascot-avatar/index.js +147 -0
  27. package/lib/components/mascot-avatar/routes/avatar.js +137 -0
  28. package/lib/components/mascot-avatar/routes/mascot.js +124 -0
  29. package/lib/components/media-bridge/audio-tap.swift +146 -0
  30. package/lib/components/media-bridge/backend.js +144 -0
  31. package/lib/components/media-bridge/index.js +129 -0
  32. package/lib/components/media-bridge/legacy.js +467 -0
  33. package/lib/components/media-bridge/provision.js +301 -0
  34. package/lib/components/media-bridge/routes/now-playing.js +177 -0
  35. package/lib/components/media-bridge/supervisor.js +765 -0
  36. package/lib/components/parallax/client.build.json +16 -0
  37. package/lib/components/parallax/index.js +44 -0
  38. package/lib/components/parallax/lib/client.parallax.js +1492 -0
  39. package/lib/components/parallax/src/client.js +60 -0
  40. package/lib/components/parallax/src/ext-parallax.js +148 -0
  41. package/lib/components/parallax/src/parallax-layer.js +1299 -0
  42. package/lib/components/pet-link/client.build.json +21 -0
  43. package/lib/components/pet-link/index.js +34 -0
  44. package/lib/components/pet-link/lib/client.pet-link.js +641 -0
  45. package/lib/components/pet-link/official-provider.js +151 -0
  46. package/lib/components/pet-link/prepared.js +10 -0
  47. package/lib/components/pet-link/routes/official-pet.js +118 -0
  48. package/lib/components/pet-link/src/client.js +55 -0
  49. package/lib/components/pet-link/src/official-pet.js +130 -0
  50. package/lib/components/pet-link/src/pet-link-actions.json +18 -0
  51. package/lib/components/pet-link/src/pet-link-timings.json +61 -0
  52. package/lib/components/pet-link/src/pet-link-tuner.js +142 -0
  53. package/lib/components/pet-link/src/pet-link.js +295 -0
  54. package/lib/diag-trace.js +1 -1
  55. package/lib/faststart.js +3 -3
  56. package/lib/host-boot.js +3 -3
  57. package/lib/index.js +51 -13
  58. package/lib/inventory.js +2 -2
  59. package/lib/kernel/component-session.js +3 -3
  60. package/lib/kernel/config.js +4 -4
  61. package/lib/kernel/data-dir.js +55 -9
  62. package/lib/kernel/host-session.js +4 -4
  63. package/lib/log.js +3 -3
  64. package/lib/media/frame-store.js +2 -2
  65. package/lib/media/media-dirs.js +1 -1
  66. package/lib/media/transcode.js +10 -10
  67. package/lib/notice.js +5 -5
  68. package/lib/routes/cache-dir.js +2 -2
  69. package/lib/routes/inventory.js +93 -33
  70. package/lib/routes/live-frame.js +1 -1
  71. package/lib/routes/media-bytes.js +1 -1
  72. package/lib/routes/occlusion.js +2 -2
  73. package/lib/routes/props.js +1 -1
  74. package/lib/routes/settings.js +3 -3
  75. package/lib/routes/we-assets.js +1 -1
  76. package/lib/serve.js +1 -1
  77. package/lib/settings-schema.js +5 -5
  78. package/lib/startup-sweep.js +1 -1
  79. package/lib/steam-discovery.js +5 -5
  80. package/lib/subpackage-boot.js +11 -11
  81. package/lib/types/client.d.ts +2 -2
  82. package/lib/types/index.d.ts +15 -15
  83. package/lib/upload-dir.js +3 -3
  84. package/lib/we-assets.js +4 -4
  85. package/lib/webwallgl/renderer.js +1 -1
  86. package/package.json +149 -22
package/cordis.patch.yml CHANGED
@@ -1,90 +1,20 @@
1
- # dsh-folia bundle patch.
1
+ # dsh-plugin-folia bundle patch — single-row form.
2
2
  #
3
- # Applied over the dsh-web-app layer. This bundle contributes EIGHT host rows:
4
- # - four owned by the main package: the plugin that scans Wallpaper Engine and
5
- # serves its media, the `about-notice` component row that owns the About tab's
6
- # two routes, the `mascot-avatar` component row that owns the mascot image +
7
- # the two session avatars, and the `media-bridge` component row that owns the
8
- # system media integration;
9
- # - three owned by `packages/{fx,parallax,fonts}`: the subpackages this main
10
- # package depends on (BUNDLE-SPLIT §7.1). Semantics A (§2.3) — the main package
11
- # owns these rows, each `name` is the subpackage's REAL package name, and this
12
- # patch is the single source of truth for the row set; a subpackage's own
13
- # cordis.patch.yml only takes effect when that subpackage is installed as a
14
- # standalone bundle (not the shape used here).
15
- # The main package relies on its `dsh.client` manifest (in package.json) to load the
16
- # browser half that draws the wallpaper behind the DSH GUI and adds the settings UI.
3
+ # This bundle used to contribute EIGHT host rows (the plugin itself plus seven
4
+ # subpackage rows: about-notice / mascot-avatar / media-bridge / fonts / fx /
5
+ # parallax / pet-link). Those seven now live in this package under
6
+ # `lib/components/` and are mounted from `apply()` in `lib/index.js`, so the row
7
+ # set is exactly one row: this bundle.
17
8
  #
18
- # A patch replaces the targeted row's whole `config`, so only additive
19
- # `insert` rows appear here (we never override an existing shipped row).
9
+ # Why the merge (see lib/index.js "BUNDLE-MERGE"): each subpackage browser half
10
+ # used to reach the host half through `require('<main package name>')`, which is
11
+ # the most fragile edge in the plugin — it broke every time the main package was
12
+ # renamed, and an id mismatch silently blanked the font / effect panels. One
13
+ # package means no cross-package module id at all.
14
+ #
15
+ # A patch replaces the targeted row's whole `config`, so only additive `insert`
16
+ # rows appear here (we never override an existing shipped row).
20
17
 
21
18
  - insert:
22
- # Host half: discovers the local Wallpaper Engine install (Steam app 431960),
23
- # enumerates Scene/Video/Web wallpapers from the Workshop + default projects
24
- # (Application wallpapers are listed but never rendered),
25
- # and serves their media + a JSON inventory over same-origin HTTP routes
26
- # the browser half fetches directly (GET /wallpaper-engine/inventory, /media,
27
- # /preview, …; docs/ROUTE-INDEX.md is the authoritative table — it is generated
28
- # and machine-checked, so the route count is deliberately not repeated here).
29
- - id: wallpaper-engine
30
- name: 'dsh-folia-host'
31
- # Second row: the `about-notice` component's host half (C8′, P2-1). The host
32
- # loads it as its own plugin — its entry re-enters this bundle's
33
- # `applyComponent` — so disabling just this row removes the About tab's
34
- # /star-count + /about-qr routes and leaves the other 40 untouched.
35
- # P-F (2026-10-16): this component moved out to `packages/about-notice/`, so the
36
- # row `name` is now the real package name (resolved through <profile>/node_modules,
37
- # same as the fx / parallax / fonts rows below). The `id` is frozen.
38
- - id: wallpaper-engine-about-notice
39
- name: 'dsh-folia-about-notice'
40
- # Third row: the `mascot-avatar` component's host half (C6, P2-2) — the custom
41
- # mascot image (/mascot) and the two session avatars (/avatar/<side>). Same
42
- # shape as the row above (independent plugin, re-enters `applyComponent`);
43
- # disabling it removes just those two routes.
44
- # P-F (2026-10-16): this component moved out to `packages/mascot-avatar/`, so the
45
- # row `name` is now the real package name (resolved through <profile>/node_modules,
46
- # same as the fx / parallax / fonts rows below). The `id` is frozen.
47
- - id: wallpaper-engine-mascot-avatar
48
- name: 'dsh-folia-mascot-avatar'
49
- # Fourth row: the `media-bridge` component's host half (third component) — the
50
- # system media integration (now playing / spectrum / artwork / reverse control)
51
- # and its backend (the media-bridge child process with the built-in fallback).
52
- # Same shape as the rows above (independent plugin, re-enters `applyComponent`);
53
- # disabling it removes just those five routes. Default ON: turning it off loses
54
- # the media integration (user-visible), so the row ships enabled and the user
55
- # turns it off per-row if they do not want it.
56
- # P-F (2026-10-16): this component moved out to `packages/media-bridge/`, so the
57
- # row `name` is now the real package name (resolved through <profile>/node_modules,
58
- # same as the fx / parallax / fonts rows below). The `id` is frozen.
59
- - id: wallpaper-engine-media-bridge
60
- name: 'dsh-folia-media-bridge'
61
- # webServer is a hard dependency (`inject = ['webServer']` in lib/index.js):
62
- # the Loader waits for the HTTP server to mount, so a headless/TUI profile
63
- # without one does not load this bundle at all.
64
- # ── P-A 子包行(BUNDLE-SPLIT §7.1)────────────────────────────────────────────
65
- # 行的 name 是**子包的真名**(不是主包的子路径):开发期解析靠
66
- # `scripts/dev-link-subpackages.mjs` 在 <profile>/node_modules 下建的目录 junction,
67
- # 与发布期 pnpm hoist 布局同形(§8.1 spike 结论)。主包 apply 会先 resolve 这三行,
68
- # 解析不到就**大声抛错**(宿主对行级失败是静默的 —— §4.1 I5)。
69
- # 可选桌宠联动;没有 dsh-pet 或首次准备未完成时保留吉祥物原生行为。
70
- - id: wallpaper-engine-pet-link
71
- name: 'dsh-folia-pet-link'
72
- # fx:点击拖尾 + 特效扩展(src/fx-layer.js、src/ext-fx.js),浏览器半边在本包自己的产物里。
73
- - id: wallpaper-engine-fx
74
- name: 'dsh-folia-fx'
75
- # parallax:3D 视差层(src/parallax-layer.js、src/ext-parallax.js),同上。
76
- - id: wallpaper-engine-parallax
77
- name: 'dsh-folia-parallax'
78
- # fonts:整个字体系统(P-C 之后宿主半边 + 浏览器半边都在本包)
79
- # · 宿主半边:lib/routes/fontsets.js、lib/routes/system-fonts.js 两条路由族;
80
- # · 浏览器半边:外观页签第六节「全局字体」+ 字体集编辑器 ⇒ 产物 lib/client.fonts.js。
81
- # 注意(§6.1 = A / ADR-0013 D20):随包走的只是**渲染器与描述符**;字体的键、默认值、
82
- # 消毒与持久化仍在主包 lib/settings-schema.js(FONTSET_KEYS)与 fontsets/<id>.json。
83
- - id: wallpaper-engine-fonts
84
- name: 'dsh-folia-fonts'
85
- # ── 内置桌宠本体:已解耦(2026-10-20)────────────────────────────────────────
86
- # `packages/pet`(`dsh-we-pet-builtin`)与它的 `wallpaper-engine-pet` 行**已从本包移除**:
87
- # 它把 `electron`(optional)带进安装树,而 electron 42+ 在缺少 `dist/` 时会在
88
- # `require('electron')` 里**同步**下载约 140MB 二进制 ⇒ 宿主启动被堵到 60 秒超时,
89
- # 整个 profile 起不来。桌宠本体的正式接入等上游 dsh-pet 提供联动接口后,由 pet-link 对接
90
- # **外部** provider;在那之前 pet-link 的就绪面如实返回 unavailable(不静默假装可用)。
19
+ - id: folia
20
+ name: 'dsh-folia'
@@ -17,8 +17,8 @@
17
17
 
18
18
  | 文件 | 内容 | 派生自 |
19
19
  |---|---|---|
20
- | `qq-group.png` | QQ 群「DSHWE \| LLM 讨论群」二维码(520×517) | `assets/about/qq-group-dshwe-llm-702x852.png` |
21
- | `douyin-group.png` | 抖音群「dshwe 交流 2 群」(群号 917001335502)二维码(520×519) | `assets/about/douyin-group-dshwe-2-748x748.png` |
20
+ | `qq-group.png` | QQ 群「FOLIAWALLPAPER \| LLM 讨论群」二维码(520×517) | `assets/about/qq-group-folia-llm-702x852.png` |
21
+ | `douyin-group.png` | 抖音群「folia 交流 2 群」(群号 917001335502)二维码(520×519) | `assets/about/douyin-group-folia-2-748x748.png` |
22
22
  | `update-notice.jpg` | v1.3.0 更新公告配图「求个 star 喵!」GitHub 求星插画(720×720) | `assets/about/update-notice-star-1254x1254.png` |
23
23
 
24
24
  派生口径(只取码区 + 缩到 520px 宽 + 128 色调色板)与验证方式(逐像素比对 + macOS Vision 扫码)