Skip to content

Building and Dependencies

QenTerra edited this page Jul 29, 2026 · 1 revision

Building and Dependencies

Unspool is currently distributed as source. The validated development target is an Apple silicon Mac running macOS 26 or later with Xcode 27 or later.

Quick build

git clone https://github.com/QenTerra/unspool.git
cd unspool
brew bundle
xcodegen generate --spec project.yml
open Unspool.xcodeproj

Provide a locally built universal TDLib XCFramework at Vendor/TDLib/TDLib.xcframework, then select the Unspool scheme and run on My Mac.

Xcode selection

Build commands use the active full-Xcode xcode-select path or a caller-provided DEVELOPER_DIR. A conventional per-shell override is:

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

Adjust the path when Xcode uses another name or location.

Project generation

project.yml is the source of truth for:

  • deployment target;
  • Swift language and strict-concurrency settings;
  • app, unit-test, UI-test, and bridge targets;
  • dependencies;
  • Info.plist values;
  • sandbox entitlements;
  • shared scheme test targets.

After editing it, run:

xcodegen generate --spec project.yml

Do not hand-edit generated target membership as a lasting change.

Runtime dependencies

Component Current repository pin or source Purpose
TDLib Commit 022d60202e446ad1287b9fb68e687c8a0760788b Telegram protocol client
OpenSSL 3.6.3 with committed archive SHA-256 Cryptography for locally built TDLib
SwiftUI, AppKit, Foundation, Observation, Security Compatible Xcode/macOS SDK UI and platform services
libc++, zlib, SQLite macOS SDK/runtime Native dependencies linked by the bridge

Generated TDLib.xcframework contains arm64 and x86_64 slices but is not committed. The automated app gate currently targets arm64.

TDLib artifact

Build TDLib from the official source using the revision and OpenSSL metadata under Vendor/TDLib. Follow TDLib's official build instructions. The local XCFramework must contain arm64 and x86_64 slices and the JSON interface headers. Do not mix a generated artifact with different committed pin metadata.

Development tools

Brewfile declares XcodeGen, SwiftFormat, SwiftLint, xcbeautify, CMake, Ninja, pkg-config/pkgconf, gperf, OpenSSL 3, and PHP. Homebrew resolves current formula versions; these tools are not shipped inside the app.

For exact licenses and update procedure, see Dependencies and Third-party notices.

Clone this wiki locally