release: panel V2.7.0 / agent line A2.6.0
CI / go-test (push) Waiting to run
CI / postgres-durable-first (push) Waiting to run
CI / codegen (push) Waiting to run
CI / govulncheck (push) Waiting to run
CI / race (push) Waiting to run
CI / fuzz-smoke (push) Waiting to run
CI / golangci (push) Waiting to run
CI / frontend (push) Waiting to run
Docs CI / build (push) Waiting to run
Release 3X-UI / build (386) (push) Waiting to run
Release 3X-UI / build (amd64) (push) Waiting to run
Release 3X-UI / build (arm64) (push) Waiting to run
Release 3X-UI / build (armv5) (push) Waiting to run
Release 3X-UI / build (armv6) (push) Waiting to run
Release 3X-UI / build (armv7) (push) Waiting to run
Release 3X-UI / build (s390x) (push) Waiting to run
Release 3X-UI / Build for Windows (amd64) (push) Waiting to run
Release 3X-UI / Publish rolling dev release (push) Blocked by required conditions
Deploy Smoke Tests / noninteractive-install (ubuntu-24.04-arm) (push) Waiting to run
Deploy Smoke Tests / noninteractive-install (ubuntu-latest) (push) Waiting to run
Deploy Smoke Tests / release-tag-install (ubuntu-24.04-arm) (push) Waiting to run
Deploy Smoke Tests / release-tag-install (ubuntu-latest) (push) Waiting to run
CodeQL Advanced / Analyze (go) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Docs Deploy (GitHub Pages) / build (push) Canceled after 0s
Docs Deploy (GitHub Pages) / deploy (push) Canceled after 0s

