Cody Kickertz
b17381f53f
fix(frontend): replace any types with proper TypeScript types ( #88 )
...
* fix(frontend): replace any types with proper TypeScript types
- AutoSuggestInput: use Data type from popper.js for modifier callback
- Tooltip: use Data type from popper.js for computeMaxSize callback
- OverlayScroller: use ComponentPropsWithoutRef<'div'> for renderView
- index.ts: use unknown[] instead of any[] for logError parameters
Improves type safety and removes eslint-disable comments.
Partially addresses #37
* fix(frontend): use ModifierFn type and string values for Popper styles
- Use ModifierFn type from popper.js for modifier callbacks
- Calculate bottom/right from offset properties (top+height, left+width)
- Convert numeric style values to strings with 'px' suffix
- Fix typo: 'botton' -> 'bottom' in AutoSuggestInput
---------
Co-authored-by: admin <admin@ardentleatherworks.com>
2025-12-21 10:38:16 -06:00
Cody Kickertz
1230212df8
fix(frontend): memoize inline JSX objects for performance ( #87 )
...
- MovieIndexTable: memoize itemData, move row flex styles to CSS
- MovieIndexOverviews: memoize itemData, extract listStyle constant
- MovieIndexOverview: memoize elementStyle and infoStyle
- CircularProgressBar: memoize containerStyle and circleStyle
Reduces unnecessary re-renders in virtualized lists and frequently
rendered components.
Closes #41
Co-authored-by: admin <admin@ardentleatherworks.com>
2025-12-19 20:01:07 -06:00
Cody Kickertz
80c364110c
fix(ui): update user-facing links to Aletheia resources ( #86 )
...
- MoreInfo: point to Aletheia GitHub instead of Radarr resources
- UpdateChanges: link issue numbers to Aletheia repo
- Add "Upstream" translation key for Radarr reference link
Closes #53
Co-authored-by: admin <admin@ardentleatherworks.com>
2025-12-19 20:00:39 -06:00
Cody Kickertz
a73b82d40c
fix(frontend): remove index from React keys in dynamic lists ( #84 )
...
Co-authored-by: admin <admin@ardentleatherworks.com>
2025-12-19 19:35:56 -06:00
Cody Kickertz
b7d5ffb6e9
fix: remaining React index-as-key issues + backend null safety ( #78 )
...
* fix: SonarCloud null safety and struct comparison issues
- OsPath.cs: Remove ReferenceEquals checks on struct (always false)
- SkyHookProxy.cs: Add null-conditional operators for Credits.Cast/Crew
* fix: remaining React index-as-key issues and backend null safety
Frontend:
- Fix 8 remaining index-as-key violations using content-based keys
- ImportMovieSelectFolder.js: use errorMessage as key
- ImportMovieFooter.js: use errorMessage as key
- CustomFormat.js: use item.name as key
- AddSpecificationItem.js: use preset.name as key
- QualityProfileItems.js: use message as key
- QualityProfileFormatItems.js: use message as key
Backend (cherry-picked from batch-3):
- OsPath.cs: Remove ReferenceEquals on struct
- SkyHookProxy.cs: Add null-conditional for Credits
---------
Co-authored-by: admin <admin@ardentleatherworks.com>
2025-12-19 16:11:24 -06:00
admin
6d17e5eaff
Fix SonarCloud bugs: threading, React state, sorting
...
Backend:
- S2445: Make _connections readonly in MessageHub.cs to fix locking issue
Frontend:
- S6756: Use callback form of setState when referencing previous state
- Collection.js, DiscoverMovie.js, ImportMovie.js
- ImportMovieSelectMovie.js, EditQualityProfileModalContentConnector.js
- S2871: Add localeCompare for proper alphabetical sorting
- Collection.js, DiscoverMovie.js, MovieIndex.tsx
- S1764: Remove duplicate condition in QualityProfileSelectInput.tsx
2025-12-19 15:15:24 -06:00
Cody Kickertz
220eba471b
Merge pull request #71 from cheir-mneme/fix/eslint-v9-migration
...
Migrate to ESLint 9 flat config
2025-12-19 15:03:41 -06:00
admin
cca1b47936
Migrate to ESLint 9 flat config
...
- Create eslint.config.mjs with ESM flat config format
- Remove legacy .eslintrc.js and .eslintignore
- Remove eslint-plugin-filenames (not ESLint 9 compatible)
- Update lint-staged to use new config
- Clean up unused eslint-disable directives
2025-12-19 14:44:01 -06:00
admin
a7852b6fcf
fix(frontend): address React and TypeScript quality issues
...
- Replace index-as-key antipattern with stable keys (#34 )
- Remove TypeScript any types in favor of proper types (#37 )
- Memoize inline style objects to prevent unnecessary re-renders (#41 )
Files: 17 frontend components updated
2025-12-19 14:20:40 -06:00
admin
7961b36547
fix(ci): P2 improvements - editorconfig, integration tests, Prettier 3
...
- Remove duplicate dotnet_style_qualification rules in .editorconfig
- Update Radarr branding to Aletheia in .editorconfig
- Add integration tests step to build.yml (with continue-on-error)
- Upgrade Prettier to 3.7.4, eslint-plugin-prettier to 5.5.4
- Upgrade eslint-config-prettier to 10.1.8
- Fix pre-existing lint errors (unused vars, radix parameter)
- Reformat frontend code with Prettier 3 formatting changes
Closes #57 (SonarCloud deferred - needs org setup)
Closes #58 , #62 (partial - ESLint 9 deferred), #63
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-19 11:46:44 -06:00
admin
2b19ec07ff
fix: resolve technical debt and npm vulnerabilities
...
NPM Security (0 vulnerabilities remaining):
- Add yarn resolutions for cross-spawn, brace-expansion, color-string, glob, postcss
Bug fixes:
- Bug-002: Use FirstOrDefault with null check (DownloadStationTaskProxyV2)
- Bug-007: Fix inverted exception logic for magnet fallback (TorrentClientBase)
- Bug-008: Fix stale closure using ref (MovieSearchInput)
- Bug-009: Fix Number.Number.parseInt typos across 50+ files
- Bug-010: Add regex timeout and Compiled flag (RegexReplace)
- Bug-011: Add null checks for XML queries (ConfigFileProvider)
- Bug-012: Remove empty touch handler (MovieDetails)
- Bug-013: Use Path.GetFileName for safer check (InstallUpdateService)
- Bug-014: Return Ok instead of Accepted for sync PUT (MovieController)
- Bug-016: Fix double bracket typo in log message (InstallUpdateService)
- Bug-017: Add console.warn to catch block (MovieTagInput)
- Bug-018: Remove stray debug console.log (SignalRConnector)
- Bug-019: Document disabled regex with ReDoS justification (Parser)
2025-12-18 19:54:02 -06:00
admin
9526078d16
refactor: use Number.parseInt/parseFloat/isNaN (S7773)
...
Use Number static methods instead of global functions for better
clarity and consistency.
2025-12-18 16:19:34 -06:00
admin
c9c3948af6
refactor(ui): extract PosterDateRow to reduce MovieIndexPoster complexity
...
Extract repetitive date display logic into PosterDateRow component.
Reduces cognitive complexity from 30 to ~20 by consolidating 4 similar
conditional blocks into reusable component calls.
2025-12-18 15:38:29 -06:00
admin
1b42fe1e25
fix: mark React component props as Readonly
...
Bulk update to make all component props immutable at the type level.
This prevents accidental prop mutation and improves type safety.
Resolves ~50 SonarCloud code smells.
2025-12-18 15:31:40 -06:00
admin
2045f39037
feat(ui): add media type badge to poster view
2025-12-18 14:42:42 -06:00
admin
d9597db83f
refactor: rename project from Logarr to Aletheia
2025-12-18 09:41:48 -06:00
admin
2a523af1db
refactor(ui): update page titles and manifest for rebrand
2025-12-17 19:19:38 -06:00
admin
99512447d7
feat: rebrand to Logarr with teal theme
2025-12-17 19:18:07 -06:00
admin
b600beb3ea
feat(privacy): remove telemetry, analytics, fingerprinting
2025-12-17 18:41:03 -06:00
Erik Frantz
4c00729183
Fix: ( #11303 ) collection API error when using Movie CollectionThe ( #11304 )
...
Co-authored-by: Bogdan <mynameisbogdan@users.noreply.github.com>
2025-12-10 20:56:11 +01:00
plz12345
b9c2563c9b
Chore: Remove Readarr donation logo
2025-11-27 09:00:49 +00:00
Bogdan
ef9836d71d
Fixed: Movie status on Wanted pages
...
(cherry picked from commit c9c8d4ad400f9e7066063236da180cf85ff63031)
2025-10-25 12:51:40 -05:00
Bogdan
abf3fc4557
Remove redundant code in selecting with click on poster
...
(cherry picked from commit b116f63a1d95a23a6f3684e6b60ead60c2584f0f)
2025-10-25 12:51:40 -05:00
Collin Heist
f6afbfa684
Fixed: Prevent modals from overflowing screen width
...
(cherry picked from commit 6c581b7e3c5c74db350d7ba2aad04f2df77c7671)
2025-09-28 21:57:01 -05:00
Stevie Robinson
b1b33e0dbf
New: Switch theme automatically on system change
...
(cherry picked from commit 4904e85887b8455483e509b83abaa2c6517d45a0)
2025-09-28 21:57:01 -05:00
Erik Frantz
f28691e48d
New: Add MovieCollectionThe Naming Token ( #11145 )
2025-09-23 16:39:25 -05:00
bakerboy448
3429fe0696
Fixed: Fix Indexer Flag color
...
Co-authored-by: Bogdan <mynameisbogdan@users.noreply.github.com>
2025-09-14 15:34:38 -05:00
bakerboy448
f49c35563d
Fix syntax
2025-09-10 07:47:39 -05:00
Bogdan
6e23750705
Fix clearing pending changes for First Run
...
`TypeError: can't access property "section", a is undefined`
2025-09-10 07:28:03 -05:00
Mark McDowall
d478b404df
New: Remove Basic Auth
...
(cherry picked from commit 0f9e063e2146812f6e963363eee70a524612f354)
2025-09-09 16:56:04 -05:00
Mark McDowall
57f602eb02
New: Changing icon during import to blue
2025-09-03 17:02:22 -05:00
bakerboy448
81bbaf8946
Fixed: Add missing translation keys
2025-09-01 11:29:59 -05:00
bakerboy448
8b4288fa18
New: UI Note that Filters are for movie properties only
...
Co-authored-by: PearsonFlyer <john@theediguy.com>
Closes #11200
2025-09-01 11:29:59 -05:00
Luigi
576eff1890
New: Select with poster click in movie selection ( #11187 )
2025-08-12 11:49:58 -05:00
Bwaffles
c78666009d
New: Add Year sorting to Discover page
2025-08-11 18:52:56 -05:00
Mark McDowall
1cf3ef5dff
New: Improve stored UI settings for multiple instances under the same host
...
Closes #10671
Fixes #11146
(cherry picked from commit 6677fd11168de6dbf78d03bfedf67b89dfe1df53)
2025-07-08 18:07:52 -05:00
Bogdan
c743383912
Fixed: Deleting tags from UI
...
Fixes #11131
2025-06-16 20:34:00 +03:00
Mark McDowall
a9ad197b75
New: Update wording when removing a root folder
...
(cherry picked from commit 51c17fd3122f7b96a4155593d465ba32870d0c91)
2025-06-10 15:31:34 +03:00
Bogdan
430897c710
Fixed: Hide separators when page toolbar shows all buttons on small screens
...
Fixes #11124
2025-06-09 15:11:45 +03:00
Mark McDowall
ac33b15048
Convert Tags to TypeScript
...
(cherry picked from commit 60529f0bacf2398838ef8d7843490a35046a1093)
2025-06-04 22:16:24 +03:00
Bogdan
73b99d0be2
Add translation for missing movies count from collection
2025-06-04 18:54:09 +03:00
Stevie Robinson
15c34a61de
New: Ability to clone Import Lists
...
(cherry picked from commit 2314d0b506e30d3a965497a052bc5e54fa0beb81)
Closes #10948
2025-06-04 18:34:13 +03:00
Mark McDowall
b99c536306
Convert ImportLists to TypeScript
...
(cherry picked from commit 10e3a237ef972540abcf4348bb56973d7ee19bd7)
2025-06-04 18:28:50 +03:00
Mark McDowall
2ebf391f85
Convert Media Management settings to TypeScript
...
(cherry picked from commit 27f81117ed188712600d8daf3ccb5121f9808458)
2025-06-04 17:50:00 +03:00
Mark McDowall
3945a2eeb8
Convert Indexer settings to TypeScript
...
(cherry picked from commit 6e008a8e855e67bb14b0e04bdb9042eebcacb59f)
2025-06-04 15:57:46 +03:00
Mark McDowall
e6980df590
Convert SettingsToolbar to TypeScript
...
(cherry picked from commit fd09ca6e719a96f760006ed0f08756faa20b6f75)
2025-06-04 14:43:30 +03:00
Bogdan
22ef334de6
Fix translation token for root folders load error
2025-06-03 15:22:38 +03:00
Bogdan
9c74c40fc6
Fixed: Quality sliders on some browsers
...
Fixes #11109
2025-06-01 18:07:25 +03:00
Mark McDowall
8911cbe872
Sync react-slider props for Quality sliders with upstream
...
(cherry picked from commit 9dab2ba6e4316879e4db8db47363476a5c4f13b2)
2025-06-01 17:54:31 +03:00
Ghworg
7e541d4653
Fixed: Display media info bitrates in bits ( #11087 )
2025-06-01 14:50:53 +03:00