Commit Graph

86 Commits (feat/music-streaming)
 

Author SHA1 Message Date
Laurent 7f31945b84 updates 1 month ago
Laurent 9b6bd8929e cleanup 1 month ago
Laurent 5bcf55f808 fixes and improvements 1 month ago
Laurent 0e018a79dd feat: add LibraryViewModel.applyTrackEdits 1 month ago
Laurent d7b91ac14c feat: add TrackEditService save orchestration 1 month ago
Laurent b327fc5221 feat: add TagWriter protocol with mp3/m4a writers 1 month ago
Laurent a4c59fc8c6 harden: precondition + multi-track test for EditableTrackFields.shared 1 month ago
Laurent baed9e782a harden: precondition + multi-track test for EditableTrackFields.shared 1 month ago
Laurent 31ee9a15df feat: enable read-write file access for tag writeback 1 month ago
Laurent f0a5677f68 feat: add tabbed TrackInfoSheet 1 month ago
Laurent 515f257f83 feat: add DatabaseService.updateTrack 1 month ago
Laurent 378b71a857 feat: add EditableTrackFields with diff/shared/apply logic 1 month ago
Laurent 1970ab58c2 refactor: extract TrackFileStats shared stat/hash helper 1 month ago
Laurent c04533d0a8 chore: add import Foundation and clarifying comments to context menu code 1 month ago
Laurent bd97d060a0 feat: wire TrackContextMenuConfig to bottom controls and track table 1 month ago
Laurent 3ccdfbfc79 feat: add contextMenuConfig param to PlayerControlsView 1 month ago
Laurent 7a9564f026 fix: guard against out-of-bounds tag in addToPlaylist context menu handler 1 month ago
Laurent b006bf75c3 refactor: replace TrackTableView playlist params with TrackContextMenuConfig 1 month ago
Laurent cce5779430 fix: stable view identity in TrackContextMenuModifier, remove @Sendable from config closures 1 month ago
Laurent 8920cad499 feat: add TrackContextMenuModifier SwiftUI view modifier 1 month ago
Laurent 0ad417e682 fix: add nonisolated and @Sendable to TrackContextMenuConfig 1 month ago
Laurent c9cdf80a14 feat: add TrackContextMenuConfig value type 1 month ago
Laurent 793fe036ad test: verify startsWith LIKE metachar escaping; document non-atomic edit writes 1 month ago
Laurent 7b88b180fd feat: wire SmartPlaylistBuilderSheet into menu and context menu 1 month ago
Laurent 9eb47b61e1 feat: add SmartPlaylistBuilderSheet with ConditionRowView 1 month ago
Laurent 1dff7cb5d1 fix: escape LIKE metacharacters in startsWith; add lessThan test 1 month ago
Laurent e3930821f4 feat: add migration v5 and structured condition query support to DatabaseService 1 month ago
Laurent 50daf23e11 feat: add conditions field to SmartPlaylist model 1 month ago
Laurent 47beb9f899 fix: add Sendable to FieldType enum 1 month ago
Laurent bebd30974a feat: add SmartPlaylistCondition model with Codable types 1 month ago
Laurent 6f07349a1e fix: support HTTP byte-range requests on /file so streamed tracks auto-advance 1 month ago
Laurent 98f11658ad first working instance 1 month ago
Laurent 0829dba09a feat: add HLSManifestGenerator with TDD tests 1 month ago
Laurent 981c9123a1 feat: add AppRole, StreamingConstants, Routes, APIModels to MusicShared 1 month ago
Laurent d8863299ff chore(MusicShared): add .gitignore to exclude .build artifacts 1 month ago
Laurent aae1c8a957 feat: create MusicShared Swift package with public RemoteProtocol types 1 month ago
Laurent d7e81b1d31 refactor: remove artworkData BLOB from database, load artwork from files on demand 1 month ago
Laurent db3873b29e pbxproj update 1 month ago
Laurent d17dac287d feat(remote): add network status banners, disable write actions in remote mode 1 month ago
Laurent 4b256f7811 feat(remote): wire HostServer and RemoteClient into MusicApp with menu items and DB swap 1 month ago
Laurent 4ee0325d2f feat(remote): add ConnectionSheet for discovering and connecting to hosts 1 month ago
Laurent fb76901366 feat(remote): add NetworkStatus model for View-layer network state 1 month ago
Laurent 4bf1a5e4ef feat(remote): add RemoteClient with Bonjour discovery, DB download, NDJSON command channel 1 month ago
Laurent 463ecb518b feat(remote): add HostServer with Bonjour, HTTP DB download, and NDJSON command channel 1 month ago
Laurent e5b5c249b4 refactor: remove AudioService from ContentView — all playback state via PlayerViewModel 1 month ago
Laurent 4fa431e9bd refactor: make PlayerViewModel single source of truth for all playback state 1 month ago
Laurent c3b97eb201 feat(remote): add DatabaseService.fetchTracksByIds for efficient ID-based lookups 1 month ago
Laurent c754858f21 feat(remote): add NDJSONTransport for line-buffered JSON framing over TCP 1 month ago
Laurent b0359f127b feat(remote): add ConnectionState machine with transition validation 1 month ago
Laurent 89d50e6e94 feat(remote): add structured os.Logger for host and client 1 month ago