Claude 11cd62a3b9 Introduce LabeledOption and RangeValues named types
Replace all tuple[str, str] annotations with purpose-specific names:
- LabeledOption = tuple[str, str] for (value, label) pairs used in
  FilterChoice, FilterSelect params, _modifier_options, _find_label,
  and _extract_labeled.
- RangeValues(min, max) NamedTuple for _parse_range return values,
  making the two fields self-documenting at every call site.

Export LabeledOption from common.components alongside SearchSelectOption.
Document the "name compound types explicitly" convention in CLAUDE.md.

https://claude.ai/code/session_01EyAJcMoDktLrY9tSbdHViA
2026-06-08 21:41:03 +02:00
2024-11-09 11:56:20 +01:00
2023-01-16 19:46:15 +01:00
2026-05-12 18:36:46 +02:00
2025-03-22 20:58:30 +01:00
2026-06-07 07:31:28 +02:00
2026-05-12 16:29:34 +00:00
2023-11-16 16:30:17 +01:00
2026-05-12 16:29:34 +00:00
2024-08-08 14:48:20 +02:00
2026-06-02 16:32:26 +02:00
2026-05-12 16:29:34 +00:00
2026-05-12 16:29:34 +00:00
2026-05-12 18:36:46 +02:00
2024-11-09 11:56:20 +01:00
2023-01-20 17:15:53 +01:00
2026-05-12 18:36:46 +02:00
2026-05-12 16:29:34 +00:00
2026-06-06 07:10:54 +02:00
2024-08-11 17:24:26 +02:00
2026-02-17 22:14:16 +01:00
2026-06-07 05:40:56 +00:00
2026-06-02 15:07:53 +02:00
2026-01-29 12:56:45 +01:00
2026-06-08 21:41:03 +02:00

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.

S
Description
No description provided
Readme 13 MiB
2026-05-12 16:36:46 +00:00
Languages
Python 64.8%
CSS 21%
JavaScript 8.1%
HTML 5.4%
Dockerfile 0.3%
Other 0.4%