most-box 0.3.6 → 0.3.8

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 (87) hide show
  1. package/README.md +23 -16
  2. package/out/about/index.html +6 -5
  3. package/out/admin/index.html +0 -0
  4. package/out/app/index.html +0 -0
  5. package/out/assets/AccountMenu-C3wvcWtn.js +1 -0
  6. package/out/assets/AppShell-BN1uaxn1.js +1 -0
  7. package/out/assets/{AppTop-D-qYC0ep.js → AppTop-iPNi3cv5.js} +1 -1
  8. package/out/assets/{CopyButton-BrEkzqEq.js → CopyButton-BfQ-TOoR.js} +1 -1
  9. package/out/assets/{MarketingHeader-CJXpogPY.js → MarketingHeader-Bh6LcQOj.js} +1 -1
  10. package/out/assets/{MarketingLayout-Ch4sw5Qm.js → MarketingLayout-9X-D6xx4.js} +1 -1
  11. package/out/assets/{MilkdownEditor-DfhuT9eU.js → MilkdownEditor-4FuwE6Td.js} +1 -1
  12. package/out/assets/{OpenSidebarButton-Bvwr7B6k.js → OpenSidebarButton-09yeNDLa.js} +1 -1
  13. package/out/assets/arrow-right-DcTPIyLV.js +1 -0
  14. package/out/assets/{arrow-up-down-DvLSz6Ma.js → arrow-up-down-gcWLrYup.js} +1 -1
  15. package/out/assets/{channelApi-C5eHetoJ.js → channelApi-DA2GY-k4.js} +1 -1
  16. package/out/assets/{chatNoteDraft-DTy6In5R.js → chatNoteDraft-D6FEmSXK.js} +1 -1
  17. package/out/assets/{circle-alert-DXVkx8p8.js → circle-alert-Dg9cBJgj.js} +1 -1
  18. package/out/assets/{copy-OwXDsstV.js → copy-BofKiKH_.js} +1 -1
  19. package/out/assets/{download-Cy2BlfKM.js → download-nQ9X-v0q.js} +1 -1
  20. package/out/assets/{downloadValidation-Dd43i9_9.js → downloadValidation-C0PecvKC.js} +1 -1
  21. package/out/assets/{external-link-D_AQSgxW.js → external-link-LcGMVTLE.js} +1 -1
  22. package/out/assets/{file-text-zvTER2mN.js → file-text-f1ij7Al1.js} +1 -1
  23. package/out/assets/{fingerprint-pattern-BT73ASEB.js → fingerprint-pattern-Z6NfIcxC.js} +1 -1
  24. package/out/assets/{folder-6pYYnS2-.js → folder-DGTODlX0.js} +1 -1
  25. package/out/assets/{folder-open-DOJ4bB58.js → folder-open-BKTeAP5z.js} +1 -1
  26. package/out/assets/{gamepad-2-BYqNgCQr.js → gamepad-2-q3ssU_CE.js} +1 -1
  27. package/out/assets/{hard-drive-DL1KJHmG.js → hard-drive-CMNAmPI5.js} +1 -1
  28. package/out/assets/{index-mjFWLwue.js → index-CCU5Z4K-.js} +7 -6
  29. package/out/assets/{index.lazy-F3iHN_Ao.js → index.lazy-1YPf8Ys8.js} +1 -1
  30. package/out/assets/{index.lazy-BAr7-dhf.js → index.lazy-7EjTGodD.js} +1 -1
  31. package/out/assets/{index.lazy-8GSHLIGt.js → index.lazy-B2-v2OGR.js} +1 -1
  32. package/out/assets/{index.lazy-BbA_1LnY.js → index.lazy-BBsa7aDt.js} +1 -1
  33. package/out/assets/index.lazy-BJh0zxMI.js +3 -0
  34. package/out/assets/{index.lazy-CVOAOO0_.js → index.lazy-BMh0Oy3C.js} +1 -1
  35. package/out/assets/{index.lazy-CB3C6kMj.js → index.lazy-Bi5tHgok.js} +1 -1
  36. package/out/assets/index.lazy-CbtY_wql.js +1 -0
  37. package/out/assets/{index.lazy-CyFSwJuo.js → index.lazy-CsgZmOLX.js} +1 -1
  38. package/out/assets/{index.lazy-BmpOpQqg.js → index.lazy-D9zm7DgW.js} +1 -1
  39. package/out/assets/{index.lazy-B5JMiv3z.js → index.lazy-DH1bcYry.js} +1 -1
  40. package/out/assets/{index.lazy-B3jH9yBA.js → index.lazy-DQA4yE6c.js} +1 -1
  41. package/out/assets/{index.lazy-qDpRLqXu.js → index.lazy-DhhSG0Me.js} +1 -1
  42. package/out/assets/{index.lazy-PnZR3z1V.js → index.lazy-Dl8LX4dH.js} +1 -1
  43. package/out/assets/{index.lazy-D3iEq2ZW.js → index.lazy-Q-Lr-abQ.js} +2 -2
  44. package/out/assets/{loader-C4pED_QP.js → loader-DAMqAKH7.js} +1 -1
  45. package/out/assets/{lock-yG7M7GkB.js → lock-Cigqt_VP.js} +1 -1
  46. package/out/assets/{message-square-CfApq8Ou.js → message-square-0kQmuMcd.js} +1 -1
  47. package/out/assets/{mp-cEQteKUC.js → mp-CFhRibX9.js} +1 -1
  48. package/out/assets/{music-Br2x8TKX.js → music-U7NZcQ6S.js} +1 -1
  49. package/out/assets/{notebook-pen-Bcd3MrtD.js → notebook-pen-CMRWy6ni.js} +1 -1
  50. package/out/assets/play-B6IGTGxm.js +1 -0
  51. package/out/assets/{refresh-cw-CfkUlTK9.js → refresh-cw-Bxmcm8cn.js} +1 -1
  52. package/out/assets/{save-CfYzXcxH.js → save-CQyJvrmI.js} +1 -1
  53. package/out/assets/{saveLocalFile-BLTn3Z18.js → saveLocalFile-DkrpR5WS.js} +1 -1
  54. package/out/assets/search-CURHlVZZ.js +1 -0
  55. package/out/assets/{send-Bie9hgHI.js → send-yxXCy-t8.js} +1 -1
  56. package/out/assets/{shield-check-2-h_eEXp.js → shield-check-Cq1PKT30.js} +1 -1
  57. package/out/assets/{smartphone-CrsocYJo.js → smartphone-D9j5h2Pg.js} +1 -1
  58. package/out/assets/{trash-2-B9gno5q6.js → trash-2-DQI0V0Rl.js} +1 -1
  59. package/out/assets/{triangle-alert-BhNtjKm2.js → triangle-alert-D8P4Ikwc.js} +1 -1
  60. package/out/assets/{upload-BmufnMFu.js → upload-PpzkqJnf.js} +1 -1
  61. package/out/assets/{useAppStore-DNhyhD20.js → useAppStore-Pjif7nCR.js} +1 -1
  62. package/out/assets/useChannelMessages-Ea1I0HsF.js +4 -0
  63. package/out/assets/{useGameRoom-DLN636mz.js → useGameRoom-CqeouPP_.js} +1 -1
  64. package/out/assets/{wallet-D6HZocla.js → wallet-Ts6jdQzi.js} +1 -1
  65. package/out/assets/{wifi-CILQyKk0.js → wifi-B1v_i_dr.js} +1 -1
  66. package/out/chat/index.html +0 -0
  67. package/out/chat/join/demo/index.html +0 -0
  68. package/out/chat/join/index.html +0 -0
  69. package/out/download/index.html +6 -5
  70. package/out/game/gandengyan/index.html +0 -0
  71. package/out/game/index.html +0 -0
  72. package/out/game/zhajinhua/index.html +0 -0
  73. package/out/index.html +6 -5
  74. package/out/note/index.html +0 -0
  75. package/out/ping/index.html +6 -5
  76. package/out/profile/index.html +0 -0
  77. package/out/web3/index.html +0 -0
  78. package/package.json +1 -1
  79. package/server/src/index.js +21 -1
  80. package/out/assets/AccountMenu-B26qus-Q.js +0 -1
  81. package/out/assets/AppShell-BiYQsNO8.js +0 -1
  82. package/out/assets/arrow-right-BsHzC0ZL.js +0 -1
  83. package/out/assets/index.lazy-BMFwyE_Z.js +0 -3
  84. package/out/assets/index.lazy-s6Ok77GI.js +0 -1
  85. package/out/assets/play-DSHtNcOe.js +0 -1
  86. package/out/assets/search-DLBOUfny.js +0 -1
  87. package/out/assets/useChannelMessages-DKlO_2oW.js +0 -4
