Skip to content
CAI
Software that uses CAICheck a score

gluonfield/enchanted

49.4

Weak · 30 September 2026

6k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a cross-platform chat application for iOS, macOS, and visionOS that interfaces with local Ollama language models. It enables users to manage conversations, configure model settings, and utilize features like voice-to-text transcription and image attachments. On macOS, it extends functionality with a floating prompt panel and system-wide text completions via accessibility services.

How it got here

2023 — macOS expansion and core architecture

10 changes.

The project expanded from a single-platform iOS app to support macOS and visionOS, introducing platform-specific UI components and accessibility features. This period established the foundational data models, state management stores, and cross-platform services required for the multi-platform architecture.

2024 — multi-platform chat and macOS integration

18 changes.

This period focused on building the core chat interface across iOS, macOS, and visionOS, introducing platform-specific layouts, voice recording, and image support. It also established the macOS floating prompt panel, completions editor, and accessibility features, alongside a unified settings and sidebar navigation system.

Features

Add macOS Settings menu item

The macOS application now includes a 'Settings' button in the main menu, replacing the default app settings command. Clicking this button or using the Command+Comma keyboard shortcut opens the application's settings interface.

Enchanted/UI/macOS · high confidence

Added macOS accessibility and speech recognition support

The app now supports macOS-specific features including accessibility integration and voice input. This is enabled by adding an Accessibility.plist configuration, updating entitlements to include audio input and network access, and adding usage descriptions for speech recognition and accessibility in Info.plist. The previous default SwiftData-based ContentView and App entry points have been removed, indicating a shift away from the initial template structure to support these new capabilities.

Enchanted · high confidence

Added text selection sheet for iOS and visionOS

A new SelectTextSheet component has been introduced for iOS and visionOS platforms, enabling users to select text within a message. The view presents a full-screen text editor that automatically focuses and selects all content upon appearance, with specific frame adjustments for visionOS.

Enchanted/UI/iOS/Components · high confidence

Added voice-to-text recording component for chat

Users can now record audio directly within the chat interface, with the system automatically transcribing speech to text in real-time. This change introduces the \RecordingView\ UI component and the underlying \SpeechRecognizer\ logic, enabling hands-free input for messages.

Enchanted/UI/Shared/Chat/Components/Recorder · high confidence

Initial macOS app structure with keyboard shortcut support

The application entry point is established, introducing a macOS-specific keyboard shortcut (Command+Option+K) to toggle a panel mode via the KeyboardShortcuts library. The app also disables automatic window tabbing on macOS and includes a hidden demo window for keyboard shortcuts configuration, laying the groundwork for the UI and interaction model.

Enchanted/Application · high confidence

Introduce ApplicationEntry as the new app root view

The app now uses a new ApplicationEntry view as its root, which manages the main state stores (LanguageModelStore, ConversationStore, CompletionsStore, AppStore) and switches between Chat and Voice modes based on the app state. This entry point also handles loading models, conversations, and completions asynchronously on startup, and applies the user's preferred color scheme.

Enchanted/UI/Shared · high confidence

Introduce macOS floating prompt panel with in-window completions

Adds a new floating panel interface for macOS that allows users to interact with the app from any context. The panel supports standard chat prompts and, when text is selected in another application, offers 'completions' that can be typed directly into the active window or inserted into the app. This includes the underlying panel management, accessibility integration for text selection and simulated typing, and the SwiftUI views for the panel UI.

Enchanted/UI/macOS/PromptPanel · high confidence

Introduces core platform services for clipboard, haptics, hotkeys, speech, data persistence, and throttling

This change adds a suite of foundational services to the application. It introduces a cross-platform Clipboard service that abstracts iOS (UIPasteboard) and macOS (NSPasteboard) operations, including image support on macOS. A Haptics service provides tactile feedback on iOS while remaining a no-op on other platforms. HotkeyService registers single-use keyboard shortcuts on macOS using the Magnet library. SpeechService implements text-to-speech capabilities with voice selection and playback control. SwiftDataService establishes the local data persistence layer using SwiftData, managing models for Language Models, Conversations, Messages, and Completion Instructions. Finally, a Throttler utility is added to limit the frequency of UI updates, addressing potential performance issues.

Enchanted/Services · high confidence

Introduces macOS prompt panel with image support and completions interface

This change adds the primary macOS UI components for the Enchanted app: a PromptPanelView that allows users to type prompts, paste images via clipboard (Cmd+V), or drag-and-drop image files, with a warning for models lacking vision support; a DragAndDrop component for the visual drop zone; a CompletionPanelView that displays a list of predefined completion instructions with keyboard shortcuts and a mode toggle to apply completions either in the current window or the entire app; and a CompletionButtonView to render individual completion items.

Enchanted/UI/macOS/Components · high confidence

Introduction of core data models for the application

