Skip to content

feat: rename and add ci#2

Merged
sirily11 merged 2 commits into
mainfrom
ci
May 14, 2026
Merged

feat: rename and add ci#2
sirily11 merged 2 commits into
mainfrom
ci

Conversation

@sirily11

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI review requested due to automatic review settings May 14, 2026 04:57
@autopilot-project-manager autopilot-project-manager Bot added the enhancement New feature or request label May 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR rebrands the macOS app and Swift packages from Clarc to RxCode, adds CI/release automation, and introduces several supporting services/utilities for updates, keychain access, Bash safety, app support migration, and core/chat package structure.

Changes:

  • Renames app/module references, user-facing strings, docs, tests, schemes, and release scripts to RxCode.
  • Adds GitHub Actions workflows plus CI scripts for testing, signing, notarization, appcast generation, and semantic release.
  • Adds/moves core and chat package source files, assets, Sparkle update support, and archive/todo/session-related models.

Reviewed changes

Copilot reviewed 120 out of 172 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
.github/workflows/build.yaml Adds macOS build, signing, notarization, appcast, and Pages deploy workflow.
.github/workflows/create-release.yaml Adds semantic-release workflow.
.github/workflows/test.yaml Adds package test and release build smoke workflow.
.gitignore Ignores CI outputs and release artifacts.
.releaserc Adds semantic-release plugin config.
AGENTS.md Updates agent guidance to RxCode naming.
CLAUDE.md Updates Claude guidance to RxCode naming.
README.md Rebrands README and build/install instructions.
Packages/Package.swift Renames Swift package/products/targets/tests to RxCode.
Packages/Sources/ClarcCore/Utilities/AppSupport.swift Removes old Clarc app support helper.
Packages/Sources/RxCodeCore/CLISession/CLILineToBlocksMapper.swift Updates comments for RxCode naming.
Packages/Sources/RxCodeCore/CLISession/CLISessionRecord.swift Adds CLI JSONL line decoding models.
Packages/Sources/RxCodeCore/CLISession/CLISessionStore.swift Updates comments for RxCode naming.
Packages/Sources/RxCodeCore/CLISession/LegacyMigrator.swift Updates legacy migration comments.
Packages/Sources/RxCodeCore/CLISession/PickerExposer.swift Updates picker exposure comments.
Packages/Sources/RxCodeCore/CLISession/SessionMetaStore.swift Updates sidecar metadata comments.
Packages/Sources/RxCodeCore/Models/AskUserQuestion.swift Adds AskUserQuestion parsing/answer model.
Packages/Sources/RxCodeCore/Models/Attachment.swift Renames generated image attachment prefix.
Packages/Sources/RxCodeCore/Models/AttachmentAutoPreviewSettings.swift Adds attachment auto-preview settings model.
Packages/Sources/RxCodeCore/Models/ChatSession.swift Updates legacy origin default name.
Packages/Sources/RxCodeCore/Models/ChatSessionStats.swift Adds chat session stats model.
Packages/Sources/RxCodeCore/Models/ChatThread.swift Adds SwiftData chat thread model.
Packages/Sources/RxCodeCore/Models/GitHubModels.swift Adds GitHub OAuth/repo DTOs.
Packages/Sources/RxCodeCore/Models/InteractiveTerminalState.swift Adds interactive terminal state model.
Packages/Sources/RxCodeCore/Models/JSONValue.swift Adds arbitrary JSON value type.
Packages/Sources/RxCodeCore/Models/MCPServer.swift Adds MCP server models.
Packages/Sources/RxCodeCore/Models/MarketplacePlugin.swift Adds marketplace plugin model.
Packages/Sources/RxCodeCore/Models/PermissionMode.swift Adds Claude permission mode enum.
Packages/Sources/RxCodeCore/Models/PermissionRequest.swift Adds permission request/decision models.
Packages/Sources/RxCodeCore/Models/PreviewFile.swift Adds preview/diff file model.
Packages/Sources/RxCodeCore/Models/Project.swift Adds project model.
Packages/Sources/RxCodeCore/Models/QueuedMessageRecord.swift Adds persisted queued message model.
Packages/Sources/RxCodeCore/Models/RateLimitUsage.swift Updates comments for RxCodeChatKit.
Packages/Sources/RxCodeCore/Models/SessionOrigin.swift Renames legacy session origin case.
Packages/Sources/RxCodeCore/Models/SessionRowReconciler.swift Adds session row reconciliation helper.
Packages/Sources/RxCodeCore/Models/StreamEvent.swift Adds stream event models.
Packages/Sources/RxCodeCore/Models/StreamEventDecoding.swift Adds stream event decoders.
Packages/Sources/RxCodeCore/Models/ThreadFileEdit.swift Adds persisted thread file edit model.
Packages/Sources/RxCodeCore/Models/TodoItem.swift Adds TodoWrite item extraction.
Packages/Sources/RxCodeCore/Models/TodoSnapshot.swift Adds persisted todo snapshot model.
Packages/Sources/RxCodeCore/Theme/AppTheme.swift Renames theme change notification.
Packages/Sources/RxCodeCore/Theme/ClaudeTheme.swift Adds shared theme helpers/styles.
Packages/Sources/RxCodeCore/Utilities/AppSupport.swift Adds RxCode app support migration/scoping helper.
Packages/Sources/RxCodeCore/Utilities/ClipboardHelper.swift Adds clipboard helper.
Packages/Sources/RxCodeCore/Utilities/DirectoryWatcher.swift Adds FSEvents directory watcher.
Packages/Sources/RxCodeCore/Utilities/DurationFormatting.swift Adds duration formatter.
Packages/Sources/RxCodeCore/Utilities/GitHelper.swift Adds async git helper.
Packages/Sources/RxCodeCore/Utilities/GitStatusParsing.swift Adds git status parser.
Packages/Sources/RxCodeCore/Utilities/GitURLHelpers.swift Adds GitHub remote URL parser.
Packages/Sources/RxCodeCore/Utilities/GitWorktreeService.swift Rebrands worktree support path.
Packages/Sources/RxCodeCore/Utilities/PathEncoding.swift Adds Claude project path encoding helpers.
Packages/Sources/RxCodeCore/WindowState.swift Adds shared per-window state model.
Packages/Sources/RxCodeChatKit/AskUserQuestionView.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/AttachmentPreviewItem.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/AutoScrollAnchor.swift Adds auto-scroll anchoring helper.
Packages/Sources/RxCodeChatKit/BashTerminalSheet.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/BubbleStyle.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/ChatBridge.swift Rebrands bridge comments/imports.
Packages/Sources/RxCodeChatKit/ChatShortcut.swift Rebrands shortcut storage/export text.
Packages/Sources/RxCodeChatKit/ChatView.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/FileDiffView.swift Updates import and theme notification.
Packages/Sources/RxCodeChatKit/IMETextView.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/ImagePreviewSheet.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/InputBarView.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/MarkdownView.swift Updates import and theme notification.
Packages/Sources/RxCodeChatKit/MessageBubble.swift Rebrands inline image URL scheme.
Packages/Sources/RxCodeChatKit/MessageListView.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/PlanCardView.swift Updates import and initial expansion behavior.
Packages/Sources/RxCodeChatKit/Resources/en.lproj/Localizable.strings Rebrands ChatKit English strings.
Packages/Sources/RxCodeChatKit/Resources/ko.lproj/Localizable.strings Rebrands ChatKit Korean strings.
Packages/Sources/RxCodeChatKit/ShortcutManagerView.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/SlashCommandBar.swift Rebrands slash command storage/export text.
Packages/Sources/RxCodeChatKit/SlashCommandManagerView.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/StatusLineView.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/TextPreviewSheet.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/TodoProgressView.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/ToolResultView.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/TypingDotsView.swift Updates import to RxCodeCore.
Packages/Sources/RxCodeChatKit/WebPreviewButton.swift Updates import to RxCodeCore.
Packages/Tests/RxCodeChatKitTests/AutoScrollAnchorTests.swift Rebrands test imports.
Packages/Tests/RxCodeChatKitTests/ChatBridgePlanStateTests.swift Rebrands test imports.
Packages/Tests/RxCodeChatKitTests/MessageBubbleTests.swift Rebrands test imports/temp file prefix.
Packages/Tests/RxCodeCoreTests/ChatSessionTitleTests.swift Rebrands test imports/fixtures.
Packages/Tests/RxCodeCoreTests/GitStatusParsingTests.swift Rebrands test imports.
Packages/Tests/RxCodeCoreTests/GitURLHelpersTests.swift Rebrands test imports.
Packages/Tests/RxCodeCoreTests/SessionRowReconcilerTests.swift Rebrands test imports/fixtures.
RxCode.xcodeproj/project.xcworkspace/contents.xcworkspacedata Adds workspace metadata.
RxCode.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved Adds resolved SwiftPM dependency pins.
RxCode.xcodeproj/xcshareddata/xcschemes/RxCode.xcscheme Renames scheme references to RxCode.
RxCode/App/AppState.swift Rebrands imports/paths and adjusts foreground session handling.
RxCode/App/RxCodeApp.swift Renames app entry point and menubar/update UI text.
RxCode/Assets.xcassets/AccentColor.colorset/Contents.json Adds accent color asset metadata.
RxCode/Assets.xcassets/AppIcon.appiconset/128-mac.png Adds app icon asset.
RxCode/Assets.xcassets/AppIcon.appiconset/16-mac.png Adds app icon asset.
RxCode/Assets.xcassets/AppIcon.appiconset/32-mac.png Adds app icon asset.
RxCode/Assets.xcassets/AppIcon.appiconset/64-mac.png Adds app icon asset.
RxCode/Assets.xcassets/AppIcon.appiconset/Contents.json Adds app icon set metadata.
RxCode/Assets.xcassets/Contents.json Adds asset catalog metadata.
RxCode/Assets.xcassets/GitHubMark.imageset/Contents.json Adds GitHub mark image metadata.
RxCode/Assets.xcassets/GitHubMark.imageset/github-mark.pdf Adds GitHub mark vector asset.
RxCode/Info.plist Updates Sparkle feed URL.
RxCode/Resources/en.lproj/Localizable.strings Rebrands app English strings.
RxCode/Services/BashSafety.swift Adds Bash read-only safety classifier.
RxCode/Services/ClaudeService.swift Rebrands temp directory/imports.
RxCode/Services/GitHubService.swift Rebrands SSH key title/imports.
RxCode/Services/MCPService.swift Rebrands MCP client name/imports.
RxCode/Services/MarketplaceService.swift Updates import to RxCodeCore.
RxCode/Services/NotificationService.swift Rebrands logger subsystem.
RxCode/Services/PermissionServer.swift Rebrands support path/imports.
RxCode/Services/PersistenceService.swift Rebrands legacy origin/path/comments.
RxCode/Services/RateLimitService.swift Updates import to RxCodeCore.
RxCode/Services/ThreadStore.swift Rebrands SwiftData store path/imports.
RxCode/Services/UpdateService.swift Adds Sparkle updater service.
RxCode/Utilities/KeychainHelper.swift Adds keychain read/write/delete helper.
RxCode/Utilities/SSHKeyManager.swift Rebrands SSH config comments/logs.
RxCode/Views/Chat/BranchPickerChip.swift Rebrands branch prefix placeholder.
RxCode/Views/Chat/GitHubSheet.swift Updates import to RxCodeCore.
RxCode/Views/Chat/RecentChatsSuggestionList.swift Updates import to RxCodeCore.
RxCode/Views/Chat/SkillMarketView.swift Updates import to RxCodeCore.
RxCode/Views/Inspector/InspectorContentView.swift Updates import to RxCodeCore.
RxCode/Views/Inspector/RightInspectorPanel.swift Updates import to RxCodeCore.
RxCode/Views/InspectorMemoPanel.swift Rebrands memo keys/imports.
RxCode/Views/LoadingView.swift Rebrands loading UI.
RxCode/Views/MainView.swift Rebrands imports and toolbar content reference.
RxCode/Views/Onboarding/GitHubLoginView.swift Updates import to RxCodeCore.
RxCode/Views/Onboarding/OnboardingView.swift Updates import to RxCodeCore.
RxCode/Views/Permission/PermissionModal.swift Updates import to RxCodeCore.
RxCode/Views/Permission/PermissionQueueBanner.swift Updates import to RxCodeCore.
RxCode/Views/Permission/QuestionSheetView.swift Updates import to RxCodeCore.
RxCode/Views/ProjectWindowView.swift Rebrands imports and toolbar content reference.
RxCode/Views/Settings/MCPServerEditorSheet.swift Updates import to RxCodeCore.
RxCode/Views/Settings/MCPSettingsTab.swift Updates import to RxCodeCore.
RxCode/Views/SettingsView.swift Rebrands imports, source link, and UI text.
RxCode/Views/Sidebar/FileInspectorView.swift Updates import and theme notification.
RxCode/Views/Sidebar/FileTreeView.swift Rebrands import/preview path.
RxCode/Views/Sidebar/GitHubRepoListView.swift Updates import to RxCodeCore.
RxCode/Views/Sidebar/GitStatusView.swift Rebrands import/preview path.
RxCode/Views/Sidebar/HistoryListView.swift Updates import to RxCodeCore.
RxCode/Views/Sidebar/MarkdownPreviewView.swift Rebrands JS markdown variable.
RxCode/Views/Sidebar/ProjectChatRow.swift Adds archive/unarchive context menu action.
RxCode/Views/Sidebar/ProjectListView.swift Rebrands import/delete copy.
RxCode/Views/Sidebar/ProjectTreeView.swift Rebrands import/copy and wires archive action.
RxCode/Views/Sidebar/TypewriterTitleText.swift Updates import to RxCodeCore.
RxCode/Views/Terminal/TerminalView.swift Updates import to RxCodeCore.
RxCode/Views/Toolbar/ExternalEditorMenu.swift Updates import to RxCodeCore.
RxCode/Views/Toolbar/RxCodeToolbar.swift Renames toolbar content type.
RxCode/Views/Toolbar/TodoProgressToolbarItem.swift Updates imports to RxCode packages.
RxCode/Views/UserManualView.swift Rebrands manual content/import.
RxCodeTests/AppStateProjectSwitchTests.swift Rebrands test imports.
RxCodeTests/InputBarDisableTests.swift Rebrands test imports.
RxCodeTests/PlanCardViewTests.swift Rebrands test imports.
RxCodeTests/PlanDecisionTests.swift Rebrands test imports.
docs/superpowers/specs/2026-04-27-attachment-auto-preview-settings-design.md Rebrands spec links/paths.
scripts/build_zip.sh Rebrands build script paths/artifact names.
scripts/ci/convert-markdown.py Adds release note markdown-to-HTML converter.
scripts/ci/generate-appcast.sh Adds CI appcast generation script.
scripts/ci/notary.sh Adds DMG creation/notarization script.
scripts/ci/sign-sparkle.sh Adds Sparkle signing script.
scripts/ci/update-version.sh Adds CI version bump script.
scripts/ci/update-xml.py Adds appcast XML mutation script.
scripts/release.sh Rebrands release script names/titles.
scripts/setup_sparkle.sh Rebrands Sparkle setup project/target references.
Comments suppressed due to low confidence (8)

