@forsion/extend 0.9.5 → 0.9.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # 更新日志
2
2
 
3
+ ## 0.9.6 — 2026-11-02
4
+
5
+ - 新增活动中心:签到、任务、小游戏和公告都在一个面板里,左边选活动,右边看奖励、进度和结束时间,可以直接签到、领取。Ribbon 上的礼物图标有可领奖励或新活动时亮红点,当前没有活动时不显示;⌘K 搜「活动」随时能打开。手机上是一页完整列表。
6
+ - 活动由官方在后台发布,同一时间可以有多个,奖励发到账户或背包。
7
+ - Amadeus 协作共享:可以把关联的页面一起共享,邀请链接直接打开文件;新增「我共享的」和共享与发布总览。走出页面目录的相对引用也能按共享绑定找回文件。
8
+ - 云同步更稳:单个二进制文件上传、下载失败或卡住时不再拖住笔记同步,也不会让引擎显示离线;1 MiB 以上文件的合并基线会保留,删掉的行不再回来。
9
+ - 需要 Forsion 2.13.8-beta.3 或更高版本。
10
+
11
+ - New Events center: check-ins, tasks, mini games and announcements in one panel. Pick an event on the left and see its rewards, progress and end time on the right, then check in or claim right there. The gift icon on the Ribbon shows a red dot when a reward or new event is waiting, and stays hidden when nothing is running; search "Events" in ⌘K to open it any time. On phones it is a full-page list.
12
+ - Events are published by Forsion from the admin console. Several can run at once, and rewards go to your account or backpack.
13
+ - Amadeus sharing: share linked pages together, and invite links open the file directly. New Shared by me and a sharing and publishing overview. Relative references that leave a page's folder now find their files through the share binding.
14
+ - Steadier cloud sync: a failed or stuck upload or download of one binary file no longer holds up note sync or takes the engine offline. Merge baselines for files over 1 MiB are kept, so deleted rows stay deleted.
15
+ - Needs Forsion 2.13.8-beta.3 or later.
16
+
3
17
  ## 0.9.5 — 2026-10-27
4
18
 
5
19
  - Tangu 可以替你提交自己投稿的商店更新:说一句「我在 GitHub 上发了 v1.1.0,把商店更新也提交了」,Tangu 先检查读到的新版本,再弹审批卡请你确认,确认后送审。GitHub / npm 来源可申请新版本,任何来源都可以改商店信息;ZIP 包仍在投稿页上传。每次提交都要你本人批准,自动任务里不会提交。
package/README.md CHANGED
@@ -97,3 +97,15 @@ The Web entry and native mobile reuse Extend's account pages, membership and poi
97
97
  With the matching Genesis host and Server, Penzor Cloud provides per-folder bidirectional rules. The deepest path wins; destinations are the default `/Forsion/`, a device directory, or off. Scope changes require a fresh preview. Old destinations are retained; newly selected scopes reconcile before any deletion, and unavailable roots stop reconciliation. Stable directory identities carry renames. Database rows use the host merger, ordinary conflicts retain both versions, and transfers show actual byte progress. `human/CALENDAR.db` remains the shared default calendar. Older hosts keep their original sync page.
98
98
 
99
99
  Validation: `npm test` and `npm run typecheck`. The filesystem/HTTP two-client suite is `test/vitest/contentSync.test.ts`; renderer acceptance is `test/vitest/renderer/contentRules.test.tsx`. Real desktop acceptance: Genesis `EXTEND_PKG=<built Extend checkout> npm run e2e:contentsync` under the repository devlock.
