# NetSeed App

NetSeed App 面向 iOS、Android、macOS 和 Windows。移动端与桌面端共享相同的账号、Space、连接和授权语义；布局会适配屏幕，但同名入口表达同一件事。

## 主界面

| 区域      | 作用                               | 准确性要求                        |
| ------- | -------------------------------- | ---------------------------- |
| 连接开关    | 启动或停止当前 Space 的连接                | 登录/切换后的资源刷新不能长期阻塞连接          |
| 当前组织与网络 | 上方显示 Organization，下方显示 Network   | 不重复写“组织/网络”前缀；无手动刷新图标，后台静默刷新 |
| 账号      | 查看当前登录者、切换或退出账号                  | “当前账号”不使用含义不清的“已授权”副标题       |
| 服务      | 查看当前 Space 中自己发布或获授权的 L4 Service | 筛选项与桌面端一致，紧凑单行展示             |
| 节点      | 查看本机 Node 与获授权 Node 的 IP/DNS     | 分组标题留足高度并垂直居中                |
| 出口      | 选择已授权的互联网出口                      | 全站统一叫“出口”，不用“线路”             |
| 设置      | 高级连接、更多设置、活动日志、关于                | 图标与页面标题保持唯一且一致               |

## 登录与切换 Space

登录由外部浏览器完成，详情见[登录与设备授权](/getting-started/realm-owner-activation.md)。切换 Space 时 App 显示透明遮罩与居中的紧凑白色加载弹层；冲突操作暂时不可用，耗时超过阈值后出现取消。成功后界面展示新的 Organization/Network，并保持断开，由用户决定何时连接。

只有一个 Space 时仍显示当前值，但切换项不可点击；列表不会为了一个选项保留大块空白。

## 节点与服务

- **节点**支持“我的节点”和“已授权给我的节点”两个范围；授权整个 Node 后可见其 L3 信息并按策略访问。
- **服务**目录可能在未连接时仍可见，因为授权目录可独立刷新；真正访问私网服务仍要求当前 Space 已连接。
- 服务筛选应使用当前 Network 的最新数据。切换后旧缓存不得覆盖新列表。

## 出口交互

先在出口页选择一个已授权出口，再打开出口开关。未选择时点击开关只提示 **请先选择出口**，不进入半开启状态。出口列表使用紧凑行距；选择结果在下一次连接时安全应用。

## 高级连接设置

默认 **自动** 适合大多数网络。数据传输可在 WG/WSS 间自动选择；控制通道可在 SSE、Noise、QUIC 中按 NSD 广告能力和信任 pin 选择。强制某个模式仅用于排障，企业代理、UDP 限制和平台 VPN 权限都可能影响结果。

三类 pin 绑定 NSD authority，不绑定 Organization/Network/Space。App 首次使用受控发布配置，之后可信持久 source/manifest authority 优先；普通远程配置不能静默替换 pin 或认证权威，轮换必须走显式可信迁移。

## App 与命令行同时安装

App 内置自己的 Core/Library；本机 `ns` 是独立发行的命令行程序，但二者共享设备身份语义。任何时刻只能有一个 Core 持有系统网络资源。需要改用 CLI 时先在 App 断开并退出运行；CLI 的 `ns update` 不会更新 App，App 更新也不会替换系统 `ns`。

## 更新兼容性

正常 App 更新保留 Device 身份、账号和 Space Profiles。首次启动会兼容迁移旧格式；遇到异常先记录版本和日志，再用无破坏性的退出/重启/`ns reset`，不要直接删除身份。完整清理只用于明确需要把本机作为新 Device 注册的场景。
