Boosted profiles on the plans, and a real suspension clause - #167
Merged
Conversation
Unrelated to the plan work on this branch, in its own commit so the diff that matters stays readable. `npm run lint` on a clean `main` fails on this file's line wrapping; CI does not run lint, which is how it got there. One prettier pass, no words changed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The app side of both landed in langx/langx. This is the hand-kept mirror the README's table describes: `plans.ts` and `features.ts` copy `PLAN_LIMITS`, and nothing checks that they stay in step. **Boosted profiles.** Fluent buys a place in a strip above the Discover list, shown to people whose languages match yours, on by default and switchable off in Settings; Polyglot leads that strip. It is in both plan lists for the same reason the translation allowance is — both plans get it and Polyglot gets more of it, which "everything in Fluent" would otherwise hide. One feature card, not two, and the paywall replica in `PaywallScreen.svelte` gains the Fluent line it mirrors. **Suspension**, in Terms §8. The clause there was boilerplate — "for any reason, including but not limited to" — and the app now does something specific enough to describe: a person reviews the report, a suspension is for a stated period or permanent, it is shown in the app with its end date and the reason, the profile leaves discovery and search, tokens and streak are kept but nothing is earned, a subscription is not cancelled by it, and there is one appeal. §4 already pointed at section 8, so the numbering does not move. **And the sentence that stopped being true.** Both legal pages said a deleted account becomes invisible immediately. It is removed from discovery and search immediately; somebody who already has a conversation can still open the profile, marked as deleted, until the data goes 30 days later. Terms §8, Privacy §11 and the data-deletion page all say that now, and the two effective dates move with it. Privacy §11 also says what a suspension record and an appeal are kept for, and for how long. The FAQ said reports "go to a moderation team". There is no team and there is no console; they are read by a person. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
I had rewritten this to say reports are "reviewed by a person", on the grounds that there is no team and no console. Behic's answer: hi@langx.io will be staffed by a team, so "team" is the true word and the address belongs in the same sentence — somebody deciding whether the app is safe wants to know there is somewhere to write, not only that a human reads. Terms §8 and `docs/community-guidelines.md` still say a report is reviewed by a person, which stays true either way and is the sentence that matters there: what they promise is that no machine suspends anybody. Co-Authored-By: Claude Opus 5 <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.
The site half of langx/langx#1274, which ships boosted profiles and account
suspension. This is the hand-kept mirror the README's table describes:
plans.tsandfeatures.tscopyPLAN_LIMITS, and nothing checks that theystay in step.
Boosted profiles
Fluent buys a place in a strip above the Discover list, shown to people whose
languages match yours, on by default and switchable off in Settings. Polyglot
leads that strip.
It is in both plan lists, for the same reason the translation allowance is:
both plans get it and Polyglot gets more of it, which "everything in Fluent"
would otherwise hide. One feature card rather than two, and the paywall replica
in
PaywallScreen.sveltegains the Fluent line it mirrors.Suspension, in Terms §8
The clause there was boilerplate — "for any reason, including but not limited
to" — and the app now does something specific enough to describe: a person
reviews the report, a suspension is for a stated period or permanent, it is
shown in the app with its end date and the reason, the profile leaves discovery
and search, tokens and streak are kept but nothing is earned, a subscription is
not cancelled by it, and there is one appeal. §4 already pointed at section 8,
so the numbering does not move.
The sentence that stopped being true
Both legal pages said a deleted account becomes invisible immediately. It is
removed from discovery and search immediately, but somebody who already has a
conversation with you can now still open the profile, marked as deleted, until
the data goes 30 days later. Terms §8, Privacy §11 and the data-deletion page
all say that, and the two effective dates move with it. Privacy §11 also states
what a suspension record and an appeal text are kept for, and for how long.
The FAQ said reports "go to a moderation team". There is no team and there is no
console; they are read by a person.
One unrelated commit
7339f43reflowsWelcomeBack.svelte.npm run lintfails on a cleanmainwithout it — CI does not run lint, which is how it got there. One prettier pass,
no words changed, kept as its own commit so the diff that matters stays
readable.
Verification
npm run check(0 errors, 3 pre-existingtext-wrapscss warnings),npm run build, andnpm run lintall pass.postbuild's image optimisationcrashes on Node 24 for reasons that predate this branch.
🤖 Generated with Claude Code