Development Setup
Prerequisites
| Software | Version | Notes |
|---|---|---|
| macOS | 14.0+ (Sonoma) | Target platform |
| Xcode | 15.0+ | Includes Swift 5.9 |
| Tool | Install | Purpose |
|---|---|---|
| SwiftLint | brew install swiftlint | Linting |
| SwiftFormat | brew install swiftformat | Code formatting |
| GitHub CLI | brew install gh | Used by download-libs.sh |
Quick Start
Download native libraries
.a files (libmariadb, libpq, etc.) from GitHub Releases into Libs/. Takes a few seconds.Configure signing
- Select the TablePro target
- Go to Signing & Capabilities
- Change Team to your Apple Developer account (free account works)
Build and run
Select the TablePro scheme, set destination to My Mac, press
Cmd+R.Or from the command line:Test a plugin you built
The app only loads plugins signed by the same team as the app, so a plugin
you built separately will not install into a release build. To try one in
your local build, add it to the Copy Plug-Ins build phase of the
TablePro target and run, or set
TABLEPRO_ALLOW_UNSIGNED_PLUGINS=1 in
the scheme’s environment to skip the signature check. Once it works, open a
PR so the official CI signs and ships it through the registry.
Project Structure
TablePro
Core
Views
Models
ViewModels
Extensions
Theme
Resources
Plugins
Libs
TableProTests
docs
scripts
Running Tests
Cmd+U.
Linting and Formatting
Troubleshooting
| Problem | Fix |
|---|---|
| Linker errors about missing symbols | Run scripts/download-libs.sh |
| SPM resolution fails | Clean build folder (Cmd+Shift+K), reopen Xcode |
| Build fails after pulling | Delete derived data: rm -rf ~/Library/Developer/Xcode/DerivedData |
Missing Secrets.xcconfig error | Run touch Secrets.xcconfig in project root |
| Code signing errors | Change Team in Signing & Capabilities |
The
-skipPackagePluginValidation flag is required because CodeEditSourceEditor (an SPM dependency) bundles a SwiftLint plugin. Without this flag, CLI builds fail with a validation error.
