Dark-Alex-17
97d67a6938
feat(readarr): fetch the Readarr security config and expose it on the CLI
2026-08-20 16:15:34 -06:00
Dark-Alex-17
1072585903
feat(readarr): fetch the Readarr host config and expose it on the CLI
2026-08-20 16:07:33 -06:00
Dark-Alex-17
520b422dcc
feat(readarr): fetch Readarr disk space and expose it on the CLI
...
Add ReadarrEvent::GetDiskSpace, mapped to GET /diskspace, and
get_readarr_diskspace, which stores the result on ReadarrData for the
root folder and system views.
Surface it as `managarr readarr list disk-space`, matching the other
three servarrs.
Readarr returns a label field on some records that DiskSpace does not
model; serde drops it, so the CLI prints only the path and the free and
total space, as it does for the other three servarrs.
2026-08-20 15:49:56 -06:00
Dark-Alex-17
d8f171ec6f
feat(readarr): fetch the Readarr system status and expose it on the CLI
...
Add ReadarrEvent::GetStatus, mapped to GET /system/status, and
get_readarr_status in the new readarr_network/system module. It stores
the version and start time on ReadarrData so the system view and the
tick refresh can read them.
Surface it as `managarr readarr get system-status`, matching the
Radarr, Sonarr, and Lidarr spelling of the same call. A `list status`
spelling would have made the same command a different verb on the
fourth servarr, which is a difference the user would have to remember
for no benefit.
Readarr instances answer /system/status with thirty keys; SystemStatus
models the two that are used and serde ignores the rest, as it does for
the other three servarrs.
This is the first ReadarrCommand variant, so ReadarrCliHandler now
reads its app and network fields.
2026-08-20 15:47:40 -06:00
Dark-Alex-17
cd341c3d71
feat(readarr): add the Readarr health check network call
...
Inhabit ReadarrEvent with its first variant, HealthCheck, mapped to
GET /health, and add get_readarr_healthcheck alongside the equivalent
Lidarr, Radarr, and Sonarr fetchers. The call is internal only and has
no CLI surface, matching the other three servarrs; it exists so that an
unreachable instance surfaces an error banner on tick.
The healthcheck fetcher lives in readarr_network/mod.rs rather than a
submodule, so its tests live in readarr_network_tests.rs next to the
resource() and NetworkEvent conversion tests, mirroring Lidarr.
MockServarrApi::build_for matched NetworkEvent by value with no Radarr
fallback arm. It compiled only while ReadarrEvent was uninhabited and
no value could reach it; the first variant makes the match non
exhaustive, so it now assigns the config to the Readarr server tab.
2026-08-20 15:44:07 -06:00
Dark-Alex-17
29f043f5c7
feat: scaffold Readarr support across the state, app, handler, UI, and CLI layers
...
Promote Route::Readarr from a unit stub to a tuple variant and wire Readarr
through every layer, mirroring the Lidarr tree. Readarr appears as a fourth
servarr tab and its library view renders the Authors table.
Adds ReadarrData and its modals, the tick and context clue modules, the
top-level ReadarrHandler, ReadarrUi with the Authors library view, and an
empty ReadarrCommand behind ReadarrCliHandler. The default port is 8787.
Promoting the route variant compiles cleanly without any of the arms that
give it behaviour, so all six of those sites are wired explicitly here:
App::on_tick, handlers::handle_events, handle_prompt_toggle,
ServarrContextClueProvider, ui(), and verify_config_present_for_cli. Each was
checked by removing the arm and confirming its covering assertion then fails.
ReadarrEvent and ReadarrCommand are both declared empty. They gain variants
alongside the network calls and CLI commands that use them, which keeps each
later change to a single function.
Adding the tab changes the rendered tab bar, so 13 existing snapshots
regenerate. The only delta in each is that single tab bar line.
This scaffold adds 24 dead_code warnings, all inside the Readarr tree and
none outside it. They clear as the handlers, UI, network events, and CLI
commands that consume these items land: block arrays awaiting their accepts
implementations and BlockSelectionState seeding, modal and state fields
awaiting their handlers, the CLI handler fields awaiting an inhabited command
enum, and the top-level handler fields awaiting sub-handlers. The count must
strictly decrease from here, so a later increase is a defect rather than
transient noise. The 12 pre-existing collapsible_match warnings are unrelated
and untouched.
2026-08-20 15:28:49 -06:00
Dark-Alex-17
4db9b92146
refactor: move shared servarr types into servarr_models
...
SystemStatus was declared three times, byte for byte identically, in
radarr_models, sonarr_models, and lidarr_models. MetadataProfile and the
Lidarr release download body were each declared in a single servarr module
despite having nothing servarr specific about them: MetadataProfile is an
id and name pair structurally identical to QualityProfile, which already
lives in servarr_models, and a download body of a guid plus an indexer id
is the generic form of that request.
Move all three into servarr_models, preserving that file's alphabetical
ordering, and drop the prefix from LidarrReleaseDownloadBody now that it is
no longer owned by one servarr.
RadarrReleaseDownloadBody and SonarrReleaseDownloadBody deliberately stay
where they are. Radarr's carries a movie id and Sonarr's carries optional
series, episode, and season fields, so the three types are not
interchangeable and only the Lidarr shape is the common one.
Behavior is unchanged. Every remaining edit is an import path update or the
rename at a call site.
2026-08-20 10:52:05 -06:00
Dark-Alex-17
a362add8f0
feat: updated gitignore to not include coyote memory or workspace config
2026-08-19 13:03:14 -06:00
Dark-Alex-17
6e7707f6df
build: upgraded MSRV in the Dockerfile
2026-06-25 15:41:56 -06:00
Dark-Alex-17
6df68b8a66
tests: Addressed additional CR comments and added tests for tail-logs
2026-06-25 14:21:57 -06:00
Dark-Alex-17
cbca6bd916
fix: addressed code review comments
2026-06-25 14:11:18 -06:00
Dark-Alex-17
92187c5f16
fix: tail-logs subcommand follows log rollovers and sleeps to minimize idle CPU loops
2026-06-25 13:51:32 -06:00
Dark-Alex-17
366809d8c6
fmt: applied formatting
2026-06-25 13:32:31 -06:00
Dark-Alex-17
dd93fe117d
feat: Implemented log rolling so the log file doesn't just grow exponentially [ #60 ]
2026-06-25 13:29:56 -06:00
Dark-Alex-17
10e18af1bf
build: upgraded to openssl 0.10.79 to fix security vulnerabilities
2026-06-25 13:20:14 -06:00
Dark-Alex-17
a4d93692a9
build: Upgraded to Rust v1.95.0
2026-06-25 13:19:27 -06:00
Dark-Alex-17
03d134bec9
refactor: Refactored several usages of sort_by_key and match guards to utilize newer Rust version APIs
2026-06-25 13:18:43 -06:00
Dark-Alex-17
4cad9e1755
docs: Improved the README to demonstrate what a truly minimal configuration looks like for each service and explain the "reasonable defaults" [ #61 ]
2026-06-25 12:35:51 -06:00
Dark-Alex-17
47a2fbf0cc
docs: removed the lines-of-code counter from the README since the link is dead
2026-04-20 16:02:18 -06:00
Dark-Alex-17
7067902752
build: updated reqwest and build dependencies
2026-04-20 15:53:42 -06:00
Dark-Alex-17
ba1cf0182b
build: Updated the docker image so that it ships with trusted CA root certs from trusted providers like LetsEncrypt, DigiCert, etc. for docker SSL users
2026-04-02 09:58:30 -06:00
Dark-Alex-17
5cccec88c9
docs: Updated the README to have a more detailed section on how to acquire SSL certificate information
2026-03-30 10:13:51 -06:00
Dark-Alex-17
bbcd3f00a9
feat: Created a separate 'ssl' property for the config so users don't have to specify an ssl_cert_path to use SSL or use the uri workaround for HTTPS API access
2026-03-29 12:39:26 -06:00
Dark-Alex-17
2e339dd73b
docs: Created an authorship policy and PR template that requires explicit acknowledgement of AI assistance
2026-02-24 17:41:34 -07:00
Dark-Alex-17
f988cf0f26
docs: Fixed some typos found in the README
Check / stable / fmt (push) Successful in 9m57s
Check / beta / clippy (push) Successful in 11m0s
Check / stable / clippy (push) Successful in 10m59s
Check / nightly / doc (push) Successful in 1m2s
Check / 1.89.0 / check (push) Successful in 1m9s
Test Suite / ubuntu / beta (push) Successful in 1m47s
Test Suite / ubuntu / stable (push) Successful in 1m43s
Test Suite / ubuntu / stable / coverage (push) Successful in 12m52s
Test Suite / macos-latest / stable (push) Has been cancelled
Test Suite / windows-latest / stable (push) Has been cancelled
2026-02-05 18:50:42 -07:00
Dark-Alex-17
ff82dc2012
style: Upgraded rustfmt edition to 2024
Check / stable / fmt (push) Successful in 9m57s
Check / beta / clippy (push) Successful in 11m0s
Check / stable / clippy (push) Successful in 10m59s
Check / nightly / doc (push) Successful in 57s
Check / 1.89.0 / check (push) Successful in 1m1s
Test Suite / ubuntu / beta (push) Successful in 1m43s
Test Suite / ubuntu / stable (push) Successful in 1m42s
Test Suite / ubuntu / stable / coverage (push) Successful in 12m52s
Test Suite / macos-latest / stable (push) Has been cancelled
Test Suite / windows-latest / stable (push) Has been cancelled
2026-02-05 10:47:35 -07:00
Dark-Alex-17
5a4e6c9623
style: Addressed CR comments about adding an explicit Command::ConfigPath to the main command match statement
2026-02-04 10:24:59 -07:00
Dark-Alex-17
9a6a06ee20
build: Updated all dependencies to resolve dependabot security issues
2026-02-04 09:51:57 -07:00
Dark-Alex-17
5556e48fc0
fix: Improved the system notification feature so it can persist between modals
2026-02-04 08:18:04 -07:00
Dark-Alex-17
af573cac2a
feat: Added support for a system-wide notification popup mechanism that works across Servarrs
2026-02-03 17:03:12 -07:00
Dark-Alex-17
447cf6a2b4
style: Applied formatting to the artist_details_ui
2026-02-03 08:10:02 -07:00
Dark-Alex-17
203bf9cb66
fix: Sonarr API updated to somtimes allow either seeders or leechers to be null
2026-02-03 08:00:31 -07:00
Dark-Alex-17
4f9bc34d23
docs: Updated the README so that the example configuration only includes references to Servarrs that are actually supported [ #55 ]
2026-01-30 15:45:22 -07:00
Dark-Alex-17
a2aa9507a9
fix: Improved the first-time run behavior so that it outputs the default configuration file it tries to load to help users locate the file on first-runs
2026-01-30 15:36:26 -07:00
Dark-Alex-17
c791b985f0
docs: Updated README to tell users to use 'managarr config-path' as the default method to discover the location of the default configuration file
2026-01-29 12:56:59 -07:00
Dark-Alex-17
5c517a748c
fix: 'managarr config-path' should work without a pre-existing config already in place [ #54 ]
2026-01-29 12:54:45 -07:00
Dark-Alex-17
892c687077
docs: Updated README with config-path as another way to find the default config file for a given system
2026-01-29 10:26:12 -07:00
Dark-Alex-17
c6d5b98e86
feat: Implemented a 'config-path' command to print out the default Managarr configuration file path to help address #54
2026-01-29 10:23:05 -07:00
Dark-Alex-17
67e5114ec2
build: Removed #[allow(dead_code)] from the LIDARR_LOGO since it is now being utilized
2026-01-26 11:56:05 -07:00
Dark-Alex-17
fdc331865e
feat: Full support for filtering disks and aggregating root folders in the UI's 'Stats' block
2026-01-26 11:10:59 -07:00
Dark-Alex-17
f388dccc08
feat: proper collapsing of root folder paths in the stats layer of the UI
2026-01-22 14:44:48 -07:00
Dark-Alex-17
64fad3b9bc
refactor: Removed the filtering of monitored_storage_paths from the networking module and migrated all of it to the UI
2026-01-22 13:12:51 -07:00
Dark-Alex-17
3be7b09da8
feat: Added config option to filter for specific disk space paths to display in the UI (CLI is unaffected)
2026-01-22 10:49:30 -07:00
Dark-Alex-17
5f3123cd79
test: Updated snapshot tests to assert the paths are updated in the UI
Check / stable / fmt (push) Successful in 9m57s
Check / beta / clippy (push) Successful in 10m59s
Check / stable / clippy (push) Successful in 10m59s
Check / nightly / doc (push) Successful in 59s
Check / 1.89.0 / check (push) Successful in 1m7s
Test Suite / ubuntu / beta (push) Successful in 1m48s
Test Suite / ubuntu / stable (push) Successful in 1m43s
Test Suite / ubuntu / stable / coverage (push) Successful in 12m55s
Test Suite / macos-latest / stable (push) Has been cancelled
Test Suite / windows-latest / stable (push) Has been cancelled
2026-01-22 09:39:44 -07:00
Dark-Alex-17
d8f7febfe1
feat: Improved disk-space UI and CLI that shows the actual path being monitored instead of just a disk number
Check / stable / fmt (push) Has been cancelled
Check / beta / clippy (push) Has been cancelled
Check / stable / clippy (push) Has been cancelled
Check / nightly / doc (push) Has been cancelled
Check / 1.89.0 / check (push) Has been cancelled
Test Suite / ubuntu / beta (push) Has been cancelled
Test Suite / ubuntu / stable (push) Has been cancelled
Test Suite / macos-latest / stable (push) Has been cancelled
Test Suite / windows-latest / stable (push) Has been cancelled
Test Suite / ubuntu / stable / coverage (push) Has been cancelled
2026-01-22 09:36:58 -07:00
Dark-Alex-17
0bfbb44e3e
feat: Implemented the forgotten lidarr list disk-space command
Check / stable / fmt (push) Successful in 9m59s
Check / beta / clippy (push) Successful in 10m58s
Check / stable / clippy (push) Has been cancelled
Check / nightly / doc (push) Has been cancelled
Check / 1.89.0 / check (push) Has been cancelled
Test Suite / ubuntu / beta (push) Has been cancelled
Test Suite / ubuntu / stable (push) Has been cancelled
Test Suite / macos-latest / stable (push) Has been cancelled
Test Suite / windows-latest / stable (push) Has been cancelled
Test Suite / ubuntu / stable / coverage (push) Has been cancelled
2026-01-22 09:06:38 -07:00
Dark-Alex-17
9e96e74c87
ci: Fixed the docker-build Justfile recipe
Check / stable / fmt (pull_request) Successful in 10m40s
Check / beta / clippy (pull_request) Successful in 10m59s
Check / stable / clippy (pull_request) Successful in 10m59s
Check / nightly / doc (pull_request) Successful in 58s
Check / 1.89.0 / check (pull_request) Successful in 1m2s
Test Suite / ubuntu / beta (pull_request) Successful in 1m43s
Test Suite / ubuntu / stable (pull_request) Successful in 1m41s
Test Suite / ubuntu / stable / coverage (pull_request) Successful in 13m1s
Test Suite / macos-latest / stable (pull_request) Has been cancelled
Test Suite / windows-latest / stable (pull_request) Has been cancelled
2026-01-21 10:39:51 -07:00
Dark-Alex-17
ddb869c341
docs: Reword some Sonarr manual search CLI docs to be more explicit about how the results are filtered
2026-01-20 14:37:42 -07:00
Dark-Alex-17
f17f542e8e
refactor: Refactored the SonarrEvent enum to not unnecessarily wrap dual series_id and season_number values in a tuple when both values can be passed directly
2026-01-19 16:44:10 -07:00
Dark-Alex-17
a2e6400a38
docs: Updated README with information about Lidarr support
2026-01-19 16:29:02 -07:00
Dark-Alex-17
89f5ff6bc7
feat: Blocklist support in Lidarr in both the CLI and TUI
2026-01-19 16:13:11 -07:00
Dark-Alex-17
eff1a901eb
feat: CLI and TUI support for track history and track details in Lidarr
2026-01-19 14:50:20 -07:00
Dark-Alex-17
7add62b245
fix: Sonarr network wasn't checking for the user to be using the sorting block when populating season details
2026-01-19 14:50:01 -07:00
Dark-Alex-17
5fa9b08347
fix: Sonarr CLI was not properly filtering out episode and season releases when manually searching for releases
2026-01-19 14:49:17 -07:00
Dark-Alex-17
7bb5f83a56
feat: Lidarr UI support for album details popup
2026-01-16 23:21:25 -07:00
Dark-Alex-17
caf4ad1e64
feat: Implemented TUI handler support for the Album Details popup in Lidarr
2026-01-16 17:16:44 -07:00
Dark-Alex-17
bc6ecc39f4
feat: Bulk added CLI support for tracks and album functionalities in Lidarr
2026-01-16 14:38:08 -07:00
Dark-Alex-17
5e70d70758
test: Wrote tests for the Lidarr manual artist search key handler
2026-01-16 11:00:38 -07:00
Dark-Alex-17
1329589bd6
feat: Implemented the manual artist discography search tab in Lidarr's artist details UI
2026-01-15 14:36:09 -07:00
Dark-Alex-17
c6dc8f6090
feat: Lidarr CLI support for downloading a release
2026-01-15 12:57:54 -07:00
Dark-Alex-17
0ee275d58f
fix: Sonarr manual search TUI and CLI incorrectly displaying the same unfiltered results for both season and episode searches
2026-01-15 12:43:16 -07:00
Dark-Alex-17
8dfa664a06
feat: CLI support for searching for discography releases in Lidarr
2026-01-15 11:39:34 -07:00
Dark-Alex-17
d7f0dd5950
feat: Added TUI and CLI support for viewing Artist history in Lidarr
2026-01-14 16:09:37 -07:00
Dark-Alex-17
8b9467bd39
feat: Full Lidarr system support for both the CLI and TUI
2026-01-14 14:50:33 -07:00
Dark-Alex-17
c74d5936d2
feat: Full CLI and TUI support for the Lidarr Indexers tab
2026-01-14 13:30:51 -07:00
Dark-Alex-17
8abcf44866
feat: Full support for adding a root folder in Lidarr from both the CLI and TUI
2026-01-14 09:06:27 -07:00
Dark-Alex-17
d2217509f2
feat: naive lidarr root folder tab implementation. Needs improved add logic
2026-01-13 14:33:12 -07:00
Dark-Alex-17
c68cd75015
feat: Downloads tab support in Lidarr
2026-01-13 13:40:18 -07:00
Dark-Alex-17
e1a25bfaf2
refactor: Improved and simplified the implementation of history details for both Sonarr and Lidarr
2026-01-13 12:36:21 -07:00
Dark-Alex-17
ad9e2b3671
feat: Created a History tab in the Radarr UI and created a list history command and mark-history-item-as-failed command for Radarr
2026-01-13 12:35:54 -07:00
Dark-Alex-17
0172253d20
fix: Slowed down the automatic text scrolling in tables so the text is readable
2026-01-12 15:28:41 -07:00
Dark-Alex-17
47fdee190a
fix: Expanded the history item details size so that it can include all the available information for a given item; was previously being cut off on some screens
2026-01-12 15:28:03 -07:00
Dark-Alex-17
68b08d1cd7
feat: Implemented the Lidarr History tab and CLI support
2026-01-12 14:43:05 -07:00
Dark-Alex-17
f31810e48a
feat: TUI support for deleting a Lidarr album from the artist details popup
2026-01-09 17:21:10 -07:00
Dark-Alex-17
09bee7473f
feat: CLI support for deleting an album from Lidarr
2026-01-09 16:33:32 -07:00
Dark-Alex-17
b2814371f0
feat: Completed support for viewing Lidarr artist details
2026-01-09 16:22:03 -07:00
Dark-Alex-17
269057867f
fix: Bug in submitting the update series prompt in the series details UI in Sonarr
2026-01-09 14:01:46 -07:00
Dark-Alex-17
450fdd7106
test: Added tests for the Lidarr context clues for the add artist popup
2026-01-08 15:20:17 -07:00
Dark-Alex-17
c624d1b9e4
feat: Full CLI and TUI support for adding an artist to Lidarr
2026-01-08 15:16:01 -07:00
Dark-Alex-17
e94f78dc7b
refactor: Let serde serialize Add Series and Add Movie enums instead of calling to_string up front
2026-01-08 10:52:30 -07:00
Dark-Alex-17
b1a6db21f1
fix: Don't include Lidarr artist disambiguation in Edit popup title when it is empty
2026-01-08 10:09:15 -07:00
Dark-Alex-17
ca208ff5e4
fix: Refactored how quality profiles, language profiles, and metadata profiles are populated for each servarr so they sort using the ID to mimic the web UI better
2026-01-08 10:05:15 -07:00
Dark-Alex-17
1a43d1ec7c
feat: Include the Lidarr artist disambiguation in the title of the Edit Artist popup
2026-01-08 09:28:56 -07:00
Dark-Alex-17
4abf705cb5
fix: Added the correct keybinding context to the Lidarr edit artist popup
2026-01-08 09:28:12 -07:00
Dark-Alex-17
cf98b10d77
style: Modified the LineGauge style so its more readable in the UI
2026-01-07 17:19:32 -07:00
Dark-Alex-17
f0ed71b436
build: Upgraded to Ratatui v0.30.0 and fixed a new security vulnerability [ #13 ]
2026-01-07 17:15:54 -07:00
Dark-Alex-17
243de47cae
feat: Initial Lidarr support for searching for new artists
2026-01-07 15:53:18 -07:00
Dark-Alex-17
d3947d9e15
fix: Improved fault tolerance for search result tables and test all indexer results tables
2026-01-07 14:58:32 -07:00
Dark-Alex-17
64d8c65831
fix: Prevented additional empty slice errors in indexer tables
2026-01-07 14:09:12 -07:00
Dark-Alex-17
60c4cf1098
fix: Fixed a bug in all Servarr implementations to not try to get the current selection of a search table when an error is returned from the API
2026-01-07 14:00:02 -07:00
Dark-Alex-17
9cc3ccb419
feat: Lidarr CLI commands to list quality profiles and metadata profiles
2026-01-07 13:15:50 -07:00
Dark-Alex-17
45c61369c8
feat: Improved CLI readability by creating a separate Global Options section for global flags
2026-01-07 13:08:23 -07:00
Dark-Alex-17
a8609e08c5
feat: CLI support for deleting a tag in Lidarr
2026-01-07 12:50:23 -07:00
Dark-Alex-17
a18b047f4f
feat: Lidarr CLI support for listing and adding tags
2026-01-07 12:20:39 -07:00
Dark-Alex-17
b1afdaf541
feat: Added CLI and TUI support for editing Lidarr artists
2026-01-07 12:01:03 -07:00
Dark-Alex-17
3c1634d1e3
testing
2026-01-07 10:45:49 -07:00
Dark-Alex-17
9b4eda6a9d
feat: Support for updating all Lidarr artists in both the CLI and TUI
2026-01-06 12:47:10 -07:00
Dark-Alex-17
96308afeee
feat: Added Lidarr CLI support for fetching the host config and the security config
2026-01-06 11:00:19 -07:00
Dark-Alex-17
4e13d5d34d
style: Applied formatting for the lidarr_command_tests
2026-01-06 10:25:05 -07:00
Dark-Alex-17
b4a99d1665
feat: Created Lidarr commands: 'get artist-details' and 'get system-status'
2026-01-06 10:24:51 -07:00