Skip to content

Codebase Map

QenTerra edited this page Jul 29, 2026 · 2 revisions

Codebase Map

This page maps product responsibilities to the current repository.

Application

Path Responsibility
Unspool/App/UnspoolApp.swift Application entry and scene
Unspool/App/UnspoolRootView.swift Setup versus main shell
Unspool/App/AppEnvironment.swift Live, preview, and UI-test dependency construction
Unspool/App/AppModel.swift Main-actor application state
Unspool/App/AppModel+Attachments.swift Chat activation, scans, filters, and selection intents
Unspool/App/AppModel+Downloads.swift Preflight, queue, retry, and persistence intents
Unspool/App/AppModel+Runtime.swift Telegram startup, events, and recovery
Unspool/App/AppModel+Presentation.swift Derived labels and product errors
Unspool/App/AppPreferences.swift Global and per-chat preferences
Unspool/App/AttachmentScanCache.swift In-memory chat/range scan isolation

Domain

Path Responsibility
Domain/Attachment.swift Attachment value and eligibility
Domain/AttachmentIdentity.swift Stable chat/message/file identity
Domain/AttachmentFilename.swift Filename provenance and fallback
Domain/AttachmentCategory.swift Extension/media classification
Domain/AttachmentFilter.swift Combined filter predicate
Domain/AttachmentSort.swift Sort strategies
Domain/AttachmentSelection.swift Eligible selection and summaries
Domain/MessageScanLimit.swift Bounded and exhaustive history options
Domain/DownloadModels.swift Preflight, conflict, progress, outcome, history, recovery
Domain/TelegramAPICredentials.swift Credential validation

Features

Directory Responsibility
Features/Setup Progressive Telegram and folder setup
Features/Browse Chats, filters, attachment table, preflight, inline queue
Features/Downloads Active progress, recovery, and chronological history
Features/Settings Telegram, browsing, download, and appearance controls
Features/Shared Rail, headers, and extension badge
DesignSystem Soft Graphite palette, surfaces, motion, focus, and buttons

Infrastructure

Directory or file Responsibility
Infrastructure/TDLib/TDLibClient.swift Ordered correlated JSON client
TDLibReceiveLoop.swift Native blocking receive boundary
TelegramSessionController.swift TDLib lifecycle and event stream
AuthorizationCoordinator.swift Typed account input commands
ChatRepository.swift Cached and live chat normalization
AttachmentHistoryService.swift Correct history pagination
TDLibAttachmentMapper.swift Message-content to attachment mapping
Infrastructure/Downloads/DownloadCoordinator.swift Bounded scheduling
DownloadPreparation.swift Preflight and per-file worker
DestinationAccess.swift Bookmark, capacity, path, and atomic placement
Infrastructure/Persistence Actor-backed JSON stores
Infrastructure/Security Keychain credential store

Native bridge and configuration

Path Responsibility
TDLibBridge/ C++ wrapper around TDLib JSON C API
Vendor/TDLib/ Pin metadata and upstream license texts
project.yml Generated-project source of truth
Config/ Shared Xcode configurations
Brewfile Development tool declarations

The repository does not include project-specific automation scripts. Project generation, formatting, linting, tests, and builds use the direct commands documented in Building and Dependencies.

Tests

  • UnspoolTests/ contains Swift Testing suites and TDLib fakes.
  • UnspoolUITests/ contains macOS application UI tests.
  • PreviewSupport/FixtureFactory.swift supplies synthetic visual states without touching real preferences or accounts.

Paths in the table are relative to Unspool/ unless shown from the repository root.

Clone this wiki locally