Commit Graph
967 Commits
Author SHA1 Message Date
Qiu Yuzhou 7cf04544ce feat(ng2): add Nushell and Windows proxy environment commands 2026-10-14 12:27:25 +08:00
Qiu Yuzhou 1353dc6292 fix(localization): disable automatic string catalog extraction 2026-10-14 11:52:21 +08:00
Qiu Yuzhou a619a82a7f fix(connectivity): leave untested results blank 2026-10-14 11:39:36 +08:00
Qiu Yuzhou a5a341edc4 fix(home): improve selected target contrast 2026-10-14 11:36:35 +08:00
Qiu Yuzhou 790e2a26fa feat(home): add target catalog and connectivity testing 2026-10-14 11:19:07 +08:00
Qiu Yuzhou a5206c78ff fix(connectivity): simplify toolbar progress 2026-10-14 01:09:41 +08:00
Qiu Yuzhou 8098bf4a08 docs(connectivity): define latency terms 2026-10-14 01:09:19 +08:00
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