Bergasha
a4bbed0cb8
Fixed resolution showing the raw cropped height (e.g. 804p) instead of the nominal class Plex/Jellyfin display (1080p) - letterboxed/cinemascope sources are shorter than their resolution tier, so classify off the width-derived 16:9 height instead
2026-08-19 14:54:48 +10:00
Bergasha
90fa9e8741
Added tests for the LAN/WAN parsing and fixed IPv4-mapped IPv6 addresses being misclassified as WAN - a dual-stack server can report a LAN client as ::ffff:192.168.x.x, which the private-range check was missing since it only matched literal IPv6 ranges
2026-08-19 13:52:14 +10:00
Bergasha
4b20d6ecd0
Widened the status column from 140 to 190px - the Np resolution format is shorter so line 2 had room, but Transcoding video/audio badges are noticeably longer than Direct play and needed the space on line 1
2026-08-19 13:33:21 +10:00
Bergasha
6cac34e968
Changed resolution to show the actual streaming resolution (transcode target) instead of the source file's, formatted as e.g. 1080p instead of 1920x1080
2026-08-19 13:33:14 +10:00
Bergasha
c6f77cec2e
Added resolution to the status column, restructured into two lines: status + LAN/WAN on top, resolution + bitrate underneath
2026-08-19 13:33:08 +10:00
Bergasha
acc97da84b
Added LAN/WAN detection to Jellyfin, matching what Plex already reports - Jellyfin's sessions endpoint only gives a client IP (RemoteEndPoint), so classify it against the standard private IP ranges ourselves
2026-08-19 13:32:40 +10:00
Bergasha
6b10ac2ab5
Gave User a fixed 200px width so Currently playing (the busiest column) gets the largest share of the row instead of splitting it evenly with User
2026-08-19 13:32:34 +10:00
Bergasha
c7563f2c39
Fixed Jellyfin bitrate showing null on direct play - the sessions endpoint only reliably fills in MediaSources bitrate while transcoding, so sum the individual media streams' own bitrates as a fallback
2026-08-19 13:32:28 +10:00
Bergasha
96676182f4
Gave the status column a fixed 140px width - it had no explicit width so it shared an equal, unconstrained share of the row with the other columns despite only holding a small badge
2026-08-19 13:32:21 +10:00
Bergasha
3769d88ebb
Dimmed the column header labels and added a bottom border under the sticky header, so it reads as its own band instead of the same weight as the row data
2026-08-19 13:32:15 +10:00
Bergasha
d9c35744f6
Only show a server's badge in the footer when it actually has an active session - selecting both Plex and Jellyfin always showed both badges even if only one was streaming. Also gave the footer badges a pill style and added a separator between the stream count and bitrate
2026-08-19 13:31:58 +10:00
Bergasha
33991f4e22
Added flexShrink to the session avatar so it stops getting squished in a tight row
2026-08-19 13:31:33 +10:00
Bergasha
df300919fc
Gated season/episode fields on episode type - was showing S/E labels on movies and music too, using the episode number as season
2026-08-19 13:31:27 +10:00
Thomas Camlong
315245e048
fix(media-server): close Stack element in session table cell
2026-08-18 10:28:44 +02:00
Bergasha and Thomas
ebdfeb724b
fix(media widget): text size fix and added season + Episode info ( #6605 )
...
Co-authored-by: Thomas <thomas@ajnart.fr >
2026-08-18 09:44:12 +02:00
Thomas
e842177d9b
feat: port release-v2 experience improvements from #6582 (audited subset) ( #6609 )
2026-08-18 09:40:02 +02:00
Thomas Camlong
e3a713d2df
Revert "fix: use stable selfhst icons for flaky integrations"
...
This reverts commit e7879ed3a2 .
2026-08-18 09:24:00 +02:00
ajnart
e7879ed3a2
fix: use stable selfhst icons for flaky integrations
2026-08-17 18:12:02 +02:00
ajnart
19e72fc757
fix: use stable readarr icon URL
2026-08-17 17:41:00 +02:00
Thomas Camlong
38fc5dd582
feat(custom-widgets): configure missing credentials
2026-08-17 15:47:42 +02:00
Thomas Camlong
6d284adb98
fix(media-server): stack user details reliably
2026-08-17 15:40:49 +02:00
Thomas Camlong
bd171bf73b
fix(custom-widgets): reduce action menu file below architecture line limit
2026-08-17 08:39:29 +02:00
Bergasha
1ee519bb7a
fix(beszel): stop small text from vanishing under board zoom ( #6616 )
2026-08-17 07:14:29 +02:00
Thomas Camlong
c53852fdb6
refactor(ui): adopt Mantine Marquee and drop mount guards
...
Rebuild the integration marquee on Mantine's Marquee, SimpleGrid and
ThemeIcon instead of the hand-rolled grid, track and keyframes, and
reduce the stylesheet to the mask and reduced-motion rule.
Drop the useMounted guards from the login form and let the buttons rely
on the pending state alone, and use Group for the restore flow's file
summary.
2026-08-17 01:15:45 +02:00
Thomas Camlong
206905ea2d
feat(workshop): rebuild install and publish as pages
...
Replace the stacked install modals (browse -> details -> import review)
with page-based flows so the primary action is always reachable:
- /manage/custom-widgets/workshop browses submissions as a card grid
with large previews, sitting in a tab next to the installed widgets
- /manage/custom-widgets/workshop/[id] merges the listing, security
review and source setup onto one page with a sticky install footer
- /manage/custom-widgets/publish/[id] replaces the publish modal
- /manage/workshop redirects; its navbar entry is gone
- the Custom CSS picker collapses from three modals to one
Extract useCustomWidgetImport and ImportReviewContent so the Workshop
page and the file/clipboard dialog share one import pipeline.
Votes now show the viewer's own choice filled Reddit-style, backed by a
new user-votes query, and screenshots get a zoomable lightbox.
Rework the installed list onto ManageCollectionItem: show the widget
description, replace the cryptic "JSX - 2" badge with plain request and
origin facts, and swap the toggle and bare pencil for a status badge,
a labelled Edit button and a menu entry for enable/disable.
Fixes found while reviewing:
- importing could run twice and duplicate a widget; guard on pending and
succeeded, and return to the installed list instead of the heavy edit
form
- a background refetch of the submission (window focus, or the
invalidation a vote triggers) reset the source setup and silently wiped
part-typed credentials; key the reset on the sources, not the object
- breadcrumbs raised MISSING_MESSAGE for unmapped dynamic segments; fall
back to the raw segment via t.has
- publishing had no in-flight guard and could post duplicate listings
- tooltips on disabled vote and report controls never fired, making the
sign-in hint unreachable
2026-08-17 01:14:38 +02:00
Thomas Camlong
50537d077c
feat(custom-widgets): export legacy definitions
2026-08-16 23:33:07 +02:00
Thomas Camlong
4e514ab151
fix: show Workshop voting as net score
2026-08-16 23:15:09 +02:00
Thomas Camlong
960551f573
feat: simplify Workshop widget installation
2026-08-16 23:11:52 +02:00
Thomas Camlong
199f6ffc3b
fix: run custom migrations on backup restore
2026-08-16 22:25:15 +02:00
Thomas
1325418300
fix: complete location input test options ( #6602 )
...
* fix: complete location input test options
* fix: run CI for slash-named branches
2026-08-15 13:50:46 +02:00
Thomas
4505ce96c9
fix: refine dashboard interactions and widget options ( #6597 )
...
* fix: refine dashboard item interactions
* fix board interactions and widget options
* feat: improve bookmark selection
* fix: address dashboard review feedback
2026-08-15 10:44:37 +02:00
Thomas Camlong
b491d45fdc
feat: improve workshop publishing flow
2026-08-14 23:16:39 +02:00
Thomas Camlong
3c533f2d96
fix: isolate downloads stats state
2026-08-14 22:07:12 +02:00
Thomas Camlong
409e8ed71a
feat: unify authentication pages
2026-08-14 21:18:06 +02:00
Thomas Camlong
0afed2c3f6
fix: contain media server streams
2026-08-14 20:09:57 +02:00
ajnart
fe41382074
test: remove obsolete advanced focus assertion
2026-08-14 14:47:02 +02:00
Thomas Camlong
c851609041
fix: stabilize media streams and edit hover
2026-08-14 14:33:02 +02:00
ajnart
03338b1755
revert: remove advanced mode from compact widgets
2026-08-14 13:30:10 +02:00
ajnart
81fdc5856b
test: preserve release advanced focus
2026-08-14 12:11:33 +02:00
ajnart
4e193da3a4
fix: preserve release advanced widget support
2026-08-14 12:11:33 +02:00
Thomas Camlong
29f7c35fc1
test: align widget modernization fixtures
2026-08-14 12:11:33 +02:00
Thomas Camlong
8775597d5a
feat: expand advanced widget experiences
2026-08-14 12:11:33 +02:00
ajnart
741e641bd2
fix: address onboarding review findings
2026-08-14 11:32:13 +02:00
ajnart
0070538857
style: format board preview query
2026-08-14 11:32:13 +02:00
Thomas Camlong
a11c53ebf7
fix(boards): preview container contents
2026-08-14 11:32:13 +02:00
Thomas Camlong
fc66211dd2
fix(onboarding): preserve restored board login target
2026-08-14 11:32:13 +02:00
Thomas Camlong
174e0a7606
fix(onboarding): streamline backup restore
2026-08-14 11:32:13 +02:00
ajnart
30cb066b7f
style: format onboarding setup studio
2026-08-14 11:32:13 +02:00
Thomas Camlong
f1ce0fffad
fix(onboarding): accept self-hosted addresses
2026-08-14 11:32:13 +02:00
Thomas Camlong
9c5ab62b3a
fix(onboarding): simplify detected app cards
2026-08-14 11:32:13 +02:00