rebrand: Jarvis -> Jervis for App Store submission
Some checks failed
CI / Build · Debug (push) Has been cancelled
CI / Build · Release (push) Has been cancelled

"JARVIS" is Marvel's trademark for the Iron Man/Avengers AI — real
legal risk for a commercial App Store listing, and the name is already
contested there ("Jarvis: Powered by Marvel", "Jarvis - AI Chatbot").
Jervis reads identically but doesn't collide.

Scoped to user-facing surfaces only:
- CFBundleDisplayName, PRODUCT_BUNDLE_IDENTIFIER (com.kisani.jervis)
- BGTaskSchedulerPermittedIdentifiers + matching Swift constants
- NSLocalNetworkUsageDescription permission prompt copy
- JarvisWordmark rendered text ("j" + "ervis")
- Notification permission prompt copy

Internal Xcode target/executable name, Swift type names (JarvisWordmark,
JarvisApp), file/folder names, and repo name are unchanged — renaming
those is a separate, larger refactor with no user-facing benefit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Kutesir
2026-07-13 02:12:48 +03:00
parent afec870919
commit d93ffb1580
6 changed files with 13 additions and 13 deletions

View File

@@ -4,13 +4,13 @@
<dict> <dict>
<key>BGTaskSchedulerPermittedIdentifiers</key> <key>BGTaskSchedulerPermittedIdentifiers</key>
<array> <array>
<string>com.kisani.jarvis.briefing.refresh</string> <string>com.kisani.jervis.briefing.refresh</string>
<string>com.kisani.jarvis.feed.refresh</string> <string>com.kisani.jervis.feed.refresh</string>
</array> </array>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key> <key>CFBundleDisplayName</key>
<string>Jarvis</string> <string>Jervis</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
@@ -39,7 +39,7 @@
<true/> <true/>
</dict> </dict>
<key>NSLocalNetworkUsageDescription</key> <key>NSLocalNetworkUsageDescription</key>
<string>Jarvis connects to your self-hosted news platform on the local network.</string> <string>Jervis connects to your self-hosted news platform on the local network.</string>
<key>UIBackgroundModes</key> <key>UIBackgroundModes</key>
<array> <array>
<string>fetch</string> <string>fetch</string>

View File

@@ -20,7 +20,7 @@ enum BriefingPeriod { case morning, evening
/// Background-refresh task identifier (also declared in Info.plist /// Background-refresh task identifier (also declared in Info.plist
/// BGTaskSchedulerPermittedIdentifiers and registered in AppDelegate). /// BGTaskSchedulerPermittedIdentifiers and registered in AppDelegate).
let jarvisBriefingRefreshID = "com.kisani.jarvis.briefing.refresh" let jarvisBriefingRefreshID = "com.kisani.jervis.briefing.refresh"
@MainActor @MainActor
final class NotificationManager: NSObject, ObservableObject { final class NotificationManager: NSObject, ObservableObject {

View File

@@ -8,7 +8,7 @@ import BackgroundTasks
import SwiftData import SwiftData
import UserNotifications import UserNotifications
let jarvisFeedRefreshID = "com.kisani.jarvis.feed.refresh" let jarvisFeedRefreshID = "com.kisani.jervis.feed.refresh"
enum BackgroundRefreshManager { enum BackgroundRefreshManager {

View File

@@ -52,7 +52,7 @@ struct NotificationsView: View {
private var permissionCard: some View { private var permissionCard: some View {
VStack(alignment: .leading, spacing: 12) { VStack(alignment: .leading, spacing: 12) {
Text("Jarvis needs permission to send briefings and breaking alerts.") Text("Jervis needs permission to send briefings and breaking alerts.")
.font(.system(size: 14)).foregroundStyle(Color(hex: "BBBBBB")) .font(.system(size: 14)).foregroundStyle(Color(hex: "BBBBBB"))
.fixedSize(horizontal: false, vertical: true) .fixedSize(horizontal: false, vertical: true)
Button { Button {

View File

@@ -363,7 +363,7 @@ struct JarvisWordmark: View {
var body: some View { var body: some View {
HStack(spacing: 0) { HStack(spacing: 0) {
Text("j").font(font).foregroundStyle(Palette.orange) Text("j").font(font).foregroundStyle(Palette.orange)
Text("arvis").font(font).foregroundStyle(Palette.primaryText) Text("ervis").font(font).foregroundStyle(Palette.primaryText)
} }
} }
} }

View File

@@ -15,12 +15,12 @@ targets:
info: info:
path: Jarvis/Info.plist path: Jarvis/Info.plist
properties: properties:
CFBundleDisplayName: Jarvis CFBundleDisplayName: Jervis
UILaunchScreen: UILaunchScreen:
UIColorName: "" UIColorName: ""
UISupportedInterfaceOrientations: UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait - UIInterfaceOrientationPortrait
NSLocalNetworkUsageDescription: "Jarvis connects to your self-hosted news platform on the local network." NSLocalNetworkUsageDescription: "Jervis connects to your self-hosted news platform on the local network."
NSAppTransportSecurity: NSAppTransportSecurity:
NSAllowsArbitraryLoads: true NSAllowsArbitraryLoads: true
NSAllowsLocalNetworking: true NSAllowsLocalNetworking: true
@@ -32,11 +32,11 @@ targets:
- fetch - fetch
- processing - processing
BGTaskSchedulerPermittedIdentifiers: BGTaskSchedulerPermittedIdentifiers:
- com.kisani.jarvis.briefing.refresh - com.kisani.jervis.briefing.refresh
- com.kisani.jarvis.feed.refresh - com.kisani.jervis.feed.refresh
settings: settings:
base: base:
PRODUCT_BUNDLE_IDENTIFIER: com.kisani.jarvis PRODUCT_BUNDLE_IDENTIFIER: com.kisani.jervis
MARKETING_VERSION: "1.0" MARKETING_VERSION: "1.0"
CURRENT_PROJECT_VERSION: "1" CURRENT_PROJECT_VERSION: "1"
TARGETED_DEVICE_FAMILY: "1" TARGETED_DEVICE_FAMILY: "1"