Commit Graph
46 Commits
Author SHA1 Message Date
Dark-Alex-17 87edf1fb9e test: wire the handler property tests and make the proptest recipe run them
handler_proptest.rs was committed without ever being declared as a module, and it imported a list_size strategy that did not exist, so it never compiled. The proptest recipe filtered on a test name substring that matched no test.

Declare the module, add the two strategies it needs, and pass both property test filters to libtest so the recipe runs the ui and handler property tests.
2026-09-16 14:28:30 -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 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 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 bc3aeefa6e feat: TUI support for Lidarr library 2026-01-05 13:10:30 -07:00
Dark-Alex-17 316ed64315 test: Created snapshot tests for all Radarr UI modules 2025-12-15 20:17:09 -07:00
Dark-Alex-17 82f30f126d test: Implemented UI snapshot tests 2025-12-12 15:44:11 -07:00
Dark-Alex-17 35dce0bf01 refactor: Migrated the handle_table_events macro into a trait for better IDE support, created a TableEventAdapter wrapper for the KeyEventHandlers to make it so that the trait can be used properly and a simple function to replace the previous call to the handle_table_events macro 2025-12-04 16:03:58 -07:00
Dark-Alex-17 ad58912baf test: Updated Rust edition to 2024 and refactored network module tests to be more idiomatic 2025-12-03 14:49:27 -07:00
Dark-Alex-17 00ab0f27f7 feat: Refactor all keybinding tips into a dynamically changing menu that can be invoked via '?' [#32] 2025-08-12 16:27:34 -06:00
Dark-Alex-17 cf00d7992e fix: Updated the name of the should_ignore_quit_key to ignore_special_keys_for_textbox_input to give a better idea of what the flag is used for; also added alt keybinding for backspace 2025-03-27 15:21:44 -06:00
Dark-Alex-17 0048d71b74 feat: Support alternative keymappings for all keys, featuring hjkl movements 2025-03-17 22:02:15 -06:00
Dark-Alex-17 fd35106df8 refactor: Renamed KeyEventHandler::with to KeyEventHandler::new to keep with Rust best practices and conventions 2025-01-18 12:43:25 -07:00
Dark-Alex-17 368d5d3db7 fix: Cancel all requests when switching Servarr tabs to both improve performance and fix issue #15 2024-12-17 14:36:49 -07:00
Dark-Alex-17 ed2211586e refactor(handlers): Refactored the handlers to all use the handle_table_events macro when appropriate and created tests for the macro so tests don't have to be duplicated across each handler 2024-12-11 17:03:52 -07:00
Dark-Alex-17 47b609369b refactor(handler): Created a macro to handle all table key events to reduce code duplication and make future implementations faster; Only refactored the Sonarr library to use it thus far 2024-12-07 19:20:13 -07:00
Dark-Alex-17 c3fb5dcd5f feat(handlers): Sonarr key support for the Series table 2024-12-01 13:48:48 -07:00
Dark-Alex-17 f7c96d81e9 refactor(BlockSelectionState): Refactored so selection of blocks in 2x2 grids is more intuitive and added left() and right() methods to aid this effort. 2024-11-30 12:22:46 -07:00
Dark-Alex-17 08f190fc6e feat(ui): Initial UI support for switching to Sonarr tabs 2024-11-29 15:58:19 -07:00
Dark-Alex-17 f139db07d9 feat(app): Dispatch support for all relevant Sonarr blocks 2024-11-27 17:06:20 -07:00
Dark-Alex-17 d84e7dfcab Refactored to require handlers to specify the components they rely on and to specify when they are ready. This fixes a lot of bugs with the UI when users try to press buttons while the application is still loading. 2024-07-17 19:55:10 -06:00
Dark-Alex-17 cf11527fef Refactored the UI module and the handlers module to do a more chain-of-responsibility method to manage the UI's and handlers for different key events. Also, initial work for indexer settings as well 2023-08-08 10:50:07 -06:00
Dark-Alex-17 519778c0ca Partial implementation of Tasks and Logs and test refactor 2023-08-08 10:50:06 -06:00
Dark-Alex-17 4fb83c114a Cleaned up the block selection logic to use the new BlockSelectionState struct 2023-08-08 10:50:06 -06:00
Dark-Alex-17 207b8a8c80 Mostly completed tags implementation; still need to add the UI option for the Add Movie popup, and I still need to fix the REALLY FAST horizontal scrolling issue (I'm thinking just %2 everything to slow it down). Oh, and also need to convert the quality profile Hashmap into a BiMap 2023-08-08 10:50:05 -06:00
Dark-Alex-17 6866f90329 Added support for adding movies directly from the collection details UI, refactored to support contexts for different routes, and fixed the horizontal scrolling bug with the get_width_with_margin function. 2023-08-08 10:50:05 -06:00
Dark-Alex-17 d358935386 Optimized copy-able types 2023-08-08 10:50:05 -06:00
Dark-Alex-17 69964b7f02 Added tests for the movie_details handler and created some more test utilities and macros 2023-08-08 10:50:05 -06:00
Dark-Alex-17 1181449cbf Updated test names to be more consistent with each other and added collection details tests 2023-08-08 10:50:05 -06:00
Dark-Alex-17 52739f4da0 Added unit tests for the add_movie_handler and added an additional test to radarr handles to ensure proper delegation. Also added a few macros for testing scrolling and home/end in all handlers to make life easier for those tests. 2023-08-08 10:50:05 -06:00
Dark-Alex-17 befd4bc15a Added Makefile and tests for the main radarr_handler 2023-08-08 10:50:05 -06:00
Dark-Alex-17 c15bda5885 Started writing more tests in the handlers 2023-08-08 10:50:05 -06:00
Dark-Alex-17 0f9dc639a8 Cleaned up some code with some macros 2023-08-08 10:50:05 -06:00
Dark-Alex-17 960319c3e7 Successful implementation of movie adding and deleting, and refactored network logic to be more reusable later 2023-08-08 10:50:04 -06:00
Dark-Alex-17 cd0cf2e04a Added delete movie functionality 2023-08-08 10:50:04 -06:00
Dark-Alex-17 24a36443e9 Refactored filtering and searching logic to be more clean and added home/end support in tables. 2023-08-08 10:50:04 -06:00
Dark-Alex-17 a304367e0e Refactored handlers and UI to have a separate radarr module, and implemented movie search functionality for existing movies. 2023-08-08 10:50:04 -06:00
Dark-Alex-17 3f378fb25a Refactored things a bit and added help text support 2023-08-08 10:50:04 -06:00
Dark-Alex-17 43e35da49f Added horizontally scrollable text 2023-08-08 10:50:04 -06:00
Dark-Alex-17 44db47f8ee Added error windows with scrolling text, and a colorized Radarr logo. Also added header row with header tabs 2023-08-08 10:50:04 -06:00
Dark-Alex-17 ec980ea32c Full popup description functionality 2023-08-08 10:50:04 -06:00
Dark-Alex-17 b24e0cdccd Almost kinda functional description box 2023-08-08 10:50:04 -06:00
Dark-Alex-17 d39acb0683 Added better support for contexts now and improved base Radarr UI 2023-08-08 10:50:04 -06:00
Dark-Alex-17 1ebf481326 Initial Radarr ui! 2023-08-08 10:50:04 -06:00
Dark-Alex-17 0d4e283c21 Base working commit with a UI thread (Tokio), Network thread (Tokio), and an input events thread (std). 2023-08-08 10:50:03 -06:00