Add Week 10 Plugin System and Week 11 Control API

Week 10 - Plugin System (FR-19):
- Plugin traits: Plugin, OriginPlugin, MetadataPlugin, FormatPlugin
- NativePluginHost with libloading for dynamic loading
- WasmPluginHost (feature-gated) with wasmtime runtime
- PluginManager coordinating both hosts with version checks
- OriginInstance::watch() with WatchHandle, WatchEvent for live updates
- FormatPlugin::synthesize_header() for metadata overlay

Week 11 - Control API & Production (FR-17, FR-18, NFR-6, NFR-10):
- gRPC server with full MusicFS service (status, cache, origins, events)
- Proto extended: MountState enum, TierStats, full StatusResponse/CacheStats
- WebhookHandler with HMAC-SHA256 signing and exponential retry
- Metrics with latency histograms (p50/p95/p99) and origin health gauges
- CLI with mount, status, cache, search, origin, events, shutdown commands
- E2E player compatibility tests (mpv, VLC, file manager)
- systemd service, PKGBUILD, RPM spec for packaging

Plans added for Weeks 10-14 covering P1 features.
All 154 tests passing.
This commit is contained in:
Alexander
2026-05-13 10:34:01 +02:00
parent 34d05b7a49
commit bc9fa36646
27 changed files with 7050 additions and 49 deletions
+23
View File
@@ -0,0 +1,23 @@
pkgname=musicfs
pkgver=0.1.0
pkgrel=1
pkgdesc="Metadata-Organized Music Filesystem"
arch=('x86_64')
url="https://github.com/yourusername/musicfs"
license=('MIT')
depends=('fuse3')
makedepends=('rust' 'cargo')
source=("$pkgname-$pkgver.tar.gz")
sha256sums=('SKIP')
build() {
cd "$srcdir/$pkgname-$pkgver"
cargo build --release --locked
}
package() {
cd "$srcdir/$pkgname-$pkgver"
install -Dm755 "target/release/musicfs" "$pkgdir/usr/bin/musicfs"
install -Dm644 "dist/musicfs.service" "$pkgdir/usr/lib/systemd/system/musicfs.service"
install -Dm644 "config.example.toml" "$pkgdir/etc/musicfs/config.example.toml"
}
+21
View File
@@ -0,0 +1,21 @@
[Unit]
Description=MusicFS - Metadata-Organized Music Filesystem
After=network.target
[Service]
Type=notify
ExecStart=/usr/bin/musicfs mount --config /etc/musicfs/config.toml /mnt/music
ExecStop=/usr/bin/musicfs shutdown
Restart=on-failure
RestartSec=5
User=musicfs
Group=musicfs
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/var/cache/musicfs /mnt/music
PrivateTmp=true
[Install]
WantedBy=multi-user.target
+39
View File
@@ -0,0 +1,39 @@
Name: musicfs
Version: 0.1.0
Release: 1%{?dist}
Summary: Metadata-Organized Music Filesystem
License: MIT
URL: https://github.com/yourusername/musicfs
Source0: %{name}-%{version}.tar.gz
BuildRequires: rust >= 1.70
BuildRequires: cargo
BuildRequires: fuse3-devel
Requires: fuse3
%description
MusicFS is a virtual FUSE filesystem that organizes music files by metadata.
%prep
%autosetup
%build
cargo build --release --locked
%install
install -Dm755 target/release/musicfs %{buildroot}%{_bindir}/musicfs
install -Dm644 dist/musicfs.service %{buildroot}%{_unitdir}/musicfs.service
install -Dm644 config.example.toml %{buildroot}%{_sysconfdir}/musicfs/config.example.toml
%files
%license LICENSE
%doc README.md
%{_bindir}/musicfs
%{_unitdir}/musicfs.service
%config(noreplace) %{_sysconfdir}/musicfs/config.example.toml
%changelog
* Mon Jan 01 2024 MusicFS Team <team@example.com> - 0.1.0-1
- Initial package