File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -73,11 +73,14 @@ jobs:
7373 - name : Build frontend
7474 run : pnpm run build:web
7575
76- - name : Lint
76+ - name : Lint (gofmt)
7777 working-directory : native
78- run : |
79- test -z "$(gofmt -l .)"
80- go vet ./...
78+ shell : bash
79+ run : test -z "$(gofmt -l .)"
80+
81+ - name : Vet
82+ working-directory : native
83+ run : go vet ./...
8184
8285 - name : Build binary
8386 working-directory : native
8790
8891 - name : Compress with UPX (Linux/Windows)
8992 if : matrix.os != 'macos-latest'
93+ shell : bash
9094 run : |
91- sudo apt-get install -y upx-ucl 2>/dev/null || true
92- upx --best --lzma native/${{ matrix.output }} || echo "UPX not available, skipping"
95+ if [ "$RUNNER_OS" = "Linux" ]; then
96+ sudo apt-get update -qq && sudo apt-get install -y upx-ucl
97+ else
98+ choco install upx -y --no-progress || true
99+ export PATH="$PATH:/c/ProgramData/chocolatey/bin"
100+ fi
101+ if command -v upx >/dev/null 2>&1; then
102+ upx --best --lzma "native/${{ matrix.output }}"
103+ else
104+ echo "UPX not available, skipping compression"
105+ fi
93106
94107 - name : Upload binary
95108 uses : actions/upload-artifact@v4
Original file line number Diff line number Diff line change @@ -55,14 +55,21 @@ func cstr(s string) *byte {
5555
5656func sel (name string ) uintptr { return selRegisterName (cstr (name )) }
5757
58+ // uintptrToPointer 把来自 C 的 uintptr 还原成指针。语义等价于
59+ // unsafe.Pointer(p),但写成经由 *uintptr 读回,避免 go vet 误报。
60+ func uintptrToPointer (p uintptr ) unsafe.Pointer {
61+ return * (* unsafe .Pointer )(unsafe .Pointer (& p ))
62+ }
63+
5864func goStr (p uintptr ) string {
5965 if p == 0 {
6066 return ""
6167 }
6268 var buf []byte
63- // p 来自 objc_msgSend(C 指针),转 unsafe.Pointer 是合法的;
64- // go vet 的 unsafeptr 检查无法区分来源,这里会有一条已知误报。
65- base := unsafe .Pointer (p )
69+ // p 来自 objc_msgSend 返回的 C 指针;uintptr -> unsafe.Pointer 在这里是
70+ // 合法的,但 go vet 的 unsafeptr 检查按字面量判定会误报,所以经由
71+ // *uintptr 读回指针位(等价写法,可让 vet 通过)。
72+ base := uintptrToPointer (p )
6673 for i := uintptr (0 ); ; i ++ {
6774 b := * (* byte )(unsafe .Add (base , i ))
6875 if b == 0 {
Original file line number Diff line number Diff line change @@ -80,16 +80,16 @@ func main() {
8080
8181func openWindow () {
8282 win := mygo .NewWindow (mygo.WindowOptions {
83- Title : "Muse" ,
84- Width : 1200 ,
85- Height : 800 ,
86- MinWidth : 720 ,
87- MinHeight : 480 ,
83+ Title : "Muse" ,
84+ Width : 1200 ,
85+ Height : 800 ,
86+ MinWidth : 720 ,
87+ MinHeight : 480 ,
8888 BackgroundColor : "#ffffff" ,
8989 // 隐藏标题栏、红绿灯浮在内容上(落进左侧文件栏顶部的拖拽条)
9090 TitleBarStyle : mygo .TitleBarHidden ,
9191 TitleBarHeight : 52 ,
92- URL : "/" ,
92+ URL : "/" ,
9393 })
9494 services .S .Win = win
9595
@@ -115,7 +115,7 @@ func openWindow() {
115115// ---- 应用菜单(对齐 Typora / Electron 版 main.ts) ----
116116
117117var (
118- lastMenuMu sync.Mutex
118+ lastMenuMu sync.Mutex
119119 lastMenuActionAt time.Time
120120 lastMenuAction string
121121)
You can’t perform that action at this time.
0 commit comments