Claude/fix dmg creation error wd ckg#15
Open
baoxingjie wants to merge 16 commits into
Open
Conversation
create-dmg uses `du` to estimate app size, but Electron Framework's hardlinks cause `du` to undercount. hdiutil copies each hardlinked file independently, exhausting DMG space and failing with ENOSPC (misreported as "resource busy"). Fix by staging the app with rsync --no-hard-links to break hardlinks before passing to create-dmg. https://claude.ai/code/session_01S1crsR6m3fZEHYGpCuDiEJ
macOS ships with BSD rsync 2.6.9 which does not support --no-hard-links. Switch to `ditto`, a macOS-native tool that copies .app bundles correctly (preserving xattrs, symlinks, resource forks) without preserving hardlinks, ensuring create-dmg gets an accurate size estimate. https://claude.ai/code/session_01S1crsR6m3fZEHYGpCuDiEJ
Removes HexAgent.app, all app data/caches/prefs, and the hexagent Lima VM instance (stops if running, then deletes via limactl). Supports --force flag to skip the confirmation prompt. https://claude.ai/code/session_01S1crsR6m3fZEHYGpCuDiEJ
windows bug fix and new feature --------- Co-authored-by: Codex Bot <codex-bot@example.com> Co-authored-by: zhanghr136 <zhanghr136@noreply.gitcode.com> Co-authored-by: Anqi (Anthony) Tang <anqi.tang.ai@gmail.com>
Troubleshooting and checklist docs are no longer needed.
Rename the display brand name across the frontend UI — page title, sidebar, welcome screens, onboarding wizard, and Electron error dialog. Internal package names, storage keys, and code identifiers unchanged.
Cowork is now the primary experience. Chat mode is hidden by default and only appears when explicitly enabled via a toggle in Settings > Sandbox, which also requires an E2B API key. - Default mode changed from "chat" to "cowork" (frontend + backend) - Added chat_enabled flag to SandboxConfig - Mode toggle in header hidden unless chat_enabled && e2b_api_key set - URL routing guards redirect /chat to /cowork when Chat unavailable - Onboarding wizard no longer shows E2B setup (legacy feature) - Settings sandbox tab: VM card first, Chat Mode card with toggle - Brand color updated to red gradient matching new logo
Swap the old favicon SVG for the new uniai.png brand logo in the sidebar header.
- WelcomeScreen: translate mounting/preparing status messages - OnboardingWizard, SettingsModal: remove Chinese from restart-detection regex - vmSetup: remove Chinese from restart regex and WSL status labels
Add 12 skill packages (data-insight-report, deep-research, doc, email-mail-master, excel-xlsx, find-skills, frontend-dev, mcp-builder, pdf, pptx-plus-linux, skill-creator, web-design-guidelines) to both examples/ and public/ directories. Update .gitignore to track these bundled skills.
…nnectable streams
Agent responses now run as background asyncio tasks that write SSE events
into a per-conversation buffer. This fixes the crash when users refresh
during streaming (RuntimeError: aclose() on running generator) and enables
reconnecting to in-flight streams after page refresh.
Key changes:
- Add StreamManager with ConversationStream (event buffer + fan-out)
- Extract _generate_events() from event_stream(), run via background task
- Add GET /api/chat/{id}/stream endpoint for reconnecting subscribers
- Frontend auto-reconnects to active streams on page load via subscribeToStream()
- Include server-side timestamps in SSE events for accurate thinking durations on replay
- Make STREAM_START idempotent to handle duplicate events during replay
Collaborator
|
Rebase to latest main branch and ask @xuelin-cell to approve the PR |
Co-authored-by: Codex Bot <codex-bot@example.com> Co-authored-by: zhanghr136 <zhanghr136@noreply.gitcode.com> Co-authored-by: Anqi (Anthony) Tang <anqi.tang.ai@gmail.com>
…UnicomAI#19) ## Summary - Add internationalization infrastructure using `react-i18next` with namespaced JSON translation files - Extract all hardcoded UI strings across 14 components into translation keys with English and Simplified Chinese (简体中文) - Language switcher in Settings > General tab, persists to both localStorage and backend `config.json` ## Changes - **Backend**: Added `language` field to `AppConfig` dataclass and config API endpoint - **Frontend infrastructure**: `i18n.ts` init, `useSettings` language support, `ServerConfig.language` - **16 translation files**: 8 namespaces (common, settings, sidebar, welcome, chat, search, misc, onboarding) x 2 languages - **14 components updated**: SettingsModal, Sidebar, WelcomeScreen, ChatInput, ChatArea, SearchModal, InputSettingsMenu, FolderPicker, ModelPicker, RightPanel, MessageBubble, RestartRequiredModal, OnboardingWizard, VMSetupFloater ## Adding a new language 1. Copy `src/locales/en/` to `src/locales/{locale}/` and translate values 2. Import in `src/i18n.ts` and add to `resources` 3. Add entry to `LANGUAGES` array in `SettingsModal.tsx` ## Test plan - [ ] Build passes (`npm run build`) - [ ] Default language is English, all text renders correctly - [ ] Switch to 简体中文 in Settings > General > Language — all UI updates - [ ] Refresh page — language persists (localStorage) - [ ] Check `config.json` — `language` field updated - [ ] Switch back to English — all text reverts - [ ] Onboarding wizard flow works in both languages --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: xuelin-cell <xuelin2048@163.com>
2db4688 to
757bf3d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
bash scripts/build-all.sh mac-arm64fails at the [4/4] DMG creation step with"hdiutil: create failed - 资源忙", which is actually ENOSPC (no space left on device)
misreported by create-dmg.
Root cause: Electron Framework uses hardlinks extensively.
create-dmgestimatesthe .app size via
du, which counts hardlinked inodes only once. Buthdiutilcopies each hardlinked file as an independent file, consuming more space than the
DMG was allocated, causing the copy to fail.
Fix
Stage the .app to a temp directory before passing it to
create-dmg, breakinghardlinks so
du's size estimate matches the actual bytes written.ditto(macOS-native) instead ofrsync --no-hard-links, because macOSships with BSD rsync 2.6.9 which does not support
--no-hard-links.Also added
scripts/uninstall-mac.sh: one-click uninstall script that removes the app,all data/caches/prefs, and the
hexagentLima VM instance.