This change introduces the foundational data structures for the app, including AppColorScheme for managing light, dark, and system UI themes; ConversationState to track loading, completion, and error states; LanguageModel and ModelProvider to define model configurations (currently supporting Ollama); NotificationMessage for displaying status updates; and SamplePrompts to provide pre-defined example queries for users.

Enchanted/Models · high confidence

Introduction of the Chat interface with platform-specific layouts and conversation management

The Chat view is introduced to manage conversations, displaying messages and allowing users to send prompts, delete chats, and copy chat history (in plain text or JSON format). The implementation adapts to the platform: on macOS and visionOS, it uses a direct ChatView, while on iOS, it wraps the chat in a SideBarStack with a collapsible sidebar. It also initializes the selected language model based on user defaults or the first available model, and hides the keyboard on iOS when starting a new conversation.

Enchanted/UI/Shared/Chat · high confidence

New Completions Editor for macOS

A new Completions Editor has been added to the macOS interface, allowing users to create, edit, and manage custom keyboard shortcuts for dynamic prompts. The editor provides a list view where completions can be reordered, deleted, or edited via a sheet interface that supports configuring the prompt text, a single-character keyboard shortcut, and model temperature. The feature integrates with macOS Accessibility permissions to capture selected text from other applications, ensuring the completions work system-wide.

Enchanted/UI/macOS/CompletionsEditor · high confidence

New Settings interface with Ollama configuration and user personalization

The app introduces a new Settings screen (Settings.swift/SettingsView.swift) allowing users to configure the Ollama server URI, bearer token, ping interval, and default model, as well as manage a system prompt via TextEditor. Users can now set their display initials, choose a color scheme (appearance), and select a voice for speech synthesis, with platform-specific UI adjustments for iOS and macOS.

Enchanted/UI/Shared/Settings · high confidence

New chat interface components and platform-specific features

This change introduces a suite of new SwiftUI components for the chat experience, including an empty state view with sample prompts, a conversation status indicator, and a model selector that adapts its display for iOS versus macOS/visionOS. It adds platform-specific capabilities such as text selection and 'Read Aloud' functionality on iOS and visionOS, alongside a 'Copy Chat' option in the options menu. The update also includes UI helpers like a running border animation for editing states, image removal/clearing views, and an error banner for unreachable API connections.

Enchanted/UI/Shared/Chat/Components · high confidence

New helper utilities for macOS accessibility, hotkeys, and concurrency

Added several new helper files to the Enchanted/Helpers directory to support macOS-specific features. Accessibility.swift introduces a singleton class that checks for and requests accessibility permissions, retrieves selected text via Accessibility API or a copy-paste fallback, and simulates keyboard events. HotKeys.swift provides a SwiftUI ViewModifier and associated types to register and handle custom hotkey combinations by intercepting key events. AsyncQueue.swift adds a generic actor for thread-safe queue operations, and DeallocPrinter.swift offers a simple debugging tool to log when objects are deallocated.

Enchanted/Helpers · high confidence

New iOS-specific chat interface with image and voice support

A new \ChatView\_iOS.swift\ file introduces the iOS-specific implementation of the chat interface, featuring support for selecting images via the PhotosUI picker, voice transcription through a speech recognizer, and display of user initials in the message list. This view handles message submission, model selection, and conversation state management specifically for the iOS platform.

Enchanted/UI/iOS · high confidence

The sidebar area now includes a new conversation history list that groups chats by day and highlights the selected conversation with a visual indicator, alongside a dedicated keyboard shortcuts view that displays available shortcuts in a table format. These changes also introduce reusable sidebar components, including a stack layout for managing sidebar visibility with drag gestures and a standard button component for sidebar menu items.

Enchanted/UI/Shared/Sidebar/Components · high confidence

The sidebar UI now provides direct access to application configuration and customization tools. Users can open the Settings sheet via a dedicated button, and on macOS, additional buttons allow opening the Completions Editor and a Keyboard Shortcuts demo. These additions are gated by platform-specific checks, ensuring the Completions and Shortcuts options are only visible on macOS, while the Settings option remains available across platforms.

Enchanted/UI/Shared/Sidebar · high confidence

macOS chat interface components with image support and keyboard shortcuts

New macOS-specific components for the chat interface have been added, introducing native input fields that support image attachment via file selection or drag-and-drop, as well as voice recording transcription. The toolbar now includes a model selector and a new conversation button accessible via the Command+N keyboard shortcut, while the input field respects Shift+Enter for new lines and integrates custom hotkeys for pasting images from the clipboard.

Enchanted/UI/macOS/Chat/Components · high confidence

macOS chat interface with sidebar navigation

A new macOS-specific chat view has been introduced, providing a split-pane layout with a conversation sidebar and a main message area. This interface supports selecting models, sending messages, editing existing messages, and copying chat content, while also including platform-specific toolbar controls for sidebar visibility on visionOS.

