diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index b9de5fb..1d414ba 100644
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -9,8 +9,38 @@
import ResultsView from './lib/components/ResultsView.svelte';
import SettingsPanel from './lib/components/SettingsPanel.svelte';
+ // LocalStorage keys
+ const STORAGE_KEY_PERSON = 'immich-timelapse-selected-person';
+
+ // Load persisted state from localStorage
+ function loadPersistedPersonId() {
+ try {
+ const stored = localStorage.getItem(STORAGE_KEY_PERSON);
+ if (stored) {
+ const parsed = JSON.parse(stored);
+ return parsed?.id || null;
+ }
+ } catch (e) {
+ console.warn('Failed to load persisted person:', e);
+ }
+ return null;
+ }
+
+ function persistSelectedPerson(person) {
+ try {
+ if (person) {
+ localStorage.setItem(STORAGE_KEY_PERSON, JSON.stringify({ id: person.id, name: person.name }));
+ } else {
+ localStorage.removeItem(STORAGE_KEY_PERSON);
+ }
+ } catch (e) {
+ console.warn('Failed to persist person:', e);
+ }
+ }
+
let connectionOk = $state(false);
let selectedPerson = $state(null);
+ let initialSelectedPersonId = $state(loadPersistedPersonId());
let jobStatus = $state('idle');
let progress = $state({ completed: 0, total: 0, message: '' });
let pollInterval = $state(null);
@@ -93,6 +123,7 @@
function handlePersonSelect(person) {
selectedPerson = person;
+ persistSelectedPerson(person);
}
function handleJobUpdate(data) {
@@ -194,6 +225,7 @@
{#if selectedPerson && !isJobRunning}
diff --git a/frontend/src/lib/components/PeopleSelector.svelte b/frontend/src/lib/components/PeopleSelector.svelte
index bbc2bd5..92b4966 100644
--- a/frontend/src/lib/components/PeopleSelector.svelte
+++ b/frontend/src/lib/components/PeopleSelector.svelte
@@ -1,13 +1,13 @@