feat(ios): replace the TestFlight beta with the App Store launch - #35
Merged
Merged
Conversation
TablePro for iPhone and iPad shipped on the App Store on 2026-09-22. The site still offered a TestFlight invite form posting to /beta/signup, called the app a beta in three places, and said it ran "Seven engines on device" — a figure that stopped being true on 2026-08-08 when Oracle shipped and the picker reached ten. Every iOS fact below was read out of TableProMobile/ in the app repository rather than out of the App Store listing, which is marketing copy. A new /ios page carries the detail: route, controller, sitemap entry at 0.9/weekly, and its own SoftwareApplication node with an @id distinct from the homepage's, which describes the Mac app. The closing CTA keeps the #mobile anchor and an App Store badge; the header menu and mobile nav point at /ios. Corrections, each against a Swift source: - Ten engines in the connection picker, named rather than counted. Seven was the count of DatabaseDriver classes; MariaDB, TiDB and OceanBase ride the MySQL driver and Redshift rides PostgreSQL. - iCloud Sync is ungated on iOS (one preference, no licensing code in the mobile target at all) and Starter on the Mac. An iPhone never takes an activation slot: activation is keyed on the macOS IOPlatformUUID. - ProFeature has ten cases, eight Starter and two Team. Data Rewind had shipped in the app and appeared nowhere on this domain, so the pricing table undersold Starter by a feature. LicenseFeaturesTest moves with it. - Analytics are on by default on the Mac and off until tapped on iOS, so /privacy states them separately. It also now discloses that iCloud Sync puts host, port, username and saved-query SQL in the reader's own iCloud — "nothing leaves your device" was not a claim this app could make. - No visionOS. TARGETED_DEVICE_FAMILY is "1,2"; the App Store lists Vision Pro because a compatible iPad app runs there. Screenshots are three matched light/dark pairs at 1206x2622, driven through the real app by the TableProMobileScreenshots UI test against the bundled Chinook database, with the status bar pinned. The pair they replace disagreed on the clock and its alt text described a table it did not show. Apple's badge is committed byte-for-byte as supplied, in both themes, and referenced through <img> so no ancestor rule can recolour it. Four pre-existing defects, unrelated to iOS: - database-grid.tsx claimed "Twenty six tiles, twenty five drivers" against 29 and 23. It survived EngineCountTest because that guard matches a digit, and a number spelled as a word is invisible to it. - Compare.tsx published a /compare breadcrumb to a route that does not exist, on all eleven pages. - site.webmanifest declared a 512x512 icon against a 256x256 file. - Five database pages shipped an og:image that 404s. All 26 database and 12 blog cards now exist. The ssr CI job ran one file, so 43 of 222 tests skipped on every push. It runs the whole suite under REQUIRE_SSR now, which turns a skip into a failure. Verified: 232 passed, 0 skipped, 2918 assertions with a fresh bundle and a restarted SSR service; tsc, Pint and the node tests clean.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TablePro for iPhone and iPad shipped on the App Store on 2026-09-22. The site still offered a TestFlight invite form posting to
/beta/signup, called the app a beta in three places, and said it ran "Seven engines on device" — a figure that stopped being true on 2026-08-08 when Oracle shipped and the picker reached ten.Every iOS fact here was read out of
TableProMobile/in the app repository rather than out of the App Store listing, which is marketing copy.The new page
/ioscarries the detail: route, controller, sitemap entry at 0.9/weekly, and its ownSoftwareApplicationnode with an@iddistinct from the homepage's, which describes the Mac app. The closing CTA keeps the#mobileanchor and an App Store badge; the header menu and mobile nav point at/ios.What the app source said that the site didn't
DatabaseDriverclasses — MariaDB, TiDB and OceanBase ride the MySQL driver, Redshift rides PostgreSQLIOPlatformUUIDTARGETED_DEVICE_FAMILYis"1,2"; the App Store lists Vision Pro because a compatible iPad app runs there/privacyalso now discloses that iCloud Sync puts host, port, username and saved-query SQL in the reader's own iCloud. "Nothing leaves your device" was not a claim this app could make.Screenshots
Three matched light/dark pairs at 1206×2622, driven through the real app by the
TableProMobileScreenshotsUI test against the bundled Chinook database, with the status bar pinned. The pair they replace disagreed on the clock and its alt text described a table it did not show.Apple's badge is committed byte-for-byte as supplied, in both themes, and referenced through
<img>so no ancestor rule can recolour it.Four pre-existing defects
database-grid.tsxclaimed "Twenty six tiles, twenty five drivers" against 29 and 23. It survivedEngineCountTestbecause that guard matches a digit, and a number spelled as a word is invisible to it.Compare.tsxpublished a/comparebreadcrumb to a route that does not exist, on all eleven pages.site.webmanifestdeclared a 512×512 icon against a 256×256 file.og:imagethat 404s. All 26 database and 12 blog cards now exist.CI
The
ssrjob ran one file, so 43 of 222 tests skipped on every push — all ofLandingStructureTest,ProductHuntBadgeTest,TopBannerTestand the rendered halves of three more were green-by-skip. It runs the whole suite underREQUIRE_SSRnow, which turns a skip into a failure. Expect this job to take longer and to actually mean something.Review
An adversarial pass over the diff raised 42 findings; 28 were refuted and 14 fixed. Four were mine and material:
/privacysaid the iOS heartbeat sends no CPU architecture. It always sends"arm64"—architectureis non-optional in the shared payload./privacysaid queries are never synced. The Mac syncs saved-query SQL text and startup commands; the pricing table advertised the sync the privacy page denied.toContain('Oracle')passed with Oracle deleted from the grid. Now an exacttoBeover the grid's own cells, mutation-tested.Verification
232 passed, 0 skipped, 2918 assertionsunderREQUIRE_SSR=1with a fresh bundle and a restarted SSR service.tsc --noEmit, Pint andnpm run test:jsclean./iosprobed live at 320/640/1024/1440px: no overflow, oneh1, no skipped heading levels, all screenshots decoding.Before merging
platformprop in Plausible, or the Mac/iOS download split will not be queryable.$899 SSMSfigure indatabases.json(SSMS is a free download — that looks like a SQL Server licence price).