Skip to content

Releases: rainac1/zashboard

v3.29.1-singbox.13

Choose a tag to compare

@github-actions github-actions released this 16 Oct 19:10
Merge upstream/main into singbox

在 origin/singbox(a997b2e,已合入上游 e5b48b4 / 4e13b0c)之上继续跟进上游剩余 3 个 commit:

- 63cb0e0 feat: auto-connect to same-origin backend on initial setup (#810)
- a72516f fix: bump dependencies to patch security vulnerabilities
- 805eb22 feat: use grid icon for overview and add hover motion to nav icons

冲突解决:
- src/helper/utils.ts:采用上游拆出的 getUrlQuery / getBackendFromQuery /
  getOriginBackend 结构,并把本分支的 `type=singbox` 识别抽成共享的
  getBackendTypeFromQuery,使同源自动探测同样遵循 `type` 参数。
- src/router/index.ts:保留上游 `query: to.query`(setup 重定向需保留
  hash 查询参数),同时保留本分支的能力路由守卫。
- package.json / pnpm-lock.yaml:保留 @xterm/* 依赖,采用上游安全升级
  (axios ^1.20.0、vue ^3.5.43、dompurify ^3.4.16),锁文件以上游为基准
  重算,因此同时拿到上游顺带修掉的传递依赖(brace-expansion 2.1.7/
  5.0.12、fast-uri 3.1.8),并按本分支继续剔除 husky / lint-staged。
- README.md:保留本分支自有内容(下载链接、捐赠行),并入上游新增的
  「Automatic backend connection」说明并补充 `type` 的 dae 取值。

其余自动合并的文件(NavMenu 图标动效、constant 图标表)两侧改动区域
不重叠:NavMenu 的 motionOf 对未知图标回退 motion-pop,本分支新增的
tools 图标安全。

验证:pnpm type-check、eslint、pnpm build 通过;test:setup 28/28、
test:verify 14/14 通过(test:verify 需英文 locale)。

v3.29.1-singbox.12

Choose a tag to compare

@github-actions github-actions released this 10 Oct 17:33
a997b2e
Merge branch 'Zephyruso:main' into singbox

v3.29.1-singbox.9

Choose a tag to compare

@github-actions github-actions released this 04 Oct 19:21
fix(proxies): test only the selected outbound of a selector

A Selector only ever uses the outbound it currently points at, but asking
the core to test the whole group makes it recurse into nested selectors
and test every member underneath (sing-box URLTestOutbounds walks nested
groups). That both spends requests on outbounds that are not in use and
makes the group test wait for them.

Selectors now always go through the panel per-member path regardless of
speedtestMode: latencyTestForSingle resolves each member through
getNowProxyNodeName, so a nested Selector is followed to the outbound it
currently selects (recursively) and only that outbound is requested.
LoadBalance / Smart keep following speedtestMode since all of their
members are in use.

v3.29.1-singbox.8

Choose a tag to compare

@github-actions github-actions released this 04 Oct 19:13
fix(singbox): keep URL test state through failures and batched results

The URLTest RPC only starts the task; results arrive on the
SubscribeGroups / SubscribeOutbounds streams. Two state bugs remained:

- A failed test deletes the history, so a node with no previous result
  never changes its fingerprint. The waiter rejected once the budget ran
  out and the shared latency flow surfaced it as a panel error
  (testFailedTip / notifyRequestError) instead of "not connected".
- A group test settled 500ms after the first change, but the core tests
  members in batches of 10, so later batches were dropped: the spinner
  stopped early and the success/failed summary was wrong.

Now the waiter settles on budget expiry as "no new result" (failure =
delay 0), matching the clash driver; group targets expand to the leaves
that actually produce history (nested groups unwrapped, reject/block
dropped) and wait for all of them. The unary RPC gets an abort cap so a
stalled call cannot pin the testing state, and the one-by-one summary
counts delay 0 as failed instead of only counting thrown errors.

v3.29.1-singbox.11

Choose a tag to compare

@github-actions github-actions released this 04 Oct 19:28
fix(i18n): label panel speedtest progress as in progress

The per-node panel progress notification used testFinishedTip
("{number}/{total} tests completed"), which reads as if the run were
already over even though it keeps updating while later nodes are still
being tested. Rename the key to testProgressTip and use in-progress
wording in all locales.

v3.29.1-singbox.10

Choose a tag to compare

@github-actions github-actions released this 04 Oct 19:25
fix(singbox): keep URL test state through failures and batched results

The URLTest RPC only starts the task; results arrive on the
SubscribeGroups / SubscribeOutbounds streams. Two state bugs remained:

- A failed test deletes the history, so a node with no previous result
  never changes its fingerprint. The waiter rejected once the budget ran
  out and the shared latency flow surfaced it as a panel error
  (testFailedTip / notifyRequestError) instead of "not connected".
- A group test settled 500ms after the first change, but the core tests
  members in batches of 10, so later batches were dropped: the spinner
  stopped early and the success/failed summary was wrong.

Now the waiter settles on budget expiry as "no new result" (failure =
delay 0), matching the clash driver; group targets expand to the leaves
that actually produce history (nested groups unwrapped, reject/block
dropped) and wait for all of them. The unary RPC gets an abort cap so a
stalled call cannot pin the testing state, and the one-by-one summary
counts delay 0 as failed instead of only counting thrown errors.

v3.29.1-singbox.7

Choose a tag to compare

@github-actions github-actions released this 03 Oct 06:43
fix(logs): handle ANSI escape sequences in log payloads

Upstream d1adea4 ("drop unused exports") deleted helper/ansi.ts together with
the code that used it, so the ansi prop on HighlightText, the call sites in
LogsCard/LogsTable and the per-segment highlight logic all disappeared. The fork
brought the file back later, but only for stripAnsi inside getLogConnectionID,
leaving parseAnsiText as dead code that got tree-shaken away. Raw escapes were
therefore reaching the DOM, and the log view showed literals like [38;5;208m.

This restores the wiring and squares up the matching basis while we are here.
HighlightText takes ansi again and goes through a new parseAnsiHighlight that
locates matches on the escape-free text and then splits them along segment
boundaries, so a token spanning a color boundary gets highlighted instead of
being filtered in and never marked. LogWithSeq also carries a visiblePayload
computed once at ingestion, and the logs page search, hide regex, type facet and
type dropdown all match on that rather than the raw payload, which is what made
a search for "208" hit the color code 38;5;208 and filled the dropdown with
escape sequences. parseAnsiText now uses its own /g regex too, instead of
sharing lastIndex with stripAnsi.

Downloaded .log files still keep the raw payload, since the escapes are
meaningful there. Verified with vue-tsc, eslint, prettier and a build, plus two
throwaway browser passes against a fake backend and the real panel; no scripts
or fixtures were left behind.

v3.29.1-singbox.6

Choose a tag to compare

@github-actions github-actions released this 01 Oct 18:53
feat(singbox): integrate sing-box core and api

Squash of all fork changes relative to upstream/main (9b867b7):
sing-box driver/API/assembly layer, dae native API contract
(started_service proto/pb), tools panels, and the fork release
workflow replacing upstream's Build and Deploy.

v3.29.1-singbox.5

Choose a tag to compare

@github-actions github-actions released this 30 Sep 22:19
Merge commit '9b867b76a8cbca014423e93af59f7ce0996bc4f4' into singbox

v3.29.1-singbox.4

Choose a tag to compare

@github-actions github-actions released this 30 Sep 22:15
feat: sync dae native API contract

- password auth mode with setup/login sessions and auto re-login
- optional capability resources, POST dns query, group config patch endpoint, probes without purpose
- async node/provider create and delete, provider create options and download route
- runtime settings bounds, recorder modes, degradations and ebpf attachment kinds
- geodata settings panel, dns rules and cache usage, config source creation
- update mock dae server to the new contract

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>