Files
pgsql-jellyfin/docs/STARTUP_CONFIG_COMPARISON.md
T
wjones 8f860a8ec3 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
2026-02-26 14:21:26 -05:00

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! 🎉