@forsion/extend 0.9.2 → 0.9.4

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,27 @@
1
1
  # 更新日志
2
2
 
3
+ ## 0.9.4 — 2026-10-24
4
+
5
+ - 插件投稿改成左右分栏:左边是你的投稿,右边看版本、商店信息和历史。上传 ZIP 后先由云端检查并列出读到的版本、图标和说明,确认后再提交;GitHub / npm 来源可以检查上游新版本并申请更新;只改商店信息不用重新上传包。版本号一律从包里或上游读取,不用手填。
6
+ - 新增「我的网页」:列出发布到 Forsion Connect 的网页,可打开、复制链接、下架,也可以申请上架商店、撤回或在被拒后重新申请。
7
+ - 蓬洲云同步页改成按类别开关:笔记、Agents 与记忆、我的资料、插件各一行,每行可选同步到所有设备、只在这台电脑或只和某台设备同步;改动先预览再确认,规则表移到「更多 › 高级」。侧栏、概览与各内容页同步整理,文件夹显示合计大小。
8
+ - 蓬洲云换上新的「祥云」图标与页头字标。
9
+
10
+ - Plugin submissions now use a split view: your submissions on the left; version, store details and history on the right. A ZIP is checked by the cloud first, showing the version, icon and notes it found, before you submit it; GitHub and npm items can check upstream for a new version and request an update; editing store details no longer needs a new package. Versions always come from the package or upstream, never typed in.
11
+ - New My web pages: lists the pages you published to Forsion Connect, with open, copy link and take down, plus applying for a store listing, withdrawing, or reapplying after a rejection.
12
+ - The Penzor Cloud sync page is now a list of categories: Notes, Agents & memory, About me and Plugins each have a switch and a choice of all devices, this computer only, or one other device. Changes are previewed before you confirm, and the rule table moves to More › Advanced. The sidebar, overview and content pages are reorganized to match, and folders show their total size.
13
+ - Penzor Cloud has a new ruyi-cloud icon and page-header wordmark.
14
+
15
+ ## 0.9.3 — 2026-10-22
16
+
17
+ - 原生手机复用账号、个人主页、会员与积分商店、公告和蓬洲云,直接读取当前账号已有的云端资料。手机上传交文件选择器,下载通过宿主保存,付款与外部链接沿用系统浏览器;本机同步开关和诊断仅在桌面提供。需要带 `mobileHostApi: 1` 接缝的手机宿主。
18
+ - Web 与手机登出或切换账号后,立即取消旧传输并清除队列与文件夹缓存;延迟返回的资料、上传额度与登录交接不再影响新账号。
19
+ - 桌面同步支持按文件夹选择范围、方向与默认或设备专属云端位置;启用和修改规则前先预览,传输中可查看进度、暂停和重试。重命名保留同步身份,冲突保留待处理版本;旧桌面仍使用原有同步页。
20
+
21
+ - Native mobile now reuses the account/profile pages, membership and points store, announcements, and Penzor Cloud with the signed-in account’s existing cloud data. Uploads use the file picker, downloads are saved by the host, and payments/external links use the system browser. Local sync controls and diagnostics remain desktop-only. Requires a mobile host supporting `mobileHostApi: 1`.
22
+ - Signing out or switching accounts on Web/mobile cancels old transfers and clears the queue and folder cache. Late account responses, upload quota checks and browser handoffs cannot affect the new account.
23
+ - Desktop sync supports per-folder scope, direction and default or device-specific cloud destinations. Preview changes before enabling or editing rules, and follow, pause or retry transfers. Renames retain sync identity and unresolved versions stay available; older desktop hosts keep the original sync page.
24
+
3
25
  ## 0.9.2 — 2026-10-21
4
26
 
5
27
  - 「我的云盘」统一按来源显示笔记库、Agents、我的资料、应用、插件数据和上传文件。同步与应用维护的内容只读,上传文件仍可整理。
package/README.md CHANGED
@@ -19,7 +19,7 @@ Forsion Extend 是 Forsion 桌面端内置的扩展,负责和你的 Forsion
19
19
  - **使用指南**(0.9,需要较新的 Forsion 桌面端;旧版本上不出现):Space 列表末尾那本书。Forsion 的说明书,按等级解锁,每章带任务和「带我去」;任务做完的进度存在这台电脑上,升级时收件箱会来一封「接下来试试这几件事」。
