Skip to content

Commit fecb11b

Browse files
authored
chore(desktop): release v1.0.1 (#17)
## Summary - Release desktop app v1.0.1 for DeepAgent core update v3.4.2 - Add GitHub Release based desktop update flow and deb-only Linux release path - Align Zhipu GLM provider support and fix model selector edge cases - Adjust macOS icon sizing ## Verification - git diff --check - bun typecheck (packages/app, packages/desktop, packages/deepagent-code) - bun test src/components/dialog-select-model.test.ts src/components/updater-action.test.ts src/i18n/parity.test.ts (packages/app) - bun test src/main/updater-controller.test.ts src/main/updater-subscriptions.test.ts (packages/desktop) - bun test test/provider/transform.test.ts --test-name-pattern "glm-5.2|zai/zhipuai" (packages/deepagent-code) - bun test test/provider/provider.test.ts --test-name-pattern "models.dev normalization infers reasoning for zhipuai glm-5.2" (packages/deepagent-code) - actionlint .github/workflows/desktop-build.yml
1 parent 47db56b commit fecb11b

32 files changed

Lines changed: 279 additions & 80 deletions

.github/workflows/desktop-build.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ jobs:
7070
# Keep one artifact per OS to stay under the repo's tight artifact quota.
7171
# macOS arm64 only - Apple Silicon covers current Macs. The Intel (macos-13)
7272
# runner is queue-starved and the x64 cross-compile is unreliable, so it is dropped.
73-
mac='{"host":"macos-14","target":"darwin-arm64","platform_flag":"--mac dmg --arm64","group":"mac"}'
73+
mac='{"host":"macos-14","target":"darwin-arm64","platform_flag":"--mac dmg zip --arm64","group":"mac"}'
7474
linux='{"host":"ubuntu-24.04","target":"linux-amd64","platform_flag":"--linux deb --x64","group":"linux"}'
7575
win='{"host":"windows-2025","target":"win-x64","platform_flag":"--win nsis --x64","group":"win"}'
7676
case "$PLATFORMS" in
@@ -154,7 +154,10 @@ jobs:
154154
compression-level: 9
155155
retention-days: 1
156156
path: |
157+
packages/desktop/dist/latest*.yml
158+
packages/desktop/dist/*.blockmap
157159
packages/desktop/dist/*.dmg
160+
packages/desktop/dist/*.zip
158161
packages/desktop/dist/*.deb
159162
packages/desktop/dist/*.exe
160163
@@ -181,11 +184,17 @@ jobs:
181184
version=$(node -p 'require("./packages/desktop/package.json").version.replace(/-.*/, "")')
182185
tag="app-v${version}-main.${GITHUB_RUN_NUMBER}"
183186
184-
mapfile -t assets < <(find release-assets -type f \( -name '*.dmg' -o -name '*.deb' -o -name '*.exe' \) | sort)
187+
mapfile -t assets < <(find release-assets -type f \( -name 'latest*.yml' -o -name '*.blockmap' -o -name '*.dmg' -o -name '*.zip' -o -name '*.deb' -o -name '*.exe' \) | sort)
185188
if [ "${#assets[@]}" -eq 0 ]; then
186189
echo "No desktop release assets found"
187190
exit 1
188191
fi
192+
for required in latest.yml latest-mac.yml; do
193+
if ! find release-assets -type f -name "$required" | grep -q .; then
194+
echo "Missing updater metadata: $required"
195+
exit 1
196+
fi
197+
done
189198
190199
gh release list --repo "$REPOSITORY" --limit 100 --json tagName \
191200
--jq '.[] | select(.tagName | test("^app-v[0-9]+\\.[0-9]+\\.[0-9]+-main\\.")) | .tagName' \

bun.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { describe, expect, test } from "bun:test"
2+
import { showFreeModelTag } from "./model-tags"
3+
4+
describe("showFreeModelTag", () => {
5+
test("only labels DeepAgent managed zero-cost models as free", () => {
6+
expect(showFreeModelTag({ provider: { id: "deepagent-code" }, cost: { input: 0 } })).toBe(true)
7+
expect(showFreeModelTag({ provider: { id: "zhipuai" }, cost: { input: 0 } })).toBe(false)
8+
expect(showFreeModelTag({ provider: { id: "deepagent-code" }, cost: { input: 1 } })).toBe(false)
9+
})
10+
})