Enchanted/UI/macOS/Chat · high confidence

Behavioural changes

10 commits (1 fix) modifying Enchanted/SwiftData

A change to existing behaviour in Enchanted/SwiftData — 10 commits (1 fix), 4 files.

Enchanted/SwiftData · medium confidence · unverified

4 commits (0 fixes) modifying Enchanted/UI/Shared/Chat/Components/ChatMessages

A change to existing behaviour in Enchanted/UI/Shared/Chat/Components/ChatMessages — 4 commits, 3 files.

Enchanted/UI/Shared/Chat/Components/ChatMessages · medium confidence · unverified

Added macOS workspace settings configuration

The Xcode workspace now includes explicit settings files to support macOS development. A shared workspace settings file has been added to standardize workspace behavior, while a user-specific settings file configures build locations relative to Derived Data and enables automatic sharing of schemes, ensuring consistent build environments for macOS targets.

Enchanted.xcodeproj/project.xcworkspace · high confidence

Introduction of new state management stores for app, conversations, and completions

The application now utilizes dedicated \@Observable\ store classes (\AppStore\, \ConversationStore\, \CompletionsStore\, and \LanguageModelStore\) to manage core state. \AppStore\ handles global reachability checks against the Ollama service and manages UI notifications. \ConversationStore\ orchestrates chat interactions, including sending prompts with optional image attachments, handling streaming responses with UI throttling to prevent freezes, and managing conversation lifecycle (create, delete, select). \CompletionsStore\ provides functionality to load, save, and delete custom completion instructions, while \LanguageModelStore\ manages the list of available models and selection state.

Enchanted/Stores · high confidence

New utility extensions and refactored data persistence

The app introduces a suite of new extension files in the Enchanted/Extensions directory to enhance UI and platform support. These include syntax highlighting for code blocks via the Splash library, platform-agnostic image handling for iOS, macOS, and visionOS, and UI helpers such as a growing button style, conditional view modifiers, and animated gradient text effects. Additionally, the previous Item model has been removed and replaced with a ModelContext extension that provides a saveChanges() method, simplifying how data modifications are persisted.

Enchanted/Extensions · high confidence

Xcode project restructured for multi-platform support and new features

The Xcode project configuration has been significantly updated to support macOS, iOS, and visionOS platforms, replacing the previous single-target setup. This change introduces platform-specific source files (such as ChatView\_macOS and ChatView\_iOS) and integrates new frameworks including Magnet, Splash, MarkdownUI, and AsyncAlgorithms. The project also adds numerous new Swift files to support features like completions, speech recognition, accessibility, and keyboard shortcuts, while removing legacy files like ContentView.swift and Item.swift.

Enchanted.xcodeproj · high confidence

Dependencies

Resolved dependencies for Swift Package Manager

The project now includes a Package.resolved file that pins the versions of all Swift Package Manager dependencies, ensuring reproducible builds. This file explicitly locks libraries such as Alamofire (5.9.1), NetworkImage (6.0.1), swift-markdown-ui (2.4.1), and OllamaKit (from the main branch) to specific revisions, preventing unexpected updates from breaking the build or changing behavior.

(dependencies) · high confidence

Housekeeping

Updated Xcode user scheme order and build suppression settings

The Xcode user-specific project configuration has been updated to change the shared scheme's order hint from 0 to 1 and to add a 'SuppressBuildableAutocreation' setting for a specific buildable target. These changes affect local Xcode workspace preferences and do not alter the application's source code or behavior.

Enchanted.xcodeproj/xcuserdata · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 52 → 49 (-2.6)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 100 → 98 (-1.6)
  • Architecture 98 → 99 (+0.4)
  • Maturity 47 → 47 (+0.0)
  • Readiness 26 → 20 (-5.4)
  • Security 100 → 100 (+0.0)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (1)

  • Documentation: no installation or build instructions (README.md)

New (15)

  • ChatMessageView.body (cognitive 20) (Enchanted/UI/Shared/Chat/Components/ChatMessages/ChatMessageView.swift)
  • Duplicated block (14 lines × 2) (Enchanted/UI/Shared/Sidebar/Components/KeyboardShortcuts.swift)
  • Duplicated block (4–5 lines × 3) (Enchanted/UI/macOS/Components/CompletionButtonView.swift)
  • Floating branch dependency: magnet
  • Floating branch dependency: ollamakit
  • Floating branch dependency: splash
  • MethodTooLong: SettingsView.body (Enchanted/UI/Shared/Settings/SettingsView.swift)
  • Outdated: activityindicatorview
  • Outdated: alamofire
  • Outdated: keyboardshortcuts
  • Outdated: sauce
  • Outdated: swift-async-algorithms
  • Outdated: swift-cmark
  • Outdated: swift-collections
  • Outdated: vortex

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

gluonfield/enchanted was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit dc9bff882411a1317ff0cc5869de7e0515897df0 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.