Files
dickloads/BACKLOG.md
2026-03-18 23:36:54 -04:00

56 lines
2.9 KiB
Markdown

# humor-units Backlog
Items are roughly ordered by priority. Move to DONE when shipped.
---
## TODO
### Uniform font size
Get actual text measurements of output card values and render all cards in a group
at a uniform font size. JS must be minimal — no heavy layout libraries.
The requirement is *real* uniformity based on measurements, not "close enough."
### Custom dropdown (typeahead fix)
Native `<select>` accumulates keystrokes into a browser-managed search string.
Switching letters requires backspace to clear the accumulated string first.
Fix requires replacing the native select with a custom dropdown component
that handles keyboard search with a clean reset-on-idle timer.
### Auto-generated IDs in admin forms (new units/groups)
When the ID field is empty (or has only been auto-filled, not manually typed):
- Auto-fill priority: kebab(symbol) first, then kebab(label) if symbol is empty or a duplicate
- If symbol is typed first, symbol drives the ID. If label is typed first and symbol is empty,
label drives the ID. If symbol is later typed, it overrides the label-derived ID.
- Auto-filled ID shown in a visually distinct style (e.g. washed-out color) to indicate
it has not been customized by the user.
- If auto-filled ID is a duplicate, fall back to the other field. If both are duplicates,
block save and show an error until a unique ID is manually entered.
- If the user types anything directly into the ID field, auto-generation is permanently
disabled for that edit session (manual input wins).
- User cannot navigate away (except via Cancel/Escape) while ID is empty or duplicate.
---
## DONE
- Hidden flag on Unit and Group (server-side filtered, admin checkbox)
- Description placeholders: `{id}`, `{id:label}`, `{id:plural}`, `{id:symbol}`, `{id:description}`
Two-pass resolver with cycle fallback to Label (symbol)
- Drag handle contrast fix (opacity on --pico-color, primary-inverse on selected rows, magenta in Dan Mode)
- Custom tooltip (500ms hover delay, no mouse movement required, Dan Mode styled)
- ⓘ indicator on units with descriptions
- Enter to save / Escape to discard in admin forms
- Auto-save on unit/group selection in admin
- Domain-based branding (humorunits.com / dickloads.com) via src/lib/brand.ts
- YOLO toggle visibility: auto (show when >1 group) or never — admin Settings panel
- Group alwaysShowLabel flag
- Production server setup (npm run start / build:watch + serve with nodemon)
- Editable unit/group IDs with full cascade (group refs, baseUnitId refs, {id:*} in descriptions)
- Alpha sort tiebreak: labelPlural primary, symbol secondary
- Infinite loop fix: $effect → onMount + in-flight guards on loadData/loadConfig
- Sort-alpha button per group in admin tree (⇅)
- Settings button moved to admin header
- sortPosition pin: optional 1-based fixed slot per unit, inserts into float list
- Dropdown optgroup dividers matching group order and visibility rules