fb3389971d
directory-picker-auto 按服务器侧事实选后端:native 要求「仅绑回环 + 非 SSH + 有显示器」。本插件让官方服务器保持回环,于是局域网部署仍被判为 native,点 「添加工作区」会在服务器本机弹原生对话框,远程操作者看不到。 按官方文档锁定 browse 这一对(host-directory-picker-browse + client-ui-directory-picker-browse),它在页面内列出服务器目录树,可服务远程客户端。 取舍:该 seam 每进程只能挂一个后端,本地页面也会改用页面内浏览;删除 patch 里 最后三行可恢复自适应选择。README 中英双语已补充说明。
53 lines
2.9 KiB
YAML
53 lines
2.9 KiB
YAML
# @sutong/dsh-lan-access — bundle patch.
|
|
#
|
|
# The LAN listener itself overrides no shipped row: it is a separate socket that
|
|
# forwards to the loopback web server, so the official webserver bind, the
|
|
# connection trust fence, and the launch token stay untouched, and disabling
|
|
# this bundle cannot break the loopback Web UI.
|
|
#
|
|
# The overrides below are UI-facing and deliberate. Each is explained where it
|
|
# appears and can be removed on its own.
|
|
|
|
# ── the LAN listener ─────────────────────────────────────────────────────────
|
|
# An ordinary Cordis plugin activated by package name.
|
|
- insert:
|
|
- id: dsh-lan-access
|
|
name: '@sutong/dsh-lan-access'
|
|
config:
|
|
# The official client derives its `isLoopback` topology fact from
|
|
# `location.hostname`, and the durable settings surface is loopback-only
|
|
# by that rule: on a LAN page the settings mirror stays in `memory` mode,
|
|
# so the Models/provider pages fail with "settings are unavailable in
|
|
# this browser" and the config-file action disappears.
|
|
#
|
|
# Declaring `ownsHost` for non-loopback pages restores those screens.
|
|
# A loopback page is left untouched, and the Host/Origin fence plus the
|
|
# launch-token login are unchanged, so this does not widen server-side
|
|
# authorization — but that settings UI reads and writes server settings,
|
|
# credentials included. Set this to false to keep the shipped posture.
|
|
ownsHostCompat: true
|
|
|
|
# ── pin the in-browser directory picker ──────────────────────────────────────
|
|
#
|
|
# "Add workspace" asks the directory-picker seam for a folder. Its chooser row
|
|
# resolves ONE backend at boot from host facts, and `native` requires "a
|
|
# loopback-only bind (an all-interfaces bind admits remote browsers no OS
|
|
# chooser can reach)" plus a servable display. This bundle keeps the official
|
|
# webserver on loopback by design, so a LAN deployment still resolves to
|
|
# `native` — and the OS dialog opens on the server, where the remote operator
|
|
# cannot see or reach it.
|
|
#
|
|
# Pinning the `browse` pair is the documented way to force an interaction
|
|
# ("pinning an interaction remains composing that pair directly instead of this
|
|
# row"), and that backend "serves remote clients the dialog backend cannot".
|
|
# The seam mounts exactly one backend per process, so this also applies to a
|
|
# local page: it trades the OS dialog for the in-page browser everywhere.
|
|
# Remove these three entries to get the adaptive choice back.
|
|
- id: directory-picker
|
|
disabled: true
|
|
- insert:
|
|
- id: directory-picker-browse
|
|
name: '@deepseek-ai/dsh-host-directory-picker-browse'
|
|
- id: ui-directory-picker-browse
|
|
name: '@deepseek-ai/dsh-client-ui-directory-picker-browse'
|