OctopPet v0.2.0
- 2026-09-03
Fixed
- Windows: dragging the pet no longer shows a white square (manual move + skip HWND GDI fill; tao ignores background alpha)
- Windows: clicking the pet no longer restores a titled OS window (skip set_decorations/set_shadow; strip WS_CAPTION in DWM)
- Windows pet window title is empty so no "OctopPet" caption sits above the mascot
- Windows: zero pet non-client area (WM_NCCALCSIZE) so the empty white title strip is gone
- Windows: chat/settings rounded corners no longer flash a white HWND fill on click/focus
- Windows pet and chat/settings use DWM blur-behind (not extend-frame) so the mascot is not a white square
- Clicking the pet no longer flashes a white square over the mascot
- macOS close traffic light shows × on hover and a pressed state
- Clicking the pet again reopens chat beside the icon instead of restoring the last screen position
- Chat window height no longer snaps when starting a new conversation or sending the first message; resize stays bottom-anchored and eases over 360ms
- Model and connector menus stay inside the chat window and scroll instead of growing the OS window
- Queued follow-up turns no longer mark the finished reply as “连接意外断开”
- Saving settings now logs in and stores the token; testing connection also stores the password
- Chat can silently log in with the saved password when the access token is missing
- HTTP errors show the server message (e.g. “认证失败。”) instead of raw JSON
- Connection failures in chat offer a retry button
- Retrying an assistant turn reuses the original text, attachments, and model
- Settings leftover notices no longer linger on other tabs; shortcut hint and mascot labels are clearer
- Tray “检查更新” spacing and pet menu “与 Octop 对话” wording
Added
- Desktop pet glides to a smooth stop after release and can be resized from its bottom-right hover handle (80–224 px)
- Model and agent popovers grow with the chat window so a tall window can show the full list
- Empty chat shows a gray logo in the message area
- Agent picker uses the same popover as the model list
- Setting to keep chat and settings visible when clicking another app (on by default)
- Settings tabs: 常规 (connection + mascot), 窗口, 快捷键, 关于
hooks/useChatController.ts,hooks/useWindowChrome.ts— chat/settings window logic extracted from UIlib/octopTypes.ts,lib/tauriWindowApi.ts,lib/chatHelpers.ts— clearer module boundariescomponents/ChatChrome.tsx,components/ChatResizeChrome.tsxstyles/split CSS (base,pet,settings,chat)scripts/sync-version.mjs,scripts/extract-changelog.mjsnpm run test:coveragewith baseline thresholds- Composer unit tests; tray shortcut normalization Rust tests
- Release workflow: tag/version validation + CHANGELOG injection
Changed
- Chat window starts at 400px and stays resizable; empty compact state fills the window instead of shrink-wrapping
- Sending a message no longer changes chat window height
- Narrow chat windows (~300px) keep the send button on-screen; toolbar chips shrink and wrap
- Debug builds store credentials in a local app-data file so macOS Keychain does not prompt on every rebuild
- Chat and settings close buttons follow the OS: traffic-light dot on the left on macOS, × on the right on Windows and Linux
- Settings window hides after a successful save
ChatWindow.tsxslimmed to layout shell (~90 lines); logic inuseChatControllerSettingsWindowuses shared auto-fit + Escape hooks; events viatauriApi- Removed unused Tauri scaffold
App.tsx;index.htmltitle/icon → OctopPet Composerimports DTOs fromoctopTypesinstead ofoctopHttp
Removed
- Monolithic
App.csscontent (replaced bysrc/styles/*imports)
| 平台 | 说明 |
|---|---|
| macOS Apple Silicon | .dmg 或 .app.tar.gz(aarch64) |
| macOS Intel | .dmg 或 .app.tar.gz(x86_64) |
| Windows x64 | .msi 或 .exe(setup) |
| Windows ARM64 | .msi 或 .exe(ARM 设备) |
CI 产物默认未签名。macOS 首次打开可能需在「系统设置 → 隐私与安全性」中允许;正式分发请配置 Apple / Windows 签名 secrets。