Add multi-tenant cloud mode: self-serve purchase, credit metering, core-decoupling
Introduces RECAP_MODE=multi alongside single-mode self-host: - Tenant auth + accounts (magic-link via System SMTP), per-tenant credit pool, anonymous trial minting with per-IP/-64 caps - Self-serve Pro/Max purchase: inline Lightning (BTCPay) + card (Zaprite), prepaid 30-day periods, expiry-reminder emails - Core-decoupling: relay owns cloud tier/expiry keyed by Recaps user-id - SQLite (better-sqlite3) schema for multi-mode; filesystem unchanged for single - StartOS actions/versions through 0.2.155
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
import { VersionInfo } from '@start9labs/start-sdk'
|
||||
|
||||
export const v_0_2_55 = VersionInfo.of({
|
||||
version: '0.2.55:4',
|
||||
releaseNotes: {
|
||||
en_US:
|
||||
'Three flagship features for the relay + share-URL pipeline:\n\n' +
|
||||
'• Apple Podcasts share URLs (podcasts.apple.com/...?i=...) are now resolved automatically — paste the share link and Recap turns it into the underlying audio enclosure via iTunes Lookup. No more digging up the RSS feed.\n\n' +
|
||||
'• Spotify episode share URLs (open.spotify.com/episode/...) are resolved via PodcastIndex when the operator configures a free PodcastIndex API key under StartOS → Recap → Actions → "Set PodcastIndex Credentials". Spotify Originals/exclusives that have no public RSS get a clear, actionable error.\n\n' +
|
||||
'• Relay-URL fast-path: when transcription routes through the operator\'s relay AND we have a public source URL, Recap hands the URL directly to the relay so it can download the audio over its symmetric datacenter pipe instead of asking the buyer to upload 100MB of MP3 from a home connection. Often shaves the slowest leg off the whole pipeline. Falls back to the local-download path transparently if the relay rejects or fails.\n\n' +
|
||||
'Also: when the relay reports hardware-capable backends via /relay/capabilities (operator routing prefers Parakeet), Recap skips audio chunking entirely — full file goes through in one shot.',
|
||||
},
|
||||
migrations: {
|
||||
up: async ({ effects }) => {},
|
||||
down: async ({ effects }) => {},
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user