New

  • Prove the data root can hardlink, and derive its storage mode #31

    builds C5-R1C5-R2C5-R13C5-R14A2-R8

  • 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

    builds C5-R7C5-R8C5-R9

  • 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

    builds A2-R6A2-R7

  • The setup wizard's state-machine core #43

    builds A2-R1A2-R2A2-R3A2-R4A2-R5A2-R13A2-R14

  • 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

    builds A3-R4D1-R11

  • 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

    builds E4-R1E4-R2

  • The idempotent, drift-aware seeding policy #49

    builds D1-R2D1-R3D1-R5D1-R6

  • Wire a service's root folders, verifying each write #50

    builds D1-R2D1-R4D1-R5D1-R8

  • Prove each service's credential by reading back its identity #51

    builds A3-R2A3-R3A3-R4A3-R10D1-R1

  • Wire a service's download clients, matched by endpoint #52

    builds D1-R2D1-R4D1-R5D1-R8

  • 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

    builds D1-R4D1-R8D1-R11

  • 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

    builds D1-R4D1-R9

  • Register each arr's download clients #62

    builds D1-R1D1-R4D1-R8

  • Register each arr into Prowlarr's app sync #77

    builds D1-R2D1-R4D1-R5D1-R8D1-R11

  • Make Jellyfin the identity source for Seerr #78

    builds D1-R7D1-R16D1-R4

  • 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

    builds A2-R1A2-R14

  • Test the chosen data location for hardlinks, and act on it #96

    builds A2-R8C5-R1C5-R2C5-R14

  • Prove a credential against its live service #97

    builds A3-R2A3-R3A3-R4

  • A credentials step that proves the key before it is kept #98

    builds A3-R1A3-R2A3-R3A3-R4

  • Prove an existing service by reading back its identity #99

    builds A3-R2A3-R3A3-R4

  • 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

    builds A3-R2A3-R3A3-R4

  • Gather and prove a Usenet provider over real NNTP #103

    builds A3-R2A3-R3A3-R4

  • 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

    builds C5-R1C5-R11

  • 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

    builds F2-R2D1-R4A3-R3

  • 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