Wheelwright Privacy Policy

Effective date: 2026-10-03 · Last updated: 2026-11-04

Wheelwright keeps your personal app records on your device. We do not operate an account service or a cloud copy of those records. The app does not upload those records to us. Purchases use Apple’s StoreKit; sharing, support, and system services are described below.

Who is responsible

Wheelwright is published by an independent iOS developer (Apple Developer Team ID ZM8LF8494F). Questions and privacy requests:

Contact: captainlongevity@gmail.com

The records stored on your device

These records and preferences are used to provide the app features you choose. Local calculations do not send the input records to a developer-operated service. There is no in-app account or developer-operated cross-device sync.

How Wheelwright handles its main features

Spoke calculations, tension conversions, and comparisons run locally. Wheelwright does not connect to a tensiometer, scrape component databases, or upload customer tags or build photos.

Optional permissions and system services

Permissions are requested in connection with the feature that needs them. You can refuse or revoke them in iOS Settings; features that need a refused permission may be unavailable. Selected photos and files are separate from granting unrestricted access to an entire library.

Widgets, shortcuts, and session displays

Widgets and shortcuts use locally stored or cached app data in this app’s shared container. Information you choose to display can be visible on a Home Screen or Lock Screen; use the system’s display and notification settings for sensitive records. These displays do not create a developer-operated upload service.

Sharing, exports, and external links

A build-sheet PDF is generated on your device and handed to the iOS Share Sheet when you choose to share it. There is no full-archive export or import.

Generating a file locally does not send it to us. When you choose a sharing destination, that app or provider can receive the selected content and apply its own privacy and retention rules. Opening a web link sends an ordinary request to the linked site. Review a report, photo, or screenshot before sharing information about yourself or others.

Apple purchases and diagnostics

Apple handles in-app payment and subscription billing. The app processes StoreKit product and transaction information to purchase, restore, and verify paid access. We do not receive your payment-card details or billing address through the app. Apple may provide sales reports and, depending on your Apple settings, diagnostic information through its developer services.

The updated App keeps a pending request as an informational state in memory, not proof of a completed purchase. Apple does not send a transaction when Ask to Buy is declined. You can refresh access or explicitly retry the purchase without restarting the App; retrying does not cancel an earlier request or grant paid access. Purchase and restore operations cannot overlap, and access still requires a verified eligible transaction.

The updated App keeps verified product identifiers and subscription expiry dates or a lifetime-access marker in a local purchase-access cache. A missing or unverified lookup does not erase a still-valid verified grant; verified revocation, upgrade or expiry can remove that grant. This cache is separate from build records and contains no payment-card details. Older installed versions may use the earlier access cache until updated.

Apple’s handling of purchases, device services, backups, and diagnostics is described in Apple’s privacy information.

Analytics, advertising, and tracking

We have not added advertising, behavioral analytics, or third-party crash-reporting SDKs to Wheelwright. We do not sell your app records or use them for cross-app advertising tracking. This does not mean that Apple, an external site you open, or an optional data provider receives no connection information. Their exchanges are described above.

Retention, deletion, and device security

The updated App strictly reads matching tension snapshots and photo entries, then commits their deletion together with the selected build. A failed read/save leaves these records available for retry. Unassigned and already detached records are retained; no automatic orphan purge is performed. Tool profiles remain separate; deleting a tool profile does not rewrite or erase frozen build and tension history. There is no Recently Deleted or full-database archive import; a build-sheet PDF is a reference copy.

Removing the App normally removes its local container, not independently kept original media, exported files, recipient copies or older backups. Manage those copies separately. Device-backup recovery requires a usable completed backup; the developer has no record archive to retrieve.

Use a device passcode and appropriate operating-system protections. Optional App Lock, where available, is an access control and is not a promise that every copy, export, notification, or widget is encrypted or hidden. Because we hold no remote journal copy, we cannot recover a lost local record or delete a copy you sent to another provider.

If you contact support

Emailing captainlongevity@gmail.com voluntarily gives us your email address, message, and any attachments you send. We use that information to answer your request, investigate the issue, and meet applicable recordkeeping obligations. It is processed through email providers and kept as needed for those purposes; you may ask us to delete support correspondence, subject to any legal retention requirement. Please omit unnecessary private records.

This policy website

These static legal pages are hosted by Vercel. Loading a page makes a web request that can disclose your IP address, page URL, time, and browser or connection metadata to the host for delivery and security. We have added no advertising or analytics scripts to these pages.

Hosting information: Vercel’s Privacy Notice.

Children and privacy requests

Wheelwright is not designed to solicit children’s personal information through accounts or a developer-operated journal service. If you believe a child has provided personal information to us through support, contact us. You can manage local records yourself and contact us about support correspondence or other data we actually hold. For information held by Apple or another provider, use that provider’s request process.

Policy changes and contact

