Repository navigation
Hosted: an upsell for an account with no plan, and the Hosted Relay by name - #1366
Merged
Merged
Conversation
3 tasks done
Deploying mouseterm with
|
| Latest commit: |
e244345
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://cc8ea3ae.mouseterm.pages.dev |
| Branch Preview URL: | https://hosted-no-plan-approval.mouseterm.pages.dev |
dormouse-bot
approved these changes
Oct 23, 2026
…le empty Computers copy An account without the entitlement followed an enrollment link, typed the two digits, and got the raw NOT_ENTITLED_ERROR with a Retry that could never help. The enroll page now reads the entitlement up front from GET /api/voice (a failed read never counts as unentitled), maps the approve route's 403 NOT_ENTITLED_ERROR to NoPlanError, and in either case shows why in place of the digits, with Use another account (sign out, code kept) beside Don't approve. The empty Computers list now names the desktop path to enroll one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The no-plan enroll state was a paragraph and a sign-out button. It now shows an offer card leading with what Dormouse asked for (Natural Voice or remote control), what any plan includes, the founding price against list from website/src/lib/hosted-pricing.ts, and See Hosted plans in a new tab, since the code lives only in this page's memory. Use another account stays as the secondary path. Coming back to the tab re-reads the account, and a refusal from the approve route now clears once that read finds a plan, so a plan bought in the other tab offers the digits again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lib/src/index.css hides the body's overflow for the app, and Storybook's preview inherits it; preview-head.html gave scrolling back only to docs pages. HostedFrame grows its iframe to the page it shows, past the viewport, so the bottom of a Hosted story was unreachable. Pages holding a Hosted frame now scroll too. Every Hosted snapshot is byte-identical. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Natural Voice has no self-hosted equivalent, so its no-plan state does not. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The product is Dormouse Hosted, and the account page, the server's refusal and the specs already called its Relay the Hosted Relay; only the marketing copy said "managed". The Hosted page's heading, contents and meta, the JSON-LD, both READMEs, the Pocket playground, the no-plan offer, and the Terms and Privacy pages now say Hosted Relay, the pair to the "self-hosted Relay" the same pages offer. Terms and Privacy are revised for it, so TERMS_VERSION and both pages' "Last updated" move to 2026-10-27, as the Natural Voice rename did. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Under Network → Phones, the choice beside One-time connection was "Persistent Relay" in every build. A Hosted build now labels it Hosted Relay, the product's name for what it enrolls with; a self-host build keeps Persistent Relay. The account page's empty Computers copy follows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nedtwigg
force-pushed
the
hosted-no-plan-approval
branch
from
October 27, 2026 22:28
3d9fd91 to
e244345
Compare
dormouse-bot
approved these changes
Oct 27, 2026
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.
Revived from the stale #1003 walkthrough findings and rebuilt on current main, then grown into an upsell. It also renames the "managed Relay" to the Hosted Relay across marketing, Settings, and the Terms and Privacy pages.
No plan: an offer instead of a dead end
Entitlement is
ADMIN_EMAIL-only today, so almost every account that followed an enrollment link from Dormouse typed the two digits and then got the raw "this account is not entitled to the Hosted Relay" with a Retry connection that could never help. This applied to both purposes, remote control and Natural Voice.GET /api/voice(hostedVoice.entitled === false), the one predicate both purposes share. A failed read leaves it null and never counts as no plan.approveEnrollmentmaps only a 403 carryingNOT_ENTITLED_ERRORtoNoPlanError; any other refusal is still a page error.website/src/lib/hosted-pricing.ts, the one owner of every price.dormouse.sh/hosted/#pricingin a new tab, because the code lives only in this page's memory.hosted.md→ "Burrow enrollment" gains the rule. Its word budget is ratcheted from 4600 to 4650.Empty Computers list
"No computers yet" now names the real desktop path: Settings → Network → Phones → Hosted Relay → Enroll remote control.
The Hosted Relay
The product is Dormouse Hosted, and the account page, the server's refusal and the specs already called its Relay the Hosted Relay; only the marketing copy said "managed". It now pairs with the "self-hosted Relay" the same pages offer.
glossary.md,pricing.mdandwebsite-docs.md. The#remote-controlanchor is unchanged.TERMS_VERSIONand both pages' "Last updated" move to 2026-10-27, as the Natural Voice rename did. The next sign-in records acceptance of the new version.relay.md, the Hosted remote-control walkthrough).Storybook
Hosted stories now scroll.
lib/src/index.csshides the body's overflow for the app, andpreview-head.htmlgave it back only to docs pages, so the bottom of every Hosted story was unreachable. All 69 Hosted snapshots are byte-identical.Test plan
hosted/srcvitest 17/17. The no-plan tests cover both purposes:Each test was mutation-checked red.
RemoteControlSectiontests pin Hosted Relay for a stock build and Persistent Relay for a self-host build; each goes red when the label is hardcoded to the other.hostedpolicy test (TERMS_VERSIONmatches the pages' date);websitevitest 364Story plays: Enrollment 21/21, and RemoteControlSection, SettingsDialog and NetworkSettings 106/106
tscfor lib, standalone and hostedspec, md and public-docs lints
🤖 Generated with Claude Code