Dark-Alex-17
4cbec79334
test(radarr): pin table search, filter and selection behaviour
...
Radarr handler tests never asserted which block the search and filter keys
push, so transposing searching_block and filtering_block in a
TableHandlingConfig went undetected. Add a search key and a filter key test
for each of the three handlers that configure them: library, collections and
history.
No test moved a table or list selection off index 0 either, which made
current_selection() and items[0] indistinguishable. Select a non-zero index
in the tests covering every handler that reads a selected row, enriching
fixtures with a second, distinct entry where only one existed.
Several fixtures also asserted against a default value, so the expected
result was indistinguishable from an unset field. The system details tasks
now use two distinct non-default task names, and the add movie body expects
a non-default monitor and minimum availability.
2026-09-09 10:47:07 -06:00
Dark-Alex-17
c9244b0459
feat(radarr): make the collection movie overview popup scrollable
...
A collection movie's overview renders in a popup that does not scroll,
so a long overview overflows with no way to read the rest. The popup now
scrolls.
The popup owns its own ScrollableText, built from the selected collection
movie's overview when it opens and torn down on Esc so a reopened popup
starts at the top. Scrolling mutates only that owned state. The
background renders the Collection record's overview and the movies
table, neither of which carries a scroll offset, so they cannot scroll
along with the popup. The popup also gains the loading and absent
fallbacks the rest of the tree already has.
Give the collection movie fixture an overview distinct from its
collection's, and a multi-paragraph one, so the snapshots can tell the
two records apart and a scrolled popup is distinguishable from an
unscrolled one.
2026-09-08 22:07:22 -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
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
d4bea91186
refactor: Updated all handler tests to use purpose built assertions to improve readability and maintainability
2025-12-09 14:28:47 -07:00
Dark-Alex-17
f6c4c1623f
style: Removed unused imports after massive handler testing refactor
2025-12-04 23:03:48 -07:00
Dark-Alex-17
49fd086b92
refactor: Created dedicated proptests and assertions to clean up the handler unit tests
2025-12-04 22:57:06 -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
71240373c0
refactor: Simplified both the table_handler macro and the stateful_table implementation
2025-12-04 11:34:45 -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
02870043ec
style: Addressed updated linter complaints
2025-08-07 19:49:11 -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
f87e02cd7c
test: Added in unit tests for TUI support for multiple custom named Servarrs
2025-02-27 19:30:17 -07:00
Dark-Alex-17
e8a6f740b9
refactor: Updated the 2018 idiom lint to the 2021_compatibility lint
2025-01-26 14:47:40 -07:00
Dark-Alex-17
b757d66d7a
fix: Addressed rustfmt complaints
2025-01-18 15:33:56 -07:00
Dark-Alex-17
fda69178b9
refactor: Reduced the number of clones necessary when building modal structs
2025-01-18 13:56:18 -07: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
cb8035a2ce
fix(radarr): Provide the movie ID alongside all TriggerAutomaticMovieSearch events when publishing to the networking channel
2024-12-17 21:26:34 -07:00
Dark-Alex-17
bdf48d1bf4
fix(radarr): Construct and pass edit collection parameters alongside the EditCollection event when publishing to the networking channel
2024-12-17 16:32:35 -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
c09950d0af
refactor(ui): Simplified the popup delegation so all future UI is easier to implement
2024-12-11 15:08:52 -07:00
Dark-Alex-17
27f12716d9
refactor(downloads_handler): Use the new handle_table_events macro
2024-12-08 14:28:12 -07:00
Dark-Alex-17
048877bbb6
refactor(collection_details_handler): use the new handle_table_events macro
2024-12-08 14:22:59 -07:00
Dark-Alex-17
87a652d911
refactor(collections_handler): Use the new handle_table_events macro
2024-12-08 14:14:24 -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
f139db07d9
feat(app): Dispatch support for all relevant Sonarr blocks
2024-11-27 17:06:20 -07:00
Dark-Alex-17
a0fe51c57b
Added help that's always visible for modals with new shortcuts for accepting all modals, or closing all modals without the need of seeing the UI
2024-11-03 14:25:33 -07:00
Dark-Alex-17
1f8d72c939
Added the full Radarr CLI so users can programmatically access all the same management features as in the TUI
2024-10-29 18:47:40 -06: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
6cadf70c1e
Added full support for managing the blocklist
2024-02-15 16:20:03 -07:00
Dark-Alex-17
b49bfaa9c1
Added sorting to the collections table, and fixed a bug that was refreshing the underlying table while users may be selecting a sort option.
2024-02-14 16:09:42 -07:00
Dark-Alex-17
6ba78cb4ba
Refactored table sorting into the ManagarrTable widget and StatefulTable so any and all tables created can support sorting with minimal UI changes and thus only need to focus on the handlers. I'm going to continue this effort tomorrow and look at what other widgets can be created to simplify things. Most likely, prompt boxes.
2024-02-12 19:15:02 -07:00
Dark-Alex-17
adda82f7f3
Refactored table filtering and searching so that they are now relative to the table being filtered/searched on. Also created two new widgets for error messages and popups to make life easier moving forward. Going to refactor table sorting into StatefulTable's as well so all tables can be searched, filtered, and sorted moving forwards.
2024-02-11 19:02:18 -07:00
Dark-Alex-17
b16a58deae
Updated Ratatui, created custom deserialization logic for i64s to make life easier, and used string interpolation where possible to reduce the lines needed to write log messages or create formatted text
2023-09-07 17:20:38 -06:00
Dark-Alex-17
907fa9a2ec
Refactored unnecessary data fields into Options to make the code cleaner, and to reduce the memory usage of the application
2023-08-14 13:02:50 -06:00
Dark-Alex-17
f7cb832095
Refactored the filter and search logic to follow the established modal logic and added some refactored functions to the UI module as well to clean up the UI code too
2023-08-10 16:43:57 -06:00
Dark-Alex-17
77fd9e621f
Did a lot of things in this one: Cleaned up a bit of leftover unused code from yesterday; deprecated the use of drain() on HorizontallyScrollableText; Refactored the uses of search and filter to be wrapped in Options; Fixed a race condition when closing the Add Movie modals in rapid succession; upgraded to ratatui 0.22.0; Fixed a bug in attempting to close an empty root folder; fixed a bug in attempting to close an empty filter; fixed a bug in attempting to close an empty search; fixed a bug in attempting to close an empty filter without resetting the view; fixed a bug in attempting to delete a movie after dynamically added one and updating the main library table
2023-08-08 10:50:07 -06:00
Dark-Alex-17
2d624e2648
Refactored the Edit/Add modals into their own structs so that adding similar modals in the future is more consistent, uses less RAM (since it's wrapped in an Option now), and is easier to implement. This comes with an initial example of the IndexerSettings UI that needs its own modal now. The modal has been created but it is still not used just yet so that's the next step.
2023-08-08 10:50:07 -06:00
Dark-Alex-17
e2e4bf16e4
Added additional fixes
2023-08-08 10:50:07 -06:00
Dark-Alex-17
618ba09b02
Refactored the RadarrData and ActiveRadarrBlock structs into their own file in models/servarr_data to make things neater and cleaner and easier to build on
2023-08-08 10:50:07 -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