100
+
101
+ ### 同步提交与凭据续期 / Sync commits and credential refresh
102
+
103
+ Amadeus 入站拉取和三方合并通过 `CoreHost.compareAndReplace` 提交。桌面实现复用 Genesis 的 `contentSync.withWriteLock`,在与编辑器相同的锁内复查目标字节和会话条件;不匹配时保留本地编辑并重新对账。旧宿主缺少这把共享锁时,入站覆盖会明确失败并保持可重试状态,不能退回无锁替换。该保证针对遵循宿主写锁协议的写入,不承诺与任意外部程序之间的文件系统级 CAS。
104
+
105
+ REST 请求和 SSE 重连读取当前同账号令牌;旧令牌 401 的完整正文返回后若凭据已续期,REST 最多重试一次。换账号或退出登录时拒绝继续使用旧会话。未完成上传的节点身份先写入本地日志;仅本机创建且服务端确认无内容的节点可被取消,已上传但响应丢失的内容会重新下载保留。
106
+
107
+ Amadeus downloads and merges commit through `CoreHost.compareAndReplace`. The desktop adapter uses Genesis's `contentSync.withWriteLock` to verify target bytes and session guards under the editor's lock. A mismatch retains local edits and reconciles again. Older hosts without that shared lock reject inbound replacement with a retryable error; they never fall back to an unguarded overwrite. This protects writers participating in the host lock protocol, not arbitrary external processes.
108
+
109
+ REST requests and SSE reconnects read current credentials for the same account. An old-token 401 can retry once after its complete body arrives if credentials have refreshed; account changes and sign-out reject the old session. Pending node identities are journaled before creation. Cancellation applies only to this device's unpopulated nodes; content uploaded before a lost response is downloaded and preserved.
110
+
111
+ 验证 / Validation: `npx vitest run test/vitest/engine.localCas.test.ts test/vitest/tokenRefresh.test.ts test/vitest/contentSync.test.ts`; `npm run typecheck`; `npm run check:core`. These tests use real temporary files and controlled local/fixture transports, without production accounts or storage.
package/SIGNATURE CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "alg": "ed25519",
3
3
  "files": {
4
- "CHANGELOG.md": "3e2e2f2737d403e11f28a7d08196d0601eb5ac03122a1651a756a053ca1d0191",
4
+ "CHANGELOG.md": "0f9b9f3750085e3f1dbf3de4d72df15c66905a047db661f26fbb881aa46a6e35",
5
5
  "LICENSE": "5594544ee08011ed5785ee26410f1f2ef005f66e9283833e8d435e34c10de1ed",
6
- "README.md": "88a3ee29013b0739f9c246c9953d2401d42204c2821e61944397a31b8d273abf",
6
+ "README.md": "a9b52eb0d8cdf09fe55845be5df57549e6f72de327ca579093955d0039545bd7",
7
7
  "dist/THIRD_PARTY_NOTICES.md": "0af426bcae1e6cd82d3f6255768ac232eea116c7079706ae237d2f1f494531b4",
8
- "dist/desktop.mjs": "b6e36f32faebcc319037df48c5226dcf626d8cfc66b1e1dec6962ea128778129",
9
- "dist/main.js": "1e46fefdc6a00096128bf28635ec686a1682b424e6741baa865d04912ece5035",
10
- "manifest.json": "3aea5b63d70558b44f9bfadd83787abcaa35e1ade7b53a749f7f8a05d8ad4b81",
11
- "package.json": "6b77b132a0310019288a11de4e40b8e17244f2da8dee04942241146dd6df6bfe",
8
+ "dist/desktop.mjs": "ec90d454cbf25b16ce76dcea3d49a42469d73acd61656edaaa7bff5ff1f7ddb1",
9
+ "dist/main.js": "1abaacbbecfd2a0705fc0dc451e79b1814f29e197bdab791d6cf22f52f078c02",
10
+ "manifest.json": "958946ccf10681a500e159e1e3363e3ee5f76c1bd5bf50a525b502af30a5828c",
11
+ "package.json": "846b59f685d6c77d44d954450af0adbc4d2fbd46d7f8fdd5cd998683bd2a3174",
12
12
  "spaces/guide/space.json": "7da9fb9373278e9e1f75c65f697a21f25b0b45792def0ce94ed5e7f6473979b1",
13
13
  "spaces/penzor/icon.svg": "3c212d9f121ae54a0a84042c19ff5573e22cb236718ae4de11fc3c19f0c3b634",
14
14
  "spaces/penzor/space.json": "a3b6c4d86c54dca38b24d3efe352fed860ce7accc934f9f160600ff65ed4f0e6",
15
15
  "tangu-plugins/store-update/dist/index.mjs": "d8f531b7d6acf5d6369ac4d2383ec33b2b615a283d56b0087b467a123ac3bb8d",
16
16
  "tangu-plugins/store-update/tangu-plugin.json": "a99e71329e705793eec46d9e8d4b790017136c328f670161cd4d57e49ee4dd0a"
17
17
  },
18
- "sig": "jJ7y+gYewgJNl9M1WjFoAaAgh73WNgJQZJM2tHfCN6WI0YVrH4D9ROujNKWaV8jvedkU9Ycl0I74PRGfQ/5JAw=="
18
+ "sig": "5pTrp2n8kLXpvsOkA3GZtG+gDhanXS26cJPbqfIS53A57kcAm9WuAwroky5DNnNgUo0VX/98FT14eZqSAKbtBA=="
19
19
  }