Centralize build output and generate OS-specific startup.json
- 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
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
# 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! 🎉
|
||||
Reference in New Issue
Block a user