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:
Keysat
2026-06-13 14:25:05 -05:00
parent db580abad7
commit 0ae59f3550
176 changed files with 23823 additions and 803 deletions
+12
View File
@@ -0,0 +1,12 @@
import { VersionInfo } from '@start9labs/start-sdk'
export const v_0_2_62 = VersionInfo.of({
version: '0.2.62:0',
releaseNotes: {
en_US: 'Mobile UX cleanup pass plus Gemini model fixes. (1) iOS Safari no longer auto-zooms the page when you tap into the URL input on mobile — the input\'s font-size is now 16px (Safari\'s anti-zoom threshold) at every mobile breakpoint, which keeps the Summarize button from getting pushed off the right edge on focus. (2) URL input placeholder shortened from "Paste a YouTube video, channel, or podcast RSS URL…" to "YouTube or podcast URL…" so it doesn\'t truncate mid-word on phone widths. (3) The "Processing" banner that appears while a video is in flight now truncates long YouTube URLs (with tracking params) at 45 chars + … and makes the Cancel button non-shrinkable, so it can\'t get cut off on narrow screens. (4) Activity log line "Relay capabilities: max 60 min / 30 MB / chunk=2700 (routing this install to Gemini (pref=gemini_first, tier=core))" replaced with plain-language "Relay will transcribe up to 60 minutes per upload." — internal routing tiers / preferences are no longer surfaced to end users. (5) Gemini Flash model identifiers dropped the "-preview" suffix (3.1-flash-preview → 3.1-flash, 3-flash-preview → 3-flash) since Google has retired the preview-named endpoints. Pro variants are unchanged for now; if those also start 404\'ing we\'ll do the same rename pass. The transcription model dropdown now prefers gemini-3.1-flash as the default since it\'s the newest stable Flash.',
},
migrations: {
up: async ({ effects }) => {},
down: async ({ effects }) => {},
},
})