docs: rebrand documentation and config files to Kima

This commit is contained in:
Your Name
2026-02-16 09:42:19 -06:00
parent 982a1f55e6
commit 31473ddd1c
7 changed files with 109 additions and 78 deletions
+6 -6
View File
@@ -1,4 +1,4 @@
# Lidify Configuration
# Kima Configuration
# Copy to .env and edit as needed
# ==============================================================================
@@ -26,7 +26,7 @@ MUSIC_PATH=/path/to/your/music
# ==============================================================================
# Encryption key for sensitive data (API keys, passwords, 2FA secrets)
# CRITICAL: You MUST set this before starting Lidify
# CRITICAL: You MUST set this before starting Kima
# Generate with: openssl rand -base64 32
SETTINGS_ENCRYPTION_KEY=
@@ -38,7 +38,7 @@ SESSION_SECRET=
# OPTIONAL: Customize these if needed
# ==============================================================================
# Port to access Lidify (default: 3030)
# Port to access Kima (default: 3030)
PORT=3030
# Timezone (default: UTC)
@@ -88,11 +88,11 @@ VERSION=latest
# OPTIONAL: Lidarr Webhook Configuration
# ==============================================================================
# Lidify callback URL - How Lidarr can reach Lidify backend for webhooks
# Kima callback URL - How Lidarr can reach Kima backend for webhooks
# DOCKER SAME-NETWORK: Use service name (http://backend:3006)
# DOCKER EXTERNAL: Use host IP (http://192.168.1.100:3006 or http://host.docker.internal:3006)
# STANDALONE LIDARR: Use external URL (http://yourserver:3006)
# Default: http://backend:3006 (assumes Lidarr and Lidify are on same Docker network)
# Default: http://backend:3006 (assumes Lidarr and Kima are on same Docker network)
LIDIFY_CALLBACK_URL=http://backend:3006
# TROUBLESHOOTING: If you get "Name does not resolve (backend:3006)" errors in Lidarr logs:
@@ -104,4 +104,4 @@ LIDIFY_CALLBACK_URL=http://backend:3006
# Solution:
# - Check networks: docker network inspect lidify_network
# - If Lidarr is on different network, use external IP instead: http://<your-ip>:3006
# - Then update Lidarr → Settings → Connect → Lidify webhook URL to match
# - Then update Lidarr → Settings → Connect → Kima webhook URL to match
+70 -39
View File
@@ -1,10 +1,41 @@
# Changelog
All notable changes to Lidify will be documented in this file.
All notable changes to Kima will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.5.0] - 2026-02-16
### Changed
- **REBRAND**: Project renamed from Lidify to Kima
- Repository moved to `kima-hub` on GitHub
- Docker images now published as `chevron7locked/kima`
- All user-facing references updated across codebase
- First official release under Kima branding
### Added
- **Critical Reliability Fixes**: Eliminated Soulseek connection race conditions with distributed locks
- **100% Webhook Reliability**: Event sourcing with PostgreSQL persistence
- **Download Deduplication**: Database unique constraint prevents duplicate jobs
- **Discovery Batch Locking**: Optimistic locking with version field
- **Redis State Persistence**: Search sessions, blocklists, and cache layer
- **Prometheus Metrics**: Full instrumentation at `/metrics` endpoint
- **Automatic Data Cleanup**: 30-60 day retention policies
- **Database-First Configuration**: Encrypted sensitive credentials with runtime updates
- **Automatic Database Baselining**: Seamless migration for existing databases
- **Complete Type Safety**: Eliminated all `as any` assertions
- **Typed Error Handling**: User-friendly error messages with proper HTTP codes
### Infrastructure
- Redis-based distributed locking for race condition prevention
- Webhook event store with automatic retry and reconciliation
- Comprehensive type definitions for Lidarr and Soulseek APIs
- Architecture Decision Records (ADRs) documenting key technical choices
## [1.4.3] - 2026-02-08
### Fixed
@@ -25,7 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- **Case-sensitive artist search ([#64](https://github.com/Chevron7Locked/lidify/issues/64)):** Added PostgreSQL tsvector search with ILIKE fallback; all artist/album/track searches are now case-insensitive
- **Case-sensitive artist search ([#64](https://github.com/Chevron7Locked/kima-hub/issues/64)):** Added PostgreSQL tsvector search with ILIKE fallback; all artist/album/track searches are now case-insensitive
- **Circuit breaker false trips:** Audio analysis cleanup circuit breaker now counts cleanup runs instead of individual tracks, preventing premature breaker trips on large batches of stale tracks
- **DB reconciliation race condition:** Analyzer marks tracks as `processing` in the database before pushing to Redis queue, preventing the backend from double-queuing the same tracks
- **Enrichment completion detection:** `isFullyComplete` now checks CLAP processing count and queue length, not just completed vs total
@@ -55,7 +86,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Contributors
- @Allram - Soulseek import fix ([#85](https://github.com/Chevron7Locked/lidify/pull/85))
- @Allram - Soulseek import fix ([#85](https://github.com/Chevron7Locked/kima-hub/pull/85))
## [1.4.1] - 2026-02-06
@@ -236,22 +267,22 @@ Comprehensive patch release addressing critical stability issues, performance im
#### Critical (P1)
- **Docker:** PostgreSQL/Redis bind mount permission errors on Linux hosts ([#59](https://github.com/Chevron7Locked/lidify/issues/59)) - @arsaboo via [#62](https://github.com/Chevron7Locked/lidify/pull/62)
- **Audio Analyzer:** Memory consumption/OOM crashes with large libraries ([#21](https://github.com/Chevron7Locked/lidify/issues/21), [#26](https://github.com/Chevron7Locked/lidify/issues/26)) - @rustyricky via [#53](https://github.com/Chevron7Locked/lidify/pull/53)
- **LastFM:** ".map is not a function" crashes with obscure artists ([#37](https://github.com/Chevron7Locked/lidify/issues/37)) - @RustyJonez via [#39](https://github.com/Chevron7Locked/lidify/pull/39)
- **Wikidata:** 403 Forbidden errors from missing User-Agent header ([#57](https://github.com/Chevron7Locked/lidify/issues/57))
- **Downloads:** Singles directory creation race conditions ([#58](https://github.com/Chevron7Locked/lidify/issues/58))
- **Firefox:** FLAC playback stopping at ~4:34 mark on large files ([#42](https://github.com/Chevron7Locked/lidify/issues/42), [#17](https://github.com/Chevron7Locked/lidify/issues/17))
- **Downloads:** "Skip Track" fallback setting ignored, incorrectly falling back to Lidarr ([#68](https://github.com/Chevron7Locked/lidify/issues/68))
- **Auth:** Login "Internal Server Error" and "socket hang up" on NAS hardware ([#75](https://github.com/Chevron7Locked/lidify/issues/75))
- **Docker:** PostgreSQL/Redis bind mount permission errors on Linux hosts ([#59](https://github.com/Chevron7Locked/kima-hub/issues/59)) - @arsaboo via [#62](https://github.com/Chevron7Locked/kima-hub/pull/62)
- **Audio Analyzer:** Memory consumption/OOM crashes with large libraries ([#21](https://github.com/Chevron7Locked/kima-hub/issues/21), [#26](https://github.com/Chevron7Locked/kima-hub/issues/26)) - @rustyricky via [#53](https://github.com/Chevron7Locked/kima-hub/pull/53)
- **LastFM:** ".map is not a function" crashes with obscure artists ([#37](https://github.com/Chevron7Locked/kima-hub/issues/37)) - @RustyJonez via [#39](https://github.com/Chevron7Locked/kima-hub/pull/39)
- **Wikidata:** 403 Forbidden errors from missing User-Agent header ([#57](https://github.com/Chevron7Locked/kima-hub/issues/57))
- **Downloads:** Singles directory creation race conditions ([#58](https://github.com/Chevron7Locked/kima-hub/issues/58))
- **Firefox:** FLAC playback stopping at ~4:34 mark on large files ([#42](https://github.com/Chevron7Locked/kima-hub/issues/42), [#17](https://github.com/Chevron7Locked/kima-hub/issues/17))
- **Downloads:** "Skip Track" fallback setting ignored, incorrectly falling back to Lidarr ([#68](https://github.com/Chevron7Locked/kima-hub/issues/68))
- **Auth:** Login "Internal Server Error" and "socket hang up" on NAS hardware ([#75](https://github.com/Chevron7Locked/kima-hub/issues/75))
- **Podcasts:** Seeking backward causing player crash and backend container hang
- **API:** Rate limiter crash with "trust proxy" validation error causing socket hang up
- **Downloads:** Duplicate download jobs created due to race condition (database-level locking fix)
#### Quality of Life (P2)
- **Desktop UI:** Added missing "Releases" link to desktop sidebar navigation ([#41](https://github.com/Chevron7Locked/lidify/issues/41))
- **iPhone:** Dynamic Island/notch overlapping TopBar buttons ([#54](https://github.com/Chevron7Locked/lidify/issues/54))
- **Desktop UI:** Added missing "Releases" link to desktop sidebar navigation ([#41](https://github.com/Chevron7Locked/kima-hub/issues/41))
- **iPhone:** Dynamic Island/notch overlapping TopBar buttons ([#54](https://github.com/Chevron7Locked/kima-hub/issues/54))
- **Album Discovery:** Cover Art Archive timeouts causing slow page loads (2s timeout added)
- **Wikimedia:** Image proxy 429 rate limiting due to incomplete User-Agent header
@@ -291,7 +322,7 @@ Comprehensive patch release addressing critical stability issues, performance im
- **NAS Login (#75):** Backend now built with `tsc` and runs with `node dist/index.js`; proxy trust setting updated; session secret standardized
- **Podcast Seek:** AbortController cancels upstream requests on client disconnect; stream error handlers prevent crashes
- **Rate Limiter:** All rate limiter configurations disable proxy validation (`validate: { trustProxy: false }`)
- **Wikimedia Proxy:** User-Agent standardized to `"Lidify/1.0.0 (https://github.com/Chevron7Locked/lidify)"` across all external API calls
- **Wikimedia Proxy:** User-Agent standardized to `"Lidify/1.0.0 (https://github.com/Chevron7Locked/kima-hub)"` across all external API calls
#### Production Readiness Improvements
@@ -340,11 +371,11 @@ Internal code quality and stability fixes discovered during production readiness
Thanks to everyone who contributed to this release:
- @arsaboo - Docker bind mount permissions fix ([#62](https://github.com/Chevron7Locked/lidify/pull/62))
- @rustyricky - Audio analyzer memory limits ([#53](https://github.com/Chevron7Locked/lidify/pull/53))
- @RustyJonez - LastFM array normalization ([#39](https://github.com/Chevron7Locked/lidify/pull/39))
- @arsaboo - Docker bind mount permissions fix ([#62](https://github.com/Chevron7Locked/kima-hub/pull/62))
- @rustyricky - Audio analyzer memory limits ([#53](https://github.com/Chevron7Locked/kima-hub/pull/53))
- @RustyJonez - LastFM array normalization ([#39](https://github.com/Chevron7Locked/kima-hub/pull/39))
- @tombatossals - Testing and validation
- @zeknurn - Skip Track bug report ([#68](https://github.com/Chevron7Locked/lidify/issues/68))
- @zeknurn - Skip Track bug report ([#68](https://github.com/Chevron7Locked/kima-hub/issues/68))
---
@@ -418,16 +449,16 @@ Thanks to everyone who contributed to this release:
### Fixed
- **Critical:** Audio analyzer crashes on libraries with non-ASCII filenames ([#6](https://github.com/Chevron7Locked/lidify/issues/6))
- **Critical:** Audio analyzer BrokenProcessPool after ~1900 tracks ([#21](https://github.com/Chevron7Locked/lidify/issues/21))
- **Critical:** Audio analyzer OOM kills with aggressive worker auto-scaling ([#26](https://github.com/Chevron7Locked/lidify/issues/26))
- **Critical:** Audio analyzer model downloads and volume mount conflicts ([#2](https://github.com/Chevron7Locked/lidify/issues/2))
- Radio stations playing songs from wrong decades due to remaster dates ([#43](https://github.com/Chevron7Locked/lidify/issues/43))
- Manual metadata editing failing with 500 errors ([#9](https://github.com/Chevron7Locked/lidify/issues/9))
- Active downloads not resolving after Lidarr successfully imports ([#31](https://github.com/Chevron7Locked/lidify/issues/31))
- Discovery playlist downloads failing for artists with large catalogs ([#34](https://github.com/Chevron7Locked/lidify/issues/34))
- **Critical:** Audio analyzer crashes on libraries with non-ASCII filenames ([#6](https://github.com/Chevron7Locked/kima-hub/issues/6))
- **Critical:** Audio analyzer BrokenProcessPool after ~1900 tracks ([#21](https://github.com/Chevron7Locked/kima-hub/issues/21))
- **Critical:** Audio analyzer OOM kills with aggressive worker auto-scaling ([#26](https://github.com/Chevron7Locked/kima-hub/issues/26))
- **Critical:** Audio analyzer model downloads and volume mount conflicts ([#2](https://github.com/Chevron7Locked/kima-hub/issues/2))
- Radio stations playing songs from wrong decades due to remaster dates ([#43](https://github.com/Chevron7Locked/kima-hub/issues/43))
- Manual metadata editing failing with 500 errors ([#9](https://github.com/Chevron7Locked/kima-hub/issues/9))
- Active downloads not resolving after Lidarr successfully imports ([#31](https://github.com/Chevron7Locked/kima-hub/issues/31))
- Discovery playlist downloads failing for artists with large catalogs ([#34](https://github.com/Chevron7Locked/kima-hub/issues/34))
- Discovery batches stuck in "downloading" status indefinitely
- Audio analyzer rhythm extraction failures on short/silent audio ([#13](https://github.com/Chevron7Locked/lidify/issues/13))
- Audio analyzer rhythm extraction failures on short/silent audio ([#13](https://github.com/Chevron7Locked/kima-hub/issues/13))
- "Of Mice & Men" artist name truncated to "Of Mice" during scanning
- Edition variant albums (Remastered, Deluxe) failing with "No releases available"
- Downloads stuck in "Lidarr #1" state for 5 minutes before failing
@@ -437,8 +468,8 @@ Thanks to everyone who contributed to this release:
- Artist name search ampersand handling ("Earth, Wind & Fire")
- Vibe overlay display issues on mobile devices
- Pagination scroll behavior (now scrolls to top instead of bottom)
- LastFM API crashes when receiving single objects instead of arrays ([#37](https://github.com/Chevron7Locked/lidify/issues/37)) - @tombatossals
- Mood bucket infinite loop for tracks analyzed in standard mode ([#40](https://github.com/Chevron7Locked/lidify/issues/40)) - @RustyJonez
- LastFM API crashes when receiving single objects instead of arrays ([#37](https://github.com/Chevron7Locked/kima-hub/issues/37)) - @tombatossals
- Mood bucket infinite loop for tracks analyzed in standard mode ([#40](https://github.com/Chevron7Locked/kima-hub/issues/40)) - @RustyJonez
- Playlist visibility toggle not properly syncing hide/show state - @tombatossals
- Audio player time display showing current time exceeding total duration (e.g., "58:00 / 54:34")
- Progress bar could exceed 100% for long-form media with stale metadata
@@ -553,16 +584,16 @@ When deploying this update:
Big thanks to everyone who contributed, tested, and helped make this release happen:
- @tombatossals - LastFM API normalization utility ([#39](https://github.com/Chevron7Locked/lidify/pull/39)), playlist visibility toggle fix ([#49](https://github.com/Chevron7Locked/lidify/pull/49))
- @RustyJonez - Mood bucket standard mode keyword scoring ([#47](https://github.com/Chevron7Locked/lidify/pull/47))
- @iamiq - Audio analyzer crash reporting ([#2](https://github.com/Chevron7Locked/lidify/issues/2))
- @volcs0 - Memory pressure testing ([#26](https://github.com/Chevron7Locked/lidify/issues/26))
- @Osiriz - Long-running analysis testing ([#21](https://github.com/Chevron7Locked/lidify/issues/21))
- @hessonam - Non-ASCII character testing ([#6](https://github.com/Chevron7Locked/lidify/issues/6))
- @niles - RhythmExtractor edge case reporting ([#13](https://github.com/Chevron7Locked/lidify/issues/13))
- @TheChrisK - Metadata editor bug reporting ([#9](https://github.com/Chevron7Locked/lidify/issues/9))
- @lizar93 - Discovery playlist testing ([#34](https://github.com/Chevron7Locked/lidify/issues/34))
- @brokenglasszero - Mood tags feature verification ([#35](https://github.com/Chevron7Locked/lidify/issues/35))
- @tombatossals - LastFM API normalization utility ([#39](https://github.com/Chevron7Locked/kima-hub/pull/39)), playlist visibility toggle fix ([#49](https://github.com/Chevron7Locked/kima-hub/pull/49))
- @RustyJonez - Mood bucket standard mode keyword scoring ([#47](https://github.com/Chevron7Locked/kima-hub/pull/47))
- @iamiq - Audio analyzer crash reporting ([#2](https://github.com/Chevron7Locked/kima-hub/issues/2))
- @volcs0 - Memory pressure testing ([#26](https://github.com/Chevron7Locked/kima-hub/issues/26))
- @Osiriz - Long-running analysis testing ([#21](https://github.com/Chevron7Locked/kima-hub/issues/21))
- @hessonam - Non-ASCII character testing ([#6](https://github.com/Chevron7Locked/kima-hub/issues/6))
- @niles - RhythmExtractor edge case reporting ([#13](https://github.com/Chevron7Locked/kima-hub/issues/13))
- @TheChrisK - Metadata editor bug reporting ([#9](https://github.com/Chevron7Locked/kima-hub/issues/9))
- @lizar93 - Discovery playlist testing ([#34](https://github.com/Chevron7Locked/kima-hub/issues/34))
- @brokenglasszero - Mood tags feature verification ([#35](https://github.com/Chevron7Locked/kima-hub/issues/35))
And all users who reported bugs, tested fixes, and provided feedback!
+1 -1
View File
@@ -1,4 +1,4 @@
# Contributing to Lidify
# Contributing to Kima
First off, thanks for taking the time to contribute! 🎉
+5 -5
View File
@@ -67,7 +67,7 @@ docker compose up -d
[MIGRATE] ✓ Database is up to date
[MIGRATE] ✓ Safe migration process complete
[DB] Generating Prisma client...
[START] Lidify Backend starting on port 3006...
[START] Kima Backend starting on port 3006...
```
### What Happens Behind the Scenes
@@ -186,12 +186,12 @@ If database changes cause issues:
```bash
# 1. Restore from backup (taken before deployment)
docker compose exec postgres psql -U lidify -d lidify < backup.sql
docker compose exec postgres psql -U kima -d kima < backup.sql
# 2. Revert code (as above)
# 3. Clear migration history if needed
docker compose exec postgres psql -U lidify -d lidify -c "DELETE FROM _prisma_migrations WHERE migration_name LIKE '202602%';"
docker compose exec postgres psql -U kima -d kima -c "DELETE FROM _prisma_migrations WHERE migration_name LIKE '202602%';"
```
**When to use**: Only if new columns/tables cause Prisma errors
@@ -303,7 +303,7 @@ Before announcing to users:
## User Communication Template
```markdown
# Lidify v1.4.4 - Integration Stability Update
# Kima v1.4.4 - Integration Stability Update
This release includes critical reliability improvements for Lidarr and Soulseek integrations.
@@ -398,7 +398,7 @@ If issues arise:
1. **Check logs first**: `docker compose logs backend --tail=100`
2. **Verify Redis**: `docker compose ps redis` (should show "Up")
3. **Check migration status**: `docker compose exec backend npx prisma migrate status`
4. **Database query**: `docker compose exec postgres psql -U lidify -d lidify -c "SELECT COUNT(*) FROM _prisma_migrations;"`
4. **Database query**: `docker compose exec postgres psql -U kima -d kima -c "SELECT COUNT(*) FROM _prisma_migrations;"`
Expected result: **30 migrations tracked**
+8 -8
View File
@@ -29,7 +29,7 @@ This approach:
**Steps:**
```bash
cd /mnt/storage/Projects/lidify/backend
cd /mnt/storage/Projects/kima/backend
# Step 1: Baseline the database (mark migrations as applied without running them)
npx prisma migrate resolve --applied "20250101000000_rename_soulseek_fallback"
@@ -83,7 +83,7 @@ If baselining doesn't work, manually apply just the missing changes:
```sql
-- Connect to database
-- psql -U lidify -d lidify
-- psql -U kima -d kima
-- Check if columns already exist (IMPORTANT: verify first!)
SELECT column_name FROM information_schema.columns
@@ -110,10 +110,10 @@ npx prisma migrate resolve --applied "20260214145320_standardize_integration_con
- [ ] **Backup database** (CRITICAL for 1k+ users)
```bash
# Docker method
docker compose exec postgres pg_dump -U lidify lidify > backup_$(date +%Y%m%d_%H%M%S).sql
docker compose exec postgres pg_dump -U kima kima > backup_$(date +%Y%m%d_%H%M%S).sql
# Direct method (if pg_dump available)
pg_dump -h 127.0.0.1 -p 5433 -U lidify lidify > backup_$(date +%Y%m%d_%H%M%S).sql
pg_dump -h 127.0.0.1 -p 5433 -U kima kima > backup_$(date +%Y%m%d_%H%M%S).sql
```
- [ ] **Verify backup is valid**
@@ -135,8 +135,8 @@ npx prisma migrate resolve --applied "20260214145320_standardize_integration_con
- [ ] **Test migration on backup first** (RECOMMENDED)
```bash
# Create test database
createdb lidify_test
psql lidify_test < backup_YYYYMMDD_HHMMSS.sql
createdb kima_test
psql kima_test < backup_YYYYMMDD_HHMMSS.sql
# Update .env temporarily to point to test DB
# Run migration on test DB
@@ -210,7 +210,7 @@ ALTER TABLE "SystemSettings" ADD COLUMN "lastfmEnabled" BOOLEAN;
```bash
# Step 1: Restore from backup
psql -U lidify -d lidify < backup_YYYYMMDD_HHMMSS.sql
psql -U kima -d kima < backup_YYYYMMDD_HHMMSS.sql
# Step 2: Restart application
docker compose restart backend
@@ -226,7 +226,7 @@ git checkout main # or previous stable tag
docker compose restart backend
# Step 3: (Optional) Remove new columns if they cause issues
psql -U lidify -d lidify -c '
psql -U kima -d kima -c '
ALTER TABLE "SystemSettings" DROP COLUMN IF EXISTS "soulseekEnabled";
ALTER TABLE "SystemSettings" DROP COLUMN IF EXISTS "soulseekDownloadPath";
ALTER TABLE "SystemSettings" DROP COLUMN IF EXISTS "lastfmApiSecret";
@@ -65,7 +65,7 @@ export const eventBus = new EventBus();
**Step 2: Verify it compiles**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/backend && npx tsc --noEmit src/services/eventBus.ts`
Run: `cd /run/media/chevron7/Storage/Projects/kima/backend && npx tsc --noEmit src/services/eventBus.ts`
**Step 3: Commit**
@@ -194,7 +194,7 @@ app.use("/api/events", eventsRoutes); // SSE - no rate limit, long-lived connect
**Step 3: Verify compilation**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/backend && npx tsc --noEmit`
Run: `cd /run/media/chevron7/Storage/Projects/kima/backend && npx tsc --noEmit`
**Step 4: Commit**
@@ -264,7 +264,7 @@ In the `clear()` method (after line 100), add:
**Step 2: Verify compilation**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/backend && npx tsc --noEmit`
Run: `cd /run/media/chevron7/Storage/Projects/kima/backend && npx tsc --noEmit`
**Step 3: Commit**
@@ -320,7 +320,7 @@ Search for "slskd" or "SLSKD" comments in simpleDownloadManager.ts and update/re
**Step 5: Verify compilation**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/backend && npx tsc --noEmit`
Run: `cd /run/media/chevron7/Storage/Projects/kima/backend && npx tsc --noEmit`
**Step 6: Commit**
@@ -528,7 +528,7 @@ export function useJobProgress(jobId: string): DownloadProgressData | undefined
**Step 3: Verify frontend compiles**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/frontend && npx next lint`
Run: `cd /run/media/chevron7/Storage/Projects/kima/frontend && npx next lint`
**Step 4: Commit**
@@ -577,7 +577,7 @@ useEventSource();
**Step 3: Verify frontend compiles**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/frontend && npx next lint`
Run: `cd /run/media/chevron7/Storage/Projects/kima/frontend && npx next lint`
**Step 4: Commit**
@@ -679,7 +679,7 @@ In `Sidebar.tsx` line 58: `window.dispatchEvent(new CustomEvent("notifications-c
**Step 7: Verify frontend compiles**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/frontend && npx next lint`
Run: `cd /run/media/chevron7/Storage/Projects/kima/frontend && npx next lint`
**Step 8: Commit**
@@ -742,20 +742,20 @@ Create each file exactly as shown in the soulseek-ts source. Key files:
**Step 3: Add typed-emitter dependency**
```bash
cd /run/media/chevron7/Storage/Projects/lidify/backend && npm install typed-emitter
cd /run/media/chevron7/Storage/Projects/kima/backend && npm install typed-emitter
```
**Step 4: Remove slsk-client dependency**
```bash
cd /run/media/chevron7/Storage/Projects/lidify/backend && npm uninstall slsk-client
cd /run/media/chevron7/Storage/Projects/kima/backend && npm uninstall slsk-client
```
Also delete `backend/src/types/slsk-client.d.ts` (the type declarations for the old library).
**Step 5: Verify compilation**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/backend && npx tsc --noEmit`
Run: `cd /run/media/chevron7/Storage/Projects/kima/backend && npx tsc --noEmit`
Fix any import path issues. The vendored code uses relative imports internally so it should work as-is.
@@ -836,7 +836,7 @@ case 'uploadDenied': {
**Step 3: Verify compilation**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/backend && npx tsc --noEmit`
Run: `cd /run/media/chevron7/Storage/Projects/kima/backend && npx tsc --noEmit`
**Step 4: Commit**
@@ -931,7 +931,7 @@ destroy() {
**Step 2: Verify compilation**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/backend && npx tsc --noEmit`
Run: `cd /run/media/chevron7/Storage/Projects/kima/backend && npx tsc --noEmit`
**Step 3: Commit**
@@ -975,7 +975,7 @@ The `searchAndDownloadBatch()` method should work similarly to the old one: para
**Step 2: Verify compilation**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/backend && npx tsc --noEmit`
Run: `cd /run/media/chevron7/Storage/Projects/kima/backend && npx tsc --noEmit`
**Step 3: Commit**
@@ -1029,7 +1029,7 @@ Also update the comment at line 628 referencing "slsk-client".
**Step 2: Verify compilation**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/backend && npx tsc --noEmit`
Run: `cd /run/media/chevron7/Storage/Projects/kima/backend && npx tsc --noEmit`
**Step 3: Commit**
@@ -1071,7 +1071,7 @@ git rm -f docs/plans/2026-02-07-slskd-integration.md docs/plans/2026-02-08-slskd
**Step 3: Verify compilation**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/backend && npx tsc --noEmit`
Run: `cd /run/media/chevron7/Storage/Projects/kima/backend && npx tsc --noEmit`
**Step 4: Commit**
@@ -1122,7 +1122,7 @@ Progress bar component (inline, no separate file needed):
**Step 2: Verify frontend compiles**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/frontend && npx next lint`
Run: `cd /run/media/chevron7/Storage/Projects/kima/frontend && npx next lint`
**Step 3: Commit**
@@ -1141,13 +1141,13 @@ git commit -m "feat: add real-time progress bar to active downloads"
**Step 1: Backend typecheck**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/backend && npx tsc --noEmit`
Run: `cd /run/media/chevron7/Storage/Projects/kima/backend && npx tsc --noEmit`
Fix any errors.
**Step 2: Frontend lint**
Run: `cd /run/media/chevron7/Storage/Projects/lidify/frontend && npx next lint`
Run: `cd /run/media/chevron7/Storage/Projects/kima/frontend && npx next lint`
Fix any errors.
+1 -1
View File
@@ -51,7 +51,7 @@
1. **Restart Backend**
```bash
cd /run/media/chevron7/Storage/Projects/lidify/backend
cd /run/media/chevron7/Storage/Projects/kima/backend
npm run dev
```