Skip to content

Commit a4c4d89

Browse files
committed
release: v0.3.0
- Upstream PR merged, submodule restored to Jer-y/copilot-proxy main (b162b63) - Auto-refresh usage on first panel expand - About page: app logo replaces emoji - Fix Windows window height: frame compensation in resizeWindow - Platform-specific CSS padding (Win 10px / Mac 30px) - Bump version to 0.3.0
1 parent 1b1164f commit a4c4d89

9 files changed

Lines changed: 71 additions & 32 deletions

File tree

DEVLOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,31 @@ All three items from the v0.2.9 follow-up list are now resolved:
156156
1.`.gitmodules` restored to upstream URL
157157
2. ✅ Submodule pointed at official upstream merged commit
158158
3. ✅ Submodule config synced
159+
160+
## 2026-03-12 — v0.3.0 release
161+
162+
### Summary
163+
164+
This release integrates the upstream-merged compatibility fix, adds UX refinements, and fixes Windows window height issues.
165+
166+
### Upstream sync
167+
168+
- Upstream PR `Jer-y/copilot-proxy#2` merged by Jer-y on 2026-03-12
169+
- `.gitmodules` restored to upstream `Jer-y/copilot-proxy.git`
170+
- Submodule now points at upstream merge commit `b162b63` (ahead of upstream `v0.3.1`)
171+
172+
### New features
173+
174+
- Auto-refresh usage data on first panel expand after app launch (subsequent expands require manual refresh)
175+
- About page logo replaced from 🚀 emoji to the actual app icon
176+
177+
### Window height optimization
178+
179+
- Fixed excessive bottom whitespace on Windows: `resizeWindow` now compensates for title bar / border frame dimensions
180+
- Platform-specific CSS padding: Windows gets `10px`, macOS keeps `30px`
181+
- Applied to Main view, Settings page, and About page
182+
183+
### Reference release
184+
185+
- GUI release: `v0.3.0`
186+
- Embedded proxy: upstream `main` @ `b162b63` (post-`v0.3.1`)

RELEASE_NOTES_TEMP.md

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,31 @@
11
# What's New / 新功能
22

3-
## 🚀 Proxy Upgrade / Proxy 升级
3+
## � Upstream Sync / 上游同步
44

5-
Upgrade embedded `copilot-proxy` to upstream `v0.3.0` / 内嵌的 `copilot-proxy` 升级到上游 `v0.3.0`
6-
Restore compatibility for Anthropic `/v1/messages` requests without `max_tokens` / 恢复对未携带 `max_tokens` 的 Anthropic `/v1/messages` 请求兼容性
5+
Upstream PR merged: Anthropic `/v1/messages` compatibility fix is now official (`Jer-y/copilot-proxy#2`) / 上游 PR 已合并:Anthropic `/v1/messages` 兼容性修复已正式进入上游
6+
Submodule restored to upstream `Jer-y/copilot-proxy` (merge commit `b162b63`, ahead of upstream `v0.3.1`) / 子模块恢复指向上游,当前版本比上游正式发布 `v0.3.1` 更新
77

88
## 🚀 UX / 体验优化
99

10-
• Main screen adds a dedicated model refresh button next to Claude Code actions / 主界面在 Claude Code 操作区新增独立的模型刷新按钮
11-
• If Claude Code persistent config already exists, changing models now auto-syncs `~/.claude/settings.json` / 如果已存在 Claude Code 持久化配置,切换模型后会自动同步 `~/.claude/settings.json`
12-
• Usage refresh button now uses the usage icon and clearer text / 用量刷新按钮改为带用量图标,并使用更清晰的按钮名称
13-
• Settings button icon updated to a new gear emoji / 设置按钮图标更新为新的齿轮 emoji
10+
• Auto-refresh usage on first panel expand after app launch / 程序启动后首次展开用量面板时自动刷新用量
11+
• About page now shows the app logo instead of a generic emoji / 关于页面现在显示应用 logo 而非通用 emoji
1412

15-
## 📋 Verbose Logs / 详细日志
13+
## 📐 Window Height Fix / 窗口高度修复
1614

