-
Notifications
You must be signed in to change notification settings - Fork 0
Codebase Map
QenTerra edited this page Jul 29, 2026
·
2 revisions
This page maps product responsibilities to the current repository.
| 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 |
| 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 |
| 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 |
| 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 |
| 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.
-
UnspoolTests/contains Swift Testing suites and TDLib fakes. -
UnspoolUITests/contains macOS application UI tests. -
PreviewSupport/FixtureFactory.swiftsupplies synthetic visual states without touching real preferences or accounts.
Paths in the table are relative to Unspool/ unless shown from the repository
root.
Unspool is an independent project and is not affiliated with Telegram. Repository · Privacy · Security · MIT License
- Getting Started
- Detailed Telegram Setup
- Feature Overview
- Chats and History
- Attachments and Filenames
- Search and Selection
- Download Workflow
- Conflicts and Recovery
- Download History
- Settings
- Accessibility
- Troubleshooting
- Detailed Troubleshooting and FAQ
- Privacy and Security
- Detailed Security Model
- TDLib Integration
- Persistence
- Concurrency and Errors
- Glossary