We will update this page and its last-updated date if these practices change. Material changes to app data handling will be explained before or when the affected feature is introduced. Privacy questions: captainlongevity@gmail.com.

Optional sample records

In the updated app, Settings offers Add sample records with a confirmation. Samples are stored locally alongside ordinary records, can appear in totals, exports and widgets where those records are supported, and count toward applicable free limits. Adding samples does not erase existing records or grant paid access. Existing sample records from earlier versions remain until removed using the app’s applicable record controls.

The updated app stores the identifiers of builds and tool profiles inserted by its sample action in local preferences. Confirmed Remove sample records deletes only those tracked builds and their attached tension snapshots and photo entries after a successful save. A tracked tool profile is retained if a remaining snapshot uses it. Older untracked samples and unrelated builds, snapshots, photos and tool profiles are kept; names such as round 1 are not used to select records for this cleanup. Removal of active database records does not erase independent exports, older backups or guarantee immediate physical erasure of stored media.

When saved records cannot be opened

If the original local database cannot be opened, the updated App shows recovery guidance without creating an empty substitute store or starting normal database tasks. It preserves original files without promising repair. Earlier widget summaries, notifications and independent files may remain. Temporary form editing and intentional preview or test databases are not generally prohibited.

Check available device storage, close and reopen the App, and contact support before deleting or reinstalling it. This recovery screen is not a backup, a repair guarantee or an automatic restoration of missing records. Older installed versions may behave differently until updated.

Save failures, photos and session recovery

Build, component and tool forms keep temporary input until a checked Save. Cancel discards the current form without rolling back unrelated pending changes. A save or delete failure is reported rather than announcing success; input remains available to retry. Unchanged profile fields and opaque calibration bytes are retained rather than replaced merely by opening a form. Full-precision existing values are not rounded when hydrated. Closing a view or the App can lose unsaved form or photo-preparation input.

Selected photo bytes are prepared as a batch and then inserted in one checked database save. A failure does not intentionally save only part of that batch; the view offers retry or clear. No new photo is attached by a late callback after leaving the view. Imported bytes can retain embedded timestamps, device or location metadata. The App uses the system picker, not unrestricted library access or camera capture. Existing photo bytes are not removed because an image cannot currently decode. Photos use SwiftData external storage; deletion removes active records after commit and does not promise immediate physical erasure of every SQLite, media, backup or system copy.

A saved build contains a frozen calculation and provenance. Duplicating copies the frozen specification, name, customer tag and notes into a new build; it does not copy the original photos or snapshot history. Rebuild opens a fresh calculator for a separate save. Editing a component does not rewrite earlier frozen builds. User-entered component values and measurement-helper overrides have distinct labels; neither is a manufacturer verification.

Live tension-session recovery is a separate local preference copy, not the database or a full archive. It keeps the latest session’s identifiers, target, tolerance, position and entered readings. The updated format also keeps input mode, calibration points, current entry and geometric ratio; older copies may lack these fields. Saved calibration is used to resume without silently adopting an edited/deleted tool’s curve. Invalid frozen calibration is reported without adopting a different profile. An older curve-mode copy that lacks frozen calibration can use its current valid tool profile with an explicit reminder to verify that it matches the original; its previously recorded kgf values remain unchanged. Missing or invalid legacy calibration is reported and retained rather than treating raw readings as direct kgf. An encoding failure retains an earlier resume copy. Closing after further unsaved session changes attempts to preserve a new resume copy instead of clearing it merely because an earlier round was saved.

Deleting a build or tool profile does not automatically clear the separate resume preference. A missing linked build prevents saving a new attached snapshot until that reference is resolved; existing readings remain. Starting and persisting another session can replace the single latest resume copy. Corrupt or legacy bytes may remain for support/recovery review. Frozen snapshot kgf values are retained when a tool profile is deleted. This is not complete recovery of every session or original calibration in older versions.

The build-sheet PDF is an unencrypted readable selected report of frozen component/provenance details, spoke lengths, warnings, notes and available tension statistics. It omits photo originals and the complete snapshot history and cannot restore the database. Long text is paginated with the measurement warning on every page. Temporary PDFs may remain after sharing, interruption or cleanup failure; no immediate or periodic purge is guaranteed. Sharing destinations and recipients can keep their own copies. Device-backup recovery requires a usable completed backup and Apple’s restoration process.

Free creation limits count 2 currently stored builds, 1 currently stored tool profile and 1 currently stored snapshot per build; standalone snapshots are outside that per-build cap. Manual calculations, formula sheets, both measurement helpers, App Lock and the optional generic re-tension notification are free. Pro adds the saved component library, more records, snapshot comparison, PDF and widgets. Existing records are not deleted when paid access ends. The optional nudge is a generic approximately fourteen-day local reminder, not linked deletion/scheduling for each build or a safety inspection service.