srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/checklist.md
diff options
context:
space:
mode:
Diffstat (limited to 'checklist.md')
-rw-r--r--checklist.md272
1 files changed, 272 insertions, 0 deletions
diff --git a/checklist.md b/checklist.md
new file mode 100644
index 0000000..1744135
--- /dev/null
+++ b/checklist.md
@@ -0,0 +1,272 @@
+# TyperPunk Project Checklist
+
+## Directory Structure
+```
+typerpunk/
+├── Cargo.toml # Main workspace configuration
+├── Cargo.lock # Dependency lock file
+├── install.sh # Installation script
+├── README.md # Project documentation
+├── LICENSE # License file
+├── .gitignore # Git ignore rules
+├── .gitattributes # Git attributes
+├── texts.txt # Sample typing texts
+├── sentences.txt # Sample sentences
+├── config.json # Configuration file
+├── crates/ # Crate modules
+│ ├── core/ # Core functionality
+│ │ ├── Cargo.toml # Core crate configuration
+│ │ └── src/ # Core source code
+│ │ ├── app.rs # Application state management
+│ │ ├── config.rs # Configuration management
+│ │ ├── input.rs # Input handling
+│ │ ├── stats.rs # Statistics tracking
+│ │ ├── text.rs # Text management
+│ │ ├── theme.rs # Theme management
+│ │ └── ui.rs # User interface
+│ └── tui/ # Terminal UI
+│ ├── Cargo.toml # TUI crate configuration
+│ └── src/ # TUI source code
+│ └── main.rs # TUI entry point
+├── target/ # Build output directory
+├── web/ # web interface for typerpunk.com
+└── original_working_tui_code/ # Reference implementation
+```
+
+## Project Status
+
+### Core Features
+- [x] Basic typing test functionality
+- [x] WPM calculation
+- [x] Accuracy tracking
+- [x] Time tracking
+- [x] Error highlighting
+- [x] Multiple text support
+- [x] Theme system
+- [x] Configuration management
+
+### Game Modes
+- [x] Normal mode (singe player)
+- [ ] Programming mode
+- [ ] Security mode
+- [ ] Multiplayer mode
+
+### tui
+- [x] Normal mode
+- [x] stats
+- []
+- []
+- []
+
+### web
+- [] normal mode
+- [ ] Programming mode
+- [ ] Security mode
+- [ ] Multiplayer mode
+- [] stats
+- [ ]
+- [ ]
+
+### UI/UX
+- [x] Terminal UI
+- [ ] Web interface
+- [x] Theme customization
+- [x] Responsive design
+- [x] Keyboard shortcuts
+- [x] Progress indicators
+- [x] Statistics display
+
+### Multiplayer
+- [ ] Real-time competition
+- [ ] Leaderboards
+- [ ] User profiles
+- [ ] Matchmaking
+- [ ] Chat system
+
+### Configuration
+- [x] User preferences
+- [x] Theme settings
+- [ ] Game mode settings
+- [ ] Multiplayer settings
+- [ ] Key bindings
+
+### Build & Deployment
+- [x] Cross-platform support
+- [ ] WebAssembly build
+- [x] Installation script
+- [ ] CI/CD pipeline
+- [x] Documentation
+
+### Testing
+- [ ] Unit tests
+- [ ] Integration tests
+- [ ] Performance tests
+- [ ] UI tests
+- [ ] Multiplayer tests
+
+## Common Core Features
+- [x] Basic typing mechanics
+- [x] Text loading and management
+- [x] Statistics tracking
+ - [x] WPM calculation
+ - [x] Accuracy tracking
+ - [x] Error counting
+- [x] Theme management
+- [x] Configuration system
+- [x] Basic game modes
+ - [x] Normal mode
+
+
+## TUI Features (Keep Simple)
+- [x] Terminal-based interface
+- [x] Real-time typing feedback
+- [x] Color-coded character matching
+- [x] Basic statistics display
+ - [x] Current WPM
+ - [x] Time elapsed
+ - [x] Accuracy
+- [x] Simple menu system
+- [x] Local configuration
+- [x] Original UI layout
+- [x] Stats updating without input
+
+## Future Web Features (Separate Development)
+- [ ] Web interface
+- [ ] WebSocket-based multiplayer
+- [ ] Real-time opponent tracking
+- [ ] Web-based configuration
+- [ ] Custom themes
+- [ ] Advanced game modes
+ - [ ] Programming mode
+ - [ ] Security mode
+ - [ ] Custom mode
+ - [ ] Multiplayer mode
+- [ ] Quote mode with different lengths
+- [ ] Topic-based challenges
+- [ ] Difficulty levels
+- [ ] Guest mode support
+
+## Dependencies
+
+### Common Dependencies (Current)
+- [x] serde = "1.0"
+- [x] serde_json = "1.0"
+- [x] anyhow = "1.0"
+- [x] thiserror = "1.0"
+- [x] config = "0.13"
+- [x] dirs = "5.0"
+- [x] rlua = "0.19"
+- [x] rand = "0.8"
+
+### TUI Dependencies (Current)
+- [x] crossterm = "0.27"
+- [x] ratatui = "0.24"
+
+### Web Dependencies (Future)
+- [ ] wasm-bindgen = "0.2"
+- [ ] web-sys = "0.3"
+- [ ] js-sys = "0.3"
+- [ ] tokio-tungstenite = "0.20"
+- [ ] futures-util = "0.3"
+
+## Build Instructions
+
+### Current
+- [x] Install Rust
+- [x] Build TUI version
+- [x] Basic install script
+
+### Future
+- [ ] Web build setup
+- [ ] Development server
+- [ ] Production deployment
+- [ ] Cross-platform installers
+
+# TyperPunk Fix Checklist
+
+## Text Display and Cursor Issues
+- [x] Fix cursor making characters invisible/overwriting them
+- [x] Fix cursor not following properly to next lines
+- [x] Fix text wrapping problems causing words to shift up unexpectedly
+- [x] Fix space handling logic for incorrect inputs
+
+## End Screen Problems
+- [x] Remove unwanted green backgrounds from stats
+- [x] Add hover functionality to graph to show WPM/raw values
+- [x] Fix stats and content fitting on one screen
+- [x] Add TyperPunk logo to top left
+- [x] Fix time not restarting when clicking "Play Again"
+
+## Layout and Styling Issues
+- [ ] Remove unnecessary border from theme toggle button
+- [ ] Fix time stat sometimes being out of view
+- [ ] Remove unwanted scrollbar
+- [ ] Improve mobile responsiveness
+- [x] Move WPM and ACC stats to extreme sides in game state
+- [x] Fix end screen stats layout:
+ - [x] Keep WPM in same position as game state
+ - [x] Replace ACC with errors in same position
+ - [x] Center graph between stats
+ - [x] Keep time in same position
+- [x] Fix raw WPM calculation to show peak typing speed
+- [x] Fix text display issues:
+ - [x] Prevent word breaking across lines
+ - [x] Fix left alignment
+ - [x] Center text container properly in x-axis
+
+## Implementation Notes
+
+### Text Display and Cursor Issues
+- Cursor visibility is controlled by CSS in `.text-display span.current::after`
+- Text wrapping is handled in `.text-display` class with `white-space: pre-wrap`
+- Space handling logic is in `TypingGame.tsx` renderText function
+
+### End Screen Improvements
+- Stats styling is in `.end-screen-stat` classes
+- Graph hover functionality needs to be added to `.graph-container`
+- Layout is controlled by `.end-screen` and `.end-screen-stats` classes
+- Logo placement is in `.logo` class
+
+### Layout and Styling
+- Theme toggle styling is in `.theme-toggle` class
+- Time stat positioning is in `.time-stat` class
+- Scrollbar and mobile responsiveness are in media queries
+
+### Stats Layout
+- WPM and ACC stats should be at extreme edges of the screen
+- End screen should maintain same positions as game state
+- Graph should be centered between stats
+
+### Raw WPM Calculation
+- Should show peak typing speed
+- Graph should show speed variations over time
+- Current implementation incorrectly uses total chars instead of peak speed
+
+### Text Display
+- Words should not break across lines
+- Text container needs proper x-axis centering
+- Left alignment needs adjustment
+
+## Progress Tracking
+- [x] Phase 1: Text Display and Cursor Issues
+- [ ] Phase 2: End Screen Problems
+- [ ] Phase 3: Layout and Styling Issues
+
+## UI/Gameplay Improvements
+- [ ] Prevent backspace on correct characters (except for ctrl+backspace for word deletion)
+- [ ] Fix/prevent reset accuracy to 100% when correcting misspellings
+- [ ] Other theme toggle button in top right corner
+- [ ] Reposition text/typing paragraph to north position
+- [ ] Add empty space below typing area for future game modes
+- [ ] In endscreen:
+ - [ ] Replace empty space with graph
+ - [ ] Keep text visible at top
+ - [ ] Position WPM on left side of graph
+ - [ ] Position errors on right side of graph
+ - [ ] Position time at bottom
+ - [ ] Add graph axes with:
+ - [ ] 0 in bottom left corner
+ - [ ] WPM on y-axis
+ - [ ] Time in whole seconds on x-axis
+- [ ] Fix raw WPM calculation (different from regular WPM)
+- [ ] Update end screen buttons to match main menu button style (border/colors) \ No newline at end of file