Merge: promote dev to prod

This commit is contained in:
npeter83 2026-07-09 15:36:21 +02:00
commit 2a1ce896c6
6 changed files with 41 additions and 20 deletions

View file

@ -1 +1 @@
0.34.1 0.34.2

View file

@ -461,6 +461,10 @@ function PlexWatchSync() {
}, },
}); });
const busy = toggle.isPending || reimport.isPending;
// Reflect the toggle's target immediately (optimistic) so the switch responds on click rather than
// only flipping once the multi-second import returns — otherwise it reads as "nothing happened".
const shown = toggle.isPending ? Boolean(toggle.variables) : enabled;
const last = link.data?.last_watch_sync_at const last = link.data?.last_watch_sync_at
? new Date(link.data.last_watch_sync_at).toLocaleString(i18n.language) ? new Date(link.data.last_watch_sync_at).toLocaleString(i18n.language)
: null; : null;
@ -470,25 +474,31 @@ function PlexWatchSync() {
<p className="text-xs text-muted leading-relaxed mb-2">{t("settings.plexSync.intro")}</p> <p className="text-xs text-muted leading-relaxed mb-2">{t("settings.plexSync.intro")}</p>
<SettingRow label={t("settings.plexSync.toggle")} hint={t("settings.plexSync.toggleHint")}> <SettingRow label={t("settings.plexSync.toggle")} hint={t("settings.plexSync.toggleHint")}>
<Switch <Switch
checked={enabled} checked={shown}
disabled={toggle.isPending || reimport.isPending} disabled={busy}
onChange={(v) => !toggle.isPending && toggle.mutate(v)} onChange={(v) => !busy && toggle.mutate(v)}
/> />
</SettingRow> </SettingRow>
{enabled && ( {busy ? (
<div className="mt-2 flex items-center justify-between gap-3"> <div className="mt-2 flex items-center gap-2 text-xs text-muted">
<p className="text-xs text-muted"> <RefreshCw className="w-3.5 h-3.5 animate-spin" />
{last ? t("settings.plexSync.lastSync", { when: last }) : t("settings.plexSync.never")} {t("settings.plexSync.importing")}
</p>
<button
onClick={() => reimport.mutate()}
disabled={reimport.isPending}
className="inline-flex items-center gap-1.5 px-3 py-2 rounded-xl text-sm border border-border hover:bg-card/60 disabled:opacity-50 transition shrink-0"
>
<RefreshCw className={`w-4 h-4 ${reimport.isPending ? "animate-spin" : ""}`} />
{t("settings.plexSync.importNow")}
</button>
</div> </div>
) : (
enabled && (
<div className="mt-2 flex items-center justify-between gap-3">
<p className="text-xs text-muted">
{last ? t("settings.plexSync.lastSync", { when: last }) : t("settings.plexSync.never")}
</p>
<button
onClick={() => reimport.mutate()}
className="inline-flex items-center gap-1.5 px-3 py-2 rounded-xl text-sm border border-border hover:bg-card/60 transition shrink-0"
>
<RefreshCw className="w-4 h-4" />
{t("settings.plexSync.importNow")}
</button>
</div>
)
)} )}
</Section> </Section>
); );

View file

@ -13,7 +13,8 @@
"importNow": "Jetzt aus Plex importieren", "importNow": "Jetzt aus Plex importieren",
"imported": "Aus Plex importiert: {{watched}} gesehen, {{in_progress}} laufend.", "imported": "Aus Plex importiert: {{watched}} gesehen, {{in_progress}} laufend.",
"lastSync": "Letzter Import: {{when}}", "lastSync": "Letzter Import: {{when}}",
"never": "Noch nicht importiert" "never": "Noch nicht importiert",
"importing": "Plex-Wiedergabeverlauf wird importiert…"
}, },
"save": { "save": {
"unsaved": "Nicht gespeicherte Änderungen", "unsaved": "Nicht gespeicherte Änderungen",

View file

@ -13,7 +13,8 @@
"importNow": "Import from Plex now", "importNow": "Import from Plex now",
"imported": "Imported from Plex: {{watched}} watched, {{in_progress}} in progress.", "imported": "Imported from Plex: {{watched}} watched, {{in_progress}} in progress.",
"lastSync": "Last import: {{when}}", "lastSync": "Last import: {{when}}",
"never": "Not imported yet" "never": "Not imported yet",
"importing": "Importing your Plex watch history…"
}, },
"save": { "save": {
"unsaved": "Unsaved changes", "unsaved": "Unsaved changes",

View file

@ -13,7 +13,8 @@
"importNow": "Importálás a Plexből most", "importNow": "Importálás a Plexből most",
"imported": "Importálva a Plexből: {{watched}} megnézve, {{in_progress}} folyamatban.", "imported": "Importálva a Plexből: {{watched}} megnézve, {{in_progress}} folyamatban.",
"lastSync": "Utolsó import: {{when}}", "lastSync": "Utolsó import: {{when}}",
"never": "Még nincs importálva" "never": "Még nincs importálva",
"importing": "Plex-előzmény importálása…"
}, },
"save": { "save": {
"unsaved": "Nem mentett változások", "unsaved": "Nem mentett változások",

View file

@ -14,6 +14,14 @@ export interface ReleaseEntry {
} }
export const RELEASE_NOTES: ReleaseEntry[] = [ export const RELEASE_NOTES: ReleaseEntry[] = [
{
version: "0.34.2",
date: "2026-07-09",
summary: "Polish: the Plex watch-sync switch now responds instantly.",
fixes: [
"The Plex watch-sync switch now flips the moment you click it and shows an \"Importing…\" indicator while it works, instead of appearing to do nothing until the import finished.",
],
},
{ {
version: "0.34.1", version: "0.34.1",
date: "2026-07-09", date: "2026-07-09",