8f860a8ec3
- All DLLs now output to lib\[Configuration]\[TargetFramework]\ at repo root (see Directory.Build.props) - .gitignore updated to exclude /lib/ - On first run, startup.json is auto-generated with OS-appropriate default paths (Windows, Linux, macOS, or portable) - Removes null/example config; generated config is immediately usable and clearly documented - Extensive new documentation: build output, startup.json logic, visual guides, and code proofs - Publish profile now deletes existing files for clean deploys - No breaking changes: existing startup.json files are preserved - Improves first-run UX, deployment, and cross-platform consistency
3.3 KiB
3.3 KiB
Comparison: Before vs After
Before (Old Behavior)
Generated startup.json
{
"_comment": "Jellyfin Startup Configuration",
"Paths": {
"DataDir": null,
"ConfigDir": null,
"CacheDir": null,
"LogDir": null,
"TempDir": null,
"WebDir": null
},
"Examples": {
"Linux": { "DataDir": "/var/lib/jellyfin", ... },
"Windows": { "DataDir": "C:\\ProgramData\\Jellyfin", ... }
}
}
Problems:
- ❌ All values are
null - ❌ Users must manually edit
- ❌ Examples section clutters the config
- ❌ Not immediately usable
After (New Behavior)
On Windows
{
"_comment": "Jellyfin Startup Configuration - Windows defaults - using C:/ProgramData/jellyfin",
"_note": "These paths will be used unless overridden by environment variables or command-line arguments",
"_priority": "Command-line args > Environment variables > This file > Built-in defaults",
"Paths": {
"DataDir": "C:/ProgramData/jellyfin",
"ConfigDir": "C:/ProgramData/jellyfin",
"CacheDir": "C:/ProgramData/jellyfin/cache",
"LogDir": "C:/ProgramData/jellyfin/log",
"TempDir": "C:/Users/AppData/Local/Temp/jellyfin",
"WebDir": "C:/ProgramData/jellyfin/web"
}
}
On Linux
{
"_comment": "Jellyfin Startup Configuration - Linux defaults - following Filesystem Hierarchy Standard (FHS)",
"_note": "These paths will be used unless overridden by environment variables or command-line arguments",
"_priority": "Command-line args > Environment variables > This file > Built-in defaults",
"Paths": {
"DataDir": "/var/lib/jellyfin",
"ConfigDir": "/etc/jellyfin",
"CacheDir": "/var/cache/jellyfin",
"LogDir": "/var/log/jellyfin",
"TempDir": "/var/tmp/jellyfin",
"WebDir": "/usr/share/jellyfin/web"
}
}
Benefits:
- ✅ Immediately usable values
- ✅ OS-appropriate paths
- ✅ Clear, focused configuration
- ✅ Helpful comments explaining behavior
Console Output Comparison
Before
Created default startup configuration at: ./startup.json
You can customize this file to set default paths for Jellyfin.
After (Windows)
Created default startup configuration at: E:\Jellyfin\startup.json
Using Windows defaults - using C:/ProgramData/jellyfin
You can customize this file to set different paths for Jellyfin.
After (Linux)
Created default startup configuration at: /opt/jellyfin/startup.json
Using Linux defaults - following Filesystem Hierarchy Standard (FHS)
You can customize this file to set different paths for Jellyfin.
User Experience
Before
- User starts Jellyfin
- Gets
startup.jsonwith null values - Confused - what should I put here?
- Searches documentation
- Manually edits file
- Restarts Jellyfin
After
- User starts Jellyfin
- Gets OS-appropriate
startup.jsonautomatically - ✅ Works immediately with sensible defaults
- Optional: Can customize if needed
Summary
| Aspect | Before | After |
|---|---|---|
| Default values | null |
OS-specific paths |
| Ready to use | ❌ No | ✅ Yes |
| User confusion | High | Low |
| Manual editing | Required | Optional |
| Platform awareness | None | Full |
| Documentation needed | External | Built-in comments |
Improvement: Users can now run Jellyfin immediately without editing configuration files! 🎉