Repository navigation
feat(board): filter the public board by status, hiding completed by default - #34
Merged
canghai118 merged 2 commits intoOct 16, 2026
Merged
Conversation
quadcom
added a commit
to quadcom/feedlog-token
that referenced
this pull request
Sep 17, 2026
The filter now has two branches: the one merged into `main`, which carries the fork's other work and can never be offered, and a clean replay onto `upstream/main` that is PR linkcraftstudio#34. Naming which is which stops the wrong one being pushed at upstream later. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E7qmtvZDwy69A484ArAJ2i
…efault The board showed every card regardless of where it had got to, so finished work crowded out what was still live. A status control in the toolbar now narrows the list, defaulting to everything that is not completed. `?s=` mirrors the existing `?b=`: the default view carries no parameter, so a bare board URL is still the default and any other selection is a shareable link. The list and boards endpoints take `status` as one name or a comma-separated list, so "everything still live" is one round trip; a single value keeps the old `eq` behaviour, leaving existing callers untouched. The board counts take the same filter, since a badge reading 8 above a list of 3 reads as a bug. Search is the one place the filter is applied client-side: the endpoint returns a fixed nearest-N set, so filtering narrows those matches rather than searching deeper. Search here is a duplicate check, not a way to browse. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E7qmtvZDwy69A484ArAJ2i
Filter semantic and trigram searches before their result limits, preserve status parameters when switching boards, and keep portal counts separate from shared unfiltered board metadata. Refresh both views after mutations and discard stale list, pagination and count responses. Give Active a distinct Chinese label. Add HTTP integration coverage for search limits, status pagination, merged feedback and organization boundaries. Verify portal navigation, submissions, deletions and reordered responses in the browser. Signed-off-by: canghai118 <3394863+canghai118@users.noreply.github.com>
canghai118
force-pushed
the
feat/board-status-filter
branch
from
October 16, 2026 06:03
6acf8b7 to
7509d23
Compare
Contributor
|
Thanks for your contribution and patience, and sorry for the delayed review; I’ve rebased it onto the latest main, added a few follow-up fixes, and merged the PR. |
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 public board shows every card whatever state it is in, so finished work crowds out what is still live. On a board with any history, the first screen is mostly things nobody can act on.
This adds a status control to the board toolbar, beside the Top/Recent switch. It offers Active (the default: open, planned and in progress), All statuses, and each of the four statuses individually.
Behaviour
?s=mirrors the existing?b=: the default view carries no parameter, so a bare board URL is unchanged and every other selection is a shareable link. An unrecognised value falls back to the default rather than emptying the board.The default hides only
done. Planned and in-progress work still counts as live, so the board keeps showing what has been picked up — which is usually the reason someone came.Implementation notes
GET /api/postsandGET /api/boardstakestatusas one name or a comma-separated list, so "everything still live" is one round trip. A single value keeps the existingeqbehaviour, so current callers are unaffected; unknown names are dropped rather than 400'd, since a hand-written link with a typo should still return a board./api/posts/searchreturns a fixed nearest-N set, so filtering narrows those matches rather than searching deeper. That seemed the right trade — search there is a duplicate check rather than a way to browse — but happy to push it into the query instead if you would prefer.ACTIVE_STATUSESlives besideROADMAP_STATUSESinshared/types/post.ts, so one place decides what "active" means.en.jsonandzh.json;scripts/i18n-check.mjspasses. The four status names reuse the existingstatus.*namespace.Checked
Run against a scratch database seeded with all four statuses, on this branch off current
main:?s=donereturns the two finished ones;?s=allreturns fiveThe naming is the part I am least sure of: "Active" is a coined term, and "Open" was taken by one of the four statuses. Glad to rename it to whatever fits the product's voice.
🤖 Generated with Claude Code
https://claude.ai/code/session_01E7qmtvZDwy69A484ArAJ2i