chore: release v0.0.3
See [CHANGELOG.md](https://github.com/venkyr77/jellarr/blob/main/CHANGELOG.md) for detailed release notes.
This commit is contained in:
85
CHANGELOG.md
85
CHANGELOG.md
@@ -6,6 +6,90 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to
|
||||
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.0.3] - 2025-11-30
|
||||
|
||||
### Added
|
||||
|
||||
#### Startup Wizard Configuration
|
||||
|
||||
- **New Feature**: Support for completing Jellyfin's startup wizard via config
|
||||
- **Configuration Fields**:
|
||||
- `startup.completeStartupWizard`: When `true`, marks the startup wizard as
|
||||
complete
|
||||
- **API Integration**: Uses Jellyfin's `POST /Startup/Complete` endpoint
|
||||
- **Use Case**: Useful for automated/declarative deployments where you want to
|
||||
skip the interactive startup wizard
|
||||
|
||||
#### User Management
|
||||
|
||||
- **New Feature**: Full support for declarative user creation and management
|
||||
- **Configuration Fields**:
|
||||
- `users[].name`: Username for the account
|
||||
- `users[].password`: Plaintext password (development only)
|
||||
- `users[].passwordFile`: Path to file containing password (production
|
||||
recommended)
|
||||
- **Security**: Supports secure password handling via file references for
|
||||
sops-nix integration
|
||||
- **Idempotent**: Only creates users that don't already exist
|
||||
|
||||
#### User Policy Configuration
|
||||
|
||||
- **New Feature**: Configure user permissions and policies declaratively
|
||||
- **Configuration Fields**:
|
||||
- `users[].policy.isAdministrator`: Grant admin privileges
|
||||
- `users[].policy.loginAttemptsBeforeLockout`: Set lockout threshold
|
||||
- **API Integration**: Uses Jellyfin's `/Users/{userId}/Policy` endpoint
|
||||
- **Comprehensive Testing**: Unit tests for types, API, mappers, and apply
|
||||
modules
|
||||
|
||||
### Infrastructure
|
||||
|
||||
#### CI Pipeline
|
||||
|
||||
- **New Feature**: Automated CI pipeline for quality validation
|
||||
- **Checks**: Build, typecheck, ESLint, unit tests, Nix package build, flake
|
||||
check
|
||||
- **Integration**: Runs on push to main and pull requests
|
||||
|
||||
#### NixOS VM Integration Tests
|
||||
|
||||
- **New Feature**: VM-based integration testing framework
|
||||
- **Coverage**: Full end-to-end testing with real Jellyfin server
|
||||
|
||||
#### Code Quality Improvements
|
||||
|
||||
- **ESLint Enhancements**:
|
||||
- Added `stylisticTypeChecked` preset with targeted overrides
|
||||
- Added naming convention rules for consistent code style
|
||||
- Implemented maximum typedef strictness for explicit type annotations
|
||||
- Added comment policy automation via uncomment tool
|
||||
- **Treefmt Refactor**: Split into separate format and lint modules for
|
||||
independent control
|
||||
|
||||
### Configuration Example
|
||||
|
||||
```yaml
|
||||
version: 1
|
||||
base_url: "http://localhost:8096"
|
||||
system: {}
|
||||
users:
|
||||
- name: "admin-user"
|
||||
passwordFile: "/run/secrets/admin-password"
|
||||
policy:
|
||||
isAdministrator: true
|
||||
loginAttemptsBeforeLockout: 3
|
||||
- name: "viewer-user"
|
||||
passwordFile: "/run/secrets/viewer-password"
|
||||
startup:
|
||||
completeStartupWizard: true
|
||||
```
|
||||
|
||||
### Breaking Changes
|
||||
|
||||
- None - All features are additive with full backward compatibility
|
||||
|
||||
---
|
||||
|
||||
## [0.0.2] - 2025-11-17
|
||||
|
||||
### Added
|
||||
@@ -116,5 +200,6 @@ branding:
|
||||
- **Library Configuration**: Content scanning intervals, metadata providers,
|
||||
subtitle preferences
|
||||
|
||||
[0.0.3]: https://github.com/venkyr77/jellarr/compare/v0.0.2...v0.0.3
|
||||
[0.0.2]: https://github.com/venkyr77/jellarr/compare/v0.0.1...v0.0.2
|
||||
[0.0.1]: https://github.com/venkyr77/jellarr/releases/tag/v0.0.1
|
||||
|
||||
@@ -50,5 +50,5 @@ pkgs.stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
|
||||
src = ../.;
|
||||
|
||||
version = "0.0.2";
|
||||
version = "0.0.3";
|
||||
})
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jellarr",
|
||||
"version": "0.0.2",
|
||||
"version": "0.0.3",
|
||||
"description": "Declarative configuration management for Jellyfin servers",
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.39.0",
|
||||
|
||||
@@ -12,7 +12,7 @@ export function makeClient(baseUrl: string, apiKey: string): Client<paths> {
|
||||
headers.set("X-Emby-Token", apiKey);
|
||||
headers.set(
|
||||
"X-Emby-Authorization",
|
||||
'MediaBrowser Client="jellarr", Device="cli", Version="0.1.0"',
|
||||
'MediaBrowser Client="jellarr", Device="cli", Version="0.0.3"',
|
||||
);
|
||||
return new Request(request, { headers });
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user