daniel
fcc95b9195
style: Phase 18 Wave 2 — appbar navy, dark hero legibility, true page ground, green-on-green play chip
2026-06-19 20:32:21 -04:00
daniel
0f7088fe86
Merge p18-w1-theme-dark-remediation into dev (Phase 18 dark-mode token pass)
2026-06-19 19:12:26 -04:00
daniel
5408d0779c
fix: scope play-glyph override to dark mode, fix connect-option hover, tokenize bio placeholder, correct popover comment
2026-06-19 19:04:05 -04:00
daniel
abe94953b9
docs: add Phase 19 user-management CMS wiring plan + product note
2026-06-19 19:02:40 -04:00
daniel
03fdcda054
style: theme-aware token pass for dark-mode surfaces (Phase 18)
...
Re-point neutral page surfaces, play-chip, and default popover from constant brand tokens to theme-aware aliases defined twice in deepdrft-tokens.css. Decorative navy/green sections and bespoke dark-glass panels untouched. Appbar-navy symptom deferred (palette C#, out of CSS scope).
2026-06-19 18:12:35 -04:00
daniel
5298cab9b1
feature: Re-enable Dark Mode Toggle & App Bar Styles & Mobile App Bar Fixes
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 2m9s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 4m7s
Deploy DeepDrftAPI / Deploy (push) Successful in 1m34s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m31s
2026-06-19 17:48:26 -04:00
daniel
e05d93a67b
docs: document upload staging directory and Upload:StagingPath config
2026-06-19 17:45:52 -04:00
daniel
fd4fdd2624
docs: add Phase 18 theme/dark-mode remediation plan + product note
2026-06-19 17:41:11 -04:00
daniel
639f4741e6
Merge upload-temp-disk-fix into dev (stage large audio uploads on data disk instead of /tmp)
2026-06-19 17:37:26 -04:00
daniel
d7071fdbc2
fix: always delete staging file on mid-copy abort
...
Build the staging path before the copy in both UploadTrack and ReplaceAudio so the finally block deletes it on cancellation or IO error, not only on success.
2026-06-19 17:36:06 -04:00
daniel
37cf19c405
fix: stage audio uploads on data disk instead of /tmp
...
Relocate both the framework multipart buffer (via ASPNETCORE_TEMP) and the controller staging file to a configurable data-disk directory, so large WAV/FLAC/MP3 uploads no longer fail on the host's small tmpfs.
2026-06-19 17:25:51 -04:00
daniel
37bbfb947f
docs: note footer PRIVACY button + centered MudOverlay privacy modal
2026-06-19 17:09:37 -04:00
daniel
261b11436e
Merge privacy-footer-overlay into dev (PRIVACY footer button + centered overlay note)
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 2m11s
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m29s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m56s
Deploy DeepDrftAPI / Deploy (push) Successful in 1m33s
Deploy DeepDrftManager / Deploy (push) Successful in 1m29s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m29s
2026-06-19 17:02:17 -04:00
daniel
280dbbcbc9
style: DRY footer btn CSS, add trailing newline, drop wrong section ordinal
2026-06-19 16:59:01 -04:00
daniel
ce17a685e0
docs: reflect Phase 17 Wave 17.3 landing; Phase 17 complete
2026-06-19 16:48:48 -04:00
daniel
64379c8901
feat: move footer privacy note behind PRIVACY overlay button
2026-06-19 16:48:46 -04:00
daniel
1f8802363c
Merge p17-w3-embed-panel into dev (Phase 17 Wave 17.3: Fixed embed queue panel + collapse/resize handshake)
2026-06-19 16:38:38 -04:00
daniel
58cdb4d9dc
fix: isolate multi-embed resize handshake with per-snippet token
...
ForRelease mints a per-call token used as the iframe id and threaded into the src as EmbedId; the host script matches on it so multiple embeds resize independently. ForTrack unchanged.
2026-06-19 16:32:59 -04:00
daniel
97cce691db
docs: document upload duplicate-detection rule, release/exists endpoint, and FindOrCreateRelease WasCreated contract
2026-06-19 16:25:50 -04:00
daniel
d0be26bb3e
Merge upload-duplicate-detection into dev (block duplicate-release uploads by title+artist)
2026-06-19 16:22:28 -04:00
daniel
466084b5a3
feat: Phase 17.3 — Fixed embed queue panel with collapse/expand iframe resize (OQ1 Option A)
...
Read-only inline queue panel below the release embed's player bar; row-jump reuses PlayRelease. ForRelease mints a taller iframe plus a postMessage resize listener for the collapse toggle; ForTrack unchanged.
2026-06-19 16:21:45 -04:00
daniel
558ff4b4c6
fix: close TOCTOU in CREATE path; add anti-forgery, loose-track, and case-sensitivity tests
...
FindOrCreateRelease now returns (ReleaseDto, bool WasCreated); the CREATE path in UploadAsync
rejects WasCreated=false as a duplicate rather than silently attaching on a lost race.
2026-06-19 15:55:08 -04:00
daniel
bd85507308
Block duplicate-release uploads by (title, artist): pre-flight check + server 409 backstop, with within-batch Cut attach via releaseId
2026-06-19 15:44:41 -04:00
daniel
fbd298b9c3
docs: reflect Phase 17 Wave 2 (docked overlay + Add-to-Queue) and Phase 16.5 capstone landing
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 3m2s
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m24s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 4m2s
Package install tarball / package (push) Successful in 6s
Deploy DeepDrftAPI / Deploy (push) Successful in 1m34s
Deploy DeepDrftManager / Deploy (push) Successful in 1m31s
Deploy DeepDrftPublic / Deploy (push) Successful in 2m0s
beta-20260619-fbd298b
2026-06-19 15:42:17 -04:00
daniel
3da6591194
docs(phase-16): reflect live Plays card in stats CLAUDE.md
...
HomeStatsDto gains TotalPlays + UniqueListeners; StatsController now composes ITrackService + IEventService (best-effort play/listener reads).
2026-06-19 15:41:17 -04:00
daniel
da60296cf8
Merge p17-w2-t2-add-to-queue into dev (Phase 17 Wave 17.4: Add-to-Queue affordance)
2026-06-19 15:35:19 -04:00
daniel
4320ea8029
Merge p17-w2-t1-docked-overlay into dev (Phase 17 Wave 17.2: docked queue overlay + ClearUpcoming)
2026-06-19 15:34:59 -04:00
daniel
678d3f66ad
Merge p16-w5-t2-privacy-footer into dev (anonId privacy disclosure footer line)
2026-06-19 15:33:28 -04:00
daniel
be04e53a97
Merge p16-w5-t1-plays-card into dev (Phase 16 Wave 16.5: home Plays-card live)
2026-06-19 15:31:37 -04:00
daniel
58b30d3c13
feat(footer): add anonId privacy disclosure line
...
Wraps existing footer row in .deepdrft-footer-main and adds a
.deepdrft-footer-privacy paragraph below it with the approved
Variant 1 copy. Mono fine-print at 0.55 rem / 70% opacity.
2026-06-19 15:26:07 -04:00
daniel
be1a55fd37
feat(stats): flip home Plays card live (Phase 16.5)
...
Add TotalPlays + UniqueListeners to HomeStatsDto, composed at
StatsController from IEventService (no migration). Card reads via
existing persistent-state-bridged round-trip.
2026-06-19 15:26:07 -04:00
daniel
9d0ce99a5d
fix: PlayRelease always materialises a defensive copy so Items alias can't wipe the queue on jump; add aliasing regression test
2026-06-19 15:23:20 -04:00
daniel
1d387c2a34
feat(player): add append-only "Add to Queue" buttons beside detail-page play affordances
...
Cut header (release → EnqueueRange), Cut track rows + Session/Mix hero (track → Enqueue). Reuses existing engine path; add is not play.
2026-06-19 15:18:38 -04:00
daniel
fe3819f378
feat(player): docked queue overlay with reorder, remove, jump, and clear-upcoming
...
Add a Queue toggle to the docked player bar opening a centered editable queue
overlay. New additive QueueService.ClearUpcoming keeps the playing track while
dropping the rest. Current track is non-removable.
2026-06-19 15:18:25 -04:00
daniel
cfcc2693f2
docs: reflect raised upload cap (~1.86 GB) and 1200s response timeout
2026-06-19 15:14:07 -04:00
daniel
621c4f9cb3
docs(phase-16): draft anonId privacy-note copy; note deferred Postgres integration harness
2026-06-19 15:10:15 -04:00
daniel
67eeb38529
Merge fix-large-upload-cap into dev (raise CMS upload cap to ~1.86 GB + nginx timeouts)
2026-06-19 15:08:48 -04:00
daniel
9aa66e8a62
docs: resolve remaining seven Phase 17 open questions (all 11 now closed)
2026-06-19 15:08:39 -04:00
daniel
3b9ca700c9
raise upload size cap to ~1.86 GB and nginx timeouts to 1200s
...
Raise RequestSizeLimit/MultipartBodyLengthLimit on upload+replace-audio,
MaxUploadBytes in BatchUpload/BatchEdit, and DefaultResponseTimeoutSeconds to
1200s. Add client_max_body_size 2000m and proxy_read/send_timeout 1200s to the
nginx manager/public confs.
2026-06-19 15:02:49 -04:00
daniel
4317a2f9e7
docs(phase-16): record 16.2 absorption + 16.3 anonId landing
...
PLAN/COMPLETED mark 16.2 absorbed into 16.1 and 16.3 landed (no migration). Folder CLAUDE.md files reflect anonId now accepted/persisted + the distinct-listener queries.
2026-06-19 14:57:23 -04:00
daniel
297805b5a8
Merge p16-w3-anonid into dev (Phase 16 Wave 16.3: unique-listener anonId layer)
2026-06-19 14:43:46 -04:00
daniel
944f23a88c
docs: reflect Phase 17 Wave 17.1 landing (queue Move/RemoveAt + QueueList)
2026-06-19 14:43:36 -04:00
daniel
75e5d99aea
Merge p17-w1-queue-engine-list into dev (Phase 17 Wave 17.1: queue Move/RemoveAt + shared QueueList)
2026-06-19 14:38:25 -04:00
daniel
c084efa78e
feat(phase-16.3): light up anonId unique-listener layer
...
Mint a first-party localStorage anonId, thread it onto play/share beacons,
persist it via EventController, and add all-time distinct-listener counts
(site/track/release). Storage columns + indexes already existed from 16.1.
2026-06-19 14:37:55 -04:00
daniel
f296bbdf00
Add queue Move/RemoveAt + dormant-Enqueue coherence and shared QueueList (Phase 17.1)
2026-06-19 14:32:08 -04:00
daniel
ebbaa3f84f
docs: resolve four Phase 17 open questions (OQ1/OQ4/OQ8/OQ10), defer ReleaseGallery card affordance
2026-06-19 13:42:19 -04:00
daniel
a715f4b28d
Merge p16-w1-foundation into dev (Phase 16 Wave 16.1: anonymous play & share telemetry substrate)
2026-06-19 13:34:01 -04:00
daniel
90555dc4e0
docs: spec Phase 17 player-bar queue view (queue button, overlay/embed modes, add-to-queue)
2026-06-19 13:29:57 -04:00
daniel
0fbf81b23e
Merge branch 'dev' into p16-w1-foundation
...
# Conflicts:
# DeepDrftPublic.Client/Controls/SharePopover.razor.cs
2026-06-19 13:28:50 -04:00
daniel
4114aa0be4
docs: reflect embed new-tab title link and embed queue skip buttons
2026-06-19 13:22:29 -04:00