17-
• Model refresh actions now appear in Verbose logs / 刷新模型列表的动作现在会显示在 Verbose 日志中
18-
• Log viewer keeps incremental rendering and auto-trims to 500 lines for responsiveness / 日志窗口继续保持增量渲染,并自动裁剪到 500 行以内以保证流畅度
19-
20-
## 🔧 Bug Fixes / 问题修复
21-
22-
• Fix lightweight update ENOENT error: use `original-fs` for all `.asar` file operations including temp directory writes / 修复轻量更新 ENOENT 报错:对所有涉及 `.asar` 的文件操作使用 `original-fs`,包括临时目录写入
23-
24-
## 🛠 Developer Experience / 开发体验
25-
26-
• Dev mode (`COPILOT_GUI_DEV=1`) now skips single-instance lock, allowing parallel dev and production instances / 开发模式下跳过单实例检测,允许开发版和正式版同时运行
15+
• Fix excessive bottom whitespace on Windows by compensating for title bar / border frame in `resizeWindow` / 修复 Windows 下窗口底部留白过多的问题,`resizeWindow` 现在正确补偿标题栏/边框尺寸
16+
• Platform-specific padding: Windows uses tighter padding while macOS remains unchanged / 平台差异化 padding:Windows 使用更紧凑的间距,macOS 保持不变
17+
• Fix applies to Main view, Settings page, and About page / 修复覆盖主界面、设置页面和关于页面
2718

2819
## ⬇️ Download / 下载
2920

3021
| Platform | File | Note |
3122
| -------- | ---- | ---- |
32-
| Windows (Installer) | Copilot.Proxy.GUI-0.2.9-setup.exe | **Recommended** / 推荐,supports lightweight update / 支持轻量更新 |
33-
| Windows (Portable) | Copilot.Proxy.GUI-0.2.9-portable.exe | No installation needed / 无需安装,双击即用 |
34-
| macOS (Apple Silicon) | Copilot.Proxy.GUI-0.2.9-arm64.dmg | M1/M2/M3/M4 Mac |
35-
| macOS (Intel) | Copilot.Proxy.GUI-0.2.9-x64.dmg | Intel Mac |
23+
| Windows (Installer) | Copilot.Proxy.GUI-0.3.0-setup.exe | **Recommended** / 推荐,supports lightweight update / 支持轻量更新 |
24+
| Windows (Portable) | Copilot.Proxy.GUI-0.3.0-portable.exe | No installation needed / 无需安装,双击即用 |
25+
| macOS (Apple Silicon) | Copilot.Proxy.GUI-0.3.0-arm64.dmg | M1/M2/M3/M4 Mac |
26+
| macOS (Intel) | Copilot.Proxy.GUI-0.3.0-x64.dmg | Intel Mac |
3627

