Crafting Table is an early-stage native personal workbench. macOS is the first active platform and iPad is the second. The current foundation intentionally presents no workflow capability while the project is reconstructed around clear application and Core boundaries.
Short form: Crafting Table
Abbreviation: CT
Current app version: 0.1.0
This repository is personal/internal software. It is useful as a working app foundation and technical playground for a tech user who wants their own productivity surface, but it is not packaged as a consumer product yet.
- native macOS and iPad application shells;
- the Crafting Table product identity;
- an honest foundation workbench with a secondary
ct-coreintegration marker.
apps/apple/macOS/ SwiftUI macOS app source
apps/apple/iPad/ SwiftUI iPad app source
apps/apple/CraftingTable.xcodeproj/
Apple Xcode project
apps/apple/CTCoreIntegration/
One reviewed generated Core facade
packages/core/ Active Rust CTCore foundation
assets/brand/AppIcon.png Canonical active shell identity
archive/codex-remote/ Disconnected retired Codex Remote implementation
archive/local-llm/ Disconnected retired Local LLM implementation
scripts/ Local launch and deterministic brand helpers
docs/ Sparse product and technical truth
tasks/ Volatile task packets and implementation notes
- macOS with Xcode installed.
- iOS Simulator or a connected iPad.
- Swift toolchain available through Xcode.
- Rust 1.93.0 for the retained CTCore boundary.
- Network access only for explicit toolchain/dependency bootstrap when local caches are absent.
The deployment floors are macOS 14 and iPadOS 17. The final reconstruction was verified with Xcode 26.2.
Build and launch macOS, the first platform:
./scripts/launch-macos.shBuild for a generic iOS Simulator destination on the second platform:
xcodebuild \
-project apps/apple/CraftingTable.xcodeproj \
-scheme CraftingTable \
-destination 'generic/platform=iOS Simulator' \
-derivedDataPath .build/DerivedData \
CODE_SIGNING_ALLOWED=NO \
buildLaunch on an available iPad simulator:
./scripts/launch-ipad-simulator.shBy default this prefers iPad Pro 11-inch (M4). Override the simulator name with:
SIMULATOR_NAME='iPad Pro 13-inch (M5)' ./scripts/launch-ipad-simulator.shBuild, install, and launch on a connected iPad:
./scripts/launch-ipad-device.shIf Xcode cannot infer your team, pass it explicitly:
DEVELOPMENT_TEAM='<team-id>' ./scripts/launch-ipad-device.shassets/brand/AppIcon.png is the sole checked-in identity source for active shells. To distribute its deterministic, network-free native derivatives explicitly:
xcrun --sdk macosx swift ./scripts/brand/distribute-app-icon.swiftNormal Xcode builds consume the checked-in asset catalogs and never fetch or generate identity assets.
Both Apple targets compile the same reviewed UniFFI facade and depend on the one CTCoreAppleArtifact producer. Prepare Apple Rust targets and the locked dependency cache explicitly on a new machine:
./scripts/bootstrap-ctcore-apple.shThat command may use the network. Normal Xcode builds invoke the locked/offline producer and never update tracked generated source. An intentional Core facade change uses:
./scripts/build-ctcore-apple.sh --update-generatedReview the generated diff before continuing. The current probe is temporary integration evidence, not a product capability or health API.
Codex Remote and Local LLM are disconnected source archives under archive/. They are not active product surfaces, normal build dependencies, or support promises.
Run the affected Core checks:
cargo fmt --manifest-path packages/core/Cargo.toml --check
cargo clippy --manifest-path packages/core/Cargo.toml --locked --offline --lib -- -D warnings
cargo check --manifest-path packages/core/Cargo.toml --locked --offline --libCodex App local environment actions are declared in:
.codex/environments/environment.toml
Crafting Table is still a foundation repo. The durable product truth lives in docs/10-prd/; cross-unit technical truth lives in docs/20-product-tdd/; task-local exploration and implementation notes live in tasks/.
When contributing, keep changes small, reversible, and honest. Prefer native SwiftUI patterns, avoid speculative architecture, and keep unfinished surfaces visibly unfinished.
For fast local diagnosis, each Apple App owner emits one lifecycle and one Core-boundary signal through Apple unified logging. Launchers print the matching direct inspection command; the applications own no log store, telemetry, analytics, or diagnostics UI.
No license has been declared yet.