112d3107ef4e7554253ed51af6dc16aec953a3d2
MultiCriterion and ChoiceCriterion were near-duplicate copies whose INCLUDES branches had drifted — the exclude-only bug existed in one but not the other. Extract the shared include/exclude/null set-membership logic into a _SetCriterion base implemented once (INCLUDES with empty-list guards, EQUALS as an alias, IS_NULL/NOT_NULL); subclasses contribute only their value type and their own modifiers via _extra_q (INCLUDES_ALL for Multi; EXCLUDES/NOT_EQUALS for Choice). Behaviour preserved (full modifier vocabulary kept); the duplication that caused the drift is gone. Surfacing the modifier axis and harmonizing EXCLUDES is tracked in #10. https://claude.ai/code/session_01XzhXvMvw42CQGc9kmin3GS
Timetracker
A simple game catalogue and play session tracker.
Development
The project uses uv to manage Python versions and dependencies.
Simply run:
make init
This installs the correct Python version, syncs all dependencies, and installs npm packages.
Afterwards, you can start the development server using make dev.
Description
Releases
23
Languages
Python
64.8%
CSS
21%
JavaScript
8.1%
HTML
5.4%
Dockerfile
0.3%
Other
0.4%