Commit Graph
960 Commits
Author SHA1 Message Date
Qiu Yuzhou ebcd7ab2e2 feat(connectivity): add manual server connectivity tests 2026-10-14 00:53:52 +08:00
Qiu Yuzhou 3a6d143b17 refactor(settings): separate LAN enablement from listener mode 2026-10-13 21:46:04 +08:00
Qiu Yuzhou c61cfe2cab fix(settings): preserve local and LAN listener port semantics 2026-10-13 21:19:06 +08:00
Qiu Yuzhou 64f3dca27c refactor(settings): extract localhost listener editor 2026-10-13 20:56:56 +08:00
Qiu Yuzhou 4920ec5aeb feat(ui): improve LAN credential inputs 2026-10-13 13:22:24 +08:00
Qiu Yuzhou 0efd2e48dd fix: add padding to LANListeningEditorSheet for better layout 2026-10-13 13:07:58 +08:00
Qiu Yuzhou 2f0c0d7676 feat: separate local and LAN proxy listeners 2026-10-13 03:58:03 +08:00
Qiu Yuzhou c49d605a5b chore(ng2): remove fork issue references from comments 2026-10-13 00:38:06 +08:00
Qiu Yuzhou dc64349702 feat(plugins): bundle Cloak v2 client 2026-10-12 12:38:32 +08:00
Qiu Yuzhou 686fa4cd5c docs: require English Conventional Commit messages 2026-10-12 00:24:39 +08:00
Qiu Yuzhou 523cba3801 fix(plugins): give plugin paths the full row width 2026-10-12 00:12:49 +08:00
Qiu Yuzhou f72c50dceb feat(plugins): configure plugin transport mode 2026-10-11 23:58:47 +08:00
Qiu Yuzhou 87a5e48120 docs: prohibit fork issue references in code comments 2026-10-11 23:01:49 +08:00
Qiu Yuzhou b2059135c8 style(plugin): improve editor field spacing 2026-10-11 21:40:40 +08:00
Qiu Yuzhou b8fb419d22 fix(plugin): align settings button styles 2026-10-11 21:32:06 +08:00
Qiu Yuzhou 155934523f fix(plugin): align argument editor button heights 2026-10-11 21:24:44 +08:00
Qiu Yuzhou 84c292eb7f feat(plugin): support aliases and local startup arguments 2026-10-11 21:04:59 +08:00
Qiu Yuzhou 1390449e06 fix(plugins): 安全检查详情整行响应点击展开 2026-10-11 18:28:46 +08:00
Qiu Yuzhou 245ed3c5b2 fix(servers): restore native group drag and drop
Use native Table row and insertion callbacks instead of an outer drop
receiver. Resolve server rows and insertion lines to their containing
group, and root insertion points to the catalog root.

Verify insertion and server-row targets with regression tests.
2026-10-10 00:07:20 +08:00
Qiu Yuzhou e950f9974f fix(servers): preserve width when switching lists 2026-10-09 23:36:57 +08:00
Qiu Yuzhou 45ebd00dc5 ui: 调整服务器详情视图的内容padding 2026-10-09 23:36:34 +08:00
Qiu Yuzhou e50f671975 feat(servers): add ordered favorites 2026-10-09 23:20:11 +08:00
Qiu Yuzhou 80ae1299bb fix: preserve detail pane width when switching nodes
Keep a stable container as the HSplitView child so node identity changes only recreate the detail session rather than resetting the user's divider position.

Validated with eight native split-view transitions including empty selection: width stayed at 519 points. Debug build passed; existing file-length lint warning remains.
2026-10-09 20:29:24 +08:00
Qiu Yuzhou a7c5d80309 refactor: unify server and group detail presentation
Render saved node details through a shared property view with injected link actions. Keep metadata, activation feedback, and plugin parameter loading outside the renderer; retain specific plugin failures and scope command feedback to its target.

Preserve ordered and repeated plugin parameters, distinguish flags and empty values, and retain opaque raw text. Add bilingual detail copy and conversion coverage.