package/README.md CHANGED
@@ -112,7 +112,7 @@ npm test # 运行 Android 子包协议、Channel 和 IPC 测试
112
112
 
113
113
  ### 飞牛 OS / NAS 局域网部署
114
114
 
115
- 飞牛 OS 自带 Docker,可以把 NAS 变成一台 24 小时在线的 MostBox 做种机。普通用户建议直接用飞牛的 Docker 图形界面,不需要 SSH。
115
+ 飞牛 OS 自带 Docker,可以把 NAS 变成一台 24 小时在线的 MostBox 做种机。推荐使用官方 Docker 镜像,容器启动时不会再临时安装 npm 包或 Debian 依赖。
116
116
 
117
117
  你只需要准备两样东西:
118
118
 
@@ -124,28 +124,20 @@ npm test # 运行 Android 子包协议、Channel 和 IPC 测试
124
124
  1. 打开飞牛 OS 桌面的 **Docker**。
125
125
  2. 找到 **Compose**、**项目** 或 **创建项目** 入口。
126
126
  3. 项目名填写 `mostbox`。
127
- 4. Compose 内容整段复制下面这一块,不需要改里面的命令。
127
+ 4. Compose 内容整段复制下面这一块。
128
128
  5. 保存并启动项目。
129
129
 
130
130
  ```yaml
131
131
  services:
132
132
  mostbox:
133
- image: node:22-bookworm-slim
133
+ image: ghcr.io/most-people/most-box:0.3.8
134
134
  container_name: mostbox
135
135
  network_mode: host
136
136
  restart: unless-stopped
137
+ environment:
138
+ HOME: /data
137
139
  volumes:
138
- - /vol1/docker/mostbox:/data
139
- working_dir: /data
140
- command: >
141
- sh -lc "if [ ! -e /usr/lib/x86_64-linux-gnu/libatomic.so.1 ]; then
142
- apt-get update &&
143
- DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends libatomic1 ca-certificates &&
144
- rm -rf /var/lib/apt/lists/*;
145
- fi;
146
- mkdir -p /data/home /data/npm-cache &&
147
- chown -R 1000:1000 /data/home /data/npm-cache &&
148
- su node -s /bin/sh -c 'HOME=/data/home npm_config_cache=/data/npm-cache npm_config_audit=false npm_config_fund=false npx -y most-box@latest --host 0.0.0.0'"
140
+ - /vol1/docker/mostbox/home:/data
149
141
  ```
150
142
 
151
143
  启动后,在同一局域网的电脑或手机浏览器打开:
@@ -162,11 +154,26 @@ http://192.168.31.107:1976
162
154
 
163
155
  看到 MostBox 页面后,就可以在 NAS 上发布文件。发布后复制生成的 `most://<cid>?filename=...` 链接发给别人;下载者运行自己的 MostBox,粘贴链接下载。你的 NAS 会继续在线做种,关闭浏览器页面也不影响容器做种。
164
156
 
157
+ 升级到新版本时,把 Compose 里的镜像 tag 改成新版本,然后重新拉取并启动:
158
+
159
+ ```bash
160
+ docker compose pull
161
+ docker compose up -d
162
+ ```
163
+
164
+ 如果你之前用过旧的临时 `node + npx` 方案,且不需要保留旧数据,可以先停止项目并删除 `/vol1/docker/mostbox`,再按上面的 Compose 重新创建。
165
+
166
+ 验证节点状态:
167
+
168
+ ```bash
169
+ curl --noproxy "*" http://你的NAS地址:1976/api/node/status
170
+ ```
171
+
165
172
  常见问题:
166
173
 
167
174
  - 页面打不开:先确认 Docker 项目状态是“运行中”,再确认访问的是 NAS 的局域网 IP 加 `:1976`。
168
- - 日志里一直下载失败:可能是 NAS 访问 npm Debian 软件源太慢,可以给 Docker 项目临时加代理。
169
- - 数据目录:文件和节点数据保存在 NAS 的 `/vol1/docker/mostbox`,通常位于飞牛的第一个存储空间。
175
+ - 镜像拉取失败:确认 NAS 能访问 `ghcr.io`,必要时只给 Docker 拉镜像配置代理;容器启动后不依赖 npm apt。
176
+ - 数据目录:文件和节点数据保存在 NAS 的 `/vol1/docker/mostbox/home`,通常位于飞牛的第一个存储空间。
170
177
  - 安全提醒:`--host 0.0.0.0` 是给家庭局域网使用的。不要在路由器里把 `1976` 端口直接暴露到公网;需要公网 Web 入口时,请使用 HTTPS 反向代理,并在管理台配置远程访问邀请码。
171
178
 
172
179
  ### 远程管理节点
