Rename app from oAI to Confab
"oAI" reads as easily confused with OpenAI, both visually and in casual conversation. Renamed to "Confab" throughout: Xcode target/scheme/bundle ID (com.oai.Confab), Info.plist and Help Book identity, all user-facing UI text, internal Log subsystem and color identifiers, localization catalogs (6 languages, including a proper reworded/retranslated Intel-deprecation notice), Help Book HTML content, and docs (README/DEVELOPMENT/PRIVACY/SECURITY). Deliberately cosmetic-only: the on-disk data folder (~/Library/Application Support/oAI/), database/backup filenames, Keychain service identifiers, and EncryptionService's key-derivation inputs are all left untouched so existing conversations, settings, and stored API keys survive the update with zero migration and no re-entering credentials. Verified live: a real signed build successfully decrypted a stored API key and loaded an existing conversation database after the bundle ID change. Also includes a small already-completed, previously uncommitted model-release-date feature (ModelInfo/OpenRouterModels/ OpenRouterProvider/ModelInfoView) that happened to share several files with this rename. Gitignored on this branch and updated on disk but not part of this commit: CLAUDE.md, RELEASE_NOTES.md, and the build*.sh scripts.
This commit is contained in:
@@ -3,11 +3,11 @@ import Foundation
|
||||
// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
||||
// Copyright (C) 2026 Rune Olsen
|
||||
//
|
||||
// This file is part of oAI.
|
||||
// This file is part of Confab.
|
||||
//
|
||||
// oAI is licensed under the PolyForm Noncommercial License 1.0.0.
|
||||
// Confab is licensed under the PolyForm Noncommercial License 1.0.0.
|
||||
// You may use, study, modify, and share it for any noncommercial
|
||||
// purpose. Commercial use — including selling oAI or any part of
|
||||
// purpose. Commercial use — including selling Confab or any part of
|
||||
// it, standalone or bundled into another product or service —
|
||||
// requires a separate commercial license from the copyright holder.
|
||||
//
|
||||
@@ -24,7 +24,7 @@ class GitSyncService {
|
||||
|
||||
private let settings = SettingsService.shared
|
||||
private let db = DatabaseService.shared
|
||||
private let log = Logger(subsystem: "com.oai.oAI", category: "sync")
|
||||
private let log = Logger(subsystem: Log.subsystem, category: "sync")
|
||||
|
||||
private(set) var syncStatus = SyncStatus()
|
||||
private(set) var isSyncing = false
|
||||
@@ -90,7 +90,7 @@ class GitSyncService {
|
||||
}
|
||||
|
||||
/// Push local changes to remote
|
||||
func push(message: String = "Sync from oAI") async throws {
|
||||
func push(message: String = "Sync from Confab") async throws {
|
||||
try ensureCloned()
|
||||
|
||||
let localPath = expandPath(settings.syncLocalPath)
|
||||
@@ -314,20 +314,20 @@ class GitSyncService {
|
||||
}
|
||||
|
||||
let readme = """
|
||||
# oAI Conversation Sync
|
||||
# Confab Conversation Sync
|
||||
|
||||
This repository contains your oAI conversations in markdown format.
|
||||
This repository contains your Confab conversations in markdown format.
|
||||
|
||||
## ⚠️ WARNING - DO NOT MANUALLY EDIT
|
||||
|
||||
**This repository is automatically managed by oAI.**
|
||||
**This repository is automatically managed by Confab.**
|
||||
|
||||
- ❌ **DO NOT manually edit** these files
|
||||
- ❌ **DO NOT add** files to this repository
|
||||
- ❌ **DO NOT delete** files from this repository
|
||||
- ❌ **DO NOT merge conflicts** manually (let oAI handle it)
|
||||
- ❌ **DO NOT merge conflicts** manually (let Confab handle it)
|
||||
|
||||
**Why?** oAI rebuilds its internal database from these files. Manual edits will be:
|
||||
**Why?** Confab rebuilds its internal database from these files. Manual edits will be:
|
||||
- Overwritten on next sync
|
||||
- May cause data corruption
|
||||
- May prevent proper import/restore
|
||||
@@ -335,13 +335,13 @@ class GitSyncService {
|
||||
## How It Works
|
||||
|
||||
### Export (Automatic)
|
||||
- oAI saves conversations to its local database
|
||||
- Confab saves conversations to its local database
|
||||
- Auto-sync exports conversations to `conversations/*.md`
|
||||
- Files are committed and pushed to this git repository
|
||||
|
||||
### Import (On New Machine)
|
||||
- Clone this repository on a new machine
|
||||
- oAI imports markdown files into its database
|
||||
- Confab imports markdown files into its database
|
||||
- Your conversation history is restored
|
||||
|
||||
### Sync Across Machines
|
||||
@@ -399,28 +399,28 @@ class GitSyncService {
|
||||
## Troubleshooting
|
||||
|
||||
**Problem:** Files not syncing?
|
||||
- Check Settings → Sync in oAI
|
||||
- Check Settings → Sync in Confab
|
||||
- Verify git credentials are correct
|
||||
- Check network connection
|
||||
|
||||
**Problem:** Conflicts after editing?
|
||||
- Restore from git: `git reset --hard origin/main`
|
||||
- Re-export from oAI: Manual Sync → Export All → Push
|
||||
- Re-export from Confab: Manual Sync → Export All → Push
|
||||
|
||||
**Problem:** Lost conversations?
|
||||
- Conversations are in your local oAI database
|
||||
- Conversations are in your local Confab database
|
||||
- Export manually: Settings → Sync → Export All
|
||||
- Check git history for deleted files
|
||||
|
||||
## Support
|
||||
|
||||
For help with oAI, see:
|
||||
- Settings → Help in oAI app
|
||||
For help with Confab, see:
|
||||
- Settings → Help in Confab app
|
||||
- GitHub issues (if open source)
|
||||
|
||||
---
|
||||
|
||||
**Generated by oAI v1.0**
|
||||
**Generated by Confab v1.0**
|
||||
**Last updated:** \(ISO8601DateFormatter().string(from: Date()))
|
||||
"""
|
||||
|
||||
@@ -504,7 +504,7 @@ class GitSyncService {
|
||||
try await exportAllConversations()
|
||||
|
||||
// Push to git
|
||||
try await push(message: "Auto-sync from oAI")
|
||||
try await push(message: "Auto-sync from Confab")
|
||||
|
||||
// Success
|
||||
await MainActor.run {
|
||||
|
||||
Reference in New Issue
Block a user