Agent code changed in the rename batch (lui-agent binary, LUI_ env prefix, /etc/l-ui paths and services), so the agent line moves 2.5.0 -> 2.6.0 and its default-expectation tests move with it; panel version is injected at build time (V2.7.0). install-agent.sh RELEASE_BASE and install-master.sh LUI_URL move V2.6.0 -> V2.7.0. Repo name settled as rogue/l-ui (user decision 2026-10-24); the rename-batch placeholder warnings in docs/release.md, selfupdate.go and install-master.sh are closed by the Gitea rename that precedes publishing this release.
This commit is contained in:
Muse
2026-10-24 20:53:51 +08:00
parent f2695ddb22
commit 739c18ce48
6 changed files with 27 additions and 34 deletions
+5 -9
View File
@@ -1,15 +1,11 @@
# Release process (L-UI fork) # Release process (L-UI fork)
> PLACEHOLDER REPO — rename batch: `rogue/l-ui` in this document, > Repo name settled 2026-10-24: `rogue/l-ui`. The Gitea repository
> in `internal/selfupdate/selfupdate.go`, in `panel.go`, in > `rogue/3x-ui-agent` is renamed to `rogue/l-ui` before this
> `scripts/release-build.sh` and in the install scripts is a > release is published; the placeholder warnings from the rename
> placeholder, NOT yet the real Gitea repo name. The Gitea > batch are closed by that rename.
> repository has not been renamed in this batch. Do not publish
> any release from this branch until the user confirms the exact
> repo spelling and every placeholder is updated to it.
> See RENAMING.md (pending items).
Releases are published on the self-hosted Gitea (`rogue/l-ui` — placeholder, see above). Releases are published on the self-hosted Gitea (`rogue/l-ui`).
Build with `scripts/release-build.sh`; this document is the rules that Build with `scripts/release-build.sh`; this document is the rules that
script encodes. Read it before cutting a release — several rules exist script encodes. Read it before cutting a release — several rules exist
because violating them already caused a production incident once. because violating them already caused a production incident once.
+1 -1
View File
@@ -86,7 +86,7 @@ esac
# (独立入口 cmd/lui-agent,不再是主控双模式二进制)。该资产自拆分版 # (独立入口 cmd/lui-agent,不再是主控双模式二进制)。该资产自拆分版
# 发行起才有——RELEASE_BASE 的升版由发版步完成,指向拆分版即可用; # 发行起才有——RELEASE_BASE 的升版由发版步完成,指向拆分版即可用;
# 若需装拆分前的旧版节点,显式 LUI_URL 指回 l-ui-linux-<arch> 即可。 # 若需装拆分前的旧版节点,显式 LUI_URL 指回 l-ui-linux-<arch> 即可。
RELEASE_BASE="https://git.881218.xyz/rogue/l-ui/releases/download/V2.6.0" RELEASE_BASE="https://git.881218.xyz/rogue/l-ui/releases/download/V2.7.0"
LUI_URL="${LUI_URL:-${RELEASE_BASE}/lui-agent-linux-${BIN_ARCH}}" LUI_URL="${LUI_URL:-${RELEASE_BASE}/lui-agent-linux-${BIN_ARCH}}"
ROOT="${LUI_ROOT:-}" ROOT="${LUI_ROOT:-}"
+3 -3
View File
@@ -20,9 +20,9 @@ esac
# 二进制下载地址(本仓 Gitea Releases) # 二进制下载地址(本仓 Gitea Releases)
# 改名对齐:旧 tag v3.7.0-agent.1 从未携带改名后的 l-ui-linux 资产,沿用它 # 改名对齐:旧 tag v3.7.0-agent.1 从未携带改名后的 l-ui-linux 资产,沿用它
# 会指向不存在的发行;此处改指当前已发版的 V2.6.0(面板版本本身未动, # 会指向不存在的发行;此处改指本批发版 V2.7.0。仓库名定为 rogue/l-ui,
# 不是升版)。仓库名 rogue/l-ui 为改名占位,Gitea 真改名前须最后确认。 # Gitea 改名在发版前完成,占位警告随之销账。
LUI_URL="${LUI_URL:-https://git.881218.xyz/rogue/l-ui/releases/download/V2.6.0/l-ui-linux-${BIN_ARCH}}" LUI_URL="${LUI_URL:-https://git.881218.xyz/rogue/l-ui/releases/download/V2.7.0/l-ui-linux-${BIN_ARCH}}"
XRAY_VER="26.6.27" XRAY_VER="26.6.27"
info "创建目录..." info "创建目录..."
+7 -7
View File
@@ -156,14 +156,14 @@ func GetMasterDisplayVersion() string {
// defaultAgentDisplayVersion is the agent line's version when a build // defaultAgentDisplayVersion is the agent line's version when a build
// does not inject one. It names the last release in which agent code // does not inject one. It names the last release in which agent code
// actually changed (A2.5.0 — the V2.6.0 batch touched agent code: // actually changed (A2.6.0 — the V2.7.0 rename batch touched agent code:
// orphan-core handle recovery and the v4 beacon; before that the line // lui-agent binary, LUI_ env prefix, /etc/l-ui paths and services;
// stood at A2.4.0 while the panel line advanced alone). Bump it ONLY // before that the line stood at A2.5.0 while the panel line advanced
// together with a real agent-code change, in the same commit; panel // alone). Bump it ONLY together with a real agent-code change, in the
// releases must never move it. // same commit; panel releases must never move it.
const defaultAgentDisplayVersion = "2.5.0" const defaultAgentDisplayVersion = "2.6.0"
// GetAgentDisplayVersion is the agent's display version ("A2.5.0"), // GetAgentDisplayVersion is the agent's display version ("A2.6.0"),
// reported in agent telemetry and shown on agent node rows. It reads // reported in agent telemetry and shown on agent node rows. It reads
// ONLY the agent line's own injected version (falling back to the // ONLY the agent line's own injected version (falling back to the
// agent-line default): changing the panel's displayVersion injection // agent-line default): changing the panel's displayVersion injection
+7 -7
View File
@@ -68,9 +68,9 @@ func TestDisplayVersionDefaultsAndOverride(t *testing.T) {
} }
// The two lines have independent defaults since the decoupling: // The two lines have independent defaults since the decoupling:
// the panel default (2.0.0) and the agent line's own version // the panel default (2.0.0) and the agent line's own version
// (2.5.0, its last real change) deliberately differ. // (2.6.0, its last real change) deliberately differ.
if got := GetAgentDisplayVersion(); got != "A2.5.0" { if got := GetAgentDisplayVersion(); got != "A2.6.0" {
t.Fatalf("default agent display version = %q, want A2.5.0", got) t.Fatalf("default agent display version = %q, want A2.6.0", got)
} }
displayVersion = "1.0.1" displayVersion = "1.0.1"
@@ -78,8 +78,8 @@ func TestDisplayVersionDefaultsAndOverride(t *testing.T) {
t.Fatalf("injected master display version = %q, want V1.0.1", got) t.Fatalf("injected master display version = %q, want V1.0.1", got)
} }
// Panel injection must NOT move the agent line (decoupling lock). // Panel injection must NOT move the agent line (decoupling lock).
if got := GetAgentDisplayVersion(); got != "A2.5.0" { if got := GetAgentDisplayVersion(); got != "A2.6.0" {
t.Fatalf("agent display version after panel injection = %q, want A2.5.0 (unchanged)", got) t.Fatalf("agent display version after panel injection = %q, want A2.6.0 (unchanged)", got)
} }
// A release build may inject the number in the master's V-form: // A release build may inject the number in the master's V-form:
@@ -88,8 +88,8 @@ func TestDisplayVersionDefaultsAndOverride(t *testing.T) {
if got := GetMasterDisplayVersion(); got != "V1.0.2" { if got := GetMasterDisplayVersion(); got != "V1.0.2" {
t.Fatalf("V-injected master display version = %q, want V1.0.2", got) t.Fatalf("V-injected master display version = %q, want V1.0.2", got)
} }
if got := GetAgentDisplayVersion(); got != "A2.5.0" { if got := GetAgentDisplayVersion(); got != "A2.6.0" {
t.Fatalf("agent display version after V-form panel injection = %q, want A2.5.0 (unchanged)", got) t.Fatalf("agent display version after V-form panel injection = %q, want A2.6.0 (unchanged)", got)
} }
} }
+4 -7
View File
@@ -21,13 +21,10 @@ import (
"github.com/mhsanaei/3x-ui/v3/internal/config" "github.com/mhsanaei/3x-ui/v3/internal/config"
) )
// PLACEHOLDER REPO — rename batch, NOT yet the real Gitea repo name: // Repo name settled 2026-10-24: rogue/l-ui. The Gitea repository
// "rogue/l-ui" below is a placeholder chosen for the rename diff. // rogue/3x-ui-agent is renamed to rogue/l-ui before the V2.7.0
// The Gitea repository has NOT been renamed in this batch, and no // release is published; these constants already point at the
// release may be published from this code until the user confirms // settled name. See RENAMING.md.
// the exact repo spelling and these two constants (plus the same
// placeholder in panel.go, scripts/release-build.sh, the install
// scripts and docs/release.md) are updated to it. See RENAMING.md.
// //
// DefaultBaseURL is the release download base of the fork's own Gitea. // DefaultBaseURL is the release download base of the fork's own Gitea.
// A release tag directory hangs directly below it, holding the panel // A release tag directory hangs directly below it, holding the panel