Tilde is a lightweight native macOS plain-text editor with Markdown preview and
a Finder Quick Look extension. The editor is built around NSDocument, a
document-owned NSTextStorage, and NSTextView; SwiftUI provides the surrounding
window UI and settings.
The project requires macOS 15+, Swift 6, and Xcode with the macOS 15 SDK.
- Contributing and development workflow
- Architecture and module boundaries
- Keyboard shortcuts
- Editor experience roadmap
- Release checklist
- Architecture decisions
- Performance baseline
- Dependency license audit
The package manifest is the source of truth for application code, dependencies,
and tests. The Xcode project in Host/ only packages those products into the
macOS app and Quick Look extension; see the architecture guide
for the boundary in more detail.
Swift Package Manager owns all application logic, reusable UI, dependencies, tests, and the benchmark tool:
swift build
swift test
swift run TildeDependencies are pinned to exact revisions in Package.swift and
Package.resolved. TildeBenchmark is also an SPM executable product:
scripts/run-benchmarks.shThe command-line opener supports paths, line numbers, multiple files, and a separate window:
swift build -c release --product tilde-cli
scripts/install-cli.sh
tilde README.md:20The installer places tilde in ~/.local/bin. Set TILDE_CLI_PATH to install
a different binary.
SwiftPM cannot declare Apple .app and .appex bundle product types. The thin
project in Host/ only packages the local TildeApplication and
TildeQuickLook SPM products; it is not a second source or dependency graph.
scripts/build-host.sh Debug
scripts/verify-host.sh DebugThe verified app is written to
.build/HostDerivedData/Build/Products/Debug/Tilde.app. Local builds are ad-hoc
signed. Distribution builds require the project's Developer ID identity and
notarization credentials.
The host packaging configuration currently targets Apple Silicon (arm64)
only. This is intentional for the current development and release setup:
Tilde does not currently produce an Intel or Universal binary. The architecture
is constrained both by Host/TildeHost.xcodeproj and by
scripts/build-host.sh; both locations must be updated together if Intel or
Universal support is added. Such a change also requires validating all pinned
SwiftPM dependencies and the signed Release artifact on both architectures.
To create a local DMG from a verified build:
scripts/build-dmg.sh ReleaseThe generated DMG is intentionally ignored by Git. Release signing, notarization, and clean-machine validation are tracked in the release checklist.
To install the latest release with Homebrew:
brew tap magalab/homebrew-tap
brew install --cask tildeThe Homebrew cask also installs the tilde command from inside the app bundle,
so no separate Swift build or CLI installer is needed.
- SPM-first ADR
- Native host and Quick Look ADR
- Performance baseline
- Keyboard shortcuts
- Dependency license audit
- Release checklist
The project is licensed under the MIT License. Third-party dependencies remain subject to their own licenses; see the dependency license audit.