Commit Graph
12 Commits
Author SHA1 Message Date
Qiu Yuzhou 6f81b3fd70 Merge branch 'codex/custom-plugin' into develop 2026-10-05 12:05:42 +08:00
Qiu Yuzhou 86779b63ee feat(plugins): add settings management UI 2026-10-05 12:03:52 +08:00
Qiu Yuzhou ca45275810 Merge branch 'codex/custom-plugin' into develop
# Conflicts:
#	ShadowsocksX-NG2/App/Localizable.xcstrings
2026-10-05 11:18:03 +08:00
Qiu Yuzhou e74f8dfc01 refactor(plugins): derive server form facts from effective catalog 2026-10-05 00:46:43 +08:00
Qiu Yuzhou 3b3528d232 feat(subscription): show usage and provider dates 2026-10-05 00:10:13 +08:00
Qiu Yuzhou a9a7aedc0b fix(servers): restore direct creation buttons 2026-10-04 22:03:18 +08:00
Qiu Yuzhou 535d62a28a fix(servers): support root creation and clearing selection
Add explicit current-group and root creation menus. Clear the management
tree selection on blank clicks or Escape while focused. Capture creation
parents, retain failed group drafts, and select/reveal created nodes.

Validation: 870 hostless tests (921 executions), 21 Python checks, unsigned
app build, format/lint/diff checks. Standards and spec reviews passed.
Native interaction and visual verification were not performed per request.
2026-10-04 21:36:51 +08:00
Qiu Yuzhou 1a22af7e62 refactor(forms): 集中服务器装载与失败门禁 2026-10-04 16:46:20 +08:00
Qiu Yuzhou bf86b78422 refactor(ui): 插件参数编辑区按评审意见表格化重排
- 移除底部「添加参数」按钮(与末尾空行重复)
- 「值/开关」分段选择器移到行首;「无值开关」文案改「开关」
- 删除按钮文案改「删除」
- 编辑面与订阅只读面拆成两个独立视图,均改用 Table 控件布局;
  编辑行输入框改无边框(plain),参数名列限宽、值列弹性
- 原始文本编辑区与长值编辑 sheet 补分隔线边框
- NewServerSheet 的 isEditable 恒真,提交期禁用由外层负责,
  避免编辑视图闪换成只读视图
- 列宽不用 TableColumn width: 参数:无排序 Table 列泛型固定为
  Never,width:/value: 变体编译不过(macOS 15 SDK 实测),改经
  内容约束表达
2026-10-04 11:33:44 +08:00
Qiu Yuzhou a955f5ecb8 feat(ui): 插件参数无损表格编辑会话
issue #81 第二部分:新 PluginOptionsDraft 会话草稿模块——带稳定行
身份的有序参数行(无值开关与空串值之分)+ 参数列表/原始文本双模式。
解析与拼装遵循受管 v2ray-plugin v1.3.2 的 SIP003 转义语义(未转义
分号分隔、首个未转义等号分键值、反斜杠转义);未修改行逐字回写原文
片段,仅显式编辑的行重新编码,既有末尾分号无结构修改时保留;不可
靠解析默认并留在原始文本模式,不强行转换。

编辑面:底部空白快速添加行(输入即提升、身份与焦点稳定)、行内
编辑与显式删除、键值⇄开关可逆且保留会话值草稿、长值「编辑值…」
独立 sheet(等宽多行、确认才写回)。未完成行(有值/开关形态却无
参数名)阻止拼装、保存与切向原始文本;模式切换与展开编辑不触发
hasChanges;原始串仍是持久化与运行时唯一载荷。CONTEXT.md 新增
Plugin parameter draft 词条;新文案入 Localizable.xcstrings(中英)。
2026-10-04 04:45:01 +08:00
Qiu Yuzhou d2d20d27a6 feat(ui): 服务器表单输入限制与端口十进制草稿
issue #81 第一部分:手动表单产品上限(名称 128、地址 255、密码 1024
用户可见字符;插件参数 65,536 UTF-8 字节;端口最多五位十进制数字)。
校验收进 ServerFormFields 唯一入口 validateForSubmit(),字段错误
typed 呈现、修正即清除、首错按栅格顺序定位;validateName/hasNameError
退役。端口改十进制字符串草稿,draft 在草稿不可解析时为 nil、仅在
校验通过后消费,数值等价改写不算变更——无效输入不再悄悄提交旧绑定
值。与装载基线逐字相同的超长字段放行(历史数据兼容);导入与订阅
路径不受限。新错误文案入 Localizable.xcstrings(中英)。
2026-10-04 04:36:32 +08:00
Qiu Yuzhou 163e9443f3 feat(ui): 按必填名称重排服务器表单
新建与编辑共用名称优先布局,地址与端口按 4:1 分配宽度,移除重复标签与插件构建信息。

名称为空时显示行内错误并聚焦;编辑支持重置、变更检测与提交防重复,保存后标题同步已保存名称。

验证:823 项 hostless 测试、21 项 Python 检查、Debug 构建及双轴源码审查通过;原生视觉与焦点行为待人工验收。
2026-10-04 03:31:35 +08:00