@@ -1,9 +1,10 @@
1
- <!DOCTYPE html><html lang="zh-CN" data-scroll-behavior="smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="stylesheet" href="/assets/index-FEwag7ej.css" data-precedence="default"/><title>关于 MOST PEOPLE</title><meta name="theme-color" content="#5e6ad2"/><meta name="description" content="MOST PEOPLE 是完全开源、以聊天为基础的 P2P 工具箱,包含文件分享、知识库、多人语音、游戏房间和可复用账户系统。"/><link rel="modulepreload" href="/assets/index-mjFWLwue.js"/><link rel="modulepreload" href="/assets/jsx-runtime-Bt-cYkS5.js"/><link rel="modulepreload" href="/assets/useAppStore-DNhyhD20.js"/><link rel="modulepreload" href="/assets/useNavigate-DWlBD_-b.js"/><link rel="modulepreload" href="/assets/i18n-DKsg67mH.js"/><link rel="icon" href="/logo.svg" type="image/svg+xml"/><script>
1
+ <!DOCTYPE html><html lang="zh-CN" data-scroll-behavior="smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="stylesheet" href="/assets/index-FEwag7ej.css" data-precedence="default"/><title>关于 MOST PEOPLE</title><meta name="theme-color" content="#5e6ad2"/><meta name="description" content="MOST PEOPLE 是完全开源、以聊天为基础的 P2P 工具箱,包含文件分享、知识库、多人语音、游戏房间和可复用账户系统。"/><link rel="modulepreload" href="/assets/index-CCU5Z4K-.js"/><link rel="modulepreload" href="/assets/jsx-runtime-Bt-cYkS5.js"/><link rel="modulepreload" href="/assets/useAppStore-Pjif7nCR.js"/><link rel="modulepreload" href="/assets/useNavigate-DWlBD_-b.js"/><link rel="modulepreload" href="/assets/i18n-DKsg67mH.js"/><link rel="icon" href="/logo.svg" type="image/svg+xml"/><script>
2
2
  (function() {
3
3
  var theme = localStorage.getItem('theme');
4
- if (theme === 'dark' || (!theme && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
5
- document.documentElement.setAttribute('data-theme', 'dark');
6
- }
4
+ var resolvedTheme = theme === 'dark' || (!theme && window.matchMedia('(prefers-color-scheme: dark)').matches)
5
+ ? 'dark'
6
+ : 'light';
7
+ document.documentElement.setAttribute('data-theme', resolvedTheme);
7
8
  var locale = localStorage.getItem('mostbox.locale');
8
9
  var supportedLocales = ['zh-CN', 'zh-TW', 'en'];
9
10
  var normalizedLocale = supportedLocales.indexOf(locale) >= 0 ? locale : 'zh-CN';
@@ -17,4 +18,4 @@
17
18
  window.onunhandledrejection = function(event) {
18
19
  console.error('[Unhandled Promise Rejection]', event.reason);
19
20
  };
20
- </script><!--$--><div class="mkt-layout"><header class="about-app-header"><div class="mkt-container"><a aria-label="MOST PEOPLE" title="MOST PEOPLE" href="/" class="sidebar-header sidebar-header-link"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left" aria-hidden="true"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg><h1>MOST PEOPLE</h1></a></div></header><main class="mkt-layout-main"><div class="about-page"><section class="about-hero"><div class="mkt-container"><p class="about-kicker">去中心化 P2P 工具箱</p><h1 class="about-title">关于 MOST PEOPLE</h1><p class="about-lede">MOST PEOPLE 以聊天为基础展开:邀请大家在房间里发消息、开多人语音、分享 most:// 文件、沉淀知识库和进入游戏。</p><code class="about-link-example" translate="no">most://&lt;cid&gt;?filename=...</code><ul class="about-summary"><li class="about-summary-item"><span class="about-summary-icon"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span>CID 类似磁力链接/BT 种子的内容指纹:链接指向内容,下载后再校验是不是同一份文件。</span></li><li class="about-summary-item"><span class="about-summary-icon"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span>发布者和下载者都能做种,只要仍有人在线,文件就能继续传播。</span></li><li class="about-summary-item"><span class="about-summary-icon"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span>聊天是主入口,文件、知识库、游戏和工具箱都从对话里展开。</span></li><li class="about-summary-item"><span class="about-summary-icon"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span>MOST PEOPLE 完全开源,账户系统也欢迎其他项目接入。</span></li></ul></div></section><section class="about-section-band"><div class="mkt-container"><div class="about-section-grid"><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fingerprint-pattern" aria-hidden="true"><path d="M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4"></path><path d="M14 13.12c0 2.38 0 6.38-1 8.88"></path><path d="M17.29 21.02c.12-.6.43-2.3.5-3.02"></path><path d="M2 12a10 10 0 0 1 18-6"></path><path d="M2 16h.01"></path><path d="M21.8 16c.2-2 .131-5.354 0-6"></path><path d="M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2"></path><path d="M8.65 22c.21-.66.45-1.32.57-2"></path><path d="M9 6.8a6 6 0 0 1 9 5.2v2"></path></svg></div><h2>CID 是内容指纹</h2><p>可以把 most:// 理解成 MOST PEOPLE 的 P2P 分享链接,思路接近磁力链接和 BT 种子:先按内容找文件,再从在线种子下载并校验。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>文件名只负责展示,不能代替 CID。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>CID 校验通过后才保存为可信文件。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>判断本地已有时必须能按 CID 读到内容。</span></li></ul></article><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-network" aria-hidden="true"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></path></svg></div><h2>在线的人共同传播</h2><p>文件不是上传到一个中心服务器,而是在当前在线的完整副本之间传播。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>下载完成后默认成为新的种子。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>应用或 daemon 重启后会恢复做种记录。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>本机能看到正在做种的 CID、大小和 join 状态。</span></li></ul></article><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cloud-off" aria-hidden="true"><path d="M10.94 5.274A7 7 0 0 1 15.71 10h1.79a4.5 4.5 0 0 1 4.222 6.057"></path><path d="M18.796 18.81A4.5 4.5 0 0 1 17.5 19H9A7 7 0 0 1 5.79 5.78"></path><path d="m2 2 20 20"></path></svg></div><h2>不是云盘,也不是存储市场</h2><p>MOST PEOPLE 不承诺永久保存或离线可用;文件能不能下载,取决于是否还有在线种子。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>重要数据仍需自己保存。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>没有上链存储、订单、支付或质押流程。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>可用性来自当前在线的人,而不是云端托管。</span></li></ul></article><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg></div><h2>以聊天为基础</h2><p>业务重点放在聊天:先建房间把人连起来,再从对话里展开文件、知识库、游戏和协作。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>房间适合私域聊天和小团队沟通。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>支持多人语音通话。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>文件附件会自然接入 most:// 分享流程。</span></li></ul></article><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-notebook-pen" aria-hidden="true"><path d="M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4"></path><path d="M2 6h4"></path><path d="M2 10h4"></path><path d="M2 14h4"></path><path d="M2 18h4"></path><path d="M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z"></path></svg></div><h2>知识库</h2><p>把聊天里的重要信息、想法和附件线索整理成 Markdown 笔记,减少信息散落。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>支持 Markdown 块编辑。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>聊天内容可以保存成笔记草稿。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>按需备份和恢复,不把它当成永久云盘。</span></li></ul></article><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-gamepad2 lucide-gamepad-2" aria-hidden="true"><line x1="6" x2="10" y1="11" y2="11"></line><line x1="8" x2="8" y1="9" y2="13"></line><line x1="15" x2="15.01" y1="12" y2="12"></line><line x1="18" x2="18.01" y1="10" y2="10"></line><path d="M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z"></path></svg></div><h2>游戏房间</h2><p>游戏复用同一套房间和频道系统,不需要单独理解另一套连接方式。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>游戏事件通过公共 Channel 同步。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>房间链接可以发给朋友一起加入。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>适合朋友间快速开局和测试玩法。</span></li></ul></article><article class="about-topic featured"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wallet" aria-hidden="true"><path d="M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1"></path><path d="M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4"></path></svg></div><h2>开源账户系统</h2><p>MOST PEOPLE 账户使用这套本地身份系统:完全开源,可复用,也方便其他项目接入。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>聊天、知识库和游戏身份共用这一套。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>其他项目可用它做本地登录、签名和数据隔离。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>支持密钥、地址和助记词导出。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>它不参与文件下载、校验或做种主流程。</span></li></ul></article></div><div class="about-actions"><a href="/chat/" class="btn btn-primary">进入聊天<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a><a href="/download/" class="btn btn-secondary"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-download" aria-hidden="true"><path d="M12 15V3"></path><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><path d="m7 10 5 5 5-5"></path></svg>下载客户端</a></div></div></section></div></main><footer class="mkt-footer"><div class="mkt-container"><div class="mkt-footer-inner"><div class="mkt-footer-links"><a class="active" href="/about/" data-status="active" aria-current="page">关于</a><a href="/ping/">网络</a><a href="https://github.com/most-people/most" target="_blank" rel="noopener noreferrer">GitHub</a></div><span class="mkt-footer-copy">© <!-- -->2026<!-- --> MOST PEOPLE · MIT License</span><span class="mkt-footer-build" translate="no">v<!-- -->0.3.6</span></div></div></footer></div><script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script><!--/$--><script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-mjFWLwue.js","/assets/jsx-runtime-Bt-cYkS5.js","/assets/useAppStore-DNhyhD20.js","/assets/useNavigate-DWlBD_-b.js","/assets/i18n-DKsg67mH.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-mjFWLwue.js"}}],css:$R[8]=["/assets/index-FEwag7ej.css"]}}},matches:$R[9]=[$R[10]={i:"__root__",u:1783058748892,s:"success",ssr:!0},$R[11]={i:"aboutabout",u:1783058748895,s:"success",ssr:!0}],lastMatchId:"aboutabout"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script><script type="module" async="" src="/assets/index-mjFWLwue.js"></script></body></html>
21
+ </script><!--$--><div class="mkt-layout"><header class="about-app-header"><div class="mkt-container"><a aria-label="MOST PEOPLE" title="MOST PEOPLE" href="/" class="sidebar-header sidebar-header-link"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left" aria-hidden="true"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg><h1>MOST PEOPLE</h1></a></div></header><main class="mkt-layout-main"><div class="about-page"><section class="about-hero"><div class="mkt-container"><p class="about-kicker">去中心化 P2P 工具箱</p><h1 class="about-title">关于 MOST PEOPLE</h1><p class="about-lede">MOST PEOPLE 以聊天为基础展开:邀请大家在房间里发消息、开多人语音、分享 most:// 文件、沉淀知识库和进入游戏。</p><code class="about-link-example" translate="no">most://&lt;cid&gt;?filename=...</code><ul class="about-summary"><li class="about-summary-item"><span class="about-summary-icon"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span>CID 类似磁力链接/BT 种子的内容指纹:链接指向内容,下载后再校验是不是同一份文件。</span></li><li class="about-summary-item"><span class="about-summary-icon"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span>发布者和下载者都能做种,只要仍有人在线,文件就能继续传播。</span></li><li class="about-summary-item"><span class="about-summary-icon"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span>聊天是主入口,文件、知识库、游戏和工具箱都从对话里展开。</span></li><li class="about-summary-item"><span class="about-summary-icon"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></span><span>MOST PEOPLE 完全开源,账户系统也欢迎其他项目接入。</span></li></ul></div></section><section class="about-section-band"><div class="mkt-container"><div class="about-section-grid"><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fingerprint-pattern" aria-hidden="true"><path d="M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4"></path><path d="M14 13.12c0 2.38 0 6.38-1 8.88"></path><path d="M17.29 21.02c.12-.6.43-2.3.5-3.02"></path><path d="M2 12a10 10 0 0 1 18-6"></path><path d="M2 16h.01"></path><path d="M21.8 16c.2-2 .131-5.354 0-6"></path><path d="M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2"></path><path d="M8.65 22c.21-.66.45-1.32.57-2"></path><path d="M9 6.8a6 6 0 0 1 9 5.2v2"></path></svg></div><h2>CID 是内容指纹</h2><p>可以把 most:// 理解成 MOST PEOPLE 的 P2P 分享链接,思路接近磁力链接和 BT 种子:先按内容找文件,再从在线种子下载并校验。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>文件名只负责展示,不能代替 CID。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>CID 校验通过后才保存为可信文件。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>判断本地已有时必须能按 CID 读到内容。</span></li></ul></article><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-network" aria-hidden="true"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></path></svg></div><h2>在线的人共同传播</h2><p>文件不是上传到一个中心服务器,而是在当前在线的完整副本之间传播。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>下载完成后默认成为新的种子。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>应用或 daemon 重启后会恢复做种记录。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>本机能看到正在做种的 CID、大小和 join 状态。</span></li></ul></article><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cloud-off" aria-hidden="true"><path d="M10.94 5.274A7 7 0 0 1 15.71 10h1.79a4.5 4.5 0 0 1 4.222 6.057"></path><path d="M18.796 18.81A4.5 4.5 0 0 1 17.5 19H9A7 7 0 0 1 5.79 5.78"></path><path d="m2 2 20 20"></path></svg></div><h2>不是云盘,也不是存储市场</h2><p>MOST PEOPLE 不承诺永久保存或离线可用;文件能不能下载,取决于是否还有在线种子。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>重要数据仍需自己保存。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>没有上链存储、订单、支付或质押流程。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>可用性来自当前在线的人,而不是云端托管。</span></li></ul></article><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg></div><h2>以聊天为基础</h2><p>业务重点放在聊天:先建房间把人连起来,再从对话里展开文件、知识库、游戏和协作。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>房间适合私域聊天和小团队沟通。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>支持多人语音通话。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>文件附件会自然接入 most:// 分享流程。</span></li></ul></article><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-notebook-pen" aria-hidden="true"><path d="M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4"></path><path d="M2 6h4"></path><path d="M2 10h4"></path><path d="M2 14h4"></path><path d="M2 18h4"></path><path d="M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z"></path></svg></div><h2>知识库</h2><p>把聊天里的重要信息、想法和附件线索整理成 Markdown 笔记,减少信息散落。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>支持 Markdown 块编辑。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>聊天内容可以保存成笔记草稿。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>按需备份和恢复,不把它当成永久云盘。</span></li></ul></article><article class="about-topic"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-gamepad2 lucide-gamepad-2" aria-hidden="true"><line x1="6" x2="10" y1="11" y2="11"></line><line x1="8" x2="8" y1="9" y2="13"></line><line x1="15" x2="15.01" y1="12" y2="12"></line><line x1="18" x2="18.01" y1="10" y2="10"></line><path d="M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z"></path></svg></div><h2>游戏房间</h2><p>游戏复用同一套房间和频道系统,不需要单独理解另一套连接方式。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>游戏事件通过公共 Channel 同步。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>房间链接可以发给朋友一起加入。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>适合朋友间快速开局和测试玩法。</span></li></ul></article><article class="about-topic featured"><div class="about-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wallet" aria-hidden="true"><path d="M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1"></path><path d="M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4"></path></svg></div><h2>开源账户系统</h2><p>MOST PEOPLE 账户使用这套本地身份系统:完全开源,可复用,也方便其他项目接入。</p><ul><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>聊天、知识库和游戏身份共用这一套。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>其他项目可用它做本地登录、签名和数据隔离。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>支持密钥、地址和助记词导出。</span></li><li><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span>它不参与文件下载、校验或做种主流程。</span></li></ul></article></div><div class="about-actions"><a href="/chat/" class="btn btn-primary">进入聊天<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a><a href="/download/" class="btn btn-secondary"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-download" aria-hidden="true"><path d="M12 15V3"></path><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><path d="m7 10 5 5 5-5"></path></svg>下载客户端</a></div></div></section></div></main><footer class="mkt-footer"><div class="mkt-container"><div class="mkt-footer-inner"><div class="mkt-footer-links"><a class="active" href="/about/" data-status="active" aria-current="page">关于</a><a href="/ping/">网络</a><a href="https://github.com/most-people/most" target="_blank" rel="noopener noreferrer">GitHub</a></div><span class="mkt-footer-copy">© <!-- -->2026<!-- --> MOST PEOPLE · MIT License</span><span class="mkt-footer-build" translate="no">v<!-- -->0.3.8</span></div></div></footer></div><script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script><!--/$--><script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-CCU5Z4K-.js","/assets/jsx-runtime-Bt-cYkS5.js","/assets/useAppStore-Pjif7nCR.js","/assets/useNavigate-DWlBD_-b.js","/assets/i18n-DKsg67mH.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-CCU5Z4K-.js"}}],css:$R[8]=["/assets/index-FEwag7ej.css"]}}},matches:$R[9]=[$R[10]={i:"__root__",u:1783082754505,s:"success",ssr:!0},$R[11]={i:"aboutabout",u:1783082754507,s:"success",ssr:!0}],lastMatchId:"aboutabout"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script><script type="module" async="" src="/assets/index-CCU5Z4K-.js"></script></body></html>
Binary file
Binary file
@@ -0,0 +1 @@
1
+ import{t as e}from"./jsx-runtime-Bt-cYkS5.js";import{B as t,E as n,W as r,t as i}from"./useAppStore-Pjif7nCR.js";import{a,c as o,o as s}from"./i18n-DKsg67mH.js";import{S as c,g as l}from"./index-CCU5Z4K-.js";var u=t(`earth`,[[`path`,{d:`M21.54 15H17a2 2 0 0 0-2 2v4.54`,key:`1djwo0`}],[`path`,{d:`M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17`,key:`1tzkfa`}],[`path`,{d:`M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05`,key:`14pb5j`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),d=t(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),f=t(`languages`,[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]),p=t(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),m=t(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),h=t(`user`,[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]),g=e();function _(){let{t:e}=a(),t=i(e=>e.isDarkMode),n=i(e=>e.setIsDarkMode),r=e(`common.appearance.toggle`);return(0,g.jsx)(`button`,{type:`button`,className:`btn btn-icon`,title:r,"aria-label":r,"aria-pressed":t,onClick:()=>n(!t),children:t?(0,g.jsx)(m,{size:16}):(0,g.jsx)(p,{size:16})})}function v(e){return e===`sparkbit`?s.filter(e=>e!==`zh-CN`):[...s]}function y({theme:e}){let{locale:t,setLocale:n,t:r}=a(),i=r(`common.locale.choose`);return(0,g.jsx)(c,{ariaLabel:i,className:`language-toggle`,items:v(e).map(e=>({key:e,label:o[e],icon:e===t?(0,g.jsx)(d,{size:16}):(0,g.jsx)(`span`,{className:`language-toggle-placeholder`,"aria-hidden":`true`}),onSelect:()=>{e!==t&&n(e)}})),renderTrigger:t=>(0,g.jsx)(`button`,{...t,className:`btn btn-icon`,title:i,"aria-label":i,children:e===`sparkbit`?(0,g.jsx)(u,{size:16}):(0,g.jsx)(f,{size:16})})})}function b(){let{t:e}=a(),t=n(e=>e.identity),i=l(t?.address,t?.avatar),o=e(`nav.profile`);return(0,g.jsx)(r,{to:`/profile/`,className:`account-profile-link`,title:o,"aria-label":o,children:t?(0,g.jsx)(`img`,{className:`account-profile-link-avatar`,src:i,alt:``,"aria-hidden":`true`}):(0,g.jsx)(h,{size:18})})}export{d as a,h as i,y as n,_ as r,b as t};
@@ -0,0 +1 @@
1
+ import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{B as r}from"./useAppStore-Pjif7nCR.js";import{a as i}from"./i18n-DKsg67mH.js";import{n as a,r as o,t as s}from"./AccountMenu-C3wvcWtn.js";import"./index-CCU5Z4K-.js";var c=r(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),l=t(e(),1);function u(e,t){return typeof t==`boolean`?t:typeof window<`u`&&`matchMedia`in window?window.matchMedia(e).matches:!1}function d(e,t,{getInitialValueInEffect:n}={getInitialValueInEffect:!0}){let[r,i]=(0,l.useState)(n?t:u(e));return(0,l.useEffect)(()=>{try{if(`matchMedia`in window){let t=window.matchMedia(e);i(t.matches);let n=e=>i(e.matches);return t.addEventListener(`change`,n),()=>{t.removeEventListener(`change`,n)}}}catch{return}},[e]),r||!1}function f(e=!1,t={}){let[n,r]=(0,l.useState)(e),i=(0,l.useCallback)(()=>{r(e=>e||(t.onOpen?.(),!0))},[t.onOpen]),a=(0,l.useCallback)(()=>{r(e=>e&&(t.onClose?.(),!1))},[t.onClose]);return[n,{open:i,close:a,toggle:(0,l.useCallback)(()=>{n?a():i()},[a,i,n]),set:r}]}var p=n(),m=(0,l.createContext)(null);function h(){let e=(0,l.useContext)(m);if(!e)throw Error(`useAppShell must be used within AppShell`);return e}function g({sidebar:e,className:t=``,headerTitle:n,headerRight:r,sidebarToggleReplacement:u,languageTheme:h,defaultHide:g=!1,hideAccountMenu:_=!1,children:v}){let[y,b]=f(!1),[x,S]=(0,l.useState)(g),C=(0,l.useRef)(g),w=d(`(max-width: 768px)`),{t:T}=i(),E=(0,l.useCallback)((e={})=>{b.close(),e.collapse&&S(!0)},[b]);(0,l.useEffect)(()=>{g!==C.current&&(g?E({collapse:!0}):S(!1),C.current=g)},[g,E]);let D=()=>{w?b.toggle():S(!x)},O=()=>{w?b.open():S(!1)},k=w?y:!x;return(0,p.jsx)(m.Provider,{value:{closeSidebar:E,openSidebar:O,isSidebarVisible:k},children:(0,p.jsxs)(`div`,{className:[`app-layout`,t].filter(Boolean).join(` `),children:[(0,p.jsx)(`div`,{className:`sidebar-overlay ${y?`visible`:``}`,onClick:()=>E()}),(0,p.jsx)(`div`,{className:`sidebar ${y?`open`:``} ${x?`collapsed`:``}`,children:e({closeSidebar:E,openSidebar:O})}),(0,p.jsxs)(`div`,{className:`main-content`,children:[(0,p.jsxs)(`header`,{className:`app-header`,children:[(0,p.jsxs)(`div`,{className:`header-left`,children:[u??(0,p.jsx)(`button`,{onClick:D,className:`btn btn-icon sidebar-toggle-btn`,"aria-label":T(w?`appShell.openMenu`:x?`appShell.expandSidebar`:`appShell.collapseSidebar`),children:(0,p.jsx)(c,{size:16})}),n]}),(0,p.jsxs)(`div`,{className:`header-right`,children:[r,(0,p.jsx)(o,{}),(0,p.jsx)(a,{theme:h}),!_&&(0,p.jsx)(s,{})]})]}),v]})]})})}export{h as n,f as r,g as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-Bt-cYkS5.js";import{W as t}from"./useAppStore-DNhyhD20.js";import{a as n}from"./i18n-DKsg67mH.js";import{F as r}from"./index-mjFWLwue.js";var i=e();function a({onNavigate:e}){let{t:a}=n(),o=a(`common.brand`);return(0,i.jsxs)(t,{to:`/`,className:`sidebar-header sidebar-header-link`,onClick:e,"aria-label":o,title:o,children:[(0,i.jsx)(r,{size:18}),(0,i.jsx)(`h1`,{children:o})]})}export{a as t};
1
+ import{t as e}from"./jsx-runtime-Bt-cYkS5.js";import{W as t}from"./useAppStore-Pjif7nCR.js";import{a as n}from"./i18n-DKsg67mH.js";import{F as r}from"./index-CCU5Z4K-.js";var i=e();function a({onNavigate:e}){let{t:a}=n(),o=a(`common.brand`);return(0,i.jsxs)(t,{to:`/`,className:`sidebar-header sidebar-header-link`,onClick:e,"aria-label":o,title:o,children:[(0,i.jsx)(r,{size:18}),(0,i.jsx)(`h1`,{children:o})]})}export{a as t};
@@ -1 +1 @@
1
- import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{B as r}from"./useAppStore-DNhyhD20.js";import{a as i}from"./i18n-DKsg67mH.js";import{a}from"./AccountMenu-B26qus-Q.js";import{t as o}from"./copy-OwXDsstV.js";var s=r(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),c=t(e(),1),l=n();function u({text:e,label:t,copiedLabel:n,className:r=`btn btn-icon`,iconSize:s=14}){let{t:u}=i(),[d,f]=(0,c.useState)(!1),p=n||u(`common.copied`),m=t||u(`common.copy`);async function h(){try{await navigator.clipboard.writeText(e),f(!0),setTimeout(()=>f(!1),1500)}catch{}}return(0,l.jsxs)(`button`,{type:`button`,className:r,onClick:h,title:d?p:m,children:[d?(0,l.jsx)(a,{size:s}):(0,l.jsx)(o,{size:s}),t?d?p:t:null]})}export{s as n,u as t};
1
+ import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{B as r}from"./useAppStore-Pjif7nCR.js";import{a as i}from"./i18n-DKsg67mH.js";import{a}from"./AccountMenu-C3wvcWtn.js";import{t as o}from"./copy-BofKiKH_.js";var s=r(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),c=t(e(),1),l=n();function u({text:e,label:t,copiedLabel:n,className:r=`btn btn-icon`,iconSize:s=14}){let{t:u}=i(),[d,f]=(0,c.useState)(!1),p=n||u(`common.copied`),m=t||u(`common.copy`);async function h(){try{await navigator.clipboard.writeText(e),f(!0),setTimeout(()=>f(!1),1500)}catch{}}return(0,l.jsxs)(`button`,{type:`button`,className:r,onClick:h,title:d?p:m,children:[d?(0,l.jsx)(a,{size:s}):(0,l.jsx)(o,{size:s}),t?d?p:t:null]})}export{s as n,u as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-Bt-cYkS5.js";import{n as t,r as n,t as r}from"./AccountMenu-B26qus-Q.js";import{D as i,F as a}from"./index-mjFWLwue.js";var o=e();function s(){return(0,o.jsx)(`nav`,{className:`mkt-nav`,children:(0,o.jsxs)(`div`,{className:`mkt-nav-inner`,children:[(0,o.jsxs)(`button`,{type:`button`,className:`mkt-nav-logo`,onClick:i(),children:[(0,o.jsx)(a,{size:18}),(0,o.jsx)(`span`,{children:`MOST PEOPLE`})]}),(0,o.jsxs)(`div`,{className:`mkt-nav-cta`,children:[(0,o.jsx)(n,{}),(0,o.jsx)(t,{}),(0,o.jsx)(r,{})]})]})})}export{s as t};
1
+ import{t as e}from"./jsx-runtime-Bt-cYkS5.js";import{n as t,r as n,t as r}from"./AccountMenu-C3wvcWtn.js";import{D as i,F as a}from"./index-CCU5Z4K-.js";var o=e();function s(){return(0,o.jsx)(`nav`,{className:`mkt-nav`,children:(0,o.jsxs)(`div`,{className:`mkt-nav-inner`,children:[(0,o.jsxs)(`button`,{type:`button`,className:`mkt-nav-logo`,onClick:i(),children:[(0,o.jsx)(a,{size:18}),(0,o.jsx)(`span`,{children:`MOST PEOPLE`})]}),(0,o.jsxs)(`div`,{className:`mkt-nav-cta`,children:[(0,o.jsx)(n,{}),(0,o.jsx)(t,{}),(0,o.jsx)(r,{})]})]})})}export{s as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-Bt-cYkS5.js";import{W as t}from"./useAppStore-DNhyhD20.js";import{a as n}from"./i18n-DKsg67mH.js";import{n as r,r as i,t as a}from"./AccountMenu-B26qus-Q.js";import{t as o}from"./download-Cy2BlfKM.js";import{E as s}from"./index-mjFWLwue.js";import{t as c}from"./LogoIcon-B2fFe0l1.js";var l={name:`most-box`,version:`0.3.6`,description:`MostBox - chat-first P2P toolbox for files, notes, and game rooms`,type:`module`,main:`electron/main.js`,bin:{"most-box":`server/cli.js`},files:[`out`,`public`,`electron`,`server/src`,`server/index.js`,`server/cli.js`],scripts:{start:`vite`,server:`node --watch server/index.js`,desktop:`npm run electron:dev`,build:`vite build && node scripts/prepare-start-static.mjs`,preview:`vite preview`,serve:`npm run build && node server/index.js`,test:`node --test server/tests/**/*.test.js`,"test:unit":`node --test server/tests/unit/*.test.js`,"test:desktop":`node --test electron/*.test.js`,"test:frontend":`node --test src/tests/*.test.js`,"test:protocol":`node --test --test-name-pattern "extracts CID and filename|matches golden CID samples|publishes a file from Buffer|lists published files|pulls through local seed nodes" server/tests/unit/cid.test.js server/tests/integration/cid.test.js server/tests/integration/engine.test.js`,typecheck:`tsc -p tsconfig.typecheck.json`,"typecheck:strict-router":`tsc -p tsconfig.strict-router.json`,"check:static-output":`node scripts/check-static-output.mjs`,format:`prettier --write .`,lint:`eslint .`,"r2:cors":`node scripts/configure-r2-cors.mjs`,"electron:dev":`concurrently "npm run build" "wait-on out/index.html && electron ."`,"electron:rebuild":`electron-rebuild -f -w sodium-native`,"electron:build":`npm run build && npm run electron:rebuild && electron-builder`,"electron:build:win":`npm run build && npm run electron:rebuild && electron-builder --win`,"electron:build:win:x64":`npm run electron:build:win -- --x64`,"electron:build:win:arm64":`npm run electron:build:win -- --arm64`,"electron:build:mac":`npm run build && npm run electron:rebuild && electron-builder --mac`,"electron:build:linux":`npm run build && npm run electron:rebuild && electron-builder --linux`},keywords:[`p2p`,`chat`,`file-sharing`,`file-transfer`,`hyperswarm`,`hypercore`,`hyperdrive`],license:`MIT`,dependencies:{"@dicebear/core":`^10.3.0`,"@dicebear/styles":`^10.2.0`,"@hono/node-server":`^2.0.6`,"@tanstack/react-router":`^1.170.16`,"@tanstack/react-start":`^1.168.26`,"@tanstack/react-table":`^8.21.3`,b4a:`^1.8.1`,busboy:`^1.6.0`,corestore:`^7.11.0`,dayjs:`^1.11.21`,ethers:`^6.17.0`,eventemitter3:`^5.0.4`,hono:`^4.12.27`,hypercore:`^11.33.2`,hyperdrive:`^13.3.2`,hyperswarm:`^4.17.0`,"ipfs-unixfs-importer":`^17.0.1`,multiformats:`^14.0.2`,tweetnacl:`^1.0.3`,ws:`^8.21.0`},devDependencies:{"@electron/rebuild":`^4.0.4`,"@eslint/js":`^10.0.1`,"@iconify/react":`^6.0.2`,"@mantine/hooks":`^9.4.0`,"@milkdown/crepe":`^7.21.2`,"@milkdown/utils":`^7.21.2`,"@types/react":`^19.2.17`,"@vitejs/plugin-react":`^6.0.3`,concurrently:`^10.0.3`,electron:`^42.5.0`,"electron-builder":`^26.15.3`,esbuild:`^0.28.1`,eslint:`^10.5.0`,globals:`^17.7.0`,ky:`^2.0.2`,"lucide-react":`^1.21.0`,prettier:`^3.8.4`,"qrcode.react":`^4.2.0`,react:`^19.2.7`,"react-dom":`^19.2.7`,typescript:`6.0.3`,"typescript-eslint":`^8.62.0`,vite:`^8.1.0`,"wait-on":`^9.0.10`,zustand:`^5.0.14`},overrides:{"brace-expansion":`5.0.6`,postcss:`8.5.15`,ws:`$ws`},build:{appId:`com.mostbox.app`,productName:`MostBox`,publish:[{provider:`github`,releaseType:`release`}],directories:{output:`dist`},afterPack:`electron/afterPack.cjs`,files:[`out/**/*`,`electron/**/*`,`server/src/**/*`,`server/index.js`,`server/cli.js`,`package.json`,`!**/*.map`,`!electron/**/*.test.js`,`!server/tests/**/*`],asarUnpack:[`**/*.node`,`**/sodium-native/**`],protocols:[{name:`MostBox Link`,schemes:[`most`]}],win:{target:[`nsis`],artifactName:"${productName}-${version}-win-${arch}-setup.${ext}",icon:`public/logo.ico`},nsis:{oneClick:!1,allowToChangeInstallationDirectory:!0,createDesktopShortcut:!0,createStartMenuShortcut:!0,shortcutName:`MostBox`},mac:{artifactName:"${productName}-${version}-mac-${arch}.${ext}",target:[{target:`dmg`,arch:[`x64`,`arm64`]}],icon:`public/logo-512.png`,category:`public.app-category.utilities`},dmg:{contents:[{x:130,y:220},{x:410,y:220,type:`link`,path:`/Applications`}]},linux:{artifactName:"${productName}-${version}-linux-${arch}.${ext}",target:[{target:`AppImage`,arch:[`x64`,`arm64`]}],icon:`public/logo-512.png`,category:`Utility`}}},u=e(),d=[{to:`/about/`,labelKey:`footer.about`},{to:`/ping/`,labelKey:`footer.network`},{href:`https://github.com/most-people/most`,labelKey:null,label:`GitHub`,external:!0}],f=l.version;function p(){let{t:e}=n();return(0,u.jsx)(`footer`,{className:`mkt-footer`,children:(0,u.jsx)(`div`,{className:`mkt-container`,children:(0,u.jsxs)(`div`,{className:`mkt-footer-inner`,children:[(0,u.jsx)(`div`,{className:`mkt-footer-links`,children:d.map(n=>`external`in n?(0,u.jsx)(`a`,{href:n.href,target:`_blank`,rel:`noopener noreferrer`,children:n.label},n.href):(0,u.jsx)(t,{to:n.to,children:e(n.labelKey)},n.to))}),(0,u.jsxs)(`span`,{className:`mkt-footer-copy`,children:[`© `,new Date().getFullYear(),` MOST PEOPLE · MIT License`]}),(0,u.jsxs)(`span`,{className:`mkt-footer-build`,translate:`no`,children:[`v`,f]})]})})})}function m({children:e,header:t}){return(0,u.jsxs)(`div`,{className:`mkt-layout`,children:[t??(0,u.jsx)(h,{}),(0,u.jsx)(`main`,{className:`mkt-layout-main`,children:e}),(0,u.jsx)(p,{})]})}function h(){let{t:e}=n(),l=s();return(0,u.jsx)(`nav`,{className:`mkt-nav`,children:(0,u.jsxs)(`div`,{className:`mkt-nav-inner`,children:[(0,u.jsxs)(t,{to:`/`,className:`mkt-nav-logo`,children:[(0,u.jsx)(c,{}),`MOST PEOPLE`]}),(0,u.jsxs)(`div`,{className:`mkt-nav-cta`,children:[(0,u.jsx)(i,{}),(0,u.jsx)(r,{}),!l&&(0,u.jsxs)(t,{to:`/download/`,className:`btn btn-primary mkt-nav-preview`,children:[(0,u.jsx)(o,{size:16}),e(`nav.downloadClient`)]}),(0,u.jsx)(a,{})]})]})})}export{m as t};
1
+ import{t as e}from"./jsx-runtime-Bt-cYkS5.js";import{W as t}from"./useAppStore-Pjif7nCR.js";import{a as n}from"./i18n-DKsg67mH.js";import{n as r,r as i,t as a}from"./AccountMenu-C3wvcWtn.js";import{t as o}from"./download-nQ9X-v0q.js";import{E as s}from"./index-CCU5Z4K-.js";import{t as c}from"./LogoIcon-B2fFe0l1.js";var l={name:`most-box`,version:`0.3.8`,description:`MostBox - chat-first P2P toolbox for files, notes, and game rooms`,type:`module`,main:`electron/main.js`,bin:{"most-box":`server/cli.js`},files:[`out`,`public`,`electron`,`server/src`,`server/index.js`,`server/cli.js`],scripts:{start:`vite`,server:`node --watch server/index.js`,desktop:`npm run electron:dev`,build:`vite build && node scripts/prepare-start-static.mjs`,preview:`vite preview`,serve:`npm run build && node server/index.js`,test:`node --test server/tests/**/*.test.js`,"test:unit":`node --test server/tests/unit/*.test.js`,"test:desktop":`node --test electron/*.test.js`,"test:frontend":`node --test src/tests/*.test.js`,"test:protocol":`node --test --test-name-pattern "extracts CID and filename|matches golden CID samples|publishes a file from Buffer|lists published files|pulls through local seed nodes" server/tests/unit/cid.test.js server/tests/integration/cid.test.js server/tests/integration/engine.test.js`,typecheck:`tsc -p tsconfig.typecheck.json`,"typecheck:strict-router":`tsc -p tsconfig.strict-router.json`,"check:static-output":`node scripts/check-static-output.mjs`,format:`prettier --write .`,lint:`eslint .`,"r2:cors":`node scripts/configure-r2-cors.mjs`,"electron:dev":`concurrently "npm run build" "wait-on out/index.html && electron ."`,"electron:rebuild":`electron-rebuild -f -w sodium-native`,"electron:build":`npm run build && npm run electron:rebuild && electron-builder`,"electron:build:win":`npm run build && npm run electron:rebuild && electron-builder --win`,"electron:build:win:x64":`npm run electron:build:win -- --x64`,"electron:build:win:arm64":`npm run electron:build:win -- --arm64`,"electron:build:mac":`npm run build && npm run electron:rebuild && electron-builder --mac`,"electron:build:linux":`npm run build && npm run electron:rebuild && electron-builder --linux`},keywords:[`p2p`,`chat`,`file-sharing`,`file-transfer`,`hyperswarm`,`hypercore`,`hyperdrive`],license:`MIT`,dependencies:{"@dicebear/core":`^10.3.0`,"@dicebear/styles":`^10.2.0`,"@hono/node-server":`^2.0.6`,"@tanstack/react-router":`^1.170.16`,"@tanstack/react-start":`^1.168.26`,"@tanstack/react-table":`^8.21.3`,b4a:`^1.8.1`,busboy:`^1.6.0`,corestore:`^7.11.0`,dayjs:`^1.11.21`,ethers:`^6.17.0`,eventemitter3:`^5.0.4`,hono:`^4.12.27`,hypercore:`^11.33.2`,hyperdrive:`^13.3.2`,hyperswarm:`^4.17.0`,"ipfs-unixfs-importer":`^17.0.1`,multiformats:`^14.0.2`,tweetnacl:`^1.0.3`,ws:`^8.21.0`},devDependencies:{"@electron/rebuild":`^4.0.4`,"@eslint/js":`^10.0.1`,"@iconify/react":`^6.0.2`,"@mantine/hooks":`^9.4.0`,"@milkdown/crepe":`^7.21.2`,"@milkdown/utils":`^7.21.2`,"@types/react":`^19.2.17`,"@vitejs/plugin-react":`^6.0.3`,concurrently:`^10.0.3`,electron:`^42.5.0`,"electron-builder":`^26.15.3`,esbuild:`^0.28.1`,eslint:`^10.5.0`,globals:`^17.7.0`,ky:`^2.0.2`,"lucide-react":`^1.21.0`,prettier:`^3.8.4`,"qrcode.react":`^4.2.0`,react:`^19.2.7`,"react-dom":`^19.2.7`,typescript:`6.0.3`,"typescript-eslint":`^8.62.0`,vite:`^8.1.0`,"wait-on":`^9.0.10`,zustand:`^5.0.14`},overrides:{"brace-expansion":`5.0.6`,postcss:`8.5.15`,ws:`$ws`},build:{appId:`com.mostbox.app`,productName:`MostBox`,publish:[{provider:`github`,releaseType:`release`}],directories:{output:`dist`},afterPack:`electron/afterPack.cjs`,files:[`out/**/*`,`electron/**/*`,`server/src/**/*`,`server/index.js`,`server/cli.js`,`package.json`,`!**/*.map`,`!electron/**/*.test.js`,`!server/tests/**/*`],asarUnpack:[`**/*.node`,`**/sodium-native/**`],protocols:[{name:`MostBox Link`,schemes:[`most`]}],win:{target:[`nsis`],artifactName:"${productName}-${version}-win-${arch}-setup.${ext}",icon:`public/logo.ico`},nsis:{oneClick:!1,allowToChangeInstallationDirectory:!0,createDesktopShortcut:!0,createStartMenuShortcut:!0,shortcutName:`MostBox`},mac:{artifactName:"${productName}-${version}-mac-${arch}.${ext}",target:[{target:`dmg`,arch:[`x64`,`arm64`]}],icon:`public/logo-512.png`,category:`public.app-category.utilities`},dmg:{contents:[{x:130,y:220},{x:410,y:220,type:`link`,path:`/Applications`}]},linux:{artifactName:"${productName}-${version}-linux-${arch}.${ext}",target:[{target:`AppImage`,arch:[`x64`,`arm64`]}],icon:`public/logo-512.png`,category:`Utility`}}},u=e(),d=[{to:`/about/`,labelKey:`footer.about`},{to:`/ping/`,labelKey:`footer.network`},{href:`https://github.com/most-people/most`,labelKey:null,label:`GitHub`,external:!0}],f=l.version;function p(){let{t:e}=n();return(0,u.jsx)(`footer`,{className:`mkt-footer`,children:(0,u.jsx)(`div`,{className:`mkt-container`,children:(0,u.jsxs)(`div`,{className:`mkt-footer-inner`,children:[(0,u.jsx)(`div`,{className:`mkt-footer-links`,children:d.map(n=>`external`in n?(0,u.jsx)(`a`,{href:n.href,target:`_blank`,rel:`noopener noreferrer`,children:n.label},n.href):(0,u.jsx)(t,{to:n.to,children:e(n.labelKey)},n.to))}),(0,u.jsxs)(`span`,{className:`mkt-footer-copy`,children:[`© `,new Date().getFullYear(),` MOST PEOPLE · MIT License`]}),(0,u.jsxs)(`span`,{className:`mkt-footer-build`,translate:`no`,children:[`v`,f]})]})})})}function m({children:e,header:t}){return(0,u.jsxs)(`div`,{className:`mkt-layout`,children:[t??(0,u.jsx)(h,{}),(0,u.jsx)(`main`,{className:`mkt-layout-main`,children:e}),(0,u.jsx)(p,{})]})}function h(){let{t:e}=n(),l=s();return(0,u.jsx)(`nav`,{className:`mkt-nav`,children:(0,u.jsxs)(`div`,{className:`mkt-nav-inner`,children:[(0,u.jsxs)(t,{to:`/`,className:`mkt-nav-logo`,children:[(0,u.jsx)(c,{}),`MOST PEOPLE`]}),(0,u.jsxs)(`div`,{className:`mkt-nav-cta`,children:[(0,u.jsx)(i,{}),(0,u.jsx)(r,{}),!l&&(0,u.jsxs)(t,{to:`/download/`,className:`btn btn-primary mkt-nav-preview`,children:[(0,u.jsx)(o,{size:16}),e(`nav.downloadClient`)]}),(0,u.jsx)(a,{})]})]})})}export{m as t};