The next generation is a Tuist-generated SwiftUI workspace with three thin app shells and one shared Swift package:
Apps/iOSApps/watchOSApps/tvOSPackages/PutioCore
The shipping legacy application remains on the protected main branch while the rewrite develops on next.
PutioCore carries the generated design-token adapter and the shared component kit. Design direction lives in DESIGN.md: native platform elements with put.io theming, never ports of web component recipes.
Install mise, then run:
mise install
mise run bootstrapNo Tuist account, application secret, or signing material is required. Bootstrap also downloads the licensed GT America and Berkeley Mono fonts into the ignored Resources/BrandFonts directory; see Contributing for the manifest and repair commands.
mise run generate # regenerate Putio.xcworkspace without opening Xcode
mise run open # regenerate and open the workspace
mise run tokens # regenerate the committed Swift design-token adapter
mise run fonts-setup # provision the checksummed licensed fonts
mise run test # tooling tests, swift-format lint, PutioCore and harness tests
mise run build # build all three app shells
mise run verify # generate, doctor, test, build, and both snapshot suites
mise run harness # typed headless simulator harness (`-- help`)PutioCore exposes the generated PutioTheme API consumed by every app shell. The dark-only adapter emits semantic Swift roles plus a semantic color asset catalog from the exact @putdotio/design version in pnpm-lock.yaml. Change tokens through the procedure in Contributing.
The raw spacing scale remains fixed. Content-coupled gaps and meaningful interface icons use generated PutioMetricRole values with an explicit Dynamic Type text style; structural layout, overscan, radii, borders, and minimum interaction geometry do not scale implicitly.
Semantic typography roles resolve to the bundled GT America faces on every shell. Berkeley Mono is available only to iOS and watchOS; tvOS has no mono role or mono font resource. System fallback remains active per glyph for filenames outside the brand fonts character repertoire. Semantic numeric roles use tabular figures: Berkeley Mono on iOS and watchOS, and GT America with OpenType tabular figures on tvOS.
- iOS:
io.put.dev.ios - watchOS companion:
io.put.dev.ios.watchkitapp - tvOS:
io.put.dev.tvos
Production identities and delivery lanes are tracked separately.
If removing saved credentials or revoking the session fails, the app reports that sign-out did not finish and offers a retry. It blocks restoring or starting a session in that app instance until sign-out succeeds. If both operations fail, closing and reopening the app can still restore the retained token; finish the retry before closing the app. Sign-out intent is not persisted separately.
See Contributing for local setup, verification, and runtime proof.
This project is available under the MIT License
