feat: rename mukke to music, add cover art upload via mana-media

Rename the music module from "Mukke" to "Music" across the entire
codebase: API routes, web app module, shared packages, search provider,
dashboard widgets, i18n keys, app registry, and route paths.

Add POST /api/v1/music/cover/upload endpoint that uploads cover art
images through mana-media for deduplication, thumbnails, and Photos
gallery visibility.

Dexie table names (mukkePlaylists, mukkeProjects) kept unchanged to
preserve existing IndexedDB data.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-05 15:25:34 +02:00
parent ee7ff7d5e8
commit d4700a07f9
64 changed files with 258 additions and 214 deletions

View file

@ -27,7 +27,7 @@ Each app gets its own isolated bucket, created automatically by `minio-init`:
| `storage-storage` | Storage | Cloud drive files |
| `mail-storage` | Mail | Email attachments |
| `inventory-storage` | Inventory | Product photos |
| `mukke-storage` | Mukke | Music tracks, beats, covers |
| `music-storage` | Music | Music tracks, beats, covers |
| `planta-storage` | Planta | Plant photos |
| `projectdoc-storage` | ProjectDoc | Document files |
@ -88,7 +88,7 @@ import { createStorage } from '@manacore/shared-storage';
// Instead of app-specific factories:
const storage = createStorage('PICTURE');
const storage = createStorage('CHAT');
const storage = createStorage('MUKKE');
const storage = createStorage('MUSIC');
```
App-specific aliases still work: `createPictureStorage()`, `createChatStorage()`, etc.

View file

@ -110,6 +110,6 @@ export const createContactsStorage = () => createStorage('CONTACTS');
export const createStorageStorage = (publicUrl?: string) => createStorage('STORAGE', publicUrl);
export const createMailStorage = () => createStorage('MAIL');
export const createInventoryStorage = (publicUrl?: string) => createStorage('INVENTORY', publicUrl);
export const createMukkeStorage = () => createStorage('MUKKE');
export const createMusicStorage = () => createStorage('MUSIC');
export const createPlantaStorage = (publicUrl?: string) => createStorage('PLANTA', publicUrl);
export const createProjectDocStorage = () => createStorage('PROJECTDOC');

View file

@ -16,7 +16,7 @@ export {
createStorageStorage,
createMailStorage,
createInventoryStorage,
createMukkeStorage,
createMusicStorage,
createPlantaStorage,
createProjectDocStorage,
} from './factory';

View file

@ -136,7 +136,7 @@ export const BUCKETS = {
STORAGE: 'storage-storage',
MAIL: 'mail-storage',
INVENTORY: 'inventory-storage',
MUKKE: 'mukke-storage',
MUSIC: 'music-storage',
PLANTA: 'planta-storage',
PROJECTDOC: 'projectdoc-storage',
} as const;