腾图工具

ease 61be06ba9a 删除 'build/bin/TengTuToolbox.exe' hai 8 horas
build 61be06ba9a 删除 'build/bin/TengTuToolbox.exe' hai 8 horas
frontend 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
localsend 5e5e9bf402 1. 添加LocalSend功能 hai 3 días
.gitignore eeab343ede 完善“记录”功能。增加上传功能。 hai 1 semana
README.md 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
Taskfile.yml 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
apiserver.go 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
backup.ps1 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
bilifeed.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
croc_process_other.go 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
croc_process_windows.go 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
croc_service.go 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
edgetts.go eeab343ede 完善“记录”功能。增加上传功能。 hai 1 semana
githubwatch.go 5e5e9bf402 1. 添加LocalSend功能 hai 3 días
go.mod 5e5e9bf402 1. 添加LocalSend功能 hai 3 días
go.sum c6796bca54 添加“记录”功能,用于灵活的记录一些连续数据 hai 1 semana
greetservice.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
hashservice.go d853d85633 添加LED字幕功能 hai 4 días
ledwindow_other.go d853d85633 添加LED字幕功能 hai 4 días
ledwindow_windows.go d853d85633 添加LED字幕功能 hai 4 días
localsend_server.go 5e5e9bf402 1. 添加LocalSend功能 hai 3 días
localsend_service.go 5e5e9bf402 1. 添加LocalSend功能 hai 3 días
main.go 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
main_android.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
memos_service.go 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
mousealert_other.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
mousealert_windows.go f62072a876 添加鼠标滚动文字提示功能 hai 1 semana
newsfeed.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
ntfy.go 38a8c05867 基本功能完成 hai 1 semana
pccontrol.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
poem.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
power_shutdown.go f62072a876 添加鼠标滚动文字提示功能 hai 1 semana
qrcode.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
qrcode_test.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
recordservice.go eeab343ede 完善“记录”功能。增加上传功能。 hai 1 semana
recordservice_test.go c6796bca54 添加“记录”功能,用于灵活的记录一些连续数据 hai 1 semana
reminderservice.go d853d85633 添加LED字幕功能 hai 4 días
screenshot.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
settings.go 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
settingsservice.go 5e5e9bf402 1. 添加LocalSend功能 hai 3 días
stockquote.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
ticker.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
timesync.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
timesync_other.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
timesync_windows.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
todoremind.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
todoremind_test.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
translate.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
translate_test.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
trending.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
webservice.go 704524ccd6 初始提交:腾图工具箱 Wails v3 桌面应用(多页面聚合、工具页 ntfy/翻译/二维码/古诗词/截屏、服务页 API、记录 Markdown、备份脚本) hai 1 semana
windowcompact.go 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
windowcompact_other.go 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
windowcompact_windows.go 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días
ytdlp_service.go 0b9daa1007 添加工具:Croc、Memos、yt-dl;允许双击图标缩小窗口 hai 2 días

README.md

腾图工具箱(TengTu Toolbox)

基于 Wails v3 的桌面工具箱应用。前端使用原生 HTML/CSS/JS + Vite 构建,后端使用 Go;主窗口内嵌多个网页 Tab,并提供新闻聚合、Github 仓库监听、股票行情、记录/待办编辑、硬件监控、主机管理、工具(Web 服务 / 翻译 / 二维码 / ntfy / 截图 / 延时关机 / 哈希 / LED 滚动文字 / 定时提醒 / LocalSend 互传 / Croc 传送 / 视频下载 / Memos 速记)、聊天与设置等面板。

快速开始

# 开发模式:启动应用并为前后端启用热重载
wails3 dev

# 构建生产版本,输出到 bin/ 目录
wails3 build

主要功能

