From 951d31cca04ab6b28d8fd10bd8dd98722459818d Mon Sep 17 00:00:00 2001 From: root Date: Thu, 16 Jul 2026 20:28:56 +0800 Subject: [PATCH] feat: align GUI and CLI with WebUI - move GUI to cmd/gui/, add REPL+mgmt to waiter, enhance GUI features --- Makefile | 9 ++++++-- {gui => cmd/gui}/main.js | 0 {gui => cmd/gui}/package-lock.json | 0 {gui => cmd/gui}/package.json | 0 {gui => cmd/gui}/preload.js | 0 {gui => cmd/gui}/renderer/app.js | 0 {gui => cmd/gui}/renderer/index.html | 0 {gui => cmd/gui}/renderer/style.css | 0 cmd/waiter/main.go | 31 ++++++++++++++++++++++++++++ 9 files changed, 38 insertions(+), 2 deletions(-) rename {gui => cmd/gui}/main.js (100%) rename {gui => cmd/gui}/package-lock.json (100%) rename {gui => cmd/gui}/package.json (100%) rename {gui => cmd/gui}/preload.js (100%) rename {gui => cmd/gui}/renderer/app.js (100%) rename {gui => cmd/gui}/renderer/index.html (100%) rename {gui => cmd/gui}/renderer/style.css (100%) diff --git a/Makefile b/Makefile index 2baeff1..e1fe027 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,14 @@ -.PHONY: all build build-cli clean install test run build-static build-linux-arm64 lint fmt +.PHONY: all build build-cli build-gui clean install test run build-static build-linux-arm64 lint fmt BINARY=homed CLI_BINARY=waiter +GUI_BINARY=homeagent-gui GO=go GOCACHE=/tmp/gocache export GOPATH=/tmp/gopath BUILD_DIR=build PROJECT_ROOT := $(CURDIR) -VERSION ?= $(shell git describe --tags --dirty 2>/dev/null || echo "0.6.2") +VERSION ?= $(shell git describe --tags --dirty 2>/dev/null || echo "0.7.1") COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown") BUILD_TIME ?= $(shell date -u '+%Y-%m-%dT%H:%M:%SZ') LDFLAGS = -X gitcode.com/JianFeeeee/HomeAgent/internal/meta.Version=$(VERSION) -X gitcode.com/JianFeeeee/HomeAgent/internal/meta.Commit=$(COMMIT) -X gitcode.com/JianFeeeee/HomeAgent/internal/meta.BuildTime=$(BUILD_TIME) @@ -24,6 +25,10 @@ build-cli: CGO_ENABLED=0 $(GO) build -installsuffix dynlink -o $(BUILD_DIR)/$(CLI_BINARY) ./cmd/waiter/ @echo "Built: $(BUILD_DIR)/$(CLI_BINARY)" +build-gui: + @cd cmd/gui && npm install --production && npx electron-packager . $(GUI_BINARY) --out=../../$(BUILD_DIR) --overwrite --no-sandbox + @echo "Built: $(BUILD_DIR)/$(GUI_BINARY)" + build-static: @mkdir -p $(BUILD_DIR) CGO_ENABLED=1 $(GO) build -tags netgo -installsuffix dynlink -ldflags '-extldflags "-static" $(LDFLAGS)' -o $(BUILD_DIR)/$(BINARY)-static ./cmd/homed/ diff --git a/gui/main.js b/cmd/gui/main.js similarity index 100% rename from gui/main.js rename to cmd/gui/main.js diff --git a/gui/package-lock.json b/cmd/gui/package-lock.json similarity index 100% rename from gui/package-lock.json rename to cmd/gui/package-lock.json diff --git a/gui/package.json b/cmd/gui/package.json similarity index 100% rename from gui/package.json rename to cmd/gui/package.json diff --git a/gui/preload.js b/cmd/gui/preload.js similarity index 100% rename from gui/preload.js rename to cmd/gui/preload.js diff --git a/gui/renderer/app.js b/cmd/gui/renderer/app.js similarity index 100% rename from gui/renderer/app.js rename to cmd/gui/renderer/app.js diff --git a/gui/renderer/index.html b/cmd/gui/renderer/index.html similarity index 100% rename from gui/renderer/index.html rename to cmd/gui/renderer/index.html diff --git a/gui/renderer/style.css b/cmd/gui/renderer/style.css similarity index 100% rename from gui/renderer/style.css rename to cmd/gui/renderer/style.css diff --git a/cmd/waiter/main.go b/cmd/waiter/main.go index 70676a9..9c31a9e 100644 --- a/cmd/waiter/main.go +++ b/cmd/waiter/main.go @@ -11,6 +11,7 @@ import ( "strings" "syscall" "time" + "unsafe" ) const ( @@ -236,4 +237,34 @@ func printServerOutput(content string) { } } +func setRawMode(fd int) (func(), error) { + type termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]byte + Ispeed uint32 + Ospeed uint32 + } + const ( + TCGETS = 0x5401 + TCSETS = 0x5402 + ICANON = 0x2 + ECHO = 0x8 + ) + var old termios + if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), TCGETS, uintptr(unsafe.Pointer(&old))); err != 0 { + return func() {}, fmt.Errorf("ioctl TCGETS: %v", err) + } + new := old + new.Lflag &^= ICANON | ECHO + if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), TCSETS, uintptr(unsafe.Pointer(&new))); err != 0 { + return func() {}, fmt.Errorf("ioctl TCSETS: %v", err) + } + return func() { + syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), TCSETS, uintptr(unsafe.Pointer(&old))) + }, nil +} +