Validation: 981 hostless tests and 21 offline rule checks passed; Debug build passed. Native renderer checked at 720 and 360 point widths using synthetic data. Existing 22 lint warnings remain.
2026-10-09 20:05:03 +08:00
Qiu Yuzhou 2296143fc3 fix(servers): focus table on mouse click 2026-10-09 19:30:19 +08:00
Qiu Yuzhou 7ad7edee3c refactor(servers): use HSplitView for three columns 2026-10-09 19:23:44 +08:00
Qiu Yuzhou 801348c5b6 refactor(servers): use three-column table navigation 2026-10-09 19:07:44 +08:00
Qiu Yuzhou f23a24f203 feat(servers): add node creation and modification timestamps
CatalogEntry gains createdAt/updatedAt and the catalog document moves to
v5 (reads v1-v5, writes v5). Modification time is structure-sensitive:
editing a node's own fields bumps the node, a group's direct child set
or order changes bump the group, and a moved node keeps its timestamps.
No-op writes and unchanged subscription refreshes bump nothing; the
refresh rebuild compares per node, so surviving leaves keep theirs. All
times are passed in by callers as now: Date - one moment per logical
commit, the domain layer stays clock-free. Legacy documents load with
nil (unknown, never backfilled); duplicates and imports stamp fresh
times at the moment of the operation.

Semantics are recorded as glossary term 节点时间戳 and ADR 0031. No UI
in this change.
2026-10-09 18:04:48 +08:00
Qiu Yuzhou 1a6af3d467 refactor(home): drop server list card from home page
Remove TargetTreeCard, its browsing state HomeServerListState and the
dedicated tests; home now shows mode, runtime control, terminal command
and quick action cards only. ActivationFeedbackState stays shared by
the servers sidebar and group detail activation entries.
2026-10-09 17:23:50 +08:00
Qiu Yuzhou 64f99f2ef6 chore: add build:release task in Taskfile 2026-10-09 15:27:40 +08:00
Qiu Yuzhou 0cd86be164 ui: simplify ServerSidebarRow layout and remove unused elements 2026-10-07 15:04:59 +08:00
Qiu Yuzhou 87a90a5d4a feat(servers): make sidebar and detail panes resizable via HSplitView
Replace the fixed HStack + Divider layout with a draggable HSplitView:
sidebar constrained to 240-320 (ideal 280), detail pane gets a 320 min
width. Divider position is not persisted (no public API; resets on tab
switch and relaunch - accepted trade-off). Drop the sidebar list style
so the list sits on the regular window background.
2026-10-07 14:39:30 +08:00
Qiu Yuzhou c4bbcb022e refactor(servers): replace group rename alert with a sheet
The pre-filled current name in the rename alert only showed on the
first presentation: SwiftUI on macOS recycles the alert panel and its
TextField does not pick up binding changes made in the same update as
re-presenting. Swap the alert for a RenameGroupSheet modeled on
NewGroupSheet, presented via sheet(item:) so content state is rebuilt
each time and the prefill always matches the target group.

As with the creation form, a failed rename now keeps the sheet open
with the entered name instead of closing the alert first and losing
the input. The NodeContext adapter previously used by the move sheet
is shared by both presentations.

Add the manual catalog keys 重命名分组 (Rename Group) and 名称 (Name);
保存/取消 already existed.
2026-10-06 20:41:01 +08:00
Qiu Yuzhou 5e89c021c7 refactor(servers): drop group name editing from group detail view
Remove the inline name TextField and save button from GroupDetailView;
renaming stays in the sidebar context menu, and the empty-group
footnote no longer claims the name is editable.

Make the detail pane observe the catalog workflow instead of holding a
plain reference, so catalog commits made elsewhere (sidebar rename,
add/move, subscription refresh) re-render it. This fixes the stale
group title after a context-menu rename, along with the equally stale
direct-child count and activation eligibility text.
2026-10-06 20:10:12 +08:00
Qiu Yuzhou 4a918f69cb feat(rules): move custom rule deletion to toolbar and context menu
Replace the inline RulesDeletionButton with a toolbar delete button
(trash icon next to the add button). It is enabled only when the
custom-rules source is selected on the left and the selection contains
deletable custom rules; the collection must also be complete and not
committing.

