tsbb login: leave out a forum this member cannot post in - #45
Merged
Conversation
tsbb 0.5.1 says whether the caller may start a topic in a forum, so a feed-only one no longer has to announce itself with a 403 on the first release post. The subtlety is which caller is asking. The forum list read before the device flow is a guest's, and a guest may post nowhere: every canPost is false, so reading that as a refusal would reject a login that works. Verified against bbs.hqtui.com, where the same request without a token says false for all nine forums and with the token says true for eight and false for `news`. So the list is read twice. Before the flow, as a guest, for the checks that hold for everybody: an unknown slug, and a category, which holds forums rather than topics and costs no approval to refuse. After the token arrives, as the member, for canPost: a refused forum is dropped with a line saying so, and only a selection with nothing postable left in it fails the login. An older board omits the field, and `undefined` means "cannot tell" rather than "no", so every board before 0.5.1 behaves exactly as it did. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XqFUXQkK6npCGxBtgizQg
Merged
ralyodio
added a commit
that referenced
this pull request
Sep 8, 2026
`myna login tsbb` reads the board's canPost as the member and leaves out a forum that takes replies only, instead of finding out from a 403 (#45). Claude-Session: https://claude.ai/code/session_011XqFUXQkK6npCGxBtgizQg Co-authored-by: Claude Opus 5 (1M context) <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.
tsbb 0.5.1 (profullstack/tsbb#17) returns
canPostper forum, so a feed-only forum no longer has to announce itself with a 403 on the first release post.The subtlety: which caller is asking
canPostis resolved for whoever asks, and the forum list read before the device flow is a guest's. A guest may post nowhere, so everycanPostisfalsethere — reading that as a refusal would reject a login that works.Verified against the live board, same URL, one with a token and one without:
So the list is read twice
Before the flow, as a guest — only the checks that hold for everybody: an unknown slug, and a category (which holds forums, not topics). Both cost no device approval to refuse.
After the token arrives, as the member —
canPost. A refused forum is dropped with a line saying why; only a selection with nothing postable left fails the login.An older board omits the field, and
undefinedmeans "cannot tell" rather than "no", so every board before 0.5.1 behaves exactly as it did.Verified
bun x tsc --noEmit -p tsconfig.jsonclean; 320 tests pass, 0 fail (5 new).device/startis ever called.bbs.hqtui.comsayscanPost=falsefornewsandtruefor the other seven forums when asked with the connected member's token.🤖 Generated with Claude Code
https://claude.ai/code/session_011XqFUXQkK6npCGxBtgizQg