Improvement roadmap: tooling, UX, in-app round-trip, DSP quality (v0.4.0)#1
Merged
Conversation
Replace ESLint + typescript-eslint + react plugins with Biome 2.x for unified linting and formatting. Add biome.json tuned to the existing code style (single quotes, no semicolons, 2-space, 90-col) with the react domain enabled. Swap package scripts to biome lint/format/check and wire an e2e script. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
One-time formatting pass from running `biome check --write` after the ESLint->Biome migration. Whitespace/quote/import-ordering only; no behavioral changes. Also converts the display-only hop-size <label> to a <div> (it wraps no form control). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a quality job (biome check, typecheck, vitest, build) and an e2e job that builds, serves the preview, and runs the Playwright smoke test against the runner's preinstalled Chrome. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a header theme toggle (useTheme hook: class-based .dark, persisted to localStorage, honours prefers-color-scheme) and mount a sonner Toaster for download/error feedback. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add encode/decode progress spinners, a Start over reset on both tabs, a Cancel button for in-flight reconstruction (useReconstruct.cancel), download/error toasts, clearer CRC-failure guidance, and responsive select widths. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add in-app A/B audio playback (original input + reconstructed output via a shared AudioPlayer), a spectral-convergence quality readout computed in the worker and surfaced on the backward tab, and a viridis false-color spectrogram preview alongside the literal encoded image on the forward tab. Extract the CLI's spectralError into core/metrics.ts (tested) and reuse it. New pure helpers (metrics, colormap, spectrogramView) are TDD-covered. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add resampleSinc (Blackman-windowed sinc with an anti-alias low-pass that drops the cutoff to the target Nyquist when downsampling) and use it in decodeAudioFile instead of linear interpolation. Far less aliasing for music and wideband audio. Tested against the linear path. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Fast Griffin-Lim: optional momentum extrapolation (Perraudin et al.) reaches comparable fidelity in fewer iterations; momentum 0 is exactly the classic algorithm. Exposed as an 'Accelerated' quality preset. - Custom iterations: a slider drives an arbitrary Griffin-Lim iteration count alongside the presets. - Partial-phase storage (format v2): the unused 16-bit B channel now holds an 8-bit quantized STFT phase, flagged by a new header bit (the former spare reserved bit; SCHEMA_VERSION bumped to 2). The decoder seeds Griffin-Lim with it for dramatically better reconstruction. v1 images (spare bit 0) decode unchanged with hasPhase=false. Forward tab gains a 'Store phase' toggle (16-bit only); backward tab seeds automatically. All new logic is TDD-covered; an end-to-end test confirms the seeded reconstruction beats the unseeded one and that v1/8-bit images still decode. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the four-phase improvement roadmap. Branched off `main`; 11 commits; `v0.0.0 → v0.4.0`. 96 tests pass, Biome check/typecheck/build clean, e2e smoke green, each phase verified in a dev browser.
Phase 1 — Production hygiene
Phase 2 — UX polish
Phase 3 — Close the loop in-app
Phase 4 — DSP quality
Testing
All new pure logic is TDD-covered (metrics, colormap, spectrogram-view, GL momentum/seeding, sinc resampler, phase pack/unpack, header flag). End-to-end tests confirm seeded reconstruction beats unseeded and that v1/8-bit images still decode.
🤖 Generated with Claude Code