Skip to main content

Development Setup

Prerequisites

Optional but recommended:

Quick Start

1

Clone the repository

2

Download native libraries

This pulls pre-built .a files (libmariadb, libpq, etc.) from GitHub Releases into Libs/. Takes a few seconds.
Skipping this step causes linker errors. The static libraries are not checked into git.
3

Create build config

Empty file is fine for development. Production builds use this for API keys.
4

Install tools

5

Open in Xcode

6

Configure signing

  1. Select the TablePro target
  2. Go to Signing & Capabilities, Debug sub-tab
  3. Change Team to your Apple Developer account (a free personal team works)
  4. Change the Bundle Identifier from com.TablePro to something unique, for example com.yourhandle.TablePro
The Debug configuration signs with TablePro.Debug.entitlements, which drops the iCloud capability, so a free personal team can sign it without a paid Apple Developer Program membership. If another target still shows a team error (a driver plugin or the MCP server), set its Team the same way.Do not commit the resulting project.pbxproj changes; they break official Release signing. Hide them locally:
7

Build and run

Select the TablePro scheme, set destination to My Mac, press Cmd+R.Or from the command line:
Xcode writes the built app to DerivedData (~/Library/Developer/Xcode/DerivedData/TablePro-*/Build/Products/Debug).
Writing a driver plugin? See Plugin Development to build one and Testing a Custom Plugin to run it in your local build.
Xcode setup

Xcode project setup

Project Structure

TablePro
Models
ViewModels
Extensions
Theme
Resources
TableProTests

Running Tests

Or in Xcode: Cmd+U. To run a single class or method, pass -only-testing:TableProTests/TestClassName or -only-testing:TableProTests/TestClassName/testMethodName.

Linting and Formatting

Before committing:
CI rejects warnings, so plain swiftlint lint is not enough. Full tooling reference: Code Style.

Troubleshooting

The -skipPackagePluginValidation flag is required because CodeEditSourceEditor (an SPM dependency) bundles a SwiftLint plugin. Without this flag, CLI builds fail with a validation error.