The table context menu gains a destructive "删除 (N)" item after a
divider when the custom-rules source is selected, with the same
enablement conditions. Both entries share one confirmation alert now
held by RulesView.

Also inline the operation status view into the filter row and tighten
filter-area padding.
2026-10-06 19:19:57 +08:00
Qiu Yuzhou c5e1c87c8b refactor(ui): clean up StatusCardView layout and remove unused invalid server count message 2026-10-06 18:42:25 +08:00
Qiu Yuzhou d06c04246d feat: move diagnostics to a standalone window 2026-10-06 15:20:39 +08:00
Qiu Yuzhou f7f608b161 refactor(ui): replace workspace sidebar with tabs 2026-10-06 14:44:17 +08:00
Qiu Yuzhou 4e3a76dba5 fix(servers): remove location menu indentation 2026-10-06 14:11:12 +08:00
Qiu Yuzhou 1d69a3d538 feat(servers): add creation location picker 2026-10-06 14:08:12 +08:00
Qiu Yuzhou ac476d3764 fix(servers): number existing duplicate names 2026-10-06 13:42:15 +08:00
Qiu Yuzhou 0dc8775641 feat(servers): duplicate servers and groups 2026-10-06 13:36:12 +08:00
Qiu Yuzhou 308d9885d2 fix(home): disable server list keyboard focus 2026-10-06 13:13:46 +08:00
Qiu Yuzhou bb8d768c6a refactor(servers): compact form field layout 2026-10-06 12:29:57 +08:00
Qiu Yuzhou bdcbc6cd60 feat(servers): separate details from edit forms 2026-10-06 12:25:13 +08:00
Qiu Yuzhou e44a8345f4 chore: add config.toml to .gitignore 2026-10-06 10:49:33 +08:00
Qiu Yuzhou 77c33e526b fix: 移除有bug的移除当前选择的机制
此实现企图通过捕获对列表空白区域的点击以触发移除列表的当前选中项
2026-10-06 00:52:35 +08:00
Qiu Yuzhou 0ba9b1688b ui: 修正服务器列表导入引导文案 2026-10-06 00:50:45 +08:00
Qiu Yuzhou 7cbd451426 refactor(servers): SidebarRow 更名 ServerSidebarRow,避免与外层窗口 sidebar 混淆
该视图是 ServersView serverSidebar 目录树的树行内容,与 MainWindowView
外层窗口侧栏的 sidebarRow 无关;更名后与 serverSidebar 及 Home 侧
HomeServerListRow 的「范围前缀 + Row」先例一致。文件沿用 git mv 保留
Workspace → Servers 的移动链,ServersView 两处引用同步更新,工程已
重新生成。
2026-10-05 23:25:03 +08:00
Qiu Yuzhou be30f64f9f docs(design): 移除 to-spec 产物,去掉 user-plugin 文档的 -spec 后缀
两类文档来源不同,处理方式也不同:

- system-proxy-runtime-control-spec.md、terminal-command-address-spec.md 是
  to-spec 技能的原样产物(英文模板小节标题,无标题与日期头)。其内容已发布为
  Issue #72 / #73,人类需要的信息已由同日提交的无后缀中文文档承载;在仓库里再
  存一份,等于同一份规格有两个事实来源。删除后仍可从 git 历史追回。
- user-plugin-*-spec.md 四份来自 improve-codebase-architecture 会话:该技能把
  报告写进 OS 临时目录、不写 docs/design/,因此这四份是模型模仿仓库既有
  -spec.md 旧例命名(“猜测旧例”而非技能指令)。去掉后缀后仓库不再有该样板,
  后续模型少了可模仿的命名来源。四份保留原名主体,内容不动。

影响面:这六份文件全仓库零入站引用(含 docs/ 内部),移除与改名都无需改写链接。
docs/design/ 现为 12 份,无一带 -spec 后缀,与 AGENTS.md 的定位一致。

有意不做:不加“docs/design/*.md 必须带可解析 日期:/状态: 头”的确定性检查。
AI 输出本就无法保证规范化;更关键的是这类文档的“状态”只描述某次改进上下文,
不跟踪现状,把它当可校验字段是假精确。日期是写作时点的事实,两回事。
2026-10-05 22:39:58 +08:00