- The '0' button is no longer shown in the 'Bälle am Ende der Aufnahme' grid
- Only buttons for 1–15 balls are now available, matching real game scenarios
Refs #26
- Active player card now features thick, glowing orange border, strong background highlight, left accent bar, and animated pulse
- Player name and score have increased contrast for unmistakable visibility
Refs #26
- Player score incremented by (balls on table before re-rack + balls added - 15)
- Balls on table always set to 15 after re-rack
- Log entry includes all relevant details for traceability
Refs #26
- Only player input containers use the new color backgrounds, borders, and shadows
- Game type selection and other steps are visually unaffected
- Ensures clear, consistent player association without UI side effects
Refs #26
- Increased size, padding, and border radius of the button
- Changed background to bold orange with white text
- Added a plus icon before the text
- Added drop shadow and modern hover effect for emphasis
Refs #26
- Passes selected game type to RaceToStep in App.jsx
- RaceToStep now shows quick pick values 60, 70, 80, 90, 100 (default 80) for 14/1, 1–9 (default 5) for others
- Number input always displays the default if none selected, updates on game type change
- Updates .gitea to reference issue #26 for traceability
Refs #26
- Implements a robust undo feature using a state stack.
- Adds a 'Forfeit' button to allow a player to concede the game.
- Introduces a 'Game Log' to track all turns, fouls, and re-racks.
- Calculates and displays post-game statistics (highest run, avg. pots/turn).
- All changes are related to issue #21.
Implements a comprehensive foul system for the 14.1 game mode as per issue #20.
- **`src/components/GameDetail141.jsx`**
- Adds `handleFoul` function to manage standard (-1pt) and break (-2pt) fouls.
- Implements logic for the 3-consecutive-foul rule, applying a -15pt penalty.
- Adds foul counters and a visual warning for players with 2 consecutive fouls.
- Resets the consecutive foul counter on a legal (non-foul) turn.
- **`src/components/GameDetail.module.css`**
- Adds styles for foul buttons (`.foul-btn`).
- Adds styles for the foul counter indicator (`.foul-indicator`) and warning (`.foul-warning`).
This commit fulfills the requirements for issue #20. The `.gitea` file is left unstaged as it points to the next issue to be worked on.
Implements the re-rack functionality and prepares the scoring system for foul integration, as detailed in issue #19.
- Adds '+14' and '+15' re-rack buttons to the game view.
- Creates a function to update the number of balls on the table.
- Modifies the function to accept an optional argument, preparing it for the next phase of development.
Closes#19
Implements the foundational UI and logic for the 14.1 Endless game mode, as detailed in issue #18.
- Adds a new component to handle the specific game view.
- Introduces a modal within the game view to select the starting player.
- Replaces text input with a button grid for selecting remaining balls.
- Updates to correctly initialize the 14.1 game state.
Closes#18
Refs #17
Adds a 'Rematch' button to the game completion modal.
Introduces a 'handleRematch' function in 'App.jsx' to create a new game with the same players and settings as the previous game.
The 'onRematch' handler is passed down to the 'GameCompletionModal' component.
Adds '.gitea' to '.gitignore' to prevent tracking local issue context.
- Implemented score increment functionality directly on the score display in GameDetail.jsx.
- Deleted obsolete ValidationModal.module.css to finalize style consolidation.
- This resolves all outstanding tasks for the refactor and adds a minor feature enhancement.
- Closes#1
- Increases the number of quick-pick buttons from 4 to 10.
- Adds a '...' button that appears when more than 10 players exist in history.
- Clicking '...' opens a scrollable modal listing all past players for easy selection.
- This provides a much faster player selection flow on touch devices.
Closes#4
- Adds forward navigation arrows to the 'Game Type' and 'Race To' steps in the new game wizard.
- Unifies navigation logic across all five steps.
- Users can now review their selections before proceeding.
Closes#11
- Renames 'Offen' to 'Endlos' and moves it to a separate line.
- Extends quick-pick buttons to include 1-9.
- Removes 'Custom' button and makes numeric input always visible.
- Updates placeholder text for the custom input.
- Closes#10
- Adds the 'GameTypeStep' to the new game wizard.
- Features large, touch-friendly buttons for selecting game types.
- Selection automatically proceeds to the next step.
- Includes progress indicator and back navigation.
- Closes#9
- Implemented the third step of the new game creation wizard for Player 3's name input.
- The step is optional and includes a 'Skip' button.
- Includes autosuggestions from player history and quick-pick buttons.
- Aligned styling and layout with previous steps, including fixes for button alignment.
- Closes#8
- Add Player2Step component for player 2 name input
- Implement multi-step wizard logic in App.jsx
- Player 1/2 steps now allow forward/back navigation
- Left arrow on Player 2 returns to Player 1, not abort
- Prepare placeholders for further steps
Closes#7
- Quick-pick now advances to next step
- Added clear (×) icon to input field
- Replaced navigation buttons with large left/right arrows
- All controls are touch-friendly and visually prominent
Closes#6
- Consolidated all modal-related styles into Modal.module.css; ValidationModal.module.css is now deprecated
- All main action/navigation buttons in NewGame and GameDetail use global .btn/.nav-buttons utility classes
- Removed duplicate utility classes from component CSS files
- Fixed .fullscreenToggle class naming for consistency
- Cleaned up component CSS to only contain component-specific styles
- Updated GameCompletionModal to use shared modal styles
This ensures DRY, maintainable, and consistent styling across the app.
- Refactored all components in src/components to:
- Use arrow function components and prop destructuring
- Add JSDoc for all exported components
- Improve accessibility (aria-labels, roles, etc.)
- Use correct key usage in lists
- Add comments for non-obvious logic
- Use modern event handler patterns and memoization where appropriate
- Refactored src/pages/index.astro:
- Removed <html>, <head>, and <body> (should be in layout)
- Used semantic <main> for main content
- Kept only necessary imports and markup
- Refactored src/styles/index.css:
- Removed duplicate rules
- Ensured only global resets/utilities are present
- Added comments for clarity
- Ensured no component-specific styles are present
- Used consistent formatting
Brings the codebase in line with modern Astro and Preact best practices, improves maintainability, accessibility, and code clarity.
- Move modal overlay CSS to global stylesheet for reliable overlay behavior
- Render GameCompletionModal outside main container for true overlay effect
- Refactor GameCompletionModal to use global overlay and local content styles
- Fix player score layout, color, and button styling on game detail screen
- Add global .modal and .modal.show classes to index.css
- Clean up CSS modules for modal content and responsive design
Fixes #<issue_number>
- New Game form is now prefilled with the last created game's values
- Added 'Felder leeren' (Clear All) button at the top to reset all fields
- Improves speed and UX for repeated game entry
Refs #1
- Refactored New Game screen to use a modern, card-like, dark-themed layout
- Removed select dropdowns for previous players, now only datalist+input for player names
- Updated paddings, backgrounds, borders, and font sizes for a visually consistent, modern look
- No logic changes, only markup and style
Refs #1
- Moved filter button bar from App.jsx to GameList.jsx for better separation of concerns.
- Updated GameList to accept filter/setFilter props and render the filter bar internally.
- Moved .new-game-button styles to global CSS for consistent styling.
- Ensured filter button styles remain in GameList.module.css.
- Improves modularity and UI consistency.
- Replaced all .astro components with .jsx Preact components and added corresponding CSS modules.
- Updated index.astro to use the new App Preact component; removed legacy script and Astro imports.
- Deleted obsolete .astro component files and main JS logic (src/scripts/index.js, public/scripts/index.js).
- Updated astro.config.mjs for Preact integration.
- Updated package.json and package-lock.json to include @astrojs/preact and preact.
- Updated tsconfig.json for Preact JSX support.
- Refactored index.css to keep only global resets and utility styles.
- All changes relate to Gitea issue #1 (refactor to astro app).
Migrates the UI from Astro/vanilla JS to a modular Preact component architecture, removing all legacy code and aligning the project with modern best practices.
Refs #1
- Split monolithic index.astro into Astro components for each screen and modal
- Moved all styles to src/styles/index.css
- Moved all JS logic to src/scripts/index.js and public/scripts/index.js
- Updated event wiring and removed inline handlers for best practice
- Ensured all components and scripts are integrated and functional
Refs #1
- Added PWA-related files: LICENSE, favicon.ico, icon-192.png, icon-512.png, manifest.json, service-worker.js in public/
- Deleted legacy favicon.svg
- Major update to src/pages/index.astro: implements full responsive UI, PWA manifest, service worker registration, and touch/mobile optimizations
- Added/updated .gitea to track current Gitea issue for workflow compliance
Purpose: Implements PWA support and refactors the main page for the Astro app, aligning with the migration and refactor described in issue #1.
Refs #1