feat: CI/CD infrastructure — nightly builds, platform configs, release automation#25
Closed
lngdao wants to merge 69 commits intoOpen-ACP:developfrom
Closed
feat: CI/CD infrastructure — nightly builds, platform configs, release automation#25lngdao wants to merge 69 commits intoOpen-ACP:developfrom
lngdao wants to merge 69 commits intoOpen-ACP:developfrom
Conversation
- Cursor-controlled markdown rendering: 1-3 words per tick with randomized delay (5-15ms) for natural typing rhythm - React.memo on all message/block components with custom comparator on MessageTurn — only streaming message re-renders - Batched Immer store updates: single setStore call per flush - Markdown throttled to periodic parse+morphdom, no per-frame re-parse - Auto-scroll: increased threshold (120px), always track position, double-rAF for reliable session-switch scroll, scrollTrigger on send - Removed sticky user message wrapper - Removed usePacedValue from streaming path (was causing double render)
- Settings accessible via gear icon in sidebar rail - General: language selector, workspace path display - Agents: full list from CLI (installed + available), search, install with live output, uninstall button, ANSI stripping - Appearance: theme toggle (dark/light/system), font size (S/M/L) - Server: connection status and address display - About: version, GitHub/docs links, check for updates - Persistence via tauri-plugin-store - Theme and font size applied on mount via CSS custom properties
- AgentSelector: PATCH /sessions/:id on explicit agent change, config auto-refreshes after switch, re-fetch on popover open - Install agent button (+) in popover opens Settings > Agents page - Rust: run_openacp_agents_list and run_openacp_agent_install accept workspace_dir param, pass --dir to CLI for correct instance context - Composer wires sessionID, onSwitched, onInstallAgent to selector
- Send channel='sse' when creating sessions (required after server commit f45dc49 changed headless session behavior) - Reset streaming=false on SSE disconnect to prevent stuck UI - Settings panel rendered inside WorkspaceProvider for agent access - Listen for open-settings custom event to navigate directly to page - Sidebar rail gear icon wired to settings toggle
- Install 19 shadcn components (button, badge, input, dialog, tabs, command, sidebar, etc.) - Replace raw HTML primitives with shadcn across 15 app components - Replace createPortal dropdowns with DropdownMenu in agent/config selectors - Replace manual modals with Dialog in plugins-modal and add-workspace - Add sidebar token aliases to theme.css + Tailwind colors - Fix all lucide-react imports to @phosphor-icons/react - Add vite aliases for shadcn component resolution
- CLAUDE.md: React 19, shadcn/ui, git workflow, design reference section - DESIGN.md: full rewrite with current architecture, tokens, components - Add shadcn migration spec and implementation plan
- Regenerate icon.ico (285KB, 4 sizes RGBA) from IconKitchen source - Apply circular mask to Android round icons (all 5 densities) - Regen all platform icons from IconKitchen (macOS icns, iOS, Windows) - Remove dead deps: lucide-react, next-themes, cmdk, sonner - Delete unused shadcn components: checkbox, progress, sonner, command, sidebar, use-mobile (~1500 lines) - Strip "use client" directives (meaningless in Tauri) - Delete ~30KB dead CSS: colors.css, animations.css, unused utilities - Gitignore generated Pencil PNGs (~14MB)
Phase 1: Invert aliases in theme.css — shadcn tokens are now source of truth with direct values, legacy tokens become backward-compat aliases. Added extension tokens: --border-weak, --foreground-weak, --foreground-weaker. Phase 2: Migrate 27 app component files from legacy token classes (bg-background-base, text-text-strong, etc.) to shadcn naming (bg-background, text-foreground, etc.). Updated var() references in styles.css and components.css. Phase 3 (deferred): Remove legacy backward-compat aliases from theme.css.
Phase 3: Remove all backward-compat aliases from theme.css. Migrate remaining inline var() references in 14 files (tsx + css) to shadcn tokens. Update syntax tokens and tailwind/colors.css registrations to reference shadcn tokens directly. Zero legacy token references remain.
- Fix root font-size: move data-font-size from html to body (preserve rem=16px for Tailwind, Radix portals inherit font-size) - Rename text utility classes: text-12-* → text-sm-*, text-14-* → text-md-*, text-16-* → text-lg-*, text-20-* → text-xl-*, text-11/10-* → text-2xs-* - Rewrite utilities.css with @apply + Tailwind theme() references - Remove duplicate token definitions from theme.css (spacing, breakpoints, containers, radius — now only in tailwind/index.css @theme) - Remove legacy font-size/weight/line-height/letter-spacing CSS vars - Define font-size scale in rem (text-2xs through text-3xl) - Fix --color-text-base collision with Tailwind text-base utility - Add cursor-pointer to Button component - Fix dark mode --primary-foreground contrast (#171717 vs #ededed)
Standalone showcase page for components and tokens, accessible at http://localhost:1420/ds-demo.html. Flat sidebar with grouped navigation, live component previews, code snippets, props tables, and token pages (colors, typography, spacing, shadows, radius). Dark/light toggle. - ds-demo.html entry point + src/ds-demo/ (app, sidebar, component-page, token-page, registry with 18 entries) - Vite multi-page config (rollupOptions.input) - Reuses existing shadcn components and theme tokens
Styles restructure: - Flatten tailwind/ subfolder into single index.css entry point - Merge styles.css (.oac-*) into components.css - Delete base.css (Tailwind Preflight handles CSS reset) - Delete 2 orphaned CSS files (src/styles.css, src/platform/styles.css) - Add tailwindcss/preflight.css import - Consolidate @theme blocks + color registrations into index.css - Move Tauri drag-region rules to index.css - Final structure: index.css, theme.css, components.css, utilities.css Button migrations (8 raw buttons → shadcn Button): - settings-about: "Check for updates" → Button outline - settings-agents: Install/Uninstall → Button ghost - settings-panel: close icon → Button ghost icon - plugins-modal: close × → Button ghost icon - add-workspace: close × → Button ghost icon - permission-request: option button → Button ghost - user-message: copy button → Button ghost icon-xs Dialog improvements: - Border: border-border-weak (softer in dark mode) - Shadow: Apple-style layered shadow - Close button: shadcn Button ghost icon - Title: text-lg-medium utility Font-size scaling: revert to html root (UI zoom behavior)
Dialog: - Border: border-border-weak, rounded-xl, shadow-lg - Close button: XIcon + Button ghost icon-md - Overlay: bg-black/40 + backdrop-blur-sm - Header gap-1, title text-lg-medium - Add/Plugins modals: migrate to DialogHeader/DialogTitle components Tabs: - Line variant: h-10 (40px), underline bg-foreground - Override h-auto removed in favor of explicit h-10 Button: - Rename icon → icon-md for consistent naming (icon-xs/sm/md/lg) - icon-lg: SVG size-5 (20px) for proportional scaling - Sidebar buttons: icon-lg Shadows: - Remove custom shadow-xs/md/lg from theme.css, use Tailwind defaults - Re-register shadow scale in @theme (cleared by --*: initial) - Keep shadow-border tokens (specialized) Styles: - Remove --*: initial color reset (allow Tailwind default colors) - Inline font-family into @theme, remove from theme.css - Remove custom shadow definitions, use Tailwind defaults - Dropdown/Select: border-border-weak + rounded-xl
- Replace custom toast with sonner (close button, stacking, animations) - Tool card IN/OUT body toggles with AnimatePresence height animation - Add chevron indicator on tool card title for expand/collapse - Toast on workspace "Copy path" action
…g split - Copy button on assistant messages next to usage bar - Thinking blocks render with Markdown + syntax highlighting (muted style) - Tool title rebuilds on tool_update when rawInput arrives (fixes Read file name) - Parse tool name prefix for kind resolution (e.g. "Read package.json" → kind=read) - Thinking blocks split only when tool/text blocks intervene, not on every tool_call
…er error messages - Context menu: Start server (stopped), Stop server (connected), Remove stops first - Clone workspace auto-starts server after creation - New workspace supports onSetup callback for onboarding flow - invoke_cli includes stdout in error messages when stderr is empty
- Create new workspace opens SetupModal (agent selection + start) - Clone workspace auto-starts server after creation - Setup wizard uses invoke_cli instead of sidecar for server start - Agent install updates local state immediately (no reload needed) - dev_reset uses find_openacp_binary for reliable binary removal - Onboard startup logging for debug
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…cation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…n APPLE_* secrets are set
…all Tauri 2 versions
feat: CI/CD infrastructure — nightly builds, platform configs, release automation
# Conflicts: # .github/workflows/release.yml # src-tauri/src/core/onboarding/setup.rs # src-tauri/src/lib.rs # src/openacp/app.tsx
Contributor
Author
|
Closing to squash commits — will reopen with clean history |
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.
Summary
New in this PR
YY.M.(DD*100+N)keeps all components within limitsset-channel.shAPPLE_*secrets, no code changes needed when readysrc/core/architecture (sidecar, keychain, onboarding, filesystem)make dev,make build,make release, etc.Files changed (new work only)
release.yml,nightly.yml,release-drafter.ymltauri.conf.json,tauri.{macos,windows,linux}.conf.jsonscripts/release.sh,scripts/set-channel.shMakefile,Cargo.toml(release profile).github/ISSUE_TEMPLATE/,pull_request_template.md,release-drafter.ymlREADME.md,.claude/CLAUDE.mdtauri.conf.json(pubkey),use-app-updater.ts,update-notification.tsxsrc-tauri/src/core/restructureTest plan
pnpm buildpassespnpm tauri devlaunches correctlymake release-dryshows correct version