3728
> macOS first launch / macOS 首次启动: Right-click the app → Open → click "Open" in the dialog. If blocked, go to System Settings → Privacy & Security → click "Open Anyway".
3829
> 右键点击应用 → 打开 → 在弹窗中点击"打开"。如被阻止,前往系统设置 → 隐私与安全性 → 点击"仍要打开"。
3930
40-
Full Changelog: [v0.2.8...v0.2.9](https://github.com/kylefu8/copilot-proxy-gui/compare/v0.2.8...v0.2.9)
31+
Full Changelog: [v0.2.9...v0.3.0](https://github.com/kylefu8/copilot-proxy-gui/compare/v0.2.9...v0.3.0)

electron/main.cjs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1513,9 +1513,14 @@ function resizeWindow(payload) {
15131513
const h = height || cur[1]
15141514

15151515
// Set size directly without toggling resizable to avoid
1516-
// Windows Aero Snap interference during window drag
1517-
win.setMinimumSize(w, h)
1518-
win.setMaximumSize(w, h)
1516+
// Windows Aero Snap interference during window drag.
1517+
// min/max use outer (frame) dimensions, so compensate for title bar / borders.
1518+
const outer = win.getSize()
1519+
const inner = win.getContentSize()
1520+
const frameW = outer[0] - inner[0]
1521+
const frameH = outer[1] - inner[1]
1522+
win.setMinimumSize(w + frameW, h + frameH)
1523+
win.setMaximumSize(w + frameW, h + frameH)
15191524
win.setContentSize(w, h, false)
15201525
// Reset min/max constraints after size is applied
15211526
setTimeout(() => {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "copilot-proxy-gui",
33
"private": true,
4-
"version": "0.2.9",
4+
"version": "0.3.0",
55
"description": "Desktop GUI for copilot-proxy — Electron + React + Vite",
66
"type": "module",
77
"main": "electron/main.cjs",

public/icon.png

7.6 KB
Loading

src/features/about/AboutPage.jsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,18 @@ export function AboutPage({ onBack }) {
7575
if (updateData.releaseUrl) openLink(updateData.releaseUrl)
7676
}, [updateData.releaseUrl])
7777

78+
const isWin = /Win/.test(navigator.platform)
79+
7880
return (
79-
<div className="settings-page">
81+
<div className={`settings-page${isWin ? ' platform-win' : ''}`}>
8082
<div className="settings-page-inner" ref={contentRef}>
8183
<header className="settings-header">
8284
<button type="button" className="back-btn" onClick={onBack}>{t('back')}</button>
8385
<h1>{t('about.title')}</h1>
8486
</header>
8587

8688
<section className="settings-section">
87-
<div className="about-logo">🚀</div>
89+
<div className="about-logo"><img src="/icon.png" alt="Copilot Proxy GUI" /></div>
8890
<h2 className="about-title">Copilot Proxy GUI</h2>
8991
<p className="about-version">v{APP_VERSION}</p>
9092
<p className="about-desc">

src/features/main/MainView.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,10 @@ export function MainView({
116116
const statusColor = serviceBusy ? '#f0a050' : isRunning ? '#6ee7b7' : service.status === 'error' ? '#ff9191' : '#8b99b5'
117117
const statusLabel = serviceBusy ? (isRunning ? t('status.stopping') : t('status.starting')) : isRunning ? t('status.running') : service.status === 'error' ? t('status.error') : t('status.stopped')
118118

119+
const isWin = /Win/.test(navigator.platform)
120+
119121
return (
120-
<div className="main-layout">
122+
<div className={`main-layout${isWin ? ' platform-win' : ''}`}>
121123
{/* Left: main content */}
122124
<div className="main-view">
123125
<div className="main-view-inner" ref={contentRef}>

src/features/settings/SettingsPage.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,10 @@ export function SettingsPage({
9191
onSaveConfig()
9292
}
9393

94+
const isWin = /Win/.test(navigator.platform)
95+
9496
return (
95-
<div className="settings-page">
97+
<div className={`settings-page${isWin ? ' platform-win' : ''}`}>
9698
<div className="settings-page-inner" ref={contentRef}>
9799
<header className="settings-header">
98100
<button type="button" className="back-btn" onClick={onBack}>{t('back')}</button>

src/styles.css

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,9 @@ button:disabled { opacity: 0.45; cursor: not-allowed; }
224224
align-content: start;
225225
padding-bottom: 30px;
226226
}
227+
.platform-win .main-view-inner {
228+
padding-bottom: 10px;
229+
}
227230

228231
.main-header {
229232
display: flex;
@@ -470,6 +473,9 @@ button:disabled { opacity: 0.45; cursor: not-allowed; }
470473
gap: 8px;
471474
padding-bottom: 30px;
472475
}
476+
.platform-win .settings-page-inner {
477+
padding-bottom: 10px;
478+
}
473479

474480
.settings-header {
475481
display: flex;
@@ -875,11 +881,14 @@ pre {
875881
/* ─── About Page ─────────────────────────────────────────────── */
876882

877883
.about-logo {
878-
font-size: 3rem;
879884
text-align: center;
880885
margin: 8px 0 4px;
881886
line-height: 1;
882887
}
888+
.about-logo img {
889+
width: 64px;
890+
height: 64px;
891+
}
883892

884893
.about-title {
885894
text-align: center;

0 commit comments

Comments
 (0)