diff --git a/CONTEXT.md b/CONTEXT.md index 5888800a..0fa86a05 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -136,7 +136,7 @@ _Avoid_: Remote button, hotkey, GPI ### Licensing **Pro**: -The one-time unlock that records every USB Channel and adds naming channels by hand, the Show report, Reaper export, 96 kHz recording and Templates. Mixer Triggers join it only once they are built. +The one-time unlock that adds, on top of Free: names and colors from the Mixer on the Stems, naming channels by hand, the Drive (a second Copy, Repair and Drive only), unlimited Markers, the Show report, Reaper export, 96 kHz recording and Templates (Eric, 2026-10-15, #705). Mixer Triggers join it only once they are built. _Avoid_: Premium, full version, paid tier **Trial**: diff --git a/README.md b/README.md index 61808af7..d1bc5797 100644 --- a/README.md +++ b/README.md @@ -51,8 +51,8 @@ A Take never stops, and your audio is never held back, because of a trial, a lim ShowRecorder will be a free download with a **14-day Trial** of everything. -- **Free** records every USB channel to your iPhone, iPad or Mac, with generic names and up to 3 Markers per Take. -- **Pro** is a one-time purchase, shared with your family: names and colors from the mixer, channel names you type, a second copy on an external drive, unlimited Markers, the Show report and Reaper project, 96 kHz, and Templates. $19.99. +- **Free** records every USB Channel to your iPhone, iPad or Mac, with generic names and up to 3 Markers per Take. +- **Pro** is a one-time purchase, shared with your family: names and colors from the mixer, channel names you type, a second copy on an external drive, unlimited Markers, the Show report and Reaper project, 96 kHz, and Templates. $4.99, a launch price. No subscription. In the TestFlight beta, the Trial and Pro use sandbox purchases, which cost testers nothing. diff --git a/docs/adr/0004-one-time-pro-unlock-and-show-safe-limits.md b/docs/adr/0004-one-time-pro-unlock-and-show-safe-limits.md index bdc8a6b5..c81ba0a5 100644 --- a/docs/adr/0004-one-time-pro-unlock-and-show-safe-limits.md +++ b/docs/adr/0004-one-time-pro-unlock-and-show-safe-limits.md @@ -43,6 +43,7 @@ This replaces "Free = 2 USB Channels" above and in the mixer packs section. A fr - **Pro or a pack** adds: names and colors from the Mixer, typed names, the Drive (second Copy, Repair, Drive only), unlimited Markers, auto-gain, clip protection, the Show report, Reaper export, 96 kHz and Templates. - Pack prices change to X Air $7.99, X32/M32 $7.99; DJM stays $6.99. Pro stays $19.99. - Still judged only when record is pressed and frozen into the Take (`TakeAllowance`); auto-gain, which runs between Takes, is judged when it runs. +- **Launch price ladder (Eric, 2026-10-15/16):** Launch Pro $4.99, packs $2.99, upgrade to Pro $1.99; Step 2 $9.99 / $4.99 / $4.99; Full $19.99 / $7.99 / $11.99. Moved by Eric at about 25 and 50 buyers. Pro went to $4.99 in App Store Connect on 2026-10-16. X Air and X32 packs first (DJM waits for #364); one upgrade product repriced per stage; a second pack is hidden; only a pack the person bought earns the upgrade offer; packs and the upgrade share with family like Pro. ## Consequences diff --git a/docs/app-store/app-store-connect-steps.md b/docs/app-store/app-store-connect-steps.md index 096d92bf..b033fde3 100644 --- a/docs/app-store/app-store-connect-steps.md +++ b/docs/app-store/app-store-connect-steps.md @@ -32,9 +32,11 @@ An agent can create these two through the API once step 1 is Active: say "create **Pro** - [ ] Type **Non-Consumable**. Reference Name `Pro`. Product ID `dev.ericdahl.ShowRecorder.pro` (exactly; the app looks for this). -- [x] **Price:** $19.99 (ADR 0004). No planned change: the move to $29.99 is on hold (Eric, 2026-10-11). +- [x] **Price:** $4.99, the launch price (ADR 0004; set 2026-10-16). The app says "Launch price" under Buy Pro. Then two steps, each only after Eric says go (Claude watches sales through the App Store Connect API and asks): + - [ ] At about 25 buyers: **$9.99**. + - [ ] At about 50 buyers: **$19.99**, full price. The "Launch price" line goes when `PriceStage.current` moves past `.launch`. - [ ] **Family Sharing: On.** This can't be turned off later (ADR 0004 wants it on). -- [ ] **Localization (English U.S.):** Display Name `ShowRecorder Pro` (30 characters max). Description `Every USB Channel, report, Reaper, 96 kHz, Templates` (55 characters max). +- [ ] **Localization (English U.S.):** Display Name `ShowRecorder Pro` (30 characters max). Description `Mixer names, Drive copy, report, Reaper, 96 kHz, more` (55 characters max; Free records every USB Channel now). - [ ] **Review screenshot:** the paywall (taken for #324). **14-day Trial** diff --git a/docs/app-store/listing.md b/docs/app-store/listing.md index d715b2d0..c829cb9b 100644 --- a/docs/app-store/listing.md +++ b/docs/app-store/listing.md @@ -1,6 +1,6 @@ # App Store listing (1.1 draft for Eric's review, #411; 1.0 was #64) -Paste into App Store Connect > ShowRecorder > the 1.1 version (and App Information for the name and subtitle). The number after each heading is Apple's character limit; every field here is within it (checked 2026-10-13, with the Apple Watch: subtitle 30, promotional text 170, keywords 100, description 3878 with the auto-gain block and 3634 without, What's New 605). +Paste into App Store Connect > ShowRecorder > the 1.1 version (and App Information for the name and subtitle). The number after each heading is Apple's character limit; every field here is within it (checked 2026-10-13, with the Apple Watch: subtitle 30, promotional text 170, keywords 100, description 3996 with the auto-gain block and 3753 without (recounted 2026-10-16 for "with Pro" under each heading), What's New 615). Brand names (Behringer, Midas, X Air, XR18, MR18, X32, M32) appear only as compatibility text in the description and What's New. They are not in the name, subtitle or keywords (Guideline 2.3.7). @@ -25,7 +25,9 @@ Multitrack recorder for mixers ## Promotional text (170) -Record every channel of your mixer on your iPhone, iPad or Mac. One file per channel, named from the mixer, with a second copy on a USB drive. Try everything for 14 days. +Record every channel of your mixer to your iPhone, iPad or Mac, free. Pro adds names from the mixer, a second copy on a USB drive and more. Try Pro free for 14 days. + +Leads with Free (Eric, 2026-10-16). 165 characters. It says "your mixer", not XR18 or X32: brand names stay out of the promotional text (2.3.7, above). ## Keywords (100) @@ -41,10 +43,10 @@ EVERY CHANNEL, ITS OWN FILE One Broadcast WAV per USB channel, at the mixer's 48 kHz or up to 96 kHz on interfaces that offer it. From an 18-channel mixer you get 18 Stems in step with each other; from an X32 or M32, 32. NAMED FROM THE MIXER -On the mixer's network, ShowRecorder reads your channel names and colors, so channel 3 arrives as "03 Snare.wav", not "USB 03". If you re-patch an X Air or X32's USB outputs, each file is named after what's really routed there. Find Mixers locates the mixer on the network; there is no IP address to type. +With Pro, on the mixer's network, ShowRecorder reads your channel names and colors, so channel 3 arrives as "03 Snare.wav", not "USB 03". If you re-patch an X Air or X32's USB outputs, each file is named after what's really routed there. Find Mixers finds it on the network; no IP address to type. A SECOND COPY AS YOU RECORD -Add a USB drive and every Take is written to the device and the drive at once. If the drive drops out, the missing part is filled back in from the other copy after the Take. +With Pro, add a USB drive and every Take is written to the device and the drive at once. If the drive drops out, the missing part is filled back in from the other copy after the Take. NOTHING LOST TO A CRASH Files are saved every 2 seconds. If the app is closed mid-Take, it finishes that Take the next time it opens. A phone call or another app taking the input leaves silence of the exact length, marked, so every file stays in sync with your video. @@ -53,16 +55,16 @@ PRE-ROLL AND MARKERS A Take starts with the seconds before you pressed record, so the count-in isn't lost. Tap the flag to mark a song or a moment; Markers go into the files and your DAW project. READY TO MIX -Each Show gets a report (Takes, levels, any gaps) and a Reaper project with every track and Marker in place. +With Pro, each Show gets a report (Takes, levels, any gaps) and a Reaper project with every track and Marker in place. TEMPLATES FOR EACH VENUE -Save a room's setup (channel names, mixer, Show name and Pre-roll) and start a Show from it in one tap. +With Pro, save a room's setup (channel names, mixer, Show name and Pre-roll) and start a Show from it in one tap. BUILT FOR THE STAGE Big level meters with a target band, clip marks you can see across the room, a Sunlight appearance for bright stages and a Dark one for dark rooms. Works with VoiceOver. AUTO-GAIN -With an X Air or X32 mixer, Auto-gain sets each channel's preamp so it records at a healthy level, and moves the faders, sends and thresholds to match so the mix stays where you set it. One tap puts it all back. Never during a Take. +With Pro and an X Air or X32 mixer, Auto-gain sets each channel's preamp so it records at a healthy level, and moves the faders, sends and thresholds so the mix stays where you set it. One tap puts it all back. Never during a Take. ON YOUR WRIST With an Apple Watch, see that you're recording and for how long, drop Markers, and start or stop a Take from the stage. Stop takes a press and hold, so a stray tap can't end a song. Free for everyone. @@ -71,8 +73,9 @@ THE SHOW-SAFE PROMISE A Take never stops, and your audio is never held back, because of a Trial, a limit or a license. Limits are checked only when you press record. Your past Shows are never locked. FREE, 14-DAY TRIAL AND PRO -ShowRecorder is free to download. Start a 14-day Trial of everything at no cost. After the Trial, Free records 2 USB channels of your choice, with names and colors from the mixer. -Pro is a one-time purchase, shared with your family and across your iPhone, iPad and Mac: every USB channel, typed channel names, the Show report and Reaper project, 96 kHz and Templates. No subscription. +Free records every USB channel to your iPhone, iPad or Mac, with generic file names ("USB 07") and up to 3 Markers per Take. +Pro is a one-time purchase at a launch price of $4.99, shared with your family: names and colors from the mixer on the files, typed names, a second copy on a USB drive, unlimited Markers, the Show report and Reaper project, 96 kHz and Templates. No subscription. +A 14-day Trial of everything in Pro costs nothing. When it ends, every channel still records. WHAT YOU NEED - A Behringer X Air XR18 or MR18 for 18 channels with names and colors. @@ -91,7 +94,7 @@ ShowRecorder is not affiliated with or endorsed by Behringer, Midas or Music Tri - Records the Behringer X32 and Midas M32: all 32 USB channels, each file named and colored from the mixer over its network. - Files are named after what's really routed to each USB channel on X Air and X32 mixers, even after a re-patch. -- Auto-gain sets each channel's preamp on an X Air or X32 and keeps the mix the same, with one-tap Undo. +- With Pro, auto-gain sets each channel's preamp on an X Air or X32 and keeps the mix the same, with one-tap Undo. - Settings shows your USB drive by its name. - An Apple Watch app: see the Take and drop Markers from your wrist, start a Take, and stop with a press and hold. Free. - If the mixer's USB routing changes during a Take, ShowRecorder warns you and marks the moment. @@ -110,7 +113,7 @@ First release. | Product ID | Display name | Description (55) | |---|---|---| -| `dev.ericdahl.ShowRecorder.pro` | ShowRecorder Pro | Every USB Channel, report, Reaper, 96 kHz, Templates | +| `dev.ericdahl.ShowRecorder.pro` | ShowRecorder Pro | Mixer names, Drive copy, report, Reaper, 96 kHz, more | | `dev.ericdahl.ShowRecorder.trial` | 14-day Trial | Everything in Pro for 14 days, at no cost | ## Screenshots (to take) diff --git a/website/app/docs/daw/page.mdx b/website/app/docs/daw/page.mdx index 394a7401..c67bc706 100644 --- a/website/app/docs/daw/page.mdx +++ b/website/app/docs/daw/page.mdx @@ -33,7 +33,7 @@ Each Show folder is named with its date and name, such as `2026-10-12 Sunday Ser - **One Stem per USB Channel** in each Take folder, named with the two-digit channel number and the channel's name: `03 Snare.wav`. Without the [Mixer Link](/docs/mixer-link), Stems are named by USB Channel number. - `Take.json` and `Show.json` are ShowRecorder's own notes on the Take and the Show. Leave them in place. -On Free, each Take folder holds the 2 USB Channels you chose. The Show report and the Reaper project are written for Takes recorded with Pro or the 14-day Trial. +On Free, each Take folder holds every USB Channel, with generic names such as "USB 07". The names from the mixer, the Show report and the Reaper project are written for Takes recorded with Pro or the 14-day Trial. ## The Stems diff --git a/website/app/docs/markers-and-pre-roll/page.mdx b/website/app/docs/markers-and-pre-roll/page.mdx index 4608c115..d49b426e 100644 --- a/website/app/docs/markers-and-pre-roll/page.mdx +++ b/website/app/docs/markers-and-pre-roll/page.mdx @@ -25,6 +25,8 @@ During a Take, tap the flag next to the Record button. A Marker is placed at tha Markers are numbered **Marker 1**, **Marker 2** and so on. Each one is saved straight away, so it survives even if the app is closed mid-Take. +On Free, a Take holds up to 3 Markers. [Pro](/docs/pricing) and the 14-day Trial have no limit. + ## Rename a Marker - **During the Take:** tap the list icon at the top of the record screen to open **Markers**, then tap a Marker and type a name, such as the song title. diff --git a/website/app/docs/mixer-link/page.mdx b/website/app/docs/mixer-link/page.mdx index 26ca2db1..889f1c50 100644 --- a/website/app/docs/mixer-link/page.mdx +++ b/website/app/docs/mixer-link/page.mdx @@ -8,7 +8,7 @@ export const metadata = pageMetadata({ # Mixer Link and Find Mixers -The Mixer Link reads your channel names and colors from the mixer, so channel 3 arrives as `03 Snare.wav`, not "USB 03". It is separate from the USB audio. +The Mixer Link reads your channel names and colors from the mixer, so the meters show them as you record, and with [Pro](/docs/pricing) channel 3 arrives as `03 Snare.wav`, not "USB 03". It is separate from the USB audio. ## What you need @@ -47,6 +47,6 @@ Outside a Take, tapping the chip opens the Mixer Link part of Settings. During a ## Your own names -To name a channel yourself, tap **Names** on the record screen and type a name for any USB Channel. Typed Channel names are part of [Pro](/docs/pricing). On Free, Stems use the names and colors from the mixer. +To name a channel yourself, tap **Names** on the record screen and type a name for any USB Channel. Typed Channel names are part of [Pro](/docs/pricing). On Free, the meters show the mixer's names, and the Stems have generic names, such as "USB 07". If Find Mixers finds nothing, see [Troubleshooting](/docs/troubleshooting). diff --git a/website/app/docs/pricing/page.mdx b/website/app/docs/pricing/page.mdx index 77b30f1f..5df51567 100644 --- a/website/app/docs/pricing/page.mdx +++ b/website/app/docs/pricing/page.mdx @@ -3,26 +3,36 @@ import { pageMetadata } from "@/lib/metadata"; export const metadata = pageMetadata({ path: "/docs/pricing", title: "Free, 14-day Trial and Pro - ShowRecorder", - description: "ShowRecorder is free to download with a 14-day Trial of everything. Pro is a one-time $19.99 purchase with Family Sharing. No subscription.", + description: "ShowRecorder is free to download and records every USB Channel. Pro is a one-time $4.99 purchase with Family Sharing and a 14-day Trial. No subscription.", }); # Free, 14-day Trial and Pro -ShowRecorder is free to download. Start a 14-day Trial of everything at no cost, then keep Free or buy Pro once. No subscription. +ShowRecorder is free to download, and Free records every USB Channel. Pro adds names on the files, a second Copy on a Drive and the tools for after the show. Try it with a 14-day Trial at no cost, then keep Free or buy Pro once. No subscription. ## Free -Free records **2 USB Channels of your choice**, with names and colors from the mixer. Everything not listed under Pro is in Free: Mixer Link and Find Mixers, the Drive Copy and Repair, Pre-roll, Markers, crash safety, the meters, Sunlight and Dark, and VoiceOver. +Free records **every USB Channel**, each as a mono Broadcast WAV Stem, on the Device: your iPhone or iPad. It includes: -On Free, choose the 2 channels in **Settings > Pro**, under **First recorded channel** and **Second recorded channel**. Every channel is still metered. +- Every USB Channel the mixer sends, in step with each other +- 44.1 and 48 kHz recording +- Up to 3 Markers per Take +- Pre-roll, the meters, Sunlight and Dark, and VoiceOver +- Crash recovery: a Take cut off by a crash is finished the next time the app opens +- A warning when the mixer's USB routing changes during a Take +- The Apple Watch remote + +On Free, the Stems have generic names, such as "USB 07". With the [Mixer Link](/docs/mixer-link), the meters still show the mixer's channel names and colors as you record; only the file names are generic. ## Pro -Pro is a one-time purchase of $19.99, shared with your family through Family Sharing and across your iPhone and iPad. It adds: +Pro is a one-time purchase, at a launch price of $4.99. It is shared with your family through Family Sharing and across your devices, with no subscription. It adds: -- Every USB Channel, not just 2 +- Names and colors from the mixer, on the Stems - Channel names you type, on the files -- The Show report and Reaper export +- A second Copy on an external Drive, with Repair, and recording to the Drive only +- Unlimited Markers +- The Show report and the Reaper project - 96 kHz recording - Templates for each venue @@ -30,7 +40,7 @@ To buy, open **Settings > Pro** and tap **Buy Pro**, or tap **See what Pro adds* ## The 14-day Trial -The Trial unlocks everything Pro does for 14 days, at no cost. ShowRecorder offers it once the first time you open the app. If you skipped it, you can start it later: +The Trial unlocks everything Pro does for 14 days, at no cost. ShowRecorder offers it the first time you open the app. If you skipped it, you can start it later: 1. Tap the gear to open **Settings**. 2. Under **Pro**, tap **Start 14-day Trial…**. @@ -41,8 +51,9 @@ During the Trial, **Settings > Pro** shows how many days are left, and so does a ## When the Trial ends - ShowRecorder goes back to Free. Nothing is charged. -- New Takes record your 2 chosen USB Channels. -- Your Shows and Takes stay yours, including everything recorded during the Trial. +- New Takes still record every USB Channel, on the Device, with generic names and up to 3 Markers per Take. +- A Take in progress is never stopped. +- Your Shows and Takes stay open, including everything recorded during the Trial. - Typed Channel names and Templates are kept, ready if you buy Pro. ## The Show-Safe Promise diff --git a/website/app/docs/usb-drive/page.mdx b/website/app/docs/usb-drive/page.mdx index 0b9e983d..4efb7297 100644 --- a/website/app/docs/usb-drive/page.mdx +++ b/website/app/docs/usb-drive/page.mdx @@ -10,6 +10,8 @@ export const metadata = pageMetadata({ With a USB drive plugged in, every Take is written twice at the same time: the **Device** Copy on your iPhone or iPad, and the **Drive** Copy on the drive. Neither one is the primary. If one stops, the other keeps recording. +The Drive Copy is part of [Pro](/docs/pricing) and the 14-day Trial. On Free, every Take is recorded on the Device. + ## Choose the Drive folder 1. Plug the drive into your hub. diff --git a/website/app/features/page.tsx b/website/app/features/page.tsx index 1c088c1c..c73d9ad5 100644 --- a/website/app/features/page.tsx +++ b/website/app/features/page.tsx @@ -33,7 +33,7 @@ export default function FeaturesPage() {
-
With Pro, a one-time $19.99, and during the 14-day Trial.
+
With Pro, a one-time $4.99 at its launch price, and during the 14-day Trial.

