Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
09850f0
Add comprehensive synthesis engine specification
claude Dec 15, 2025
7e94869
Phase 25: Implement Tone.js hybrid integration
claude Dec 15, 2025
12abf1c
Phase 25: Complete synthesis engine implementation
claude Dec 15, 2025
40ed9f7
Phase 25.5: Deep audit fixes for synthesis engine
claude Dec 15, 2025
cbb0a76
Centralize VALID_DELAY_TIMES in worker/invariants.ts
claude Dec 15, 2025
a5ec0b1
Add lazy audio loading with feature flag (VITE_LAZY_AUDIO)
claude Dec 15, 2025
de3fde1
Fix: Don't attempt AudioContext init on hover (not a valid gesture)
claude Dec 15, 2025
8a9ed36
Centralize audio trigger logic with tests and observability
claude Dec 15, 2025
101b7c9
Add synthesis engine architecture documentation
claude Dec 15, 2025
dc5d839
Add UI requirements section to synthesis engine spec
claude Dec 15, 2025
1410b77
Add hardware-inspired EffectsPanel and expanded SamplePicker
claude Dec 15, 2025
71e5dd5
Revert UI implementation - spec updates only
claude Dec 15, 2025
1aae79d
Enhance synthesis engine spec with UI refinements and example sessions
claude Dec 15, 2025
2052ee5
Fix TypeScript and ESLint errors in audio/synth feature branch
adewale Dec 15, 2025
2308f9b
Fix codebase audit issues: memory leaks, preview bugs, instrument rou…
adewale Dec 16, 2025
20bd311
Fix memory leaks and extract shared utilities
adewale Dec 16, 2025
73af56b
Fix keyboard view not showing for sampled instruments (piano)
adewale Dec 16, 2025
0584e32
Add comprehensive tests for isMelodicInstrument function
adewale Dec 16, 2025
12e4fbc
Add Phase 21A: Codebase Audit & Technical Debt to roadmap
adewale Dec 16, 2025
cbf2778
Update Phase 22 to capture full synthesis engine implementation
adewale Dec 16, 2025
e3871e6
Fix documentation consistency issues from audit
adewale Dec 16, 2025
b05c67d
Add missing remaining work items to Phase 25
adewale Dec 16, 2025
fddf972
Fix phase number references in code comments
adewale Dec 16, 2025
66397cf
feat(multiplayer): Add playback presence indicators on player avatars
adewale Dec 16, 2025
1602c44
docs: Add playback presence indicator to STATUS.md and ROADMAP.md
adewale Dec 16, 2025
d5bdfe5
fix: Resolve TypeScript and ESLint errors in test files
adewale Dec 16, 2025
48a9742
chore: Remove dead code modules (toneSampler, tone-note-players)
adewale Dec 16, 2025
bc900af
feat: Add comprehensive debugging infrastructure and tooling
adewale Dec 16, 2025
bb9acdc
fix(test): Update integration tests for Phase 22 per-player playback
adewale Dec 16, 2025
2ae9074
refactor(audio): Unify semitoneToFrequency and remove dead code
adewale Dec 16, 2025
0bfa8a3
feat(phase-23): Effects bypass, playback mode toggle, XY pad, LRU cache
adewale Dec 16, 2025
47a63f1
feat(phase-23): Integrate LRU cache with SampledInstrument, lazy loading
adewale Dec 16, 2025
14cc36c
fix(phase-23): Fix piano loading race condition, add instrument-types…
adewale Dec 17, 2025
91ffae8
feat(phase-23): Extend MAX_STEPS to 128, fix mid-playback preloading,…
adewale Dec 17, 2025
c5997ab
feat(sessions): Add 6 demo sessions showcasing full feature range
adewale Dec 17, 2025
0c912e8
fix(types): Add explicit type annotation to prevNode in LRU cache
adewale Dec 17, 2025
a8f7334
fix(e2e): Update selector from .sample-btn to .instrument-btn
adewale Dec 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions .claude/commands/post-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Post-Fix Analysis Command

A bug has been fixed. Now perform a comprehensive post-fix analysis to find similar issues across the codebase.

## Instructions

1. **Understand the fix**: Ask the user (or infer from recent conversation) what the bug was and what pattern caused it.

2. **Extract the pattern**: Identify:
- The code pattern that caused the bug (e.g., `getInstance()`, `setTimeout without cleanup`)
- Any risky context that makes the pattern dangerous (e.g., `Tone.`, `audioContext`)
- The file that was fixed

3. **Run the post-fix analysis tool**:
```bash
cd /Users/ade/Documents/projects/tunejs_implementation/keyboardia/app && npx tsx scripts/post-fix-analysis.ts \
--pattern "PATTERN_HERE" \
--risky-context "CONTEXT_HERE" \
--file "FIXED_FILE" \
--symptom "SYMPTOM"
```

4. **Review high-risk matches**: For any matches marked as HIGH RISK:
- Read the affected files
- Determine if they have the same bug
- Report findings to the user

5. **Update documentation if warranted**: If this is a new bug pattern:
- Consider adding to `src/utils/bug-patterns.ts`
- Consider adding to `docs/DEBUGGING-LESSONS-LEARNED.md`
- Use `npx tsx scripts/bug-capture.ts --interactive` if detailed capture needed

6. **Report to user**:
- How many similar patterns were found
- Which are high risk and need review
- Recommendations for prevention

## Example Usage

User: "I fixed a singleton bug in engine.ts where getInstance() was caching Tone.js nodes"

Response:
1. Run post-fix analysis with pattern `getInstance\(\)` and risky context `Tone\.`
2. Review matches in audio/ directory
3. Report findings

## Arguments

$ARGUMENTS - Optional: Description of the bug that was fixed (pattern, file, symptom)
10 changes: 7 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Planned
- Phase 16: Authentication & session ownership
- Phase 17: Advanced synthesis engine
- Phase 26: Performance optimization
- Named Tone.js imports (tree-shaking)
- Code splitting for audio modules
- Lazy audio engine loading with feature flag
- Future: Euclidean rhythms, per-track swing, conditional triggers

## [0.2.0] - 2025-12-11
Expand Down Expand Up @@ -92,7 +96,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added

#### Audio Engine
- Step sequencer with 16 tracks × 64 steps
- Step sequencer with 16 tracks × 128 steps
- 16 synthesized samples (drums, bass, synth, FX)
- 5 real-time synth presets (bass, lead, pad, pluck, acid)
- Lookahead scheduling (25ms timer, 100ms ahead)
Expand Down Expand Up @@ -142,10 +146,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- SPA routing support

### Technical Details
- `MAX_STEPS = 64` (4 bars of 16th notes)
- `MAX_STEPS = 128` (8 bars of 16th notes)
- `STEPS_PER_PAGE = 16` (1 bar)
- `MAX_TRACKS = 16`
- Global step counter (0-63) with per-track modulo for polyrhythms
- Global step counter (0-127) with per-track modulo for polyrhythms

---

Expand Down
1 change: 1 addition & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,4 @@ dist-ssr
*.njsproj
*.sln
*.sw?
debug-reports/
Loading