Skip to content

Commit d770bce

Browse files
committed
feat: rename SwiftLMChat → SwiftBuddy, add design doc
- SwiftLMChat/ → SwiftBuddy/ (app lives in SwiftLM as example layer) - SwiftLMChatApp.swift → SwiftBuddyApp.swift - SwiftLMChat.entitlements → SwiftBuddy.entitlements - Replace all SwiftLMChat/SwiftLM references in View sources - Add SWIFTBUDDY.md product design document - Includes: feeding, growing, meet systems + monorepo architecture SwiftBuddy (iOS/macOS + Android) lives in SwiftLM. swiftbuddy-server is a separate private repo.
1 parent 1e3ba78 commit d770bce

18 files changed

Lines changed: 851 additions & 270 deletions

SWIFTBUDDY.md

Lines changed: 478 additions & 0 deletions
Large diffs are not rendered by default.

Sources/MLXInferenceCore/ModelStorage.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// ModelStorage.swift — Platform-aware model storage resolution
22
// macOS: ~/Library/Caches/huggingface/hub/ (same as defaultHubApi)
3-
// iOS: ~/Library/Application Support/SwiftLMChat/Models/ (persistent, excluded from iCloud)
3+
// iOS: ~/Library/Application Support/SwiftBuddy/Models/ (persistent, excluded from iCloud)
44

55
import Foundation
66

@@ -28,7 +28,7 @@ public enum ModelStorage {
2828
let base = FileManager.default
2929
.urls(for: .applicationSupportDirectory, in: .userDomainMask)
3030
.first!
31-
.appendingPathComponent("SwiftLMChat/Models", isDirectory: true)
31+
.appendingPathComponent("SwiftBuddy/Models", isDirectory: true)
3232
ensureDirectory(base)
3333
return base
3434
}

SwiftLMChat/SwiftLMChat/Assets.xcassets/AccentColor.colorset/Contents.json renamed to SwiftBuddy/SwiftBuddy/Assets.xcassets/AccentColor.colorset/Contents.json

File renamed without changes.

SwiftLMChat/SwiftLMChat/Assets.xcassets/AppIcon.appiconset/Contents.json renamed to SwiftBuddy/SwiftBuddy/Assets.xcassets/AppIcon.appiconset/Contents.json

File renamed without changes.
File renamed without changes.
File renamed without changes.

SwiftLMChat/SwiftLMChat/SwiftLMChatApp.swift renamed to SwiftBuddy/SwiftBuddy/SwiftBuddyApp.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// SwiftLMChatApp.swift — App entry point (iOS + macOS)
1+
// SwiftBuddyApp.swift — App entry point (iOS + macOS)
22
import SwiftUI
33

44
// MARK: — Appearance Store (persists dark/light/system preference)
@@ -26,7 +26,7 @@ final class AppearanceStore: ObservableObject {
2626
// MARK: — App
2727

2828
@main
29-
struct SwiftLMChatApp: App {
29+
struct SwiftBuddyApp: App {
3030
@StateObject private var engine = InferenceEngine()
3131
@StateObject private var appearance = AppearanceStore()
3232

@@ -36,8 +36,8 @@ struct SwiftLMChatApp: App {
3636
.environmentObject(engine)
3737
.environmentObject(appearance)
3838
.preferredColorScheme(appearance.colorScheme)
39-
.accentColor(SwiftLMTheme.accent)
40-
.tint(SwiftLMTheme.accent)
39+
.accentColor(SwiftBuddyTheme.accent)
40+
.tint(SwiftBuddyTheme.accent)
4141
}
4242
#if os(macOS)
4343
.commands {
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
// Theme.swift — SwiftLM Chat design system
1+
// Theme.swift — SwiftBuddy Chat design system
22
// Single source of truth for colors, gradients, radii, and animations.
33
import SwiftUI
44

55
// ─────────────────────────────────────────────────────────────────────────────
66
// MARK: — Color Tokens
77
// ─────────────────────────────────────────────────────────────────────────────
88

9-
public enum SwiftLMTheme {
9+
public enum SwiftBuddyTheme {
1010

1111
// ── Background layers ─────────────────────────────────────────────────────
1212
/// Deep navy-black canvas — the app's primary background.
@@ -121,15 +121,15 @@ public enum SwiftLMTheme {
121121

122122
extension View {
123123
/// Apply a glowing indigo ring — used on focused input and hero cards.
124-
func glowRing(color: Color = SwiftLMTheme.accent, radius: CGFloat = 8, active: Bool = true) -> some View {
124+
func glowRing(color: Color = SwiftBuddyTheme.accent, radius: CGFloat = 8, active: Bool = true) -> some View {
125125
self.shadow(color: active ? color.opacity(0.55) : .clear, radius: radius)
126126
}
127127

128128
/// Glassmorphic card surface.
129-
func glassCard(cornerRadius: CGFloat = SwiftLMTheme.radiusMedium) -> some View {
129+
func glassCard(cornerRadius: CGFloat = SwiftBuddyTheme.radiusMedium) -> some View {
130130
self
131131
.background(.ultraThinMaterial)
132-
.background(SwiftLMTheme.surface.opacity(0.65))
132+
.background(SwiftBuddyTheme.surface.opacity(0.65))
133133
.clipShape(RoundedRectangle(cornerRadius: cornerRadius))
134134
.overlay(
135135
RoundedRectangle(cornerRadius: cornerRadius)
@@ -168,7 +168,7 @@ struct GeneratingDots: View {
168168
ForEach(0..<3) { i in
169169
Circle()
170170
.frame(width: 5, height: 5)
171-
.foregroundStyle(SwiftLMTheme.accent)
171+
.foregroundStyle(SwiftBuddyTheme.accent)
172172
.scaleEffect(phase == i ? 1.5 : 0.8)
173173
.opacity(phase == i ? 1.0 : 0.45)
174174
.animation(
@@ -196,7 +196,7 @@ struct AvatarView: View {
196196
// Outer glow ring when generating
197197
if isGenerating {
198198
Circle()
199-
.stroke(SwiftLMTheme.accent.opacity(pulse ? 0.55 : 0.15), lineWidth: 2)
199+
.stroke(SwiftBuddyTheme.accent.opacity(pulse ? 0.55 : 0.15), lineWidth: 2)
200200
.frame(width: size + 8, height: size + 8)
201201
.scaleEffect(pulse ? 1.12 : 1.0)
202202
.animation(
@@ -207,7 +207,7 @@ struct AvatarView: View {
207207

208208
// Avatar circle
209209
Circle()
210-
.fill(SwiftLMTheme.avatarGradient)
210+
.fill(SwiftBuddyTheme.avatarGradient)
211211
.frame(width: size, height: size)
212212
.overlay(
213213
Image(systemName: "bolt.fill")
File renamed without changes.

0 commit comments

Comments
 (0)