daniel-c-harvey
f767d288c5
feat: normalize release-cardinal fields out of track into a Release entity (Phase 8 §8.0)
2026-06-11 12:51:21 -04:00
daniel-c-harvey
760e9a1982
fix: Adjust Spectrum Bar Colors
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m37s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m23s
2026-06-09 06:23:23 -04:00
daniel-c-harvey
f40786171d
fix: shrink .lmf-icon to 56px to match MudFab Size.Large
2026-06-08 16:33:20 -04:00
daniel-c-harvey
5258729c86
feat: enlarge LevelMeterFab note to 68px so it fills the 72px FAB
2026-06-08 16:27:08 -04:00
daniel-c-harvey
8679a9f619
fix: scale LevelMeterFab music note to fill the FAB — bump .lmf-icon from 24px to 56px
2026-06-08 16:17:23 -04:00
daniel-c-harvey
ae22153edb
style: LevelMeterFab FAB to 72px, icon to 36px
2026-06-08 16:16:22 -04:00
daniel-c-harvey
e3df6dd93e
fix: scale LevelMeterFab music note to fill the FAB — bump .lmf-icon from 24px to 56px
2026-06-08 16:15:01 -04:00
daniel-c-harvey
505ac0c47b
style: retune spectrum gradient — dark green floor 0-30%, expand yellow/orange zones
2026-06-08 14:54:56 -04:00
daniel-c-harvey
4e6e3c9eab
feat: apply amplitude-tracking gradient to spectrum bars matching LevelMeterFab color scheme
2026-06-08 14:49:23 -04:00
daniel-c-harvey
58725c4646
feat: true RMS dBFS level measurement for LevelMeterFab via getFloatTimeDomainData
2026-06-08 14:40:11 -04:00
daniel-c-harvey
149127c920
fix: recalibrate level meter dB window to [-70, -10] for FFT peak data
2026-06-08 14:20:50 -04:00
daniel-c-harvey
b9969640e5
feat: continuous vertical VU fill for LevelMeterFab, replacing 3-band tint
2026-06-08 08:55:45 -04:00
daniel-c-harvey
1c942ffb2b
fix: LevelMeterFab icon tint via inline style, bypass Blazor CSS isolation scoping of :root
2026-06-08 08:25:56 -04:00
daniel-c-harvey
7eae599490
fix(LevelMeterFab): replace MudFab with hand-rolled button+SVG so band color tinting is no longer overridden by MudBlazor internals
2026-06-08 07:46:49 -04:00
daniel-c-harvey
165d935ae7
feat: LevelMeterFab tints the minimized-dock FAB icon by live audio level
2026-06-08 07:15:57 -04:00
daniel-c-harvey
5bc1b63b61
fix: route all _isMinimized mutations through SetMinimized so spacer stays in sync
...
Expand, ToggleMinimized, and Close now share one guarded mutator that fires
OnMinimized and renders. Fixed prerender branch left as a direct assignment.
2026-06-07 16:14:55 -04:00
daniel-c-harvey
daa334a947
fix: seek lower-bound guard and pointer-down callback ordering
...
AudioPlayer.ts: route seeks below bufferStart to seekBeyondBuffer;
previous missing lower-bound caused clamped playback after first seek.
WaveformSeeker: fire OnSeekStart/OnSeekChange before capturePointer
await to prevent fast-click race that locked _isSeeking true.
Latent: WavOffsetService encodes remaining-only DataSize, overwriting
JS this.duration after seek — not fixed here, scope separately.
2026-06-07 15:02:34 -04:00
daniel-c-harvey
bd15b66aee
feature: Home Page & Footer Mobile Friendly
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 1m56s
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m3s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m22s
Deploy DeepDrftAPI / Deploy (push) Successful in 1m33s
Deploy DeepDrftManager / Deploy (push) Successful in 1m27s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m29s
2026-06-07 13:48:12 -04:00
daniel-c-harvey
5cdd69d7d9
fix: WaveformSeeker resize drift and mobile fast-tap crash
...
- Add ResizeObserver (JS observeResize/unobserveResize + C# OnWidthChanged)
so _elementWidth stays current after window resize, fixing hover indicator drift
- Move _isSeeking = true before capturePointer await so a fast mobile tap
that fires pointerup mid-await still commits the seek
- Replace all Duration!.Value null-forgiving dereferences with explicit
Duration is > 0 guards in all four pointer event handlers
- Silence post-dispose resize callback rejections with .catch(() => {})
2026-06-07 09:00:10 -04:00
daniel-c-harvey
6dfb3a2f23
fix: AudioPlayerBar Styles
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m10s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m31s
Deploy DeepDrftManager / Deploy (push) Successful in 1m24s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m29s
2026-06-07 08:19:52 -04:00
daniel-c-harvey
13adb144a6
feature: Mobile Menu & Style Polish
2026-06-07 06:53:21 -04:00
daniel-c-harvey
9ce2631bf4
feature: AudioPlayer Enhancements
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 1m59s
Deploy DeepDrftManager / Build & Publish (push) Successful in 59s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m30s
Deploy DeepDrftAPI / Deploy (push) Successful in 1m33s
Deploy DeepDrftManager / Deploy (push) Successful in 1m27s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m28s
2026-06-06 20:17:50 -04:00
daniel-c-harvey
475f93c8a3
feature: AudioPlayerBar Layout Enhancements
2026-06-06 19:47:17 -04:00
daniel-c-harvey
a4b098b8ea
feature: AudioPlayerBar enhancements
2026-06-06 17:48:07 -04:00
daniel-c-harvey
6b18d7cc1e
Player Layout
2026-06-06 17:28:39 -04:00
daniel-c-harvey
1bb6e29e47
feature: Track Meta Labels on Player
2026-06-06 16:05:45 -04:00
daniel-c-harvey
c83b132522
feature: Embed Frame Player
2026-06-06 15:43:09 -04:00
daniel-c-harvey
526e607f33
Merge branch 'play-icons-w2-component' into dev
2026-06-06 11:52:57 -04:00
daniel-c-harvey
7d3da58573
Style Polish
2026-06-06 11:52:41 -04:00
daniel-c-harvey
e3fe401abf
Consolidate play/pause icon logic into PlaybackIcons mapper and PlayStateIcon component
...
Add Disabled parameter to PlayStateIcon; forward to MudIconButton;
pass Disabled="!IsLoaded" from PlayerControls to match Stop button parity.
2026-06-06 10:46:32 -04:00
daniel-c-harvey
b746645f97
WaveformSeeker Improvements
2026-06-06 09:52:31 -04:00
daniel-c-harvey
8de7342352
Replace MudSlider seekbar with WaveformSeeker loudness-waveform control
...
DOM bar chart with clip-overlay progress split; pointer-capture drag;
WaveformProfile fetched on load (fire-and-forget, cancellable); flat
fallback when no profile; small lazily-loaded waveformSeeker.js for
getBoundingClientRect and setPointerCapture.
2026-06-05 17:35:11 -04:00
daniel-c-harvey
cc1fa60a4d
refactor(player): move SpectrumVisualizer into VolumeZone above volume slider
...
Rename VolumeControls to VolumeZone; stack 24-bucket SpectrumVisualizer above volume
slider; remove it from PlayerSeekZone. MudSlider stays as seek placeholder. Pin
flex-shrink:0 on volume-zone; add Class param to VolumeZone for layout flexibility.
2026-06-05 16:38:13 -04:00
daniel-c-harvey
d9664988ad
Player Bar Cosmetics
2026-06-05 15:26:49 -04:00
daniel-c-harvey
87f722fa58
refactor(player): move TimestampLabel from PlayerTransportZone to PlayerSeekZone so volume centers against buttons row height
2026-06-05 14:38:38 -04:00
daniel-c-harvey
78c6803e6b
fix(css): halve volume control width and pin it to flex-start at wide breakpoints
2026-06-05 14:28:50 -04:00
daniel-c-harvey
cbc43300b2
fix(css): remove ::deep from PlayerTransportZone root-element selectors, replace dead controls-left rule
2026-06-05 14:08:16 -04:00
daniel-c-harvey
190d8d044f
Unify AudioPlayerBar to one responsive CSS layout and fix SpectrumVisualizer startup via StateChanged subscription
2026-06-05 14:04:31 -04:00
daniel-c-harvey
0c5ebae9c9
chore: move SpectrumVisualizer above seek slider in PlayerSeekZone
2026-06-05 13:52:46 -04:00
daniel-c-harvey
91214336c5
chore: move spectrum visualizer above seek slider; fix controls-left CSS scoping
2026-06-05 13:52:05 -04:00
daniel-c-harvey
72e9f71fbc
Refactor mobile AudioPlayerBar seek to use PlayerSeekZone, removing inline duplicate gesture code
2026-06-04 20:12:57 -04:00
daniel-c-harvey
f07ab4b235
fix(css): add ::deep prefix to MudBlazor component classes in AudioPlayerBar scoped styles
2026-06-04 20:04:27 -04:00
daniel-c-harvey
dbf02a9426
fix(seek): guard HandlePointerLeave with _isSeeking to prevent spurious seek-to-zero on mouse-out
2026-06-04 19:53:22 -04:00
daniel-c-harvey
8420ab8d37
Migrate desktop AudioPlayerBar to MudBlazor theme surface
2026-06-04 19:28:14 -04:00
daniel-c-harvey
7d49c64a5d
fix: enable player controls on load, clear track selection on stop and end-of-track
...
Add StateChanged multicast event to IPlayerService so AudioPlayerBar and TracksView
re-render themselves without relying on the IsFixed cascade re-render path. Clear
_selectedTrack in TracksView when IsLoaded drops (stop, unload, end-of-track). Set
IsLoaded=false in OnPlaybackEndCallback so end-of-track triggers the same clear path.
Add JS-module readiness probe in AudioInteropService; delete dead TS and buffered C#
path; consolidate GetPlayIcon/FormatTime helpers; fix misleading minimize dock icon.
2026-06-03 14:30:15 -04:00
Daniel Harvey
a88a523f39
fix(public): await OnSeekEnd in onpointerleave handlers (was fire-and-forget)
2026-05-21 09:06:26 -04:00
Daniel Harvey
b4fff43cb3
fix(public): break OnStateChanged callback chain and lazy-init audio player to stop circuit memory blowup
2026-05-21 07:36:55 -04:00
Daniel Harvey
e5b4a79727
refactor(split): rename DeepDrftWeb -> DeepDrftPublic and DeepDrftWeb.Client -> DeepDrftPublic.Client (Phase 4)
2026-05-19 23:06:16 -04:00