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
130 lines
3.3 KiB
Markdown
130 lines
3.3 KiB
Markdown
# Comparison: Before vs After
|
|
|
|
## Before (Old Behavior)
|
|
|
|
### Generated startup.json
|
|
```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
|
|
```json
|
|
{
|
|
"_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
|
|
```json
|
|
{
|
|
"_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
|
|
1. User starts Jellyfin
|
|
2. Gets `startup.json` with null values
|
|
3. Confused - what should I put here?
|
|
4. Searches documentation
|
|
5. Manually edits file
|
|
6. Restarts Jellyfin
|
|
|
|
### After
|
|
1. User starts Jellyfin
|
|
2. Gets OS-appropriate `startup.json` automatically
|
|
3. ✅ Works immediately with sensible defaults
|
|
4. 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! 🎉
|