Daniel Harvey 4a0c17c318 Fix Critical: IndexSystem lock races and TrackRepository.Update silent-create
- Replace object lock with SemaphoreSlim(1,1) on both DirectoryIndexDirectory
  and VaultIndexDirectory; SaveIndexAsync now executes inside the semaphore
  so mutate+persist is atomic
- ReloadIndexAsync acquires the semaphore before LoadIndexAsync so disk load
  and in-memory swap are atomic with respect to concurrent writes
- HasIndexEntry and GetEntryMetadata converted to async Task with WaitAsync;
  MediaVault.GetEntryAsync call sites updated accordingly
- TrackRepository.Update throws InvalidOperationException when Id not found
  instead of silently calling Create; service layer catches and wraps as fail result
2026-05-17 11:24:50 -04:00
2025-09-04 19:58:46 -04:00
2026-05-17 09:07:23 -04:00
2025-09-15 17:03:36 -04:00
2026-05-16 19:33:23 -04:00
2026-05-16 19:33:23 -04:00
2025-12-09 16:46:07 -05:00
2025-09-08 09:46:56 -04:00
2025-09-08 09:46:56 -04:00
S
Description
No description provided
19 MiB
2026-06-27 02:55:40 +00:00
Languages
C# 60.5%
TypeScript 17.6%
HTML 14.5%
CSS 5.4%
Shell 1.8%
Other 0.2%