20
20
  - **笔记云同步与协作**:云端笔记库、按条目同步、与我共享,以及页面分享、发布和在线成员。
21
21
  - **设备互联**:让你的其他设备经 Forsion 云端连上这台电脑;账号下的设备可以查看、改名、换图标、移除,或在浏览器中打开。
22
- - **Forsion Connect**:把 Coding Space 里的项目发布成网页、申请上架商店;预览项目时也能用上 Forsion 的 AI。
22
+ - **Forsion Connect**:把 Coding Space 里的项目发布成网页、申请上架商店;预览项目时也能用上 Forsion 的 AI。「Forsion 云端 → 我的网页」列出你发布过的所有网页(包括让 Tangu 发的),桌面、网页和手机上都能复制链接、下线、申请上架或撤回。
23
23
  - **诊断数据**(可选,默认关闭):在「Forsion 云端 → 账号」里打开后,这台电脑会定期上传一份 Forsion 信息快照到你的账号,帮助 Forsion 团队排查问题、改进产品;多久上传一次由 Forsion 团队设定(默认每天一次,也可以只在需要时采集)。包含应用与系统版本、这台电脑的内存与磁盘余量、模型与语音的选择、后台 Agent 与插件设置里的开关和数值、MCP 服务与消息通道的名字、Agent 与团队的配置(描述与提示词只记长度)、已安装的插件与技能名单,以及最近 7 天的运行记录(每次运行的状态和报错原因,模型调用与工具的用量、耗时,引擎最近的运行日志;不带对话内容和工具读写的内容)。会话内容(这台电脑上的对话文字、思考过程和工具名,含团队成员、讨论、委派在后台做的那部分;不含工具读写的内容和附件本身,消息里出现的文件名、Agent 在回复里复述的笔记或文件内容会在其中;常见格式的密钥会遮掉,其余原样上传)与活动日志各有一个开关,可以先关掉再打开上传;这两项每次只上传还没上传过的部分,最多往前 7 天。Agent 的人设、记忆与进化记录(每个 Agent 的人设和配置里的描述与开发者指令、记忆和记忆候选、进化记录、写给你的协作说明、最近 7 天的日志和记忆整理记录、项目记忆,以及团队的设定和你的用户画像;每次上传它们当前的内容,很长的会截断,常见格式的密钥会遮掉,其余原样上传)也有一个开关,同样可以先关掉。保存在这台电脑上的登录凭据与 API 密钥、笔记文件、Agent 的资料库、插件数据不会上传。
24
24
 
25
25
  ## 设置在哪里
@@ -49,7 +49,7 @@ Forsion Extend is built into Forsion Desktop and takes care of everything to do
49
49
  - **Announcements**: important notices from Forsion pop up when you open the desktop app and don't show again once you've read them; links in them open in your browser.
50
50
  - **Note sync and collaboration**: the cloud vault, per-item sync, shared with me, and page sharing, publishing and presence.
51
51
  - **Device connectivity**: let your other devices reach this computer through the Forsion cloud, and view, rename, change the icon of, remove or open in your browser the devices on your account.
52
- - **Forsion Connect**: publish Coding Space projects as web pages and apply for a store listing; project previews can use Forsion's AI too.
52
+ - **Forsion Connect**: publish Coding Space projects as web pages and apply for a store listing; project previews can use Forsion's AI too. Forsion Cloud → My web pages lists every page you have published (including the ones Tangu published for you); on desktop, web and mobile you can copy a link, take a page down, or apply for or withdraw a store listing.
53
53
  - **Diagnostic data** (optional, off by default): when you turn it on under Forsion Cloud → Account, this computer periodically uploads a snapshot of its Forsion setup to your account to help the Forsion team troubleshoot problems and improve the product; the Forsion team sets how often (once a day by default, or only when a snapshot is needed). It covers app and system versions, this computer's free memory and disk space, your model and voice choices, the switches and numeric values in background agent and plugin settings, the names of MCP servers and message channels, agent and team configuration (descriptions and prompts by length only), the list of installed plugins and skills, and run records from the last 7 days (each run's status and error reason, usage and timing of model calls and tools, and the engine's recent log output; no conversation text and nothing those tools read or wrote). Conversations (the text of conversations on this computer, the agent's reasoning and tool names, including the background work of team members, discussions and delegated tasks; without what the tools read or wrote and without the attachments themselves, though file names that appear in messages and anything the agent repeated from your notes or files are included; keys in common formats are masked, everything else is uploaded as is) and the activity log each have their own switch, which you can turn off before you turn uploads on; each upload only includes the part of these two that hasn't been uploaded yet, going back at most 7 days. Agent personas, memory and evolution records (each agent's persona with the description and developer instructions in its configuration, its memory and memory candidates, its evolution record, its collaboration notes for you, the last 7 days of its logs and memory-consolidation activity, project memory, your teams' charters, and your user profile; each upload carries their current content, with very long ones cut short, keys in common formats masked and everything else as is) have a switch of their own, which you can also turn off first. The sign-in credentials and API keys saved on this computer, your note files, agent libraries, and plugin data are never uploaded.
