Alexander
78b4338f95
Show files as {track_number} - {track_title}
2026-07-25 11:56:30 +02:00
Alexander
82be15b960
Implement list files rpc
2026-07-24 20:17:38 +02:00
Alexander
5f79b3c2b0
Configure devenv to build output
2026-07-03 22:13:16 +02:00
Alexander
f28091257e
Define endpoints to update metadata
2026-07-01 20:23:10 +02:00
Alexander
8f76dd5b39
Add health endpoint, add rpc to client
2026-07-01 16:56:56 +02:00
Alexander
8dba0c097d
Refactor to split client from server
2026-07-01 16:31:55 +02:00
Alexander
d35aa2aecb
Some more fixes for reconcile with remote
2026-07-01 14:53:21 +02:00
Alexander
0e50d8a2a6
Fix reconcile with remote
2026-07-01 14:27:43 +02:00
Alexander
9699da385b
Add resilience tests
2026-07-01 13:07:05 +02:00
Alexander
d001e81128
Implement e2e, add container with server
2026-07-01 00:32:47 +02:00
Alexander
601c466ce4
Add health endpoint
2026-06-30 20:26:06 +02:00
Alexander
9eb537dfa4
Add quick readme + script to manage server
2026-06-30 20:05:45 +02:00
Alexander
d1e1ac97c4
Add logging, fix devenv up
2026-06-30 12:17:48 +02:00
Alexander
ebf1c5b5e1
Create server side
2026-06-29 21:16:55 +02:00
Alexander
80dfe50aaa
Refactor before adding NetworkOrigin
2026-06-29 20:33:32 +02:00
Alexander
13f007ebb5
Add pi-agent
2026-06-29 17:53:29 +02:00
Alexander
1a98d62357
Fix update of metadata for mp3
2026-06-29 13:25:16 +02:00
Alexander
4e946963e1
Handle multi artist albums
2026-06-29 12:22:46 +02:00
Alexander
0779c0d076
Handle SIGTERM, fix mp3 handler
2026-06-29 12:03:31 +02:00
Alexander
24fd81ff9e
Add tests
2026-06-27 20:11:33 +02:00
Alexander
53e6dbaef0
Remove old docs
2026-06-27 16:46:06 +02:00
Alexander
a8262ac8f8
Split and refactor the classes
2026-06-27 15:17:13 +02:00
Alexander
056d9b8c82
Start application with 'direnv up'
2026-06-27 14:47:48 +02:00
Alexander
d14710c073
Refactor
2026-06-27 14:47:37 +02:00
Alexander
d49018bfc7
Implement write method to support metadata update
2026-06-27 00:16:04 +02:00
Alexander
9737e26bc9
Read and store flac metadata
2026-06-26 23:27:33 +02:00
Alexander
4f52549e46
Add rename of the files with keeping the state
2026-06-26 20:54:01 +02:00
Alexander
68aba52362
Handle files as tree on fuse side
2026-06-26 20:25:33 +02:00
Alexander
a5023a6441
Integrate with db
2026-06-26 19:53:50 +02:00
Alexander
3d1f9a206f
Hash the source files diff
2026-06-26 17:56:56 +02:00
Alexander
536e117576
Parse music metadata
2026-06-25 21:04:47 +02:00
Alexander
b51c680af4
Handle updates of source files
2026-06-24 21:56:12 +02:00
Alexander
f84061a30d
Flat representation of localsource
2026-06-20 17:49:35 +02:00
Alexander
9349d29200
Start implementing LocalSource
2026-06-20 13:36:15 +02:00
Alexander
872580602d
Added read files + lookup
2026-06-19 21:37:32 +02:00
Alexander
50cb21b9e5
Implement read and stat for dir
2026-06-19 18:45:08 +02:00
Alexander
b1f32372f7
Migrate to denenv
2026-06-19 00:07:35 +02:00
Alexander
83ff042b91
Start anew
2026-06-18 23:15:11 +02:00
Alexander
05b83364df
feat: add NixOS module
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/claude-agent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-20 12:38:04 +02:00
Alexander
154f85bd9b
chore(flake): add embedme to dev shell and pre-commit hooks
...
Keeps README code blocks in sync with source files (config.example.toml, dist/musicfs.service) on every commit.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/claude-agent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 13:43:08 +02:00
Alexander
61457e1f89
docs: add comprehensive project README
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/claude-agent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 13:43:03 +02:00
Alexander
4a1b68981e
Forgotten fixes
2026-05-18 13:31:31 +02:00
Alexander
b88583707d
feat: add metadata enrichment integration with music-agregator
...
- Add SyncedFile message and subdir scoping to RescanOrigin proto
- Add label, album_type, cover_url fields to UpdateMetadataRequest/MetadataResponse
- Implement OriginScanner: walk, hash, diff, ingest with live FUSE tree and content fetcher registration
- Add enrichment DB columns: enrichment_source, enriched_at, enrichment_attempts, genres_json, label, album_type, cover_url
- Add EnrichmentUpdate struct and update_enrichment DB method
- Wire BatchUpdateMetadata to write enrichment fields alongside audio metadata
- Wire gRPC server into CLI mount command with --grpc-port flag
- Pass VirtualTree and ContentFetcher to scanner so rescanned files are immediately visible and readable via FUSE
2026-05-17 23:32:18 +02:00
Alexander
18024dbc62
fix(cli): wire OverlayReader into mount command
...
The metadata overlay feature was implemented but not connected to the
CLI daemon. Files were being served with original metadata instead of
synthesized headers from the database.
- Import OverlayReader from musicfs-cache
- Create OverlayReader with db, format_registry, and reader
- Call .with_overlay() on MusicFs builder
Tested: ffprobe now shows modified metadata from database updates.
2026-05-17 18:23:15 +02:00
Alexander
b0c41e3fa0
feat(cli): add metadata subcommands for overlay management
...
- Add 6 subcommands: get, set, clear, diff, import, export
- Connect to gRPC MetadataService
- Support JSON and CSV formats
- All subcommands functional, help output correct
2026-05-17 17:59:35 +02:00
Alexander
1a7f70ae1c
feat(grpc): implement MetadataService handlers
...
- Implement all 5 RPCs (Get, Update, Clear, Batch, Import)
- Add MetadataServiceImpl with database integration
- Add 10 comprehensive unit tests
- All 19 tests pass, full workspace compiles
2026-05-17 17:53:44 +02:00
Alexander
391f556286
feat(grpc): add MetadataService proto definition
...
- Add MetadataService with 5 RPCs (Get, Update, Clear, Batch, Import)
- Add 11 message types for requests/responses
- Use optional fields and map for custom_tags
- Proto codegen successful, all tests pass
2026-05-17 17:46:53 +02:00
Alexander
9623644263
feat(fuse): integrate OverlayReader in read path
...
- Update read() to use OverlayReader when available
- Map OverlayError to libc error codes
- Maintain 30s timeout and backward compatibility
- Fallback to FileReader for non-overlay files
- All tests pass, full workspace compiles
2026-05-17 17:44:29 +02:00
Alexander
487b119935
feat(fuse): return virtual size in getattr for overlay files
...
- Add overlay_reader field to MusicFs struct
- Add with_overlay() builder method
- Update getattr() to call estimate_virtual_size()
- Graceful fallback to original size
- All tests pass, backward compatible
2026-05-17 17:41:50 +02:00
Alexander
c826bcf35f
feat(cache): implement OverlayReader for header/audio splice
...
- Implement three-region splice logic (header, audio, boundary)
- Add passthrough mode for files without format_layout
- Add estimate_virtual_size() for getattr
- Create OverlayError enum with proper error conversions
- Add 8 comprehensive unit tests
- All tests pass, LSP diagnostics clean
2026-05-17 17:38:03 +02:00