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

2.9 KiB

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