Repository navigation
Releases: alecksty/waycoder
Release list
v0.96.810
v0.96.810 —— 重打一个不含受限第三方模型的包(v0.96.809 的补丁版)
只为一件事:把随包分发的那 4 个受限 3D 模型清出去。v0.96.809 的包是在删它们之前打的,
里面仍然含着一个 CC BY-NC(禁商用) 模型 —— 而本 App 是收费的。
⚠ v0.96.809 的 CHANGELOG 里只记了「删 Fox.glb」(CC-BY,要署名);
接着往深里查才发现真正的坑:那批模型只存在于打包那台机器的 models/ 目录
(被 .gitignore 挡在仓库外)⇒ 光看工作树查不出来,必须解开 vml_lib.zip 逐份查
(工作树 3 个、包里 9 个)。逐份核出来:DamagedHelmet = CC BY-NC 4.0、
BoxTextured = CC-BY 4.0(Cesium)、AntiqueCamera = CC0 但内嵌 UX3D logo(须署名 + 商标限制)、
Fox = CC-BY 4.0 ⇒ 四个全删;保留 5 个 CC0 的(Avocado/BoomBox/Duck/Lantern/WaterBottle)
- 自制的
rover_cutout.glb。zip 65.6 MB → 62.4 MB。
统一由 scripts/make-vml-lib.sh 重生成(zip 与 vml_lib.hash 一起更新),
逐份许可与"为什么光看工作树查不出来"记在 Examples/c/3d/models/CREDITS.md。
⚠ 升版本号是必需的(本仓 E117):同一个 CFBundleVersion 第二次上传会被 App Store Connect 拒收。
⚠ 安卓包与 iOS 包都要重打 —— 两边嵌的是同一份 vml_lib.zip(桌面 vmlcli 不读它,所以桌面包不受影响)。
v0.96.809 —— 修 App Store 退回两条:「设了服务商却切不过去」的静默失败 + 内购促销图
2026-10-08 App Store 退回 v0.96.578(提交号 960578),两条。这一版处理掉:
一、2.1(a) 核心功能不可用 —— 真因在提审版,但同族的洞还在
审核员按我们给的备注路径走(设置 → 模型 → 给主模型选服务商 DeepSeek → 填 Key → 测试 → 返回 → 对话),
主模型始终停在 Main model:(OpenAI)gpt-5.5。
- 提审版(v0.96.578)的真因:那版设置页必须有「保存配置」按钮才生效(
OnProviderChanged
只重建模型下拉,切模型只发生在OnSaveClicked里),而审核员那条路径与我们写给他的备注都没提这个按钮
⇒ConnectionConfig.ApplyModelChoice一次都没被调用。该问题已在提审次日cbb3f823
(v0.96.579「手机端设置改为即时保存」)修掉 —— 现在选服务商即生效。 - 同族残留(本次修):注册表里
gitee/groq/minimax/opencode-go/opencode-zen/together
这 6 个供应商注册了、也有默认地址,但没有内置模型。在设置页选中它们时模型下拉是空的,
CommitModel撞上SelectedItem is not ModelInfo静默 return ⇒ 主模型不变、零提示 ——
与审核员报的症状完全同型。
修法(判据只留一处):
ModelCatalog.HasModels(pid)—— 「设置页能不能真正选中它」的唯一判据
(⚠ 不要拿它收编ConnectionConfig.TryParseSpec里那句ByProvider(pid).Length > 0:
那里问的是「/connect pid/model的 pid 合法吗」,注册过就算合法,语义有意不同);- 手机端大/小模型两个服务商下拉按它过滤 —— 不能用的东西摆在列表里,正是本仓
「与其解释,不如按实际情况不显示它」那条(同全能版优化器那一项的处置),另加一行说明去处; CommitModel不再静默:模型列表为空时说清"为什么没变 + 去哪里加模型"(兜底,正常路径不可达)。
另一条同族加固:模型栏的守卫同步(用户 2026-10-09 口径「设置改了模型或供应商,切换到聊天界面,
模型供应商就应该改变」「只要切换 tab 就应该读一下」)。
模型栏原来只在 OnAppearing 里刷新,而"标签切换时 OnAppearing/Shell 导航事件会不会触发"
正是平台相关的(审核平台是 iPad)⇒ 等于把这条要求交给平台运气。改成 ChatPage.SyncModelBarIfChanged():
挂在本页已有的 100ms 状态定时器最前面(在 idle 早退之前),读内存 state、只在文本真变了才赋值
(变化驱动,不是节拍重绘)。OnAppearing 那条保留。
判据(SelfTest.Chunk4 新增 [供应商-模型一致性],已登记进模块表):
① 14 个可选供应商逐个 ApplyModelChoice 后 Config.Provider/Model 必须真的变成它;
② 内置注册表不许新出现「只注册、没模型」的供应商 —— 这条做过注入式反证
(临时塞一个空供应商 ⇒ 立刻红并点名,撤掉即绿)。
⚠ 第 ② 条第一版把名单手推成 5 个,跑一次就红了 —— 实际是 6 个(漏了 together):
这份名单只能跑出来,不能数出来。
二、2.3.2 促销图
新增 scripts/make-iap-promo.py:内购「促销图」1024×1024、RGB 无 alpha,构图是
22 块解锁方块 + 一行大字(22 = 全能版解锁的语言数),不用 App 图标那幅画面、没有任何小字 ——
正好对上退回的两条("等同于 App 图标" + "带小字")。产物落 ios-shots/iap/full-edition-1024.png,
复核走既有的 scripts/check-appicon.py(不另写校验)。
⚠ 它与「审核截图」是两个不同的 ASC 栏位,最容易传混。
ios-shots/README.md 与 docs/上架逐屏操作.md 补上这个栏位 —— 此前完全没写,正是它漂掉的原因。
三、手机端两个选择器改成整页(用户 2026-10-09 口径)
用户原话:「选择服务商可以弹出一页,最上面是输入框,用来输入过滤信息,下面是供应商的选择列表,
供应商名称(模型数量),没有不能出现没有模型的供应商」;
「同样的选择模型也一样……已经选中的打钩,点选后,弹框关闭,返回模型名称」。
-
新增
ProviderPickerPage(路由providerpicker):顶部过滤框 + 列表「名称(模型数量)」,
当前生效的打 ✓,点一条即生效并返回。列表按ModelCatalog.HasModels滤过 ——
与设置页的过滤、自测[供应商-模型一致性]同一份口径。 -
ModelPickerPage改成"选择模型"整页:顶部过滤框 + 只列当前服务商的模型列表 +
当前生效打 ✓,点一条即生效并返回。设置页与对话页顶部的模型栏共用这一页。
⚠ 原来的「🧠 大模型 / ⚡ 小模型」切换整块去掉。⚠⚠ 两件事都是实测出来的,别当成"顺手改的":
- 列表原来一个子项都不渲染(用户报「现在模型列表是空的」)。取证实录(小米 13 / 0.96.809):
RecyclerView有空间(y[440,2202])但子项数为 0;过滤框键入deepseek仍是 0 行;
logcat 无异常;页面实例被复用(输入框文字跨导航还在)。同一进法下
ProviderPickerPage(扁平列表)渲染完全正常。
⇒ 病根是IsGrouped="True"那条分组渲染路径 —— 全仓只有这一处用过IsGrouped,
即没有第二个样本能证明它在本环境可用。改成扁平列表后正常。 - 用户口径「模型列表……没有跟着服务商一起变化」⇒ 列表按当前服务商收敛。
收敛之后本来也只剩一个组 ⇒ 分组本身就没有必要了,两件事一次解决。
- 列表原来一个子项都不渲染(用户报「现在模型列表是空的」)。取证实录(小米 13 / 0.96.809):
-
设置页那两个
Picker换成"点开进整页"的行:ProviderPicker/ModelPicker
保留为不可见的取值容器(CommitKey/CommitBaseUrl/TestKeyFlowAsync/CommitModel
都读它们的SelectedItem,不动那几处 = 不动风险),只是不再显示原生下拉。 -
两个选择页都不显示底部 TAB 栏(用户 2026-10-09:「选模型和选服务商的时候,不需要下面的 TAB 栏」)。
⚠ 必须在 code-behind 里Shell.SetTabBarIsVisible(this, false)—— XAML 上写Shell.TabBarIsVisible
对 push 出来的页面不生效(本仓实机验过,同SettingsGroupPage/EditorPage/DrawWindowPage)。
⚠ 为什么不再用原生 Picker:它弹的是可滚动的原生对话框,而真机上光服务商就有 142 个
(实测)—— 盲滚找一条极难,而且"某个供应商到底在不在列表里"几乎无法确认。
本次 App Store 退回(2.1a)报的「设置里换了服务商、主模型纹丝不动」就出在那条路径上。
四、手机端小模型全面退场(用户 2026-10-09 定)
用户原话:「手机版只要一个大模型,小模型不需要,暂时用不上」、
「设置、对话下面的提示文字,不要出现小模型,手机平板暂时不需要小模型」。
理由不是审美:手机端根本不用小模型 —— AgentService 只按大模型 provider 建一个 LLM,
那一组填了服务商 / Key / 地址也只在记录层面存着、运行时不生效
(CommitBaseUrl(large:false) 里那句注释写的就是这件事)。
摆着一个"填了没用"的入口,正是本仓反复记过的「显示了但暗地里不生效」形态
⇒ 与全能版优化器那一项同一个处置:与其解释,不如按实际情况不显示它。
改动(只隐藏/去文案,不删底层能力 —— 桌面端双模型架构还要用,connections / session 那套是共用的):
| 位置 | 处理 |
|---|---|
| 设置 →「模型」页的「小模型(摘要/压缩/补全)」整组 | 整块 IsVisible="False"(配置键与 Commit* 路径一个没动) |
| 设置首页「对话(AI)」卡片那行摘要 | 去掉「· 小模型 xxx」——用户明说提示文字里不要出现它 |
| 模型选择页的「⚡ 小模型」切换按钮 | 整块去掉(本页现在只选主模型) |
模型管理页(ProviderModelsPage)的「大/小」切换、大✓小✓ 标记、编辑菜单里的「设为当前小模型」 |
全部收成主模型一档(主✓) |
哪天手机端接上小模型,把上面那几处删掉的 IsVisible="False" / 按钮加回来即可。
五、模型工具补齐(导入 / 清空 / 进度)+ 过滤框放大镜换 SVG(用户 2026-10-09 口径)
- 导入模型从"两项"扩成四种来源(与桌面/TUI 同源,不另造):
在线导入(列出ModelCli.OnlineSources全部 10 个站点:OpenCode Go/Zen、OpenRouter、Groq、
SiliconFlow、Together AI、DeepSeek、OpenAI、Moonshot、models.dev)、内置模型目录、
本地配置文件(Claude Code / Codex / OpenCode / Crush / OpenClaw)、自定义添加(手填)。 - 新增「🗑 清空模型(可恢复)」:
ModelCatalog.ClearAll(),二次确认并说明"不动 API Key 与当前连接";
清空后自动露出 「♻️ 恢复内置模型目录」(RestoreBuiltIn())—— 破坏性动作必须留回头路。 - 新增一行状态:
模型库:N 个模型(内置 X + 自定义 Y)。 - 在线导入显示进度(用户:「要显示进度,不然还以为卡住了」):
ModelCli.ImportOnline本来就有
onProgress回调,之前没接。现在接到那行状态文字上(🔍 拉取… → 🔄 解析…(KB) → 🔄 解析完成 N 个 → ✅ 完成),
不弹模态框(进度是可变的、框里写不了)。⚠ 回调来自后台线程 ⇒ 碰控件回主线程
(MainThread.BeginInvokeOnMainThread)。 - 两个过滤框的放大镜换成单色 SVG、放到右边:用现成的
Resources/Images/icons/icon_search.svg
(#777777单色)—— 仓里已有先例,它的注释里就记着用户 2026-10-02 提的同一条要求(文件页那个放大镜)。
⚠ 给图片加InputTransparent,否则点在图标上输入框收不到焦点(本仓 E104)。
跨端验收(2026-10-09 实测):
| 端 | 怎么验的 | 结果 |
|---|---|---|
安卓真机(小米 13 cd53cb14) |
uiautomator + 文本点击驱动,走审核员那条路径 |
选择流程全通(含幂等守卫要"先切走再切回"才可观测) |
| iOS 模拟器(iPad 13") | SIMCTL_CHILD_WC_SHOT="go:<路由>" 直达各页 + 截图 |
三页均正常 |
⚠ iOS 那边有个硬限制要先知道:模拟器没有触摸注入(simctl 无触控命令、这台 Mac 也没给
osascript 辅助权限、没装 cliclick/idb)⇒ iOS 上只能验"页面渲染",不能验"点着走一遍";
点选流程只在安卓真机验。三张截图逐条确认了:过滤框 + 放大镜在右(单色 SVG)、
没有底部 tab 栏、服务商行是「名称(数量)」且没有模型的一个都不出现、
模型页只列当前服务商且列表非空(旧版分组那条路在安卓上是一个子项都不渲染的)、
设置页没有「小模型」那一组、模型工具三个按钮 + 状态行都在。
六、第三方 3D 资产许可核查:删掉一个无署名随包的 CC-BY 模型(用户 2026-10-09:「只带那些没有版权问题的文件」)
起因:用户要求查一遍 Examples/c/3d/ 下随包分发的 .glb 有没有版权问题。
怎么查的(不是看文档猜,是读文件自身):逐份解析 GLB 的 JSON chunk,把
asset.copyright / asset.generator 打出来 —— 那是关于来源最硬的一手证据。
查出来的真问题:
| 文件 | 文件内声明的许可 | 结论 |
|---|---|---|
models/Fox.glb |
CC-BY 4.0(Model by PixelMannen / @tomkranis / @AsoboStudio with @scurest,带链接) |
❌ 要署名,而仓里记成 CC0 ⇒ 无署名随 vml_lib.zip 进 APK |
ToyCar.glb |
Public domain (CC0). … created by Guido Odendahl. |
✅ 可随包,无需署名 |
Avocado.glb / BoomBox.glb |
文件内无 copyright 字段(generator = glTF Tools for Unity);许可出自 Khronos glTF-Sample-Assets 该模型的 README(CC0) |
✅ 可随包 |
rover_cutout.glb |
generator = 我们自己的 make-rover-cutout-glb.py(从世界常量程序化构造,不读外部素材) |
✅ 无第三方权利 |
⚠ 关键前提:models/ 下的文件会进 vml_lib.zip(= 进 APK)(2026-10-08 起)——
而 .gitignore / CHANGELOG / 两个例子的注释都把它记成 CC0。四处都记错了。
处理:
- 删掉
models/Fox.glb(git rm)—— CC-BY 允许分发但必须署名,而我们没有任何署名;
要么署名、要么不发,这里选了不发。 - 随仓库进的那份换成
rover_cutout.glb(我们自己生成、无第三方权利,42 KB,带 baseColorTexture
所以 ⑦「贴图生效」那条判据照样能响)⇒ 自测 ⑥/⑦ 已改为指向它,闸门没有变成"永远绿的空转"。
(models/是*白名单,删掉 Fox 后全新 clone 该目录为空 ⇒ 那两道判据会直接Fail,所以必须换一份。) - 新增
Examples/c/3d/models/CREDITS.md—— 照仓里既有的Examples/pascal/CREDITS.md惯例,
逐份记「文件 → 许可 → 证据 → 能否随包发」,并写清怎么恢复覆盖。
这同时了结了docs/VML3D对标浏览器.md里 F7「许可与署名」 那条一直挂着的
「🅿️ 未量(待查:仓内有没有随包分发的第三方资产许可清单)」。 - 改掉四处会教错人的注释/文档(
.gitignore、glbview.c、gltf_demo.c、SelfTest.*.cs
里"它是 CC0"的声明)—— 本仓 E168:注释是给用户看的文档,写错就是教错人。
⚠CHANGELOG里的旧条目不动(改历史就是失真):v0.96.808 那句「Fox.glb(CC0)」保持原样,
更正记在本条。
⚠ v0.96.809 这个已上传的包里仍然含着 Fox.glb —— 它是本次打包之前的状态;
下一次打包起才不再包含。要彻底干净,得用去掉它之后的代码重打一个构建再传。
七、审核备注重写
WayCoder.Maui/ios-review.local.md(本地、gitignored)按当前界面重写,并给出验收点
(对话页顶部应显示 Main model:(DeepSeek)deepseek-v4-flash)。
教训:给审核员的路径必须逐条对着真实界面走一遍,且每一步都给一个"怎么知道它生效了"的判据 ——
这次两头都漏(界面要按保存、备注没写保存),审核员只能看到"点了没反应"。
v0.96.808 —— 应用内 3D 预览扩到 .glb/.gltf(「glb 不可编辑,可以预览」)
用户口径(2026-10-08):「继续完善 3D 格式预览 glb 文件预览」,紧接着一句定调:
「glb 不可编辑,可以预览」。此前应用内那套「3D 模型预览」只认 .obj
(PreviewFormatter.IsModel3d 里写死 .obj)—— 引擎侧早就能加载 .glb(ui_3d_gltf_load #643),
唯独静态预览不认,于是文件页里 glb 既没有缩略图、也点不开。
一、渲染器泛化:ObjPreview → ModelPreview(输入归一成"三角汤")
原类名改了(它现在渲 obj + glb,叫 ObjPreview 是撒谎)。两种源格式归一到同一个形状
(ModelPreview.Soup:顶点 8-float 步长 + 索引 + 可选逐三角形颜色),光栅那条路只有一份实现
(别为 glb 再写一套):
.obj:老路(ObjModel.Parse(shareVertsOverride: true)),无材质 ⇒ 平灰;.glb/.gltf:走引擎同一个装载器GltfModel.Parse,从Result.Roots遍历可达节点、
按NodeDef.World把顶点变换到世界空间拼汤,并按MatDef.Argb逐图元上色
(所以 glb 预览一眼能认出模型的样子,不再是纯灰块)。
⚠ 只渲"可达"节点(不然共享网格会被重复画几遍);骨骼蒙皮不做(装载器本就不解析 skins)⇒ 用绑定姿势。
二、文件能力矩阵(编辑 / 预览 / 编译 / 运行)—— 用户口径就是这四维
| 后缀 | 编辑 | 预览 | 编译 | 运行 | 分类 |
|---|---|---|---|---|---|
.obj / .gltf(纯文本) |
✅ | ✅ 3D | ✗ | ✗ | Source(与其它源码同待遇) |
.glb(二进制) |
✗ | ✅ 3D | ✗ | ✗ | 新 FileCategory.Model(图标 🗿) |
⇒ SandboxFsService 新增 FileCategory.Model(只收 .glb);.gltf 加进 SourceExts。
分类口径仍是"这个文件能干什么"(同 Archive),不是"属于哪个格式家族"——
所以同族的 glb/gltf 因为"能不能编辑"这一维不...
v0.96.798
v0.96.798 —— 文件页多一种「树视图」(可展开/收起的目录树)+ IDE 差距清单清空
用户 2026-10-07 在「编辑器内项目视图」(清单 #7)的两条路线里选了把文件页升级成树。
做完这条,docs/编辑器到IDE-差距清单.md 的第一、二梯队全部清空
(剩下的是第三梯队:#11 转到定义/查引用、#12 调试、#13 git、#14 终端 —— 清单自己标着"别急着碰")。
- 文件页从三种视图模式变四种:大图标 / 小图标 / 列表 / 树(工具条第 4 颗按钮,图标只切
IsVisible)。 - 数据:树这一档的
ItemsSource不是FsEntry列表,而是扁平化之后的可见行(TreeRow包装:
Entry/Depth/HasChildren/IsExpanded)—— ⚠ 没给FsEntry加字段(它被另外三份模板共用)。
展开状态按相对路径记在_expanded,懒展开:只有用户展开过的那一层才ListDir下去
(工作区可能几万文件,切模式时递归整棵树是不可接受的)。 - 交互(有意与桌面资源管理器一致):点箭头 = 展开/收起那一层(不进入);
点行的其余部分 = 目录就进入它、文件就打开(复用原来那条OnItemTapped分支)。
⚠ 箭头用Button而不是GestureRecognizer:它自己消费触摸、不冒泡到行根(与列表档那颗 ⋮ 同一个道理),
可点区 36×40(手机点得准)。缩进 =10 + Depth × 16,算式只此一处。 - ⚠ 另外三档一个字没变(列表/大图标/小图标、搜索、选择、更多菜单、预览九宫格)。
树这一档不画勾选框(多选仍只在另外三档)。 - ⚠ 图标是专门补的一张:起初借用了编辑器的
icon_outline,而它与icon_view_list撞脸
(都是"圆点 + 横线",并排分不出哪个是列表哪个是树)⇒ 新增icon_view_tree.svg
(主干 + 横枝 + 两行不等长 = 缩进层级)。判据scripts/check-maui-icons.py守"每个icon_*.svg
必须显式写width/height"(只给viewBox会被栅格化到 ~48dp 撑出按钮)。 - App 内帮助与官网同步跟上(用户当天追加要求「更新版本日志文档提交推送」时查出来的缺口):
help/{zh,en}/editor/panel.md的「查找」补上范围那两档,help/{zh,en}/files/browse.md
补上「视图:四种看法」与树视图的用法(箭头展开 / 点行进入、展开会被记住)。
⚠ 帮助改了必须重跑make-vml-lib.sh,否则手机上那份还是旧的(包的内容指纹是解压的闸门);
官网同时重新生成(make-site-docs.py)。 - 判据(
scripts/_maui_editor_probe.py的files套件,J12 系列 6 条):
切到树模式能读出行数且全收起时 == 列表模式的条目数 → 展开一个有子目录的行 ⇒ 行数变多且出现depth ≥ 1
→ 再点收起 ⇒ 回到原值 → 切回列表 ⇒ 老模式没被影响。反证过:把展开做成空操作 ⇒ J12b/J12b2 红
(13 → 13),其余 28 条照绿;还原后核 md5 逐字节相同并复跑。整套filesPASS=30 FAIL=0。
同日:全部安装包上官网(用户:「更新所有安装包到 Web 下载那边」)+ 顺手修掉四处"平行表"
- 发的什么:桌面 6 平台(
win-x64/arm64、linux-x64/arm64、osx-x64/arm64)+ 安卓 APK,
全部走站内镜像(website/dl/,downloads.json里四个平台都local: true)。
下载页四端全部 → v0.96.798;website/update.json第一次真正上线(此前该 URL 实测 404
—— 即 App 的"官网优先"更新链路一直是断的,每次都回退 GitHub)。 - ⚠
website/dl/在此之前一个桌面包都没有(实测waycoder-v0.96.559-win-x64.zip→ 404),
桌面按钮全靠跳 GitHub。本次起镜像自足。 - 修一:
make-site-manifest.py写错了地方。它把清单写到website/downloads.json,
而 2026-09-30 官网分三段后下载页读的是website/dolaima/downloads.json
⇒ 跑一次就在站点根生成一个没人读的孤儿文件,真清单还是旧版本号,而脚本报"成功"。
现在按dolaima/写(对分段前的旧布局留兼容分支)。 - 修二:安卓那条"必须手工同步的平行表"收进脚本。脚本从前有意跳过安卓平台
("各有各的发版节奏"),于是每发一次安卓包都得有人记着去改 JSON。现在版本号从 APK 文件名里读,
发一次自动跟着走。 - 修三:下载页 12 处硬写的版本号(中英各 6 处:
tar -xzf …、cd …、certutil -hashfile …)
改成<span data-ver="windows|linux|macos">,跟着downloads.json渲染 ——
照旧做法每次发版都要满页找版本号,漏一处用户照着敲就是"文件不存在"。 - 修四:签入的
Resources/Raw/vml_lib.zip是过期的(与仓库Lib/不一致,make-vml-lib.sh
自己报的)⇒ 重生成。这是"桌面全绿、手机上坏"那一类,因为桌面不读这个包。
同批把上一版(v0.96.797)声称"官网同步"、实际没同步的那批生成页补齐
(例程页里那份字节数还停在旧值:tetris.c51435 → 52539)。 - 钥匙钉回 Windows 那把:官网已发布的
0.96.589APK 实测是75:98:F1…签的
⇒ 发行包必须继续用它,否则从官网装过的用户全都得卸载重装。手机按用户拍板「卸载重装」换到同一把,
keystore.sha256的# CURRENT随之改钉(三处并排实测:下载页 / 本机 keystore / 手机 pull 出来的 base.apk)。 - 验收(都是量出来的,不是"脚本说成功"):7 个资产服务端
HTTP 200且Content-Length与本地逐个相等
→ 再把 APK 与 win-x64 整份下载回来复算 sha256,与本地逐字节一致;
check-website.py4113 项全绿;GitHub Releasev0.96.798的 6 个资产 digest 与dist/SHA256SUMS.txt逐条一致。
手机侧:装上 0.96.798(versionCode 960798)、补回MANAGE_EXTERNAL_STORAGE、启动无崩溃,
外部存储上的config/.waycoder/(含api_keys.json)与工作区未丢。
同日(续):图形版进发行包(用户:三大桌面「其实软件有几种版本」)+ 包里塞着调试符号的修复
- 发现的实情:
Web 版与TUI 版不是两个包 —— 网页模式在主工程那个二进制里(waycoder --web)。
真正的"另一个版本"是WayCoder.Gui(Avalonia 图形版),此前从没进过发行包。 scripts/package.sh改成一次出两个版本(同一套 RID 与打包逻辑,build_one/pack_one各只有一份实现):
终端版waycoder-<版本>-<RID>、图形版waycoder-gui-<版本>-<RID>;图形版永远是 JIT
(Avalonia 走 JIT,PublishAot对它没意义)。六个平台共 12 个包,全部走站内镜像。- ⚠ 修掉一个一直在生效的缺陷:包里塞着调试符号。
pack_one的 zip 分支写了-x '*.pdb',
但本机 Git Bash 没有zip⇒ 每次走的都是 PowerShellCompress-Archive兜底分支,
而那一支没有排除:实测waycoder-v0.96.798-win-x64.zip里躺着一个 56MB 的waycoder.pdb
(zip 20MB,去掉后 ~12MB);图形版更夸张(libSkiaSharp.pdb84MB +libHarfBuzzSharp.pdb21MB,
占总量的 46%)。⇒ 兜底分支补-Exclude '*.pdb',并把判据换成"包里有没有.pdb条目"
(写在上面的-x里、而实际走另一支,正是"判据写在不会经过被测机制的那一层")。 - 清单分工(谁读哪份,别混):
update.json是自动更新器的清单,按 RID 取包 ⇒
图形版不进去(混进去会被喂终端版的包);图形版自己也不自更新 —— 它的/update只是一句提示
(WayCoder.Gui/GuiCommands.cs)。downloads.json是下载页按钮的清单 ⇒ 两个版本都列,
图形版在前(商店文档里它是"推荐主打")。已写进make-site-manifest.py的注释与自检(缺包就报错退出)。 - 文案与事实对齐:站点多处写着"桌面端是免安装的单文件" —— 那是终端版的事实,
图形版是exe + 几个原生库(SkiaSharp 等)。download.html(中英)、guide.html(中英)、
index.html(中英,含三张平台卡的 meta)逐处改准,并补上「两个版本怎么选」「图形版不自升级」。
同日(续):官网补上**「能写哪几种程序」**(用户:「网站还要介绍」)
dolaima/vml.html(中英)把原来那节「绘图接口的分层:tty_* 与 ui_*」改写成五档一览
(锚点#draw保留 —— 页内 TOC 与教学页都链着它):
① stdio 程序(各语言的printf/scanf)· ② 彩色 TTY 程序(tty_*;老的conio/curses同路)·
③ 传统 BGI 程序(graphics.h兼容层,转发到ui_*、不模拟显存)·
④ 跨平台 UI 程序(ui_*)· ⑤ 跨平台 3D 程序(ui_3d_*,号段 600–632,可载入.obj)。
⚠ 这五档不是新造的说法 ——Examples/c/demo/demo_std.c("第 1 层")、tty/demo_tty.c(第 2 层)、
bgi/demo_bgi.c(第 3 层)、ui/demo_ui.c(第 4 层)的注释里本来就是这么分层的,照它写。- 每档都链到站上真有的例程页(11 个链接,含用户点名的太阳系
3d/solar3d.c)——
⚠ 英文页在dolaima/en/下,跨段链接要../../vml/examples/(先写成../少一层,
check-website.py当场红了 11 条死链,正是这道闸门的用处)。 - 首页(中英)那条 VML 引导带同步改成"五类程序",指到介绍页。
安装包:官网下载页 https://www.tansuoyz.com/dolaima/download.html (备案前用 http://112.74.99.96/dolaima/download.html )
每个桌面平台两个版本:图形版(waycoder-gui,Avalonia 窗口)与终端版(waycoder,含网页模式 waycoder --web)。
v0.96.559
Full Changelog: v0.96.110...v0.96.559
v0.96.110
Full Changelog: v0.96.109...v0.96.110
v0.96.109
Full Changelog: v0.96.105...v0.96.109
WayCoder v0.96.105
WayCoder 道码 v0.96.105 发行版(六平台 AOT 单文件)
累积自 v0.96.70 的修复与打磨:TUI VT 字节流输入修复(退格/Ctrl 组合键/F1-F4)、TUI 动态栏段级刷新与流式不整屏重绘、GUI 回车发送/聚焦样式/工作目录栏、编码与 BOM(notebook_edit/ps/kill/抓屏 ProcEncoding)、大量重复代码清理与单一真源收口、技能目录边界修复。
详见仓库 CHANGELOG.md。附带 SHA256SUMS.txt 校验。
Full Changelog: v0.96.70...v0.96.105
v0.96.70
Full Changelog: v0.96.68...v0.96.70
v0.96.68
Full Changelog: v0.96.67...v0.96.68
v0.96.67
v0.96.36
v0.96.36
- 四端 promptbar 输入框常用命令提示栏
- 四端补充 /review 代码审查指令
- 四端 Provider 管理对话框补齐(Web/GUI 新增)+ 多重价格显示
- 四端动态状态栏 + 忙时消息排队统一
Full Changelog: v0.96.32...v0.96.36