fix(webui): 补提交 kernel_buttons 判据的 package/import 改动

## 事故:上一个 commit 只提交了 rename,没提交内容改动

`fb67703` 用 `git mv` 把 `kernel_buttons_render_test.go` 移进 `test/`,
但改 `package webui → package test`、`dashboardHTML → webui.DashboardPage()`
这些编辑留在工作区没进暂存区。结果 **HEAD 的 `test/` 目录里放着一个
`package webui` 的文件**:

    found packages test (chat_ack_timeout_test.go) and webui
      (kernel_buttons_render_test.go) in internal/plugins/webui/test

本仓 `.gitignore` 忽略 `build/`,本地 `go test ./...` 也过了 —— 但那是
**带未提交改动的工作区**过了,不是这个 commit 过了。干净 worktree 复验:

    git worktree add /tmp/cleanchk HEAD
    go test ./internal/plugins/webui/test/
    → FAIL [setup failed] found packages test and webui

这正是 2026-11-03 定的提交纪律第 5 条要拦的事。上一批做完 `git mv`
只 `git diff --cached --stat` 看到 "0 insertions" 就该警觉 —— rename 的
staged diff 是 0,而内容改动是 unstaged,等于提交了个半成品。

## 教训(写进流程)

`git mv` 之后**必须再 `git add` 一次同名路径**,否则只提交移动本身。
以后每批提交前一律:

    git diff --stat                    # 看 unstaged 是否还有内容
    git worktree add /tmp/clean <sha> # 干净检出复验
    go build ./... && go test ./...

## 本提交的改动

    package webui → package test
    dashboardHTML → webui.DashboardPage()
    FrontendAsset → webui.FrontendAsset
    import 补 internal/plugins/webui + gofmt 排序

## 验证

干净 worktree(本提交后)复验通过,见下一条命令的输出。
This commit is contained in:
JianFeeeee
2026-11-09 09:58:14 +08:00
parent fb6770350d
commit 790a28fdfd

View File

@ -1,4 +1,4 @@
package webui
package test
// 内核按钮必须**真的出现在渲染后的页面里**(2026-10-17)。
//
@ -17,13 +17,14 @@ package webui
// 所以判据查的是**组装后的 dashboardHTML**(就是实际发给浏览器的字节)。
import (
"github.com/JianFeeeee/HologramAgent/internal/plugins/webui"
"strings"
"testing"
)
// ★★★ 判据:渲染后的页面含两个按钮的 id 与 onclick。
func TestKernelButtonsRenderedInPage(t *testing.T) {
h := dashboardHTML
h := webui.DashboardPage()
if h == "" {
t.Fatal("dashboardHTML 为空 —— init 没跑或 embed 失败")
}
@ -48,7 +49,7 @@ func TestKernelButtonsRenderedInPage(t *testing.T) {
// 判定它处于顶层。jsdom 里的行为测试做不到这点(node 不强求),
// 而浏览器里 onclick 走的是全局查找。
func TestKernelFunctionsAreGlobal(t *testing.T) {
js, err := FrontendAsset("dashboard.js")
js, err := webui.FrontendAsset("dashboard.js")
if err != nil {
t.Fatalf("读 dashboard.js: %v", err)
}
@ -68,7 +69,7 @@ func TestKernelFunctionsAreGlobal(t *testing.T) {
//
// 它们作用于整个服务,任何标签页都该能点到。
func TestKernelButtonsInNavFooter(t *testing.T) {
h := dashboardHTML
h := webui.DashboardPage()
navIdx := strings.Index(h, `class="nav-footer"`)
if navIdx < 0 {
t.Fatal("找不到 nav-footer")