From fa9415b4d08f7a3af7a34e1d3a0d1d227d4d5444 Mon Sep 17 00:00:00 2001 From: Wendong-Fan <133094783+Wendong-Fan@users.noreply.github.com> Date: Fri, 23 Jan 2026 00:57:07 +0800 Subject: [PATCH 1/4] Package 0122 git runner (#1027) Co-authored-by: 4pmtong --- .github/workflows/build-view.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-view.yml b/.github/workflows/build-view.yml index 0a3469ad..b98b265f 100644 --- a/.github/workflows/build-view.yml +++ b/.github/workflows/build-view.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: include: - - os: [self-hosted, macOS, ARM64] + - os: macos-latest arch: arm64 artifact_name: macos-arm64 - os: windows-latest @@ -85,7 +85,13 @@ jobs: - name: Build Release Files (macOS with signing) if: runner.os == 'macOS' timeout-minutes: 90 - run: npm run build -- --arch ${{ matrix.arch }} + run: | + # Increase file descriptor limit to prevent EMFILE errors during signing + # This is needed because electron-builder signs all files recursively, + # and Python venvs contain thousands of files + ulimit -n 10240 + echo "File descriptor limit set to: $(ulimit -n)" + npm run build -- --arch ${{ matrix.arch }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CSC_LINK: ${{ secrets.CERT_P12 }} From 1cb9d8a678e93390205e6e5ab88a6c8147fd9e40 Mon Sep 17 00:00:00 2001 From: Wendong-Fan Date: Fri, 23 Jan 2026 01:21:11 +0800 Subject: [PATCH 2/4] chore: update build yml file --- .github/workflows/build-view.yml | 2 +- .github/workflows/build.yml | 6 +++++- electron-builder.json | 20 ++++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-view.yml b/.github/workflows/build-view.yml index b98b265f..f5190e39 100644 --- a/.github/workflows/build-view.yml +++ b/.github/workflows/build-view.yml @@ -89,7 +89,7 @@ jobs: # Increase file descriptor limit to prevent EMFILE errors during signing # This is needed because electron-builder signs all files recursively, # and Python venvs contain thousands of files - ulimit -n 10240 + ulimit -n 65536 || ulimit -n 10240 echo "File descriptor limit set to: $(ulimit -n)" npm run build -- --arch ${{ matrix.arch }} env: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 136ffa2c..2f5b8a15 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -92,7 +92,11 @@ jobs: # Step for macOS builds with signing - name: Build Release Files (macOS with signing) if: runner.os == 'macOS' - run: npm run build -- --arch ${{ matrix.arch }} + run: | + # Increase file descriptor limit to prevent EMFILE errors during signing + ulimit -n 65536 || ulimit -n 10240 + echo "File descriptor limit set to: $(ulimit -n)" + npm run build -- --arch ${{ matrix.arch }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CSC_LINK: ${{ secrets.CERT_P12 }} diff --git a/electron-builder.json b/electron-builder.json index c2c669cb..42b4446b 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -65,6 +65,26 @@ "hardenedRuntime": true, "gatekeeperAssess": false, "notarize": false, + "signIgnore": [ + "**/*.py", + "**/*.pyc", + "**/*.pyo", + "**/*.pyi", + "**/*.typed", + "**/*.txt", + "**/*.md", + "**/*.rst", + "**/*.json", + "**/*.yaml", + "**/*.yml", + "**/*.toml", + "**/*.cfg", + "**/*.ini", + "**/*.csv", + "**/*.html", + "**/*.css", + "**/*.map" + ], "extendInfo": { "CFBundleURLTypes": [ { From 8328cbf133ef33423d3ef668a9f9ce07147e35d7 Mon Sep 17 00:00:00 2001 From: Wendong-Fan Date: Fri, 23 Jan 2026 01:30:59 +0800 Subject: [PATCH 3/4] chore: update build yml file --- electron-builder.json | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/electron-builder.json b/electron-builder.json index 42b4446b..2704266f 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -66,24 +66,24 @@ "gatekeeperAssess": false, "notarize": false, "signIgnore": [ - "**/*.py", - "**/*.pyc", - "**/*.pyo", - "**/*.pyi", - "**/*.typed", - "**/*.txt", - "**/*.md", - "**/*.rst", - "**/*.json", - "**/*.yaml", - "**/*.yml", - "**/*.toml", - "**/*.cfg", - "**/*.ini", - "**/*.csv", - "**/*.html", - "**/*.css", - "**/*.map" + ".*\\.py$", + ".*\\.pyc$", + ".*\\.pyo$", + ".*\\.pyi$", + ".*\\.typed$", + ".*\\.txt$", + ".*\\.md$", + ".*\\.rst$", + ".*\\.json$", + ".*\\.yaml$", + ".*\\.yml$", + ".*\\.toml$", + ".*\\.cfg$", + ".*\\.ini$", + ".*\\.csv$", + ".*\\.html$", + ".*\\.css$", + ".*\\.map$" ], "extendInfo": { "CFBundleURLTypes": [ From 0d82e68c59caec23d3810f4ff8e94d33cef0287a Mon Sep 17 00:00:00 2001 From: Dream <42954461+eureka928@users.noreply.github.com> Date: Thu, 22 Jan 2026 19:10:11 -0500 Subject: [PATCH 4/4] Disable Start Task and End Project Buttons While Request is Pending (#1018) Co-authored-by: a7m-1st Co-authored-by: Wendong-Fan <133094783+Wendong-Fan@users.noreply.github.com> --- src/components/ChatBox/BottomBox/BoxHeader.tsx | 3 +++ src/components/ChatBox/BottomBox/index.tsx | 1 + src/components/Dialog/EndNotice.tsx | 7 ++++--- src/components/TopBar/index.tsx | 4 ++++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/components/ChatBox/BottomBox/BoxHeader.tsx b/src/components/ChatBox/BottomBox/BoxHeader.tsx index 79d60860..aa11ced1 100644 --- a/src/components/ChatBox/BottomBox/BoxHeader.tsx +++ b/src/components/ChatBox/BottomBox/BoxHeader.tsx @@ -48,6 +48,7 @@ export interface BoxHeaderConfirmProps { onStartTask?: () => void; onEdit?: () => void; className?: string; + loading?: boolean; } export const BoxHeaderConfirm = ({ @@ -55,6 +56,7 @@ export const BoxHeaderConfirm = ({ onStartTask, onEdit, className, + loading = false, }: BoxHeaderConfirmProps) => { return (
Start Task diff --git a/src/components/ChatBox/BottomBox/index.tsx b/src/components/ChatBox/BottomBox/index.tsx index 2b99dd93..0d0d4998 100644 --- a/src/components/ChatBox/BottomBox/index.tsx +++ b/src/components/ChatBox/BottomBox/index.tsx @@ -93,6 +93,7 @@ export default function BottomBox({ subtitle={subtitle} onStartTask={onStartTask} onEdit={onEdit} + loading={loading} /> )} diff --git a/src/components/Dialog/EndNotice.tsx b/src/components/Dialog/EndNotice.tsx index 1424cd28..e993eec0 100644 --- a/src/components/Dialog/EndNotice.tsx +++ b/src/components/Dialog/EndNotice.tsx @@ -16,9 +16,10 @@ interface Props { onOpenChange: (open: boolean) => void; trigger?: React.ReactNode; onConfirm: () => void; + loading?: boolean; } -export default function EndNoticeDialog({ open, onOpenChange, trigger, onConfirm }: Props) { +export default function EndNoticeDialog({ open, onOpenChange, trigger, onConfirm, loading = false }: Props) { const { t } = useTranslation(); const onSubmit = useCallback(() => { onConfirm(); @@ -36,9 +37,9 @@ export default function EndNoticeDialog({ open, onOpenChange, trigger, onConfirm
- + - + diff --git a/src/components/TopBar/index.tsx b/src/components/TopBar/index.tsx index 860dc60c..778a06c6 100644 --- a/src/components/TopBar/index.tsx +++ b/src/components/TopBar/index.tsx @@ -48,6 +48,7 @@ function HeaderWin() { const [isFullscreen, setIsFullscreen] = useState(false); const { token } = getAuthStore(); const [endDialogOpen, setEndDialogOpen] = useState(false); + const [endProjectLoading, setEndProjectLoading] = useState(false); useEffect(() => { const p = window.electronAPI.getPlatform(); setPlatform(p); @@ -150,6 +151,7 @@ function HeaderWin() { const historyId = projectId ? projectStore.getHistoryId(projectId) : null; + setEndProjectLoading(true); try { const task = chatStore.tasks[taskId]; @@ -197,6 +199,7 @@ function HeaderWin() { closeButton: true, }); } finally { + setEndProjectLoading(false); setEndDialogOpen(false); } }; @@ -414,6 +417,7 @@ function HeaderWin() { open={endDialogOpen} onOpenChange={setEndDialogOpen} onConfirm={handleEndProject} + loading={endProjectLoading} /> );