Packages/Sources/RxCodeCore/Models/SessionOrigin.swift:7

  • Changing the SessionOrigin raw value from legacyClarc to legacyRxCode breaks decoding of existing persisted session JSON that already contains "origin":"legacyClarc"; decodeIfPresent(SessionOrigin.self, ...) will throw rather than fall back, causing those legacy sessions/summaries to be skipped. Keep the old raw value or add a custom decoder that maps both strings.
    scripts/ci/update-xml.py:68
  • This assignment runs for every <item> in the appcast, so a release rewrites all historical Sparkle versions to the current CI build number. That corrupts update ordering for existing releases; update only the newly generated/current item.
    RxCode/Views/Sidebar/ProjectTreeView.swift:406
  • This adds an Archive action to the project chat row, but ProjectChatsList.sessions above only filters by project id and does not exclude isArchived sessions. As a result, choosing Archive from this menu leaves the chat visible in the project tree (only the menu label changes to Unarchive), unlike HistoryListView where archived/non-archived lists are separated.
    RxCode/Services/ThreadStore.swift:40
  • This path hardcodes Application Support/RxCode instead of using AppSupport.bundleScopedURL (Packages/Sources/RxCodeCore/Utilities/AppSupport.swift:3-6 says non-production bundle IDs should use RxCode.<suffix> so dev builds do not share production state). As written, dev/test bundle IDs still share the production ThreadStore database.
    RxCode/Services/PermissionServer.swift:480
  • This path hardcodes Application Support/RxCode instead of using AppSupport.bundleScopedURL (Packages/Sources/RxCodeCore/Utilities/AppSupport.swift:3-6 establishes bundle-scoped support directories). Alternate bundle IDs will therefore share the production Bash allowlist instead of getting an isolated RxCode.<suffix> directory.
    Packages/Sources/RxCodeChatKit/SlashCommandBar.swift:235
  • This store path hardcodes Application Support/RxCode instead of using AppSupport.bundleScopedURL (Packages/Sources/RxCodeCore/Utilities/AppSupport.swift:3-6 establishes bundle-scoped support directories). Dev/test bundle IDs will share production custom slash commands.
    Packages/Sources/RxCodeChatKit/ChatShortcut.swift:69
  • This store path hardcodes Application Support/RxCode instead of using AppSupport.bundleScopedURL (Packages/Sources/RxCodeCore/Utilities/AppSupport.swift:3-6 establishes bundle-scoped support directories). Dev/test bundle IDs will share production shortcut data.
    Packages/Sources/RxCodeCore/Utilities/GitWorktreeService.swift:39
  • This worktree cache path hardcodes Application Support/RxCode instead of using AppSupport.bundleScopedURL (Packages/Sources/RxCodeCore/Utilities/AppSupport.swift:3-6 establishes bundle-scoped support directories). Alternate bundle IDs can therefore share or mutate production worktree state.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +19 to +22
