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:
2026-08-02 14:58:14 +02:00
parent ae3de3d927
commit 76b58e6fdc
121 changed files with 987 additions and 692 deletions
+19 -19
View File
@@ -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 {