Skip to content

Adding devenv to Soulsolid in replace of the old dev.nix#169

Merged
contre95 merged 4 commits into
mainfrom
repo/devenv
Jun 12, 2026
Merged

Adding devenv to Soulsolid in replace of the old dev.nix#169
contre95 merged 4 commits into
mainfrom
repo/devenv

Conversation

@contre95

@contre95 contre95 commented Jun 12, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Per-field control for missing metadata requirements (artist, album, title, year, genre) in import settings
    • Queue items now support multiple simultaneous types (e.g., both duplicate and missing metadata) with improved UI representation
  • Bug Fixes

    • Enhanced tag writing to actively remove stale frames from MP3 and FLAC files
  • Documentation

    • Updated configuration and import guidance for per-field metadata controls
    • Added devenv-based development environment setup option

@contre95 contre95 merged commit 2f5c2d1 into main Jun 12, 2026
1 check was pending
@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 6f56db48-a4f7-4911-a019-e4fb2dd63a8f

📥 Commits

Reviewing files that changed from the base of the PR and between 1488fe3 and 5d0cd50.

⛔ Files ignored due to path filters (1)
  • devenv.lock is excluded by !**/*.lock
📒 Files selected for processing (26)
  • .gitignore
  • FEATURE_SPEC_KIT.md
  • README.md
  • config.example.yaml
  • devenv.nix
  • devenv.yaml
  • docs/importing.md
  • src/features/config/config.go
  • src/features/config/default.go
  • src/features/config/handlers.go
  • src/features/downloading/download_job.go
  • src/features/importing/directory_job.go
  • src/features/importing/handlers.go
  • src/features/importing/queue.go
  • src/features/importing/service.go
  • src/features/importing/telegram.go
  • src/features/lyrics/handlers.go
  • src/features/lyrics/lyrics_job.go
  • src/features/lyrics/service.go
  • src/infra/tag/tag_writer.go
  • src/music/queue.go
  • src/music/track.go
  • views/config/config_form.html
  • views/importing/queue_items.html
  • views/importing/queue_items_grouped_album.html
  • views/importing/queue_items_grouped_artist.html

📝 Walkthrough

Walkthrough

This PR introduces multi-type queue items, makes metadata validation configurable per field, and refactors import/download/lyrics flows accordingly. QueueItem now carries a Types slice with helper methods; AllowMissingMetadata becomes a per-field struct; and directory import, service, and UI layers adapt to the new model. Download metadata processing is deferred to import.

Changes

Multi-type Queue Items and Configurable Metadata

Layer / File(s) Summary
Queue item multi-type model
src/music/queue.go
QueueItem.Type becomes Types []QueueItemType; new HasType and PrimaryType helper methods enable multi-type queries and dispatch.
Metadata field validation and defaults
src/music/track.go, src/features/config/config.go, src/features/config/default.go, src/features/config/handlers.go, config.example.yaml
EnsureMetadataDefaults and ValidateRequiredMetadata accept per-field flags; AllowMissingMetadata struct replaces bool; config defaults and form handlers wire per-field toggles.
Import flow refactoring
src/features/importing/directory_job.go, src/features/importing/service.go, src/features/importing/queue.go
determineAction centralizes validation and returns queue-type slice; addTrackToQueue accepts slice; directory walking applies configurable defaults; service validates per field; constant reordering.
UI handler and template updates
src/features/importing/handlers.go, src/features/importing/telegram.go, views/config/config_form.html, views/importing/queue_items.html, views/importing/queue_items_grouped_album.html, views/importing/queue_items_grouped_artist.html
queueItemView refactored to status booleans and action flags; queueTypeLabel helper renders multi-type labels; templates switch from Type string comparison to flag-based rendering and conditional button display.
Lyrics queue item adaptation
src/features/lyrics/handlers.go, src/features/lyrics/service.go, src/features/lyrics/lyrics_job.go
Queue items constructed with Types slice; dispatch on PrimaryType instead of Type.
Download metadata deferred to import
src/features/downloading/download_job.go
Remove metadata defaulting and validation from download execution; defer to import stage with comments noting source preservation.
Tag writer frame cleanup
src/infra/tag/tag_writer.go
MP3 and FLAC writers explicitly delete existing frames before conditionally re-adding, preventing stale metadata.
Development environment configuration
devenv.nix, devenv.yaml, .gitignore, README.md
New devenv module with packages, languages, build scripts, and dev server; gitignore updated; README Option 2 switched to devenv.
Specification and guide documentation
FEATURE_SPEC_KIT.md, docs/importing.md
Updated with multi-type examples, per-field config, combined-type blocking rules, and dispatch guidance.

🎯 4 (Complex) | ⏱️ ~60 minutes

new feature, refactor

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch repo/devenv

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@contre95 contre95 deleted the repo/devenv branch June 12, 2026 20:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant