feat: introduce Muxi design system with Lavender accent#1
Merged
Conversation
Defines Muxi's visual identity — Warm/Friendly personality with Lavender accent, semantic token system, spacing/typography/motion scales. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
10-task plan: create MuxiTokens (colors, spacing, radius, typography, motion) and migrate all hardcoded values across SwiftUI views. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Defines all semantic design tokens: colors (surface, accent, text, border, semantic), spacing (4pt grid), radius, typography, and motion (with reduceMotion accessibility support). Includes Color.rgbComponents extension for test assertions. Also fixes pre-existing build errors in test files: missing Foundation import in ThemeManagerTests/ThemeTests, type mismatch in TmuxControlServiceTests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add TypographyTokenTests with existence checks for all 5 tokens - Test both reduceMotion paths (true and false) in resolvedMotion Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace all hardcoded visual constants with MuxiTokens references: - Colors: .red/.orange/.blue → MuxiTokens.Colors.error/warning/info - Padding 12 → MuxiTokens.Spacing.md - Corner radius 10 → MuxiTokens.Radius.md (12pt) - Horizontal padding 16 → MuxiTokens.Spacing.lg - Top padding 8, VStack spacing 8 → MuxiTokens.Spacing.sm - Animation .easeInOut(0.25) → MuxiTokens.Motion.subtle Opacity values (0.12 fill, 0.3 stroke) kept as-is — they are semantic-color-specific, not design tokens. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace all hardcoded colors, spacing, radius values with MuxiTokens references for consistent dark theme styling across the app. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…okens Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Applies .preferredColorScheme(.dark) and .tint(Lavender) at the app root so all system controls inherit the design system. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ErrorBannerView: HStack spacing 10 → MuxiTokens.Spacing.md - ExtendedKeyboardView: HStack spacing 6 → MuxiTokens.Spacing.sm Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rs, cornerRadius Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hardcoded colors, fonts, and spacing in ServerRowView, ServerListView, and ServerEditView with MuxiTokens for consistent warm dark theming across all server management screens. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add LocalizedError to KeychainError for actionable error messages instead of opaque "KeychainError error 0" - Pass retrieved password directly to connectToServer instead of discarding and re-reading from Keychain - Pre-validate SSH key existence before connection attempt - Remove CODE_SIGNING_ALLOWED=NO from CLAUDE.md build command (blocks Keychain access via errSecMissingEntitlement -34018) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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
accessibilityReduceMotion대응Changes
New files
ios/Muxi/DesignSystem/MuxiTokens.swift— 전체 토큰 정의 +MuxiAnimationModifierios/MuxiTests/DesignTokenTests.swift— 5개 스위트, 12개 테스트Migrated views
ErrorBannerView— semantic colors, spacing, radius, reduce motionReconnectingOverlay— surface colors, spacing, material → solid surfaceTmuxInstallGuideView— colors, spacing, radius (같은 파일 내 별도 struct)ExtendedKeyboardView— accent tokens, clipShape 통일PaneContainerView— tab bar/separator tokens, clipShape 통일ThemeSettingsView— accent checkmark, text tokensQuickActionButton— accent fill, shadow 제거App-wide
MuxiApp.swift—.preferredColorScheme(.dark)+.tint(Lavender)Design decisions
Test plan
🤖 Generated with Claude Code