./bin/generate_appcast ./ \
--ed-key-file sparkle.key \
--link https://github.com/rxtech-lab/Clarc/releases \
--download-url-prefix https://github.com/rxtech-lab/Clarc/releases/download/${VERSION}/
Comment on lines +52 to +56
- name: Import code signing certificate
uses: apple-actions/import-codesign-certs@v6
with:
p12-file-base64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
p12-password: ${{ secrets.P12_PASSWORD }}
Comment thread scripts/ci/update-xml.py
Comment on lines +36 to +39
if release_notes_link is None:
# Create new releaseNotesLink element
release_notes_link = ET.Element('{http://www.andymatuschak.org/xml-namespaces/sparkle}releaseNotesLink')
release_notes_link.text = notes_path
Comment on lines +131 to +135
- name: Upload release notes for deploy job
if: github.event_name == 'release'
uses: actions/upload-artifact@v7
with:
name: release_notes-${{ github.sha }}
Comment thread scripts/setup_sparkle.sh
Comment on lines 99 to 101
echo "🔧 pbxproj에 SUPublicEDKey 자동 추가 중..."
sed -i '' "s|INFOPLIST_KEY_SUFeedURL = \"https://raw.githubusercontent.com/ttnear/Clarc/main/appcast.xml\";|INFOPLIST_KEY_SUFeedURL = \"https://raw.githubusercontent.com/ttnear/Clarc/main/appcast.xml\";\n\t\t\t\tINFOPLIST_KEY_SUPublicEDKey = \"${PUBLIC_KEY}\";|g" "$PBXPROJ"
sed -i '' "s|INFOPLIST_KEY_SUFeedURL = \"https://raw.githubusercontent.com/ttnear/RxCode/main/appcast.xml\";|INFOPLIST_KEY_SUFeedURL = \"https://raw.githubusercontent.com/ttnear/RxCode/main/appcast.xml\";\n\t\t\t\tINFOPLIST_KEY_SUPublicEDKey = \"${PUBLIC_KEY}\";|g" "$PBXPROJ"
echo "✓ SUPublicEDKey가 pbxproj에 추가되었습니다."
Comment thread .github/workflows/test.yaml Outdated
Comment on lines +7 to +11
on:
push:
pull_request:
branches:
- main
Comment thread .github/workflows/build.yaml Outdated
Comment on lines +14 to +18
pull_request:
branches:
- main

jobs:
Comment on lines +4 to +5
# Write SPARKLE_KEY to sparkle.key
echo "$SPARKLE_KEY" > sparkle.key
@sirily11 sirily11 merged commit 534f674 into main May 14, 2026
3 checks passed
@sirily11 sirily11 deleted the ci branch May 14, 2026 05:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants