Open
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a new Homebrew cask for Tablen (a macOS SQL client) at version 1.21.1.
Changes:
- Introduces
Casks/t/tablen.rbdefining Tablen’s download URL, livecheck, macOS requirement, and zap stanza.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
bevanjkay
reviewed
Apr 9, 2026
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.
After making any changes to a cask, existing or new, verify:
brew audit --cask --online <cask>is error-free.brew style --fix <cask>reports no offenses.Additionally, if adding a new cask:
brew audit --cask --new <cask>worked successfully.HOMEBREW_NO_INSTALL_FROM_API=1 brew install --cask <cask>worked successfully.brew uninstall --cask <cask>worked successfully.About the cask
Tablen is a native macOS SQL client. Website: https://tablen.app. Current stable release:
1.21.1(build32), published via the vendor's own CDN athttps://cdn.tablen.app/releases/Tablen-1.21.1.dmgand surfaced over Sparkle's appcast feed athttps://tablen.app/api/appcast.xml, which is the same feed the app's in-app updater already uses (SUFeedURLinInfo.plist).Manual verification I performed
brew style Casks/t/tablen.rb→ "1 file inspected, no offenses detected".brew audit --cask --online --new tablen→ clean, no problems detected. The audit required two iterations: the first run flaggeddepends_on macos: ">= :sonoma"as too permissive (the app'sLSMinimumSystemVersionis15.0, so it must be:sequoia), and it flagged a version/livecheck mismatch because the Sparkle feed surfaces bothsparkle:shortVersionString=1.21.1andsparkle:version=32. Both were fixed:depends_onis now:sequoia, and thelivecheckblock usesstrategy :sparkle, &:short_versionto extract only the marketing version.HOMEBREW_NO_INSTALL_FROM_API=1 brew install --cask tablen→ installed cleanly.brew uninstall --cask tablen→ uninstalled cleanly.curl -sI https://cdn.tablen.app/releases/Tablen-1.21.1.dmg→HTTP/2 200,content-length: 44296728(matches the local DMG byte count exactly).shasum -a 256 ~/Downloads/Tablen-v1.21.1.dmg→8e4ff369e3d440f75c222581e8db9e2995f16f629569771a081160bcad61f23d— identical to thesha256in the cask.curl -s https://tablen.app/api/appcast.xml→ valid Sparkle RSS,sparkle:shortVersionString=1.21.1,sparkle:version=32,sparkle:minimumSystemVersion=14.0./usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" ~/Downloads/Tablen.app/Contents/Info.plist→app.tablen.macos./usr/libexec/PlistBuddy -c "Print :LSMinimumSystemVersion" ~/Downloads/Tablen.app/Contents/Info.plist→15.0— confirmingdepends_on macos: ">= :sequoia"./usr/libexec/PlistBuddy -c "Print :SUFeedURL" ~/Downloads/Tablen.app/Contents/Info.plist→https://tablen.app/api/appcast.xml— matches thelivecheck url.find ~/Library -iname "*tablen*" -o -iname "app.tablen.macos*"on a machine where Tablen had been launched multiple times, to enumerate every real path the app writes to. I used this as the ground truth for thezapstanza.zapstanza paths.How AI was used
Claude (Opus 4.6) assisted with drafting the cask file and this PR description. Specifically:
cask "tablen" do ... endskeleton usingCasks/t/tableplus.rbas a local style reference in this repo.:sparklelivecheck strategy pointing at Tablen's existingSUFeedURL.Cask/Descviolation on the first draft (desc "Native SQL client for macOS"— descriptions shouldn't mention the platform) and corrected it to"Native SQL client".zap trash:list, which I then corrected after running a real filesystem scan (see below — the final list differs materially from the first proposal).brew auditfailures (:sonomavs:sequoiaand theversion/livecheck mismatch) and proposed the fixes I verified.Manually verified
zapstanza pathsThe seven paths in the
zap trash:stanza are exactly the app-owned locations thefindenumeration returned. Each is described below with how I confirmed ownership and what it contains.~/Library/Application Support/CrashReporter/Tablen_*.plist— per-app CrashReporter plist (e.g.Tablen_D3087F88-A67F-5F7A-9838-20B7F6290113.pliston my machine). Globbed because the suffix is a stable per-install UUID generated by the OS for that specific app bundle.~/Library/Application Support/DBClient— primary data directory. Containsconnections.json,query_history.json,ai_conversations.json,session_cache.json,snapshots/,plugins/,query-autosave/. I confirmed ownership by readingDBClient/Core/Services/ConnectionManager.swift, which explicitly builds the path withappSupport.appendingPathComponent("DBClient"). The folder name differs from the product name because the Xcode project was originally named DBClient before the product was renamed to Tablen.~/Library/Caches/app.tablen.macos— standard macOSNSURLCachedirectory + theio.sentrycrash-reporter working directory + afsCachedData/WebKit filesystem cache.~/Library/HTTPStorages/app.tablen.macos— cookies and HTTP storage used by in-appWKWebViews (license activation, release notes, docs browser).~/Library/Mobile Documents/iCloud~app~tablen~macos— the app's iCloud container. Tablen ships thecom.apple.developer.icloud-container-identifiersentitlement (verified inDBClient/DBClient.entitlementsand in the signed binary's entitlements blob) for CloudKit-backed connection sync. Omitting this would leave user data in iCloud Drive after an uninstall.~/Library/Preferences/app.tablen.macos.plist— standardUserDefaultspreferences plist.~/Library/Saved Application State/app.tablen.macos.savedState— standard macOS window restoration state.Paths I deliberately did NOT include
~/Library/Logs/DiagnosticReports/Retired/Tablen-*.ips—findreturned around thirty of these files on my machine. They are crash dumps that macOS writes and rotates itself under/Library/Logs/DiagnosticReports, and are not owned by the app bundle. Per Homebrew's convention for system-owned locations,zapshould not touch them.app.tablen.macosservice. Tablen stores database passwords and its Sparkle EdDSA key reference there. Following common cask practice,zapdoes not remove Keychain credentials so users who uninstall and reinstall do not lose stored database passwords. Users who want a full wipe can delete those items manually via Keychain Access.~/Library/WebKit/app.tablen.macos— did not exist on my machine (Tablen does not currently use persistent WebKit storage beyond whatHTTPStoragesalready covers). Not included to avoid listing a path that is never actually created.