@@ -95,7 +95,7 @@ export default function FeaturesPage() {

  • {f.title}

    - Beta + {f.tier === "pro" ? "In beta, Pro" : "Beta"}

    {f.body}

  • diff --git a/website/app/mixers/x32/content.mdx b/website/app/mixers/x32/content.mdx index 4680afea..23bec034 100644 --- a/website/app/mixers/x32/content.mdx +++ b/website/app/mixers/x32/content.mdx @@ -9,9 +9,9 @@ Most X32 and M32 shows are recorded to a laptop running a DAW, or to SD cards. S ## What you get - **All 32 USB Channels** from the mixer's USB card, recorded in step with each other, at the mixer's sample rate. -- **Files named from the mixer.** Over the Mixer Link, ShowRecorder reads each channel's name and color, and picks up a rename on the mixer within a second or two: on screen straight away, and in the files from the next recording. -- **Named after what's really patched.** If you re-patch the card's outputs (a bus or another channel on USB 1), each file is named after what is actually routed to that USB Channel, not after its number. -- **A second copy as you record**, on a USB drive through a hub, so one failure doesn't lose the show. +- **Files named from the mixer.** Over the Mixer Link, ShowRecorder reads each channel's name and color, and picks up a rename on the mixer within a second or two: on screen straight away, and with Pro in the files from the next recording. +- **Named after what's really patched.** If you re-patch the card's outputs (a bus or another channel on USB 1), with Pro each file is named after what is actually routed to that USB Channel, not after its number. +- **A second copy as you record** with Pro, on a USB drive through a hub, so one failure doesn't lose the show. - **Markers you drop during the set, and the seconds before you press record**, and with Pro a report of the show and a Reaper project, as on every mixer. ## What you need @@ -33,7 +33,7 @@ The cable, a powered hub and what to check are in the [docs](/docs); [Mixer Link ## Free, Trial and Pro -ShowRecorder is free to download. Free records 2 USB Channels of your choice, with names and colors from the mixer. The [14-day Trial and Pro](/docs/pricing) record all 32. Pro is a one-time $19.99 purchase, with no subscription. In the beta, start the 14-day Trial in **Settings › Pro** so every USB Channel records. Buying Pro in the beta isn't charged, and doesn't carry over to the App Store version. +ShowRecorder is free to download, and Free records all 32 USB Channels to your iPhone or iPad, with generic names on the files and up to 3 Markers per recording. With the Mixer Link, the meters show the mixer's names as you record. [Pro](/docs/pricing) adds the names and colors from the mixer on the files, a second copy on a USB drive, unlimited Markers, a report, a Reaper project, 96 kHz and Templates. Pro is a one-time $4.99 purchase at its launch price, with no subscription. In the beta, start the 14-day Trial in **Settings › Pro** to try the Pro features. Buying Pro in the beta isn't charged, and doesn't carry over to the App Store version. ## Where to get it diff --git a/website/app/mixers/xr18/content.mdx b/website/app/mixers/xr18/content.mdx index a55e28c8..eddeff51 100644 --- a/website/app/mixers/xr18/content.mdx +++ b/website/app/mixers/xr18/content.mdx @@ -8,8 +8,8 @@ Recording an XR18 usually means a laptop on the stage box and a DAW running all ## What you get - **All 18 USB Channels**: the 16 inputs and the aux line in, recorded in step with each other at the mixer's sample rate. -- **Files named from the mixer.** Over the Mixer Link, ShowRecorder reads each channel's name and color from the XR18 or MR18 and picks up a rename on the mixer within a second or two: on screen straight away, and in the files from the next recording. -- **A second copy as you record**, on a USB drive through a hub, so one failure doesn't lose the show. +- **Files named from the mixer.** Over the Mixer Link, ShowRecorder reads each channel's name and color from the XR18 or MR18 and picks up a rename on the mixer within a second or two: on screen straight away, and with Pro in the files from the next recording. +- **A second copy as you record** with Pro, on a USB drive through a hub, so one failure doesn't lose the show. - **Markers you drop during the set, and the seconds before you press record**, and with Pro a report of the show and a Reaper project.
    @@ -42,7 +42,7 @@ Step by step, with what to check: [USB cable and setup](/docs/usb-cable-and-setu ## Free, Trial and Pro -ShowRecorder is free to download. Free records 2 USB Channels of your choice, with names and colors from the mixer. The [14-day Trial and Pro](/docs/pricing) record all 18. Pro is a one-time $19.99 purchase, with no subscription. In the beta, start the 14-day Trial in **Settings › Pro** so every USB Channel records. Buying Pro in the beta isn't charged, and doesn't carry over to the App Store version. +ShowRecorder is free to download, and Free records all 18 USB Channels to your iPhone or iPad, with generic names on the files and up to 3 Markers per recording. With the Mixer Link, the meters show the mixer's names as you record. [Pro](/docs/pricing) adds the names and colors from the mixer on the files, a second copy on a USB drive, unlimited Markers, a report, a Reaper project, 96 kHz and Templates. Pro is a one-time $4.99 purchase at its launch price, with no subscription. In the beta, start the 14-day Trial in **Settings › Pro** to try the Pro features. Buying Pro in the beta isn't charged, and doesn't carry over to the App Store version. ## Where to get it diff --git a/website/app/page.tsx b/website/app/page.tsx index c225d3a7..1b1d8f8c 100644 --- a/website/app/page.tsx +++ b/website/app/page.tsx @@ -96,7 +96,7 @@ const steps = [ }, { title: "Press stop", - body: "Your Stems, the report and the Reaper project are in the Show's folder, in the Files app and on your Drive.", + body: "Your Stems are in the Show's folder in the Files app. With Pro, the report, the Reaper project and a copy on your Drive are there too.", }, ]; @@ -105,9 +105,10 @@ const plans = [ title: "Free", price: "$0", items: [ - "Records 2 USB Channels of your choice", - "Names and colors from the mixer", - "Pre-roll, Markers and a Drive Copy", + "Records every USB Channel, on your iPhone or iPad", + "Generic names on the files, such as USB 07", + "Pre-roll, and up to 3 Markers per Take", + "Crash recovery and the Apple Watch remote", "Every past Show stays open", ], }, @@ -122,14 +123,16 @@ const plans = [ }, { title: "Pro", - price: "$19.99, once", + price: "$4.99, once", items: [ - "Every USB Channel", + "Names and colors from the mixer, on the files", "Channel names you type, on the files", + "A second Copy on a Drive, with Repair", + "Unlimited Markers", "The Show report and Reaper project", "96 kHz recording", "Templates for each venue", - "Shared with Family Sharing, across your iPhone and iPad", + "At a launch price, shared with Family Sharing and across your devices", ], }, ]; @@ -142,7 +145,7 @@ const faqs: { q: string; a: string; node?: ReactNode }[] = [ }, { q: "What does the beta cost?", - a: "Nothing to join. Free records 2 USB Channels of your choice; to record every USB Channel in the beta, start the 14-day Trial in Settings › Pro. Buying Pro in the beta isn't charged. TestFlight builds expire after 90 days, so install the newest build from TestFlight to carry on.", + a: "Nothing to join. Free records every USB Channel; to try the Pro features in the beta, start the 14-day Trial in Settings › Pro. Buying Pro in the beta isn't charged. TestFlight builds expire after 90 days, so install the newest build from TestFlight to carry on.", }, { q: "How much space does a Show take?", @@ -182,11 +185,11 @@ const faqs: { q: string; a: string; node?: ReactNode }[] = [ }, { q: "Where do the files go?", - a: "Each Show has a folder for each Take, with one WAV file per channel, a report and a Reaper project. Open them from Shows in the app, in the Files app (On My iPhone or On My iPad, ShowRecorder), or on your Drive, and share them with AirDrop.", + a: "Each Show has a folder for each Take, with one WAV file per channel; with Pro, a report and a Reaper project too. Open them from Shows in the app or in the Files app (On My iPhone or On My iPad, ShowRecorder), or, with Pro, on your Drive, and share them with AirDrop.", }, { q: "What happens when the Trial ends?", - a: "The app goes back to Free: new Takes record 2 USB Channels of your choice. A Take in progress is never stopped, and every Show you recorded stays open, with all its files. You can buy Pro at any time.", + a: "The app goes back to Free: new Takes still record every USB Channel, on the Device, with generic names and up to 3 Markers per Take. A Take in progress is never stopped, and every Show you recorded stays open, with all its files. You can buy Pro at any time.", }, { q: "How does ShowRecorder compare with other apps?", diff --git a/website/lib/changelog.ts b/website/lib/changelog.ts index ae137890..3e7c942b 100644 --- a/website/lib/changelog.ts +++ b/website/lib/changelog.ts @@ -50,7 +50,7 @@ export const RELEASES: readonly Release[] = [ version: "1.1.7", date: "2026-10-15", channel: "TestFlight beta", - summary: "Clip protection, in the beta.", + summary: "Clip protection (in beta, Pro).", changes: [ "Clip protection turns a clipping channel's preamp down on the mixer during a Take and raises its fader to match, at most 12 dB per Take, with a Marker for each move. Off until you switch it on.", "Swipe away the green summary after a Take.", @@ -61,7 +61,7 @@ export const RELEASES: readonly Release[] = [ version: "1.1.6", date: "2026-10-15", channel: "TestFlight beta", - summary: "Auto-gain, in the beta.", + summary: "Auto-gain (in beta, Pro).", changes: [ "Auto-gain sets each channel's preamp on the mixer to -18 dBFS over Mixer Link, moving the fader, sends and dynamics the other way so the mix stays the same.", "Undo puts every channel back, and auto-gain never runs during a Take.", diff --git a/website/lib/compare.ts b/website/lib/compare.ts index 860bf5eb..9cd08af7 100644 --- a/website/lib/compare.ts +++ b/website/lib/compare.ts @@ -4,7 +4,7 @@ // - Claim only what the product's own listing or page says. "Not mentioned" means we could not find it on the page // we read, not that the product lacks it. Sources, read in October 2026: Manytrack Recorder and Auria on the US // App Store; X-Live on a retailer's product page (Turra Music); the laptop column is general knowledge of a DAW. -// - Free stays "2 USB Channels" until #705 lands. The X32, M32 and Mac are in the beta. No DJM claims. +// - Free records every USB Channel, with generic names (#705). The X32, M32 and Mac are in the beta. No DJM claims. export const AS_OF = "October 2026"; @@ -48,7 +48,7 @@ export const ROWS: readonly { label: string; cells: Record }[ label: "Price", cells: { showrecorder: - "Free to download, and records 2 USB Channels. Pro is a one-time $19.99, with a 14-day Trial of everything. No subscription.", + "Free to download, and records every USB Channel, with generic names. Pro is a one-time $4.99 at its launch price, with a 14-day Trial. No subscription.", manytrack: "Free. Its listing shows no in-app purchases.", laptop: "The laptop, plus a paid license for the software.", xlive: "A card you buy for the X32, plus SD cards.", @@ -139,7 +139,7 @@ export const ROWS: readonly { label: string; cells: Record }[ export const COMPARE_FAQS: readonly { q: string; a: string }[] = [ { q: "Is there a free multitrack recorder for iPhone and iPad?", - a: "Yes, two. Manytrack Recorder is free, with no in-app purchases listed. ShowRecorder is free to download and records 2 USB Channels; Pro is a one-time $19.99 and comes with a 14-day Trial of everything. There is no subscription.", + a: "Yes, two. Manytrack Recorder is free, with no in-app purchases listed. ShowRecorder is free to download and records every USB Channel, with generic names; Pro is a one-time $4.99 at its launch price and comes with a 14-day Trial. There is no subscription.", }, { q: "Does ShowRecorder save a separate file for each channel?", diff --git a/website/lib/docs.ts b/website/lib/docs.ts index 1d37691d..c72e7de5 100644 --- a/website/lib/docs.ts +++ b/website/lib/docs.ts @@ -12,7 +12,7 @@ export const DOCS: readonly DocLink[] = [ { slug: "markers-and-pre-roll", title: "Markers and Pre-roll", description: "Keep the count-in with Pre-roll, and tap the flag to mark songs and moments. Markers go into every Stem, the Show report and the Reaper project." }, { slug: "templates", title: "Templates", description: "Save a venue's setup as a Template (channel names, mixer, Show name and Pre-roll) and start a Show from it in one tap. A Pro feature." }, { slug: "daw", title: "Opening a Show in Reaper or your DAW", description: "How a ShowRecorder Show folder is laid out, how Stems are named, what the Reaper project holds, and how to get the files onto your computer." }, - { slug: "pricing", title: "Free, 14-day Trial and Pro", description: "ShowRecorder is free to download with a 14-day Trial of everything. Pro is a one-time $19.99 purchase with Family Sharing. No subscription." }, + { slug: "pricing", title: "Free, 14-day Trial and Pro", description: "ShowRecorder is free to download and records every USB Channel. Pro is a one-time $4.99 purchase with Family Sharing and a 14-day Trial. No subscription." }, { slug: "troubleshooting", title: "Troubleshooting", description: "Step-by-step fixes: a mixer the iPhone can't see, missing channels, Mixer Link, a Drive that fails or is slow, TestFlight and finding your files." }, ]; diff --git a/website/lib/features.ts b/website/lib/features.ts index b4aed4f3..faa65010 100644 --- a/website/lib/features.ts +++ b/website/lib/features.ts @@ -13,17 +13,11 @@ export const featureGroups: { title: 'Recording', intro: 'One file per USB Channel, recorded on your iPhone or iPad.', features: [ - // source: Packages/ShowRecorderKit/Sources/Recording/Entitlement.swift (freeChannelCount = 2), App/ProSection.swift (First/Second recorded channel) - { - title: '2 USB Channels of your choice', - body: 'Free records the 2 USB Channels you pick in Settings, with names and colors from the mixer. Every channel is still metered.', - tier: 'free', - }, - // source: Packages/ShowRecorderKit/Sources/Recording/ProOffer.swift ("Every USB Channel, not just 2") + // source: docs/adr/0004-one-time-pro-unlock-and-show-safe-limits.md (Free records every USB Channel, 2026-10-15, #705) { title: 'Every USB Channel', - body: 'Pro records every USB Channel the mixer sends: 18 Stems from an XR18 or MR18, in step with each other.', - tier: 'pro', + body: 'Free records every USB Channel the mixer sends, on the Device: 18 Stems from an XR18 or MR18, in step with each other.', + tier: 'free', }, // source: docs/adr/0001-mono-bwf-per-stem.md, Packages/ShowRecorderKit/Sources/BroadcastWave/StemWriter.swift (bytesPerSample = 3, bext chunk) { @@ -34,7 +28,7 @@ export const featureGroups: { // source: Packages/ShowRecorderKit/Sources/Recording/SampleRateSetting.swift (capAt48k for Free) { title: '48 kHz', - body: 'Records at the mixer\'s 48 kHz. Free records at up to 48 kHz on any interface.', + body: 'Records at the mixer\'s 48 kHz. Free records at 44.1 or 48 kHz on any interface.', tier: 'free', }, // source: Packages/ShowRecorderKit/Sources/Recording/SampleRateSetting.swift, Packages/ShowRecorderKit/Sources/Recording/ProOffer.swift ("96 kHz recording") @@ -52,7 +46,7 @@ export const featureGroups: { // source: App/RecordScreen.swift (markerButton, "Add Marker"), Packages/ShowRecorderKit/Sources/Recording/TakeSession.swift (addMarker) { title: 'Markers', - body: 'Tap the flag during a Take to mark a song or a moment. Markers go into every Stem and the Reaper project.', + body: 'Tap the flag during a Take to mark a song or a moment. Markers go into every Stem and the Reaper project. Free has up to 3 per Take; Pro has no limit.', tier: 'free', }, // source: Packages/ShowRecorderKit/Sources/Recording/CutOffTake.swift (header committed every 2 s), docs/app-store/listing.md @@ -86,11 +80,11 @@ export const featureGroups: { body: 'Find Mixers lists the mixers on your network. Tap one to link it; there is no IP address to type.', tier: 'free', }, - // source: Packages/ShowRecorderKit/Sources/Recording/StemFileName.swift, Packages/ShowRecorderKit/Sources/Recording/Entitlement.swift (Free keeps Source names) + // source: Packages/ShowRecorderKit/Sources/Recording/StemFileName.swift, Packages/ShowRecorderKit/Sources/Recording/Entitlement.swift (mixerLinkNames: false on Free) { title: 'Names and colors from the mixer', - body: 'Channel 3 arrives as "03 Snare.wav", not "USB 03". Without the Mixer Link, Stems are named by USB Channel number.', - tier: 'free', + body: 'Channel 3 arrives as "03 Snare.wav", not "USB 03". On Free, the meters show the names and the Stems have generic names.', + tier: 'pro', }, // source: App/ChannelNamesView.swift ("Channel names"), Packages/ShowRecorderKit/Sources/Recording/Recorder.swift (namingByHand) { @@ -109,13 +103,13 @@ export const featureGroups: { { title: 'Device and Drive at once', body: 'Choose a folder on a USB drive and every Take is written to the Device and the Drive together. Neither Copy is the primary.', - tier: 'free', + tier: 'pro', }, // source: Packages/ShowRecorderKit/Sources/Recording/TakeRepair.swift, Packages/ShowRecorderKit/Sources/Recording/DestinationAlert.swift { title: 'Repair', body: 'If the Drive drops out, recording continues on the Device. After the Take, the Gap is filled in from the other Copy.', - tier: 'free', + tier: 'pro', }, ], }, @@ -191,7 +185,7 @@ export const featureGroups: { // In the public TestFlight beta, not yet in the App Store release (1.1). Each was checked against its availability // rule: shown to TestFlight builds, never only Debug. Move an entry into featureGroups when 1.1 ships. -export const inBetaFeatures: { title: string; body: string }[] = [ +export const inBetaFeatures: { title: string; body: string; tier?: 'pro' }[] = [ // source: Watch/ (the watch app, in TestFlight since 1.1.3) { title: 'Apple Watch remote', @@ -205,11 +199,13 @@ export const inBetaFeatures: { title: string; body: string }[] = [ // source: Packages/ShowRecorderKit/Sources/Recording/AutoGainAvailability.swift (Debug and TestFlight, #691) { title: 'Auto-gain', + tier: 'pro', body: 'Over Mixer Link, sets each channel\'s preamp to -18 dBFS and moves the fader, sends and dynamics the other way, so the mix stays the same. Undo puts it all back.', }, // source: Packages/ShowRecorderKit/Sources/Recording/ClipProtection.swift (ClipProtectionSetting.isOffered: Debug and TestFlight, #699) { title: 'Clip protection', + tier: 'pro', body: 'During a Take, turns a clipping channel\'s preamp down on the mixer and raises its fader to match, at most 12 dB per Take, with a Marker for each move. Off until you switch it on.', }, ]; diff --git a/website/lib/llms.ts b/website/lib/llms.ts index 25976e16..df0a2757 100644 --- a/website/lib/llms.ts +++ b/website/lib/llms.ts @@ -7,7 +7,7 @@ import { APP_STORE_URL, REPO_URL, SITE_DESCRIPTION, SITE_NAME, SITE_URL, TESTFLI // The text of /llms.txt (a short map) and /llms-full.txt (everything on one page), for AI assistants and AI search // (#704). Both read the site's own lists, so a new docs page, feature or release shows up without editing this file. -// Keep the facts true to what ships: Free records 2 USB Channels of your choice, the X32 and M32 and the Mac are in +// Keep the facts true to what ships: Free records every USB Channel with generic names, the X32 and M32 and the Mac are in // the public beta, and the items in inBetaFeatures are TestFlight only. Pioneer DJM mixers are planned, not available. export const abs = (path: string) => (path === "/" ? SITE_URL : SITE_URL + path); @@ -29,9 +29,9 @@ export function facts(): string[] { "", "- What it is: a multitrack recorder. It records every USB Channel a mixer sends to its own file, on an iPhone or iPad, with no laptop.", `- Get it: ${getIt}.`, - "- Price: free to download, with a 14-day Trial of everything. Free records 2 USB Channels of your choice. Pro is a one-time $19.99 purchase, shared with Family Sharing. No subscription.", + "- Price: free to download. Free records every USB Channel on the iPhone or iPad, with generic names on the files and up to 3 Markers per Take. Pro is a one-time purchase, at a launch price of $4.99, shared with Family Sharing, with a 14-day Trial. Pro adds names and colors from the mixer on the files, typed names, a second Copy on a USB drive, unlimited Markers, the Show report, the Reaper project, 96 kHz and Templates. No subscription.", "- Needs: a USB-C iPhone (iPhone 15 or later) on iOS 26, or a USB-C iPad on iPadOS 26, a USB cable to the mixer, and a class-compliant USB mixer or audio interface. Wi-Fi is optional, for channel names and colors. No account.", - "- Files: one mono 24-bit Broadcast WAV file (a Stem) per USB Channel, at the mixer's sample rate, 48 kHz for the XR18 and MR18, with a second copy on a USB drive. Pro adds a Show report and a Reaper project.", + "- Files: one mono 24-bit Broadcast WAV file (a Stem) per USB Channel, at the mixer's sample rate, 48 kHz for the XR18 and MR18. Pro adds a second copy on a USB drive, a Show report and a Reaper project.", `- Works now: ${worksNow.map((m) => m.name).join("; ")}.`, `- In the public beta (TestFlight, not the App Store version): ${inBeta.map((m) => m.name).join("; ")}, tested only against an emulator so far. The Mac version, in testing on macOS 26, is also in the beta.`, `- Planned, not available: ${planned.filter((m) => /DJM/.test(m.name)).map((m) => m.name).join("; ")}.`, @@ -73,7 +73,6 @@ export function llmsTxt(): string { } export function llmsFullTxt(): string { - const list = (items: { title: string; body: string }[]) => items.map((i) => `- ${i.title}: ${i.body}`); return [ `# ${SITE_NAME}`, "", @@ -98,7 +97,7 @@ export function llmsFullTxt(): string { ]), "### In the public beta (TestFlight only, not in the App Store version)", "", - ...list(inBetaFeatures), + ...inBetaFeatures.map((f) => `- ${f.title}${f.tier === "pro" ? " (In beta, Pro)" : ""}: ${f.body}`), "", "## Docs", "", diff --git a/website/lib/metadata.ts b/website/lib/metadata.ts index 5b38d85e..f0d1ccea 100644 --- a/website/lib/metadata.ts +++ b/website/lib/metadata.ts @@ -57,7 +57,7 @@ export const PAGES = { path: "/mixers/x32", title: "X32 and M32 multitrack recording on iPad (beta) - ShowRecorder", description: - "Multitrack all 32 USB Channels of an X32 or M32 to iPhone or iPad, each file named from the mixer. In the public beta now; the App Store later.", + "Multitrack all 32 USB Channels of an X32 or M32 to iPhone or iPad, each file named from the mixer with Pro. In the public beta now; the App Store later.", image: { url: "/og-mixers-x32.png", width: 1200, diff --git a/website/lib/mixerFaqs.ts b/website/lib/mixerFaqs.ts index 84b4efd7..a28c2b4e 100644 --- a/website/lib/mixerFaqs.ts +++ b/website/lib/mixerFaqs.ts @@ -10,7 +10,7 @@ export const XR18_FAQS: readonly Faq[] = [ }, { q: "How many channels does it record?", - a: "All 18 USB Channels: the 16 inputs and the aux line in, recorded in step with each other. Free records 2 USB Channels of your choice; the 14-day Trial and Pro record all 18.", + a: "All 18 USB Channels: the 16 inputs and the aux line in, recorded in step with each other. Free records all 18, with generic names on the files; Pro and the 14-day Trial add the names and colors from the mixer.", }, { q: "Does it work with the XR12 and XR16?", @@ -26,7 +26,7 @@ export const XR18_FAQS: readonly Faq[] = [ }, { q: "What does it cost?", - a: "ShowRecorder is free to download, with a 14-day Trial of everything. Pro is a one-time $19.99 purchase, with no subscription.", + a: "ShowRecorder is free to download, and Free records all 18 USB Channels. Pro is a one-time purchase, at a launch price of $4.99, with a 14-day Trial and no subscription.", }, ]; @@ -53,6 +53,6 @@ export const X32_FAQS: readonly Faq[] = [ }, { q: "What does it cost?", - a: "ShowRecorder is free to download. Free records 2 USB Channels of your choice; the 14-day Trial and Pro record all 32. Pro is a one-time $19.99 purchase, with no subscription.", + a: "ShowRecorder is free to download, and Free records all 32 USB Channels, with generic names on the files. Pro adds the names and colors from the mixer, and is a one-time purchase, at a launch price of $4.99, with a 14-day Trial and no subscription.", }, ]; diff --git a/website/lib/screenshots.ts b/website/lib/screenshots.ts index ac0e0c2a..26d8706e 100644 --- a/website/lib/screenshots.ts +++ b/website/lib/screenshots.ts @@ -53,7 +53,7 @@ const SUNLIGHT_ALT = const MIXER_LINK_ALT = 'Settings showing the Drive with 126 GB free, the recording time left on the Device and the Drive, and the Mixer Link up to "Skeyelab XR18" over Wi-Fi, with a Find Mixers button.'; const PRO_ALT = - "The Pro screen: every USB Channel, channel names you type, the Show report and Reaper export, 96 kHz recording and Templates, with Buy Pro for $19.99 and Restore Purchases."; + "The Pro screen: every USB Channel, channel names you type, the Show report and Reaper export, 96 kHz recording and Templates, with Buy Pro and Restore Purchases."; const RECORDING_DARK_ALT = "ShowRecorder on iPhone during a Take: 18 colored level meters labeled from the mixer, a Take timer at 0:28 and the stop and Marker buttons."; diff --git a/website/lib/structuredData.ts b/website/lib/structuredData.ts index 203b2c61..e2c7ad06 100644 --- a/website/lib/structuredData.ts +++ b/website/lib/structuredData.ts @@ -3,7 +3,7 @@ import { APP_STORE_URL, REPO_URL, SITE_NAME, SITE_URL } from "@/lib/site"; // schema.org data, as JSON-LD. Search engines read it to show ShowRecorder as an app (name, platform, // price) rather than a plain web page. Two offers: the download is free, and Pro is a one-time in-app -// purchase. Free records 2 USB Channels; the 14-day Trial and Pro record every channel (#705 changes Free). +// purchase. Free records every USB Channel with generic names; the 14-day Trial and Pro add names, the Drive and more (#705). // The Mac version is in the TestFlight beta, so macOS is listed with "(beta)". const OFFERS = [ { @@ -11,14 +11,14 @@ const OFFERS = [ name: "Free", price: "0", priceCurrency: "USD", - description: "Free to download, with a 14-day Trial of everything. Free records 2 USB Channels of your choice.", + description: "Free to download. Free records every USB Channel, with generic names on the files.", }, { "@type": "Offer", name: "Pro", - price: "19.99", + price: "4.99", priceCurrency: "USD", - description: "One-time in-app purchase, no subscription. Records every USB Channel.", + description: "One-time in-app purchase at a launch price, with a 14-day Trial, no subscription. Adds names from the mixer, a second Copy on a Drive, the Show report and Reaper project.", }, ]; diff --git a/website/tests/compare.test.ts b/website/tests/compare.test.ts index d3daf146..ea3da2e7 100644 --- a/website/tests/compare.test.ts +++ b/website/tests/compare.test.ts @@ -50,9 +50,10 @@ describe("compare data", () => { expect(AS_OF).toBe("October 2026"); }); - it("keeps Free at 2 USB Channels and Pro as a one-time purchase", () => { + it("keeps Free at every USB Channel and Pro as a one-time purchase", () => { const price = ROWS[0].cells.showrecorder; - expect(price).toMatch(/2 USB Channels/); + expect(price).toMatch(/every USB Channel/); + expect(price).not.toMatch(/2 USB Channels/); expect(price).toMatch(/one-time/); expect(price).toMatch(/No subscription/); }); diff --git a/website/tests/homeConversion.test.ts b/website/tests/homeConversion.test.ts index 9fc39e19..1ca6bce3 100644 --- a/website/tests/homeConversion.test.ts +++ b/website/tests/homeConversion.test.ts @@ -74,10 +74,11 @@ describe("the home page order and FAQs (#719)", () => { expect(home).toMatch(/test Take/); }); - it("answers what the beta costs: nothing, 90 days per build, Free is 2 USB Channels", () => { + it("answers what the beta costs: nothing, 90 days per build, Free is every USB Channel", () => { expect(home).toMatch(/q: "What does the beta cost\?"/); expect(home).toMatch(/expire after 90 days/); - expect(home).toMatch(/Free records 2 USB Channels/); + expect(home).toMatch(/Free records every USB Channel/); + expect(home).not.toMatch(/so every USB Channel records/); }); it("does not claim beta recordings carry over", () => { diff --git a/website/tests/mixerPages.test.ts b/website/tests/mixerPages.test.ts index 9d7888fd..329987fe 100644 --- a/website/tests/mixerPages.test.ts +++ b/website/tests/mixerPages.test.ts @@ -197,7 +197,9 @@ describe("mixer page facts", () => { it(`/mixers/${slug} gives Pro's price, one time, without making the Trial sound paid`, () => { const pricing = section(body, "## Free, Trial and Pro", "## Where to get it"); - expect(pricing).toMatch(/Pro is a one-time \$19\.99 purchase/); + expect(pricing).toMatch(/Pro is a one-time \$4\.99 purchase/); + expect(pricing).toMatch(/launch price/); + expect(pricing).not.toMatch(/so every USB Channel records/); expect(pricing).not.toMatch(/Trial and Pro\]\(\/docs\/pricing\), a one-time/); }); } @@ -245,10 +247,10 @@ describe("the mixer pages' questions (#704)", () => { expect(page).toMatch(new RegExp(`faqPageJsonLd\\(${list}\\)`)); }); - it("the beta page's answers say beta and keep Free at 2 USB Channels", () => { + it("the beta page's answers say beta and keep Free at all 32 USB Channels", () => { const text = X32_FAQS.map((f) => f.a).join(" "); expect(text).toMatch(/public beta/); - expect(text).toMatch(/Free records 2 USB Channels/); + expect(text).toMatch(/Free records all 32 USB Channels/); expect(text).not.toMatch(/DJM/); }); }); diff --git a/website/tests/seo.test.ts b/website/tests/seo.test.ts index 4fc54080..50ad3bd4 100644 --- a/website/tests/seo.test.ts +++ b/website/tests/seo.test.ts @@ -31,10 +31,10 @@ describe("structured data", () => { expect(data.operatingSystem).toMatch(/macOS/); }); - it("lists two offers: Free at $0 and Pro at $19.99, one time", () => { + it("lists two offers: Free at $0 and Pro at $4.99, one time", () => { expect(data.offers).toEqual([ expect.objectContaining({ "@type": "Offer", name: "Free", price: "0", priceCurrency: "USD" }), - expect.objectContaining({ "@type": "Offer", name: "Pro", price: "19.99", priceCurrency: "USD" }), + expect.objectContaining({ "@type": "Offer", name: "Pro", price: "4.99", priceCurrency: "USD" }), ]); expect(data.offers[1].description).toMatch(/One-time/); }); @@ -102,8 +102,8 @@ describe("one description everywhere (#704)", () => { describe("llms.txt facts (#704)", () => { it("states price, requirements, file format and what is in the beta", async () => { const body = await llmsTxt().text(); - expect(body).toMatch(/\$19\.99/); - expect(body).toMatch(/Free records 2 USB Channels of your choice/); + expect(body).toMatch(/\$4\.99/); + expect(body).toMatch(/Free records every USB Channel/); expect(body).toMatch(/iPhone 15 or later/); expect(body).toMatch(/mono 24-bit Broadcast WAV/); expect(body).toMatch(/public beta/);