Tab 说明
笔记 内嵌网页,地址可在设置中修改;底部 footer 显示随机古诗(水平滚动,可配置颜色/字号/刷新间隔)
控制 内嵌网页,地址可在设置中修改
博客 内嵌网页,地址可在设置中修改
网址 常用网址卡片,点击在浏览器打开,列表在设置中维护
新闻 聚合煎蛋、头条热榜、腾讯科技/财经、Solidot;命中关键词置顶高亮,已查看标题灰显,条数可设置
Github 监听配置仓库的最新提交与 release,本地版本低于最新版提示更新;Latest 之后的 Pre-release/草稿版本也会列出(仅展示,不参与更新比较);「本地 xxx」徽标与版本徽标均可点击跳转到对应 releases 列表
股市 自选股实时行情,点击行查看分时 / 日K;交易时段自动刷新,休市用较长间隔
记录 文本记录文件编辑,支持 Markdown 实时预览(编辑 / 预览切换,预览用后端 gomarkdown 渲染),路径可在设置中修改
待办 每行一个待办任务,可勾选完成、编辑、删除;每条可设置提醒时间,到点自动弹出置顶消息窗提醒(即使窗口隐藏也会触发)
硬件 内嵌硬件监控页,地址可在设置中修改
工具 开发/运维辅助工具:Web 服务(选目录开启浏览服务)、翻译(中英互译)、二维码生成、发送 ntfy 消息、ntfy 聊天室、古诗词、屏幕截图、延时关机、MD5 加密、SHA256 编码、LED 滚动文字、定时提醒、LocalSend 互传、Croc 传送(自动检测系统 PATH 中的 croc,存在才显示)、视频下载(自动检测 yt-dlp,监视剪贴板中的 B 站链接)、Memos 速记(调用 Memos REST API 新建备忘);各功能区默认折叠,点击标题展开
服务 内置 API 服务状态、电源命令状态与 Gin 日志(「清空日志」在标题右侧);原截屏功能已迁移至工具页
聊天 内嵌网页,地址可在设置中修改
设置 按「系统 + 各 Tab」分组展示配置项,保存后立即生效

随机古诗

