Commit Graph

  • 771c38f0a5 improvements main Laurent 2026-05-31 23:41:36 +0200
  • 7f31945b84 updates feat/music-streaming Laurent 2026-05-31 18:59:42 +0200
  • 9b6bd8929e cleanup Laurent 2026-05-31 14:51:23 +0200
  • 5bcf55f808 fixes and improvements Laurent 2026-05-31 14:51:08 +0200
  • 0e018a79dd feat: add LibraryViewModel.applyTrackEdits Laurent 2026-05-30 18:07:46 +0200
  • d7b91ac14c feat: add TrackEditService save orchestration Laurent 2026-05-30 18:05:33 +0200
  • b327fc5221 feat: add TagWriter protocol with mp3/m4a writers Laurent 2026-05-30 17:56:17 +0200
  • a4c59fc8c6 harden: precondition + multi-track test for EditableTrackFields.shared Laurent 2026-05-30 17:45:36 +0200
  • baed9e782a harden: precondition + multi-track test for EditableTrackFields.shared Laurent 2026-05-30 17:42:16 +0200
  • 31ee9a15df feat: enable read-write file access for tag writeback Laurent 2026-05-30 17:31:50 +0200
  • f0a5677f68 feat: add tabbed TrackInfoSheet Laurent 2026-05-30 17:31:19 +0200
  • 515f257f83 feat: add DatabaseService.updateTrack Laurent 2026-05-30 17:29:09 +0200
  • 378b71a857 feat: add EditableTrackFields with diff/shared/apply logic Laurent 2026-05-30 17:26:50 +0200
  • 1970ab58c2 refactor: extract TrackFileStats shared stat/hash helper Laurent 2026-05-30 17:21:54 +0200
  • c04533d0a8 chore: add import Foundation and clarifying comments to context menu code Laurent 2026-05-30 13:39:47 +0200
  • bd97d060a0 feat: wire TrackContextMenuConfig to bottom controls and track table Laurent 2026-05-30 13:19:52 +0200
  • 3ccdfbfc79 feat: add contextMenuConfig param to PlayerControlsView Laurent 2026-05-30 13:14:29 +0200
  • 7a9564f026 fix: guard against out-of-bounds tag in addToPlaylist context menu handler Laurent 2026-05-30 13:12:45 +0200
  • b006bf75c3 refactor: replace TrackTableView playlist params with TrackContextMenuConfig Laurent 2026-05-30 13:09:31 +0200
  • cce5779430 fix: stable view identity in TrackContextMenuModifier, remove @Sendable from config closures Laurent 2026-05-30 13:06:40 +0200
  • 8920cad499 feat: add TrackContextMenuModifier SwiftUI view modifier Laurent 2026-05-30 13:02:50 +0200
  • 0ad417e682 fix: add nonisolated and @Sendable to TrackContextMenuConfig Laurent 2026-05-30 12:58:50 +0200
  • c9cdf80a14 feat: add TrackContextMenuConfig value type Laurent 2026-05-30 12:55:56 +0200
  • 793fe036ad test: verify startsWith LIKE metachar escaping; document non-atomic edit writes Laurent 2026-05-30 12:38:33 +0200
  • 7b88b180fd feat: wire SmartPlaylistBuilderSheet into menu and context menu Laurent 2026-05-30 12:29:39 +0200
  • 9eb47b61e1 feat: add SmartPlaylistBuilderSheet with ConditionRowView Laurent 2026-05-30 12:16:19 +0200
  • 1dff7cb5d1 fix: escape LIKE metacharacters in startsWith; add lessThan test Laurent 2026-05-30 12:11:38 +0200
  • e3930821f4 feat: add migration v5 and structured condition query support to DatabaseService Laurent 2026-05-30 12:05:23 +0200
  • 50daf23e11 feat: add conditions field to SmartPlaylist model Laurent 2026-05-30 11:53:52 +0200
  • 47beb9f899 fix: add Sendable to FieldType enum Laurent 2026-05-30 11:47:17 +0200
  • bebd30974a feat: add SmartPlaylistCondition model with Codable types Laurent 2026-05-30 11:42:53 +0200
  • 6f07349a1e fix: support HTTP byte-range requests on /file so streamed tracks auto-advance Laurent 2026-05-30 10:27:58 +0200
  • 98f11658ad first working instance Laurent 2026-05-28 23:31:05 +0200
  • 0829dba09a feat: add HLSManifestGenerator with TDD tests Laurent 2026-05-27 08:35:46 +0200
  • 981c9123a1 feat: add AppRole, StreamingConstants, Routes, APIModels to MusicShared Laurent 2026-05-27 08:34:07 +0200
  • d8863299ff chore(MusicShared): add .gitignore to exclude .build artifacts Laurent 2026-05-27 08:32:37 +0200
  • aae1c8a957 feat: create MusicShared Swift package with public RemoteProtocol types Laurent 2026-05-27 08:32:23 +0200
  • d7e81b1d31 refactor: remove artworkData BLOB from database, load artwork from files on demand Laurent 2026-05-26 23:18:53 +0200
  • db3873b29e pbxproj update Laurent 2026-05-26 22:44:33 +0200
  • d17dac287d feat(remote): add network status banners, disable write actions in remote mode Laurent 2026-05-26 22:08:17 +0200
  • 4b256f7811 feat(remote): wire HostServer and RemoteClient into MusicApp with menu items and DB swap Laurent 2026-05-26 22:05:10 +0200
  • 4ee0325d2f feat(remote): add ConnectionSheet for discovering and connecting to hosts Laurent 2026-05-26 21:42:50 +0200
  • fb76901366 feat(remote): add NetworkStatus model for View-layer network state Laurent 2026-05-26 21:42:16 +0200
  • 4bf1a5e4ef feat(remote): add RemoteClient with Bonjour discovery, DB download, NDJSON command channel Laurent 2026-05-26 21:41:26 +0200
  • 463ecb518b feat(remote): add HostServer with Bonjour, HTTP DB download, and NDJSON command channel Laurent 2026-05-26 21:37:37 +0200
  • e5b5c249b4 refactor: remove AudioService from ContentView — all playback state via PlayerViewModel Laurent 2026-05-26 21:24:58 +0200
  • 4fa431e9bd refactor: make PlayerViewModel single source of truth for all playback state Laurent 2026-05-26 21:04:40 +0200
  • c3b97eb201 feat(remote): add DatabaseService.fetchTracksByIds for efficient ID-based lookups Laurent 2026-05-26 21:00:17 +0200
  • c754858f21 feat(remote): add NDJSONTransport for line-buffered JSON framing over TCP Laurent 2026-05-26 20:52:59 +0200
  • b0359f127b feat(remote): add ConnectionState machine with transition validation Laurent 2026-05-26 20:52:23 +0200
  • 89d50e6e94 feat(remote): add structured os.Logger for host and client Laurent 2026-05-26 20:49:33 +0200
  • 6005ce739f feat(remote): add RemoteCommand and HostEvent protocol types with tests Laurent 2026-05-26 20:48:51 +0200
  • 5320da4b82 chore: declare app does not use non-exempt encryption Laurent 2026-05-26 20:31:39 +0200
  • 0eaa095bae feat: add Search MP3 action to Shazam identification alert Laurent 2026-05-26 19:48:07 +0200
  • 2f1b9b537c fix: stabilize layout at minimum window height and refine player controls Laurent 2026-05-26 13:03:38 +0200
  • d20bb2fef4 update config Laurent 2026-05-26 12:40:28 +0200
  • 11d5f91a86 feat: improve player UX — scrubbing, keyboard shortcuts, now-playing indicator, Home button Laurent 2026-05-26 12:31:51 +0200
  • a657075ef9 feat: integrate HomeView as default view in ContentView Laurent 2026-05-26 09:33:08 +0200
  • 09be0460d4 feat: add HomeView with recently added list and library stats Laurent 2026-05-26 09:22:58 +0200
  • 4a3dd23e57 feat: add database queries for home page (recently added, total duration, monthly additions) Laurent 2026-05-26 09:18:12 +0200
  • ac4e421340 feat: wire smart playlists into UI — search save, bar, context menus, selection Laurent 2026-05-26 01:34:19 +0200
  • e6ae6c5266 feat: add smart_playlists table migration and CRUD methods Laurent 2026-05-26 01:24:56 +0200
  • 124a48a07c feat: add SmartPlaylist model with PlaylistRepresentable conformance Laurent 2026-05-26 00:14:51 +0200
  • 7024be1cba feat: add PlaylistRepresentable protocol, conform Playlist Laurent 2026-05-25 23:27:54 +0200
  • 87410196af add icon Laurent 2026-05-25 13:20:10 +0200
  • 499558edc2 stuff Laurent 2026-05-25 12:05:04 +0200
  • e2f6d70356 fix dimensions Laurent 2026-05-25 12:04:17 +0200
  • 6399eca302 feat: wire ShazamService into app and display results in alerts Laurent 2026-05-24 11:14:05 +0200
  • 104fd64631 feat: add Shazam button to SearchBarView Laurent 2026-05-24 11:10:58 +0200
  • 3f788a2f81 feat: add ShazamService for music recognition Laurent 2026-05-24 11:08:29 +0200
  • 66fb024b51 chore: add network, audio-input entitlements and microphone usage description Laurent 2026-05-24 11:05:59 +0200
  • 44854f9868 feat: add track context menu and drag-to-reorder for playlists Laurent 2026-05-24 10:19:49 +0200
  • a0b95681e2 feat: add PlaylistBarView, FlowLayout, breadcrumb, and New Playlist menu Laurent 2026-05-24 10:06:05 +0200
  • 8f4e330c92 feat: wire PlaylistViewModel into app and content view Laurent 2026-05-24 09:42:16 +0200
  • 5b8cdf603c feat: add PlaylistViewModel with reactive playlist observation Laurent 2026-05-24 09:38:06 +0200
  • 1cf5353339 feat: add playlist database migration and CRUD methods Laurent 2026-05-24 09:36:10 +0200
  • 41754b1f56 feat: add Playlist and PlaylistTrack models Laurent 2026-05-24 09:30:19 +0200
  • 0a8ad2aa91 feat: assemble UI with search bar, track table, player controls, folder picker, and drag-and-drop Laurent 2026-05-24 00:02:15 +0200
  • c374cfa9eb feat: add TrackTableView with NSTableView for high-performance track list Laurent 2026-05-23 23:56:25 +0200
  • c5b468103a feat: add LibraryViewModel with reactive queries, debounced search, and column sorting Laurent 2026-05-23 23:54:01 +0200
  • d61ccda111 feat: add PlayerViewModel with queue management, shuffle, and play tracking Laurent 2026-05-23 23:51:32 +0200
  • 9c934235d6 feat: add AudioService with AVPlayer playback, seeking, and volume control Laurent 2026-05-23 23:44:39 +0200
  • 49693e95b4 feat: add ScannerService with file discovery, metadata extraction, and batch import Laurent 2026-05-23 23:42:34 +0200
  • e0e03daf3f feat: add DatabaseService with schema, FTS5 search, and query methods Laurent 2026-05-23 23:38:10 +0200
  • a8978f7eae feat: add Track model with GRDB record conformance and tests Laurent 2026-05-23 23:33:03 +0200
  • 1aac6823fa chore: track docs/superpowers specs and plans, fix gitignore Laurent 2026-05-23 23:24:20 +0200
  • 10e147b447 chore: initialize project with GRDB dependency and directory structure Laurent 2026-05-23 23:22:58 +0200