Claude 4031657bb5 Phase 2: convert primitives to nodes via a whitelist element factory
Generic leaf builders (Div, Span, Td, Tr, Th, Ul, Li, Strong, Label,
Template, P) are now generated from one _html_element factory over the
single Element class — the tag name is data, not a per-tag body. Only
elements that add classes/behaviour (Button, Pill, Checkbox, Radio,
Input, A, SearchField, H1, Modal, AddForm, tables) stay hand-written.
All primitives now return Node objects; string-built widgets (Icon,
SimpleTable, YearPicker) return Safe, and YearPicker declares its
datepicker media. Raw concatenation (_popover_html, Popover slot) uses
Fragment.

Node.__str__/__html__ now return a SafeString: a node's rendered output
is safe HTML by construction, so str(node) stays safe when fed back into
a child list or template (matching the old SafeText behaviour and
preventing double-escaping).

Consumers adapted: the form widgets (SearchSelectWidget,
PrimitiveCheckboxWidget) return render(component) so Django gets a safe
string; the session form's manual field markup joins via str(row).
Component tests render nodes to HTML before asserting.

https://claude.ai/code/session_01BKurBhE3Qj25p7Bfsg7EeK
2026-06-13 07:16:59 +00:00
2024-11-09 11:56:20 +01:00
2023-01-16 19:46:15 +01:00
2025-03-22 20:58:30 +01: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-09 08:47:20 +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-12 22:45:25 +02:00
2024-08-11 17:24:26 +02:00
2026-02-17 22:14:16 +01:00
2026-06-09 12:47:44 +02:00
2026-06-02 15:07:53 +02:00
2026-06-09 12:47:44 +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 15 MiB
2026-05-12 16:36:46 +00:00
Languages
Python 62.4%
JavaScript 17.5%
CSS 14.9%
HTML 3.8%
TypeScript 0.6%
Other 0.7%