笔记页 footer 显示的水平滚动随机古诗,数据来源为 古诗词网接口(https://poetry.palemoky.com/api/poems/random,由 古诗词网 提供)。每次随机取一首,返回标题 / 作者 / 朝代 / 内容;可在设置中调整显示开关(禁止显示)、文字颜色、字号、滚动速度(秒/轮,数值越小滚动越快)、朗读按钮;速度保存后立即生效。

设置项

  • 系统:界面样式(暗色/亮色)、系统启动时运行、窗口置顶、启动时缩小(直接收拢为圆点)、呼出窗口热键
  • 各 Tab 对应设置:页面地址、Tab 显示顺序(逗号分隔)、股票代码与涨跌颜色、股市刷新间隔与休市刷新间隔、新闻关键词、新闻刷新间隔与显示条数、Github 项目与刷新间隔、API 监听地址、记录文件路径、待办文件路径、股票/新闻滚动条等
  • LocalSend:本机名称(广播给其他设备)、接收目录、接收模式(自动接收 / 手动确认)、监听端口
  • Croc 传送:发送/接收共用的密码(至少 6 个字符;设置后作为固定传输码 croc send --code,双方一致即可传输;留空则使用 croc 随机传输码)、接收保存目录(留空=程序当前工作目录);未检测到 croc 时这些设置项自动隐藏
  • 视频下载:yt-dlp 下载保存目录(留空=程序当前工作目录)、mp3 转换质量(VBR 0/2/5 或 128K/192K/320K,默认最佳 VBR 0);未检测到 yt-dlp 时这些设置项自动隐藏
  • Memos 速记:Memos 实例地址(默认 https://m.scwy.net)、个人访问令牌(在 Memos 网页端「设置 → 访问令牌」创建,仅存本机);两项未配置时工具页输入框不可编辑

滚动文字

股票与新闻滚动条显示在屏幕顶部,位置与配置(宽度、字号、颜色、速度、背景透明)均可在设置中调整;位置会在拖动时自动保存,下次启动恢复。

工具页

  • Web 服务:选择任意目录,开启本地静态文件浏览服务(默认页为 index.html 或 readme.md,README 会自动渲染为 HTML);启动后点击地址链接可在系统浏览器打开。
  • 翻译:一个文本框,输入中文自动翻译为英文、输入英文自动翻译为中文(自动检测方向)。使用 MyMemory 免费接口,每日约 5000 词配额(超出会提示恢复时间);支持 Ctrl/Cmd+Enter 快捷翻译。
  • 二维码生成:输入任意字符串(网址、文本、联系方式等),即时生成 PNG 二维码图片;点击图片或「下载 PNG」可保存,支持 Ctrl/Cmd+Enter 快捷生成。
  • 发送 ntfy 消息:输入主题(Topic,用于指定监听频道,输入过的主题自动记忆、下拉可选)、标题(可空)、内容,推送到 ntfy 服务(默认 https://ntfy.sh),供手机 / 浏览器 / 其他设备即时提醒。主题历史保存于用户配置目录 TengTuToolbox/ntfy_topics.json。
  • ntfy 聊天室:输入聊天室名称(ntfy 主题)并「开始监听」,通过 SSE 长连接实时接收该主题消息并显示在列表中;主题留空则不监听。可与手机 / 其他设备用同一主题互发消息,实现跨设备聊天 / 通知。监听时收到消息自动滚动到底部(上滚可暂停跟随)。
  • 古诗词:显示主窗口 footer 最近获取到的古诗词内容(题目 / 作者 / 诗句),可点击「刷新获取」拉取新的一首;footer 加载到的古诗也会同步显示在此。数据来自古诗词网随机接口。
  • 屏幕截图:点击「截屏」后自动隐藏本程序窗口,截取整个屏幕(全部显示器拼接),完成后重新显示本程序并预览截图;截到的画面不含本程序自身。原位于主机页的截屏功能已迁移至此。
  • 延时关机:输入多少分钟后关机(1 ~ 1440 分钟),确认后复用 pccontrol.go 的系统命令构造(shutdown /s /t N /f)交给 Windows 系统计时,即使本程序退出仍会执行;也可随时取消。
  • MD5 加密:输入任意字符串,计算其 32 位小写十六进制 MD5 摘要。常用于文件/字符串校验,注意 MD5 已不适合密码存储。
  • SHA256 编码:输入任意字符串,计算其 64 位小写十六进制 SHA256 摘要。适用于校验、签名与安全存储。
  • LED 滚动文字:输入文字(支持中文),转换为 LED 点阵,在独立的无边框、透明、置顶、可拖动窗口中横向循环滚动显示;可配置点阵颜色与滚动速度(像素/秒),窗口可关闭。由 Win32 API 原生实现(ledwindow_windows.go),不经过 Wails WebView2。
  • 定时提醒:输入提醒信息与间隔分钟数,每 xx 分钟弹出一次提醒(广播 periodicReminder 事件并唤出主窗口),直到手动取消。适合定时喝水、休息、吃药等。
  • LocalSend 互传:与局域网内的 LocalSend 客户端(手机 / 电脑)互相发现并互传文件。启动后其他设备可发送文件到本机(按设置中的「接收模式」自动或手动接收),也可从本机选择文件发送给发现的设备。纯 Go 实现,与官方 LocalSend v2.2 完全互通。
  • Croc 传送:自动通过系统 PATH 查找 croc(exec.LookPath),未安装时整张卡片与「设置 → 工具」中的 Croc 配置项一并隐藏。卡片上只有「启动/停止」乒乓按钮与「发送」按钮:点「启动」以设置中的密码作为传输码开始接收(再点停止),点「发送」选择文件后发送(发送中按钮变为停止发送);密码与接收保存目录都在「设置 → 工具」中配置。发送/接收日志(含进度)实时输出到卡片内。注意 --pass 在 croc 中是中继服务器密码(公共中继固定 pass123),因此密码采用 --code 方式实现双方共用。
  • 视频下载:自动通过系统 PATH 查找 yt-dlp,未安装时卡片与「设置 → 工具」中的下载目录配置一并隐藏。运行后每 1.5 秒读取一次系统剪贴板(Wails 原生剪贴板 API),一旦发现 B 站链接(bilibili.com / b23.tv 短链,支持从分享文案中提取)就加入卡片列表(去重、最多保留 20 条),并用 yt-dlp --get-title 异步解析视频标题(标题 + 原链接两行显示,解析失败回退链接);每条后面带「下载」按钮,若 PATH 中还有 ffmpeg,再追加「下载转 mp3」(-x --audio-format mp3)。每条前面有勾选框,配合顶部「全选」「批量下载(N)」与(有 ffmpeg 时的)「批量转 mp3(N)」可串行批量执行;下载完成的条目会移到列表末尾、背景变暗,按钮变为「重下载」(mp3 为「重下载 mp3」)。下载中按钮变为「停止」,日志与进度实时输出。下载目录在设置中配置,留空则保存到程序当前工作目录。
  • Memos 速记:把输入内容通过 Memos REST API(POST /api/memos,Authorization: Bearer <访问令牌>)发送到设置中配置的实例,固定创建私有备忘,支持 Markdown 与 #标签,可用 Ctrl+Enter 快捷发送;说明写在卡片标题的悬浮提示中。未填写地址或访问令牌时,输入框只读并显示提示。配置在「设置 → 工具」中完成。

鼠标提醒

通过内置 API 触发系统级鼠标提醒:平时鼠标为正常样式;触发后鼠标图标闪烁(白↔红,约 250ms 周期),光标下方浮出半透明提示文字,可覆盖任意窗口(系统级),默认 8 秒自动消退。文字默认带黑色描边(可在设置中调整描边颜色与宽度,0 关闭),避免在亮/暗不同背景下看不清。详见 mousealert_windows.go。

拖动手柄

Tab 栏最左侧的圆点手柄区域用于拖动窗口。双击手柄可在「全尺寸」与「仅手柄大小」(约 32×38,收拢后窗口只剩一个可拖动、可双击的正圆点)之间切换,再双击还原。实现要点:Wails 无边框窗口仍带 WS_THICKFRAME|WS_SYSMENU|WS_MIN/MAXIMIZEBOX 等样式位,DWM 对其强制最小宽度(约 136px),WM_GETMINMAXINFO 无法覆盖;收拢时临时剥离这些样式位(windowcompact_windows.go),还原时恢复,并配合 SetMinSize/SetSize 完成缩放。圆点可通过 API 服务触发闪烁(颜色红↔黄交替 + 大小缩放脉冲,默认 3 次),用于提醒:POST /api/handle/flash(body 可选 {"count":3} 指定次数)。也可用 POST /api/window/compact 控制收拢/还原(返回 {"compact":bool})。详见 windowcompact.go。

项目结构

  • main.go:Go 后端入口,创建应用、主窗口、系统托盘,注册服务与窗口事件,启动时间广播与待办提醒调度协程
  • greetservice.go:Wails 示例服务(GreetService,用于验证 Go↔JS 绑定链路)
  • settingsservice.go:设置读写、新闻抓取、Github 监听、行情查询、翻译、二维码、截屏、Web 服务、待办读写、Markdown 渲染、API 状态等核心服务
  • settings.go:AppSettings 结构体、默认值与字段校验
  • newsfeed.go:新闻来源抓取(煎蛋 / 头条 / 腾讯 / Solidot)
  • trending.go:GitHub Trending 热门仓库抓取与自动翻译
  • bilifeed.go:B站关注动态抓取(需 cookie)
  • githubwatch.go:Github REST API 提交与版本监控(含 Latest 之后的版本列出)
  • stockquote.go:股票行情与分时 / 日K
  • ticker.go:滚动条窗口(位置保存)
  • poem.go:主窗口首 Tab footer 随机古诗(水平滚动)
  • apiserver.go:内置 API 服务(健康检查、通知、窗口控制、电源命令、鼠标提醒、手柄闪烁、屏幕截图等)
  • windowcompact.go:拖动手柄(双击窗口缩小/还原、圆点闪烁 handleFlash 事件);windowcompact_windows.go/windowcompact_other.go 为平台尺寸与样式切换实现
  • pccontrol.go:电源控制(关机 / 重启 / 休眠 / 锁屏)
  • power_shutdown.go:工具页延时关机(shutdown /s /t N /f,系统级倒计时与取消)
  • timesync.go(及 _windows.go / _other.go):系统时间同步
  • screenshot.go:屏幕截图(多显示器拼接,返回 PNG base64 data URI)
  • webservice.go:工具页 Web 服务(目录选择、静态文件服务、README 渲染)
  • translate.go:工具页翻译(MyMemory 免费接口 + 中英文自动检测 + 限流提示)
  • qrcode.go:工具页二维码生成(go-qrcode,返回 PNG data URI)
  • ntfy.go:工具页 ntfy 消息推送与聊天室(POST ntfy.sh 指定主题、SSE 长连接订阅实时接收消息,主题历史持久化记忆)
  • hashservice.go:工具页哈希编码(MD5 / SHA256 字符串摘要)
  • ledwindow_windows.go:LED 点阵滚动文字(Windows 原生 Win32 分层窗口实现,见文件头注释)
  • ledwindow_other.go:LED 滚动文字非 Windows 空实现
  • reminderservice.go:工具页定时提醒(周期广播 periodicReminder 事件并唤出主窗口)
  • localsend_service.go:LocalSend 集成(启动/停止、本机名、接收模式/目录,发现/接收/发送)
  • localsend/:LocalSend 子包(crypto、discovery、logging、model、send),与官方 LocalSend v2.2 互通
  • croc_service.go:工具页 Croc 传送(PATH 检测 croc、发送/接收、传输码解析、日志与退出事件)
  • ytdlp_service.go:工具页视频下载(PATH 检测 yt-dlp、启动/停止下载、日志与退出事件)
  • memos_service.go:工具页 Memos 速记(读取配置、调用 REST API 新建备忘)
  • croc_process_windows.go / croc_process_other.go:croc 子进程窗口隐藏(Windows 下 HideWindow)与空实现
  • todoremind.go:待办提醒调度(解析待办文件中的 @ 时间 标记,到点广播事件)
  • mousealert_windows.go:系统级鼠标提醒(Windows,WH_MOUSE_LL 全局钩子 + 置顶透明覆盖层 + GDI 绘制)
  • mousealert_other.go:鼠标提醒非 Windows 空实现
  • frontend/:前端代码(HTML、CSS、JavaScript)
  • frontend/src/main.js:前端逻辑,负责调用后端服务、监听后端事件(含 Tab 管理、工具页折叠、待办提醒弹窗、记录 Markdown 预览等)
  • frontend/src/ticker.js:滚动条逻辑
  • frontend/src/lunar.js:农历与节日计算
  • frontend/src/led.js:LED 滚动文字前端逻辑
  • wails.json:Wails 项目配置

构建说明

  • 开发调试:wails3 dev
  • 生产构建:wails3 build,输出 bin/腾图工具箱.exe(UPX 压缩)
  • 后端单独编译:go build .
  • 前端单独构建:cd frontend && npm run build

备注

  1. wails3 task windows:build BIN_DIR=Z:/ 可编译到指定目录并 UPX 压缩(见 build/windows/taskfile.yml)
  2. wails3 dev 会根据 bin/config.yaml 的配置决定输出目录
  3. 先 npm run build 完成后再单独 go build(后端需要读取构建后的前端 dist 清单,并行会导致 embed 失败)
  4. 修改 Go 结构体/事件后需运行 wails3 generate bindings 重新生成前端绑定
  5. 修改/新增前端页面后需 cd frontend && npm run build,再 wails3 build 才能打入产物