packages/app/src/components/dialog-select-model.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ import { List } from "@deepagent-code/ui/list"
1212
import { Tooltip } from "@deepagent-code/ui/tooltip"
1313
import { ModelTooltip } from "./model-tooltip"
1414
import { useLanguage } from "@/context/language"
15-
16-
const isFree = (cost: { input: number } | undefined) => cost?.input === 0
15+
import { showFreeModelTag } from "./model-tags"
1716

1817
type ModelState = ReturnType<typeof useLocal>["model"]
1918

@@ -57,7 +56,7 @@ const ModelList: Component<{
5756
class="w-full"
5857
placement="right-start"
5958
gutter={12}
60-
value={<ModelTooltip model={item} latest={item.latest} free={isFree(item.cost)} />}
59+
value={<ModelTooltip model={item} latest={item.latest} free={showFreeModelTag(item)} />}
6160
>
6261
{node}
6362
</Tooltip>
@@ -72,7 +71,7 @@ const ModelList: Component<{
7271
{(i) => (
7372
<div class="w-full flex items-center gap-x-2 text-13-regular">
7473
<span class="truncate">{i.name}</span>
75-
<Show when={isFree(i.cost)}>
74+
<Show when={showFreeModelTag(i)}>
7675
<Tag>{language.t("model.tag.free")}</Tag>
7776
</Show>
7877
<Show when={i.latest}>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function showFreeModelTag(model: { cost?: { input: number }; provider: { id: string } }) {
2+
return model.provider.id === "deepagent-code" && model.cost?.input === 0
3+
}

packages/app/src/components/updater-action.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ describe("updaterAction", () => {
1919
label: "toast.update.action.installRestart",
2020
run: "install",
2121
})
22+
expect(
23+
updaterAction({ status: "ready", version: "2.0.0", manualUrl: "https://example.com/deepagent-code.deb" }),
24+
).toEqual({
25+
label: "toast.update.action.downloadDeb",
26+
run: "install",
27+
})
2228
expect(updaterAction({ status: "installing", version: "2.0.0" })).toEqual({
2329
label: "settings.updates.action.installing",
2430
})

packages/app/src/components/updater-action.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export function updaterAction(state: UpdaterState | undefined) {
1212
case "downloading":
1313
return { label: "settings.updates.action.downloading" as const }
1414
case "ready":
15+
if (state.manualUrl) return { label: "toast.update.action.downloadDeb" as const, run: "install" as const }
1516
return { label: "toast.update.action.installRestart" as const, run: "install" as const }
1617
case "installing":
1718
return { label: "settings.updates.action.installing" as const }

packages/app/src/context/local.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
9494

9595
const validModel = (model: ModelKey) => {
9696
const provider = providers.all().get(model.providerID)
97-
return !!provider?.models[model.modelID] && connected().has(model.providerID)
97+
return !!provider?.models[model.modelID] && connected().has(model.providerID) && models.visible(model)
9898
}
9999

100100
const firstModel = (...items: Array<() => ModelKey | undefined>) => {

packages/app/src/i18n/en.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,9 @@ export const dict = {
571571

572572
"toast.update.title": "Update available",
573573
"toast.update.description": "A new version of DeepAgent Code ({{version}}) is now available to install.",
574+
"toast.update.description.deb": "A new version of DeepAgent Code ({{version}}) is available as a Linux .deb package.",
574575
"toast.update.action.installRestart": "Install and restart",
576+
"toast.update.action.downloadDeb": "Download .deb",
575577
"toast.update.action.notYet": "Not yet",
576578

577579
"error.page.title": "Something went wrong",

packages/app/src/i18n/zh.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,9 @@ export const dict = {
507507
"toast.session.listFailed.title": "无法加载 {{project}} 的会话",
508508
"toast.update.title": "有可用更新",
509509
"toast.update.description": "DeepAgent Code 有新版本 ({{version}}) 可安装。",
510+
"toast.update.description.deb": "DeepAgent Code 有新版本 ({{version}}) 可下载 Linux .deb 安装包。",
510511
"toast.update.action.installRestart": "安装并重启",
512+
"toast.update.action.downloadDeb": "下载 .deb",
511513
"toast.update.action.notYet": "稍后",
512514

513515
"error.page.title": "出了点问题",

0 commit comments

Comments
 (0)