Conversation
Adds per-profile club visibility (issue open-flight#283). Profile.settings gets an enabled_clubs list; the club picker filters against it, defaulting to showing everything for existing profiles. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
UNKNOWN was included in the valid-id set for set_enabled_clubs, so it could be accepted as a filter (leaving the picker empty) and it broke the 'all real clubs present means unfiltered' check against what the UI's Select All actually sends, since UNKNOWN is never an offered tile. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rickyt19
marked this pull request as ready for review
September 28, 2026 00:31
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This branch has not been deployed
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.
Adds per-profile club visibility (issue #283). Profile.settings gets an enabled_clubs list; the club picker filters against it, defaulting to showing everything for existing profiles.
What does this PR do?
Adds a per-profile club-visibility toggle. Each profile can now hide clubs
it doesn't carry from the club picker; other profiles are unaffected, and
existing profiles with no customization still see every club (unchanged
behavior). Fixes #283.
Why was this required?
We share one kiosk between people with different bags. Everyone had to
scroll past clubs they don't own every time they picked a club. Hiding
unused clubs per-profile makes club selection faster, especially on the
touchscreen.
Automated tests
ProfileStore.set_enabled_clubs — valid ids accepted, invalid ids dropped,
dedup, unknown profile_id rejected, non-list rejected, empty list and
full-club-set both treated as "unfiltered", and persistence round-trip.
correctly, and is a no-op on an unknown profile id.
— unchanged on undefined/empty, filters per-section, drops emptied
sections, ignores unknown ids.
listing/grouping, pre-check behavior, Save/Cancel presence.
profile.
Manual (human) testing
Ran on a Raspberry Pi kiosk (start-kiosk.sh --sim --camera-capture, real
camera hardware) and in a desktop browser against the same server.
saved, and confirmed the in-game club picker only showed the remaining
enabled clubs for that profile.
(unfiltered) full club list, unaffected by the other profile's setting.
are enabled (previously it visibly resized as the filtered count changed).
Chromium-fallback kiosk browser and a desktop browser (the original emoji
icon rendered as a missing-glyph box on the Pi, which has no emoji font).
Pi's kiosk screen at 800px width.
Checklist
uv run pytest tests/ -v) — full suite: 1606 passed, 16 pre-existing failures unrelated to this change (camera, cloud-config, desktop-launcher, sim-transport timing tests — none touch profiles/server/club code)uv run pylint src/openflight/ --fail-under=9) — 9.72/10uv run ruff check src/openflight/)cd ui && npm run build)cd ui && npm run lint)