54
54
 
55
55
  ## Where to find it
@@ -69,3 +69,29 @@ Don't see Forsion Cloud? Check that Forsion Extend is turned on under Settings
69
69
  Penzor Cloud opens My drive with eight source folders. Uploads go to My uploads; synced sources are read-only, ordinary app files retain management unless the source declares otherwise, and plugin data exposes metadata only. Unified quota is notice-only. Failed refreshes explicitly label the last sample as stale; existing source limits remain in force.
70
70
 
71
71
  验证 / Validation: `npm run test:vitest -- test/vitest/renderer/penzorData.test.ts test/vitest/renderer/penzorState.test.ts test/vitest/renderer/penzorSync.test.ts`. Real desktop acceptance lives in Genesis `desktop/scripts/penzor-space.e2e.cjs`.
72
+
73
+ ## Web 与原生手机 / Web and native mobile
74
+
75
+ Web 主入口与原生手机复用本包的账号、会员与积分商店、公告和蓬洲云界面。读取当前登录账号已有的云端资料与云盘,不创建另一份手机账号。手机上传交浏览器 `File`,下载交宿主保存;电脑笔记同步开关、本机设备诊断不在手机上注册。Web 仍使用浏览器下载和标签页,手机付款与公告链接使用系统浏览器。
76
+
77
+ The Web entry and native mobile reuse Extend's account pages, membership and points store, announcements, and Penzor Cloud. They read the signed-in account's existing cloud data. Mobile uploads use browser `File` objects and downloads use the native host. Desktop note-sync controls and local diagnostics are hidden on mobile. Web keeps its browser downloads/tabs; mobile opens payments and announcement links in the system browser.
78
+
79
+ 宿主契约 / Host contract:
80
+
81
+ - Web: `window.tangu.unitPage && window.tangu.unitPublicEntry`; mobile: `window.tangu.mobile && window.tangu.extendMobile`. The mobile marker belongs to the bundled, verified Extend loader.
82
+ - `ctx.account.status()` returns `{ loggedIn, cloudUrl }`, where `cloudUrl` identifies the account API origin (`https://…/api`). `ctx.account.request(url, init)` accepts absolute same-account `/api/…` URLs, injects authentication in the host, preserves multipart `Blob` bodies and `AbortSignal`, and rejects other origins. Extend never receives the token.
83
+ - `window.tangu.onAuthChanged(cb)` fires for sign-in, sign-out and account changes. Extend aborts in-flight requests, clears transfer filenames and directory caches, and ignores old responses. The host must change authentication and notify atomically before another account request can run.
84
+ - Mobile `ctx.account.saveDownload(blob, name)` returns `Promise<{ ok: boolean; error?: string }>`; `{ ok: true }` means the host accepted and saved the file. Missing/rejected saving produces a failed transfer. `window.tangu.openExternal(url)` opens the native browser; the existing native `openAccountCenter(section)` is preserved.
85
+ - The account adapter's `cloudFetch` and `cloudInvoke` stay private to Extend. They are never assigned to `window.tangu`, so desktop-only host capabilities are not accidentally enabled.
86
+
87
+ 验证 / Validation: `npm run typecheck`; `npx vitest run test/vitest/renderer/webEntry.test.ts test/vitest/renderer/webTransfers.test.ts test/vitest/renderer/penzorState.test.ts`. The focused tests cover mobile registration, native browser/save routing, signed-download fallback, active/queued uploads, sign-out and account switches, late quota responses, and nested-folder cancellation.
88
+
89
+ ## 目录同步 / Folder sync
90
+
91
+ 新版 Genesis 宿主与 Server 配合时,蓬洲云「同步」使用规则表:默认双向同步到云端 `/Forsion/`,子路径可改到 `/Forsion-设备ID/` 或设为不同步。最具体的路径优先;未匹配内容不参与同步。第一次开启和修改范围先预览、再确认。切换目标保留原云端副本,重新选择范围会重新对齐基线,断开的目录不会被当作删除。
92
+
93
+ 文件夹使用独立身份跟踪改名,同名目录合并。数据库沿用宿主按行 ID 的合并,文本安全三方合并;无法合并时保留冲突副本。传输页显示实际文件、方向、字节进度、暂停和重试。human 默认日历仍是 `human/CALENDAR.db`;只有同步到默认目录的内容供网页端默认读取。旧宿主保留原同步页。
94
+
95
+ 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.
96
+
97
+ 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.
package/SIGNATURE CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "alg": "ed25519",
3
3
  "files": {
4
- "CHANGELOG.md": "d9ef0e6e15649f0c8213a30cff127f74b634b34f76d537147afe2db7a57ee661",
4
+ "CHANGELOG.md": "7cd89da64e54510ea9347df5566a61c7f0ac9786537884c30e16a1be64abdec8",
5
5
  "LICENSE": "5594544ee08011ed5785ee26410f1f2ef005f66e9283833e8d435e34c10de1ed",
6
- "README.md": "331a0fa9721d8c31f0fd62e7908117138d1be2fe54af223e63d0dbc791d95f49",
6
+ "README.md": "29f891f597e1f5021c1aeccf5518ca4cc81b35cfdff9ca662abd193594b82f3c",
7
7
  "dist/THIRD_PARTY_NOTICES.md": "0af426bcae1e6cd82d3f6255768ac232eea116c7079706ae237d2f1f494531b4",
8
- "dist/desktop.mjs": "889d6f4ec0bcd84b1f02e164b7edc63250d43d3eb91741cae97420d38279c71c",
9
- "dist/main.js": "217d70debf9ebce52e4e79bfa1094c5943703a4bb63c319e0742c4d44d657dc3",
10
- "manifest.json": "cb329836eb2328cd7ea1ad6af881550ad943ff3e8d6f12900e1814d01fd25532",
11
- "package.json": "19fcebe2d92a5135609797615c39c5b6253f2f3e8dda4757fa5e387004bfecff",
8
+ "dist/desktop.mjs": "b6e36f32faebcc319037df48c5226dcf626d8cfc66b1e1dec6962ea128778129",
9
+ "dist/main.js": "79b513538d81d1cecb9ddc0d9cd14f329142329ed3512f1011abffa8df7d84fe",
10
+ "manifest.json": "56541a44a63e9801443c965f39a45e7db5c18153e7fbc88484a0d95287e97c30",
11
+ "package.json": "6239107af96e28b89991add49f2b6512940867cce6f90c126cc50629ab88520c",
12
12
  "spaces/guide/space.json": "7da9fb9373278e9e1f75c65f697a21f25b0b45792def0ce94ed5e7f6473979b1",
13
- "spaces/penzor/space.json": "478ccfc5f4fec4cd339f7e48e6dd530f45978804ea7cd9e579612e2cc2915429"
13
+ "spaces/penzor/icon.svg": "3c212d9f121ae54a0a84042c19ff5573e22cb236718ae4de11fc3c19f0c3b634",
14
+ "spaces/penzor/space.json": "a3b6c4d86c54dca38b24d3efe352fed860ce7accc934f9f160600ff65ed4f0e6"
14
15
  },
15
- "sig": "PiskAE0ETse548GTSKsQnL68dDJmZTJWOqkodRsESCfDXa1J5cZSAVZP/uPtPkzuOu4Xzon0ge+FuDNO/Z/mCQ=="
16
+ "sig": "0yqnDazpxPnji9iPXoDtNKPEc0gksDKfcpgtwOKYRtgfbctOijkqFVRbZ04asxxx5muMaQiVIsfNDCY+8+f8DA=="
16
17
  }