Memoize Markdown rendering (React.memo) so sections parse once on mount.
Search filters by toggling visibility (no re-render), with debounced
input and DOM-based text highlighting for matches in both titles and
content.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Filter sections by typing in the search box — matches against both
section titles and content. Shows result count and a "no results"
message. Expand/Collapse All buttons respect the filtered set.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hull and Armor current are always editable with steppers at the top
of the dashboard — these are the values that change every combat round.
All other stats (AC, Con, Speed, Class, Size, Max values, Crew,
Hardpoints, Cargo) are shown in a compact read-only reference grid
with an Edit button to toggle into editable mode when needed.
Removes separate MobilitySection and CrewSection in favor of a unified
ShipStatsSection that combines all reference stats in one place.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add crew_req, hardpoints, cargo fields (DB migration + server + types)
- Add 10 ship templates from Appendix A (Caravel, Galleon, Sloop, etc.)
- Enhanced CreateShipModal with template picker that auto-fills all stats
- Dashboard defaults to compact read-only view; Edit button toggles to
editable steppers/dropdowns
- New CrewSection showing crew required, hardpoints, and cargo
- Two-column form layout in create modal for better use of space
- Fix .gitignore data/ pattern to only match root-level data directory
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add remark-gfm plugin so react-markdown renders GFM table syntax as
proper <table> elements. Wrap tables in a scrollable container for
mobile-friendly horizontal scrolling on wide tables like ship stats
and weapon lists.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tap the number to type a value directly instead of clicking +/- repeatedly.
Input auto-selects, commits on Enter/blur, cancels on Escape, and clamps
to min/max constraints.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Embeds Battle reference.md content as collapsible sections with markdown
rendering, expand/collapse all controls, and styled tables and blockquotes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds WeaponCard with inline ammo stepper and status dropdown, AddWeaponModal,
WeaponDetailModal with full editing, and debounced NotesSection.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds NumericStepper and EnumDropdown UI components, VitalsSection (hull/armor/AC/con),
MobilitySection (speed/maneuver class/size), with debounced real-time updates.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds ship cards with navigation, create ship modal with initial stats,
inline delete confirmation, and supporting CSS for modals and cards.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds react-router-dom with routes for ship list, dashboard, and rules pages.
Includes TopBar with navigation and mobile-first dark theme CSS.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Set up monorepo structure with server/ (Fastify + TypeScript) and web/ (React + Vite + TypeScript).
Includes package configs, dev proxy setup, and mobile-first CSS foundation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>