daniel-c-harvey
c766cdf5b8
Merge branch 'p2-w2-t1-public-image' into dev
2026-06-07 16:41:39 -04:00
daniel-c-harvey
fa28bfb5cc
feat: add Share popover to track detail page
2026-06-07 16:38:37 -04:00
daniel-c-harvey
10cb96ef7c
feat: add public image proxy and wire TrackCard cover art to api/image/{entryKey}
2026-06-07 16:33:24 -04:00
daniel-c-harvey
6ef88bef38
docs: document SetMinimized as single mutation point in AudioPlayerBar
2026-06-07 16:20:58 -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
4e6ec75000
Merge branch 'seek-fix' into dev
2026-06-07 15:07:13 -04:00
daniel-c-harvey
8e4d783ec2
chore: Move TrackCard & Friends
2026-06-07 15:06:58 -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
4072197313
Merge branch 'hero-animation-seam' into dev
2026-06-07 13:05:33 -04:00
daniel-c-harvey
22452815c6
docs: mark WASM seam G1/R1 resolved in audit doc
2026-06-07 13:02:21 -04:00
daniel-c-harvey
8ba3a10e15
fix: gate hero fade-up on SSR pass only to stop double-fire on WASM hydration
2026-06-07 12:57:54 -04:00
daniel-c-harvey
e04f780014
fix: stack hero-actions buttons full-width at xs (<=599px)
2026-06-07 10:06:20 -04:00
daniel-c-harvey
75766154bb
fix: correct xs breakpoint from 600px to 599px in Home.razor.css (sm starts at 600px)
2026-06-07 09:50:09 -04:00
daniel-c-harvey
cb9c5f9b3c
fix: add trailing newline to DeepDrftFooter.razor.css
2026-06-07 09:45:38 -04:00
daniel-c-harvey
5d3ea49de8
fix: stack NowPlayingStats vertically and tighten footer padding at xs (<=599px)
2026-06-07 09:43:51 -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
8b3e7e0620
fix: wrap hero and section-split MudGrids in plain HTML elements so CSS isolation scope attributes reach .hero and .section-split rules
2026-06-07 07:48:26 -04:00
daniel-c-harvey
18b5fa9401
feature: Responsive mobile layout for home page
...
Migrate hero, section-header, and section-split to MudGrid with xs/sm/md breakpoints (Spacing=0 to keep color panels flush); add @media collapse rules for genre/features card grids and the CTA banner. Visual styling unchanged at desktop width.
2026-06-07 07:37:09 -04:00
daniel-c-harvey
13adb144a6
feature: Mobile Menu & Style Polish
2026-06-07 06:53:21 -04:00
daniel-c-harvey
84a302ce24
feature: Palette Enhancements
2026-06-06 21:24:19 -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
7dfdad2666
docs: archive track detail page to COMPLETED.md; update CLAUDE.md
2026-06-06 17:39:13 -04:00
daniel-c-harvey
b1d58c1327
Merge branch 'track-detail-page' into dev
2026-06-06 17:30:10 -04:00
daniel-c-harvey
6b18d7cc1e
Player Layout
2026-06-06 17:28:39 -04:00
daniel-c-harvey
93d9b47a67
fix: TrackDetail render mode, pause, and secondary text color
2026-06-06 16:45:07 -04:00
daniel-c-harvey
0dd33a5dfc
Add track detail page with clickable cards
2026-06-06 16:33:57 -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
d96c41eafb
docs: reconcile PLAN.md and CONTEXT.md with post-split solution state
2026-06-06 15:27:14 -04:00
daniel-c-harvey
9110b4b764
docs: archive play-state icon normalization; update DeepDrftPublic.Client CLAUDE.md
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 1m57s
Deploy DeepDrftManager / Build & Publish (push) Successful in 59s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m34s
Deploy DeepDrftAPI / Deploy (push) Successful in 1m32s
Deploy DeepDrftManager / Deploy (push) Successful in 1m30s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m26s
2026-06-06 11:59:53 -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
766e98fd2b
Reflect real playback state on gallery cards and toggle pause/resume
...
Add IsPaused/OnPause to TrackCard, make TracksGallery controlled, and
drive the active track from PlayerService.CurrentTrack as the single
source of truth.
2026-06-06 10:09:07 -04:00
daniel-c-harvey
d055c2a548
WASM State Fixes
2026-06-06 09:59:43 -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
7c89220667
Merge branch 'waveform-w1-t2-api' into dev
2026-06-05 16:58:59 -04:00
daniel-c-harvey
9538310c43
Merge branch 'track-css-consolidation' into dev
2026-06-05 16:58:12 -04:00
daniel-c-harvey
b3473aa37e
refactor(css): consolidate track-view layout and card text color rules; switch genre chip to Outlined variant
2026-06-05 16:58:07 -04:00
daniel-c-harvey
de4583b759
Add waveform profile HTTP transport: API endpoint, public proxy, content client method
2026-06-05 16:57:42 -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