0.2.0
Setup wizard + doctor
released 2026-07-30 · tag v0.2.0 · its changelog file · on the roadmap · manifest
Read at · spec at 76d46f3
Every repository's revision read
- brand@c2c6485
- integration-home-assistant@1ffa24e
- integration-mcp@71b97a7
- lemonfiber@8371555
- lemonfiber-companion@168bfe9
- lemonfiber-decline@21e9fe7
- lemonfiber-media-stack@a1d36db
- lemonfiber-plugins@7d88bbd
- lemonfiber-request-gate@fa76259
- lemonfiber-web@cfd74f7
- plugin-jellyfin@58fffca
- sdk-php@663b0b4
- sdk-python@645404a
- sdk-ts@eac8964
- spec@76d46f3
- tool-lfdev@93a3c56
New
Prove the data root can hardlink, and derive its storage mode #31
Report free space on the data root #32
builds C5-R6
Detect a data root that used to hardlink and no longer does #33
builds C5-R11
Tell an operator permission problem from a service one #34
builds C5-R10
Stop the stack if the data location disappears under it #35
Fuzz the manifest parser, validator and date parser #38
builds Q-R53
Verify the VPN forwarded port and name the provider trap #40
builds A3-R8
Gate the native-Jellyfin and PUID/PGID setup offers #42
The setup wizard's state-machine core #43
A service HTTP transport behind a port #44
builds A3-R4
Render reviewed answers into the configuration apply writes #45
builds A2-R3
A client for the Servarr API shape #46
Read a service's generated API key from its config #47
builds D1-R1
Record each change so it can be reversed on its own #48
The idempotent, drift-aware seeding policy #49
Wire a service's root folders, verifying each write #50
Prove each service's credential by reading back its identity #51
Wire a service's download clients, matched by endpoint #52
Read the generated API key from its config #53
builds D1-R1
Generate the one credential lemonfiber must mint itself #55
builds D1-R16
Replace the temporary web UI password with a generated one #56
builds D1-R16
Build each download client's real registration document #57
Mint, set and hand back qBittorrent's web UI password #58
builds D1-R16
The lemonfiber seed command, wiring qBittorrent's password #59
builds D1-R16
Wire each media-filing arr's root folders #60
Register each arr's download clients #62
Register each arr into Prowlarr's app sync #77
Make Jellyfin the identity source for Seerr #78
Make an interrupted apply recoverable, not wedged #80
builds A2-R10
Decide the apply lifecycle and the changes it records #81
builds A2-R2
Write a reviewed setup to disk, recoverably #82
builds A2-R10
Record a filesystem path as a reversible change #83
builds E4-R2
Create the data directory as part of applying #84
builds A2-R10
Materialise the stack as the last of applying's writes #85
builds A2-R10
Carry out a failed apply's reversal #86
builds E4-R2
Drive the wizard to an applied setup through a prompt #87
builds A2-R3
Run the setup wizard from the command line #88
builds A2-R1
Bring the stack up at the end of setup #89
builds A2-R15
Recover an interrupted setup instead of wedging on it #90
builds A2-R10
Save setup progress as it is gathered, and resume it #91
builds A2-R4
Show the accounts a protocol choice needs, when it is made #92
builds A1-R2
Check the environment before asking the first question #93
builds C1-R13
Make a bare `lemonfiber` the front door to setup #94
Test the chosen data location for hardlinks, and act on it #96
Prove a credential against its live service #97
A credentials step that proves the key before it is kept #98
Prove an existing service by reading back its identity #99
Re-prove the indexer credential as an ongoing check #100
builds A3-R10
Drive setup from flags for an unattended run #101
builds A2-R13
Prove a Usenet provider over NNTP #102
Gather and prove a Usenet provider over real NNTP #103
Mask secret input, and take a Usenet provider from flags #104
builds A2-R13
Stream a pull's progress line by line, not in silence #105
builds A2-R11
Fixed
Keep the hardlink and degraded verdicts honest #37
Address code-review findings across the codebase #39
builds GOV-R12
Stop a fake test fixture tripping the secret scan #54
builds GOV-R12
Speak each service's own API version, and declare JSON bodies #79
Keep the files that hold credentials private to their owner #107
builds GOV-R12
Remove the saved progress once setup has applied #108
builds GOV-R12
Bound requests in time and keep secrets out of failures #109
builds GOV-R12
Maintenance
Update the Discord invite to the permanent link #30
builds GOV-R12
Scope the release write grant to the job that needs it #36
builds Q-R53
Commit the fuzz workspace lockfile #41
builds GOV-R12
One Finding constructor instead of three #63
Share one Endpoint between the service clients #64
Move Date out of the validator #65
Separate pure translation from the daemon I/O #66
Split the VPN check into leak and port-forward modules #67
Move rendering out of main into a render module #68
Repoint the VPN link after the module split #69
Extract the shared test harness into test_support #70
Strip quotes from a hand-edited IP-echo endpoint #71
Move seed orchestration into its own module #73
Keep the parser's own words when a response won't decode #72
Three small correctness and honesty fixes #74
Detect and preserve a re-filed download client (D1-R3) #75
A transient stat error holds the watch, it does not stop the stack #76
Lift the hardlink probe into one shared place #95
builds GOV-R12
Collapse shared HTTP boilerplate onto Endpoint #106
builds GOV-R12
Split the setup surface out of main #111
builds GOV-R12
Move the data-location watch into its own module #110
builds GOV-R12
Share the register-and-read-back driver #112
builds GOV-R12
Stop claiming the recorded changes are undone #113
builds GOV-R12
Set the workspace version to 0.2.0 #114
builds OPS-R1
The goals it was gated on
A1-R1A1-R2A1-R3A1-R4A1-R5A1-R6A1-R7A1-R8A1-R9A1-R10A1-R11A1-R12A1-R13A2-R1A2-R2A2-R3A2-R4A2-R5A2-R6A2-R7A2-R8A2-R9A2-R10A2-R11A2-R12A2-R13A2-R14A2-R15A3-R1A3-R2A3-R3A3-R4A3-R8A3-R10C1-R13C5-R1C5-R2C5-R14