mirror of
https://github.com/Chevron7Locked/kima-hub.git
synced 2026-06-19 07:37:17 +00:00
docs: rebrand documentation and config files to Kima
This commit is contained in:
+6
-6
@@ -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
@@ -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
@@ -1,4 +1,4 @@
|
||||
# Contributing to Lidify
|
||||
# Contributing to Kima
|
||||
|
||||
First off, thanks for taking the time to contribute! 🎉
|
||||
|
||||
|
||||
@@ -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**
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user