diff --git a/src/app/App.tsx b/src/app/App.tsx
index f30bd0b5..b5ebd9fd 100644
--- a/src/app/App.tsx
+++ b/src/app/App.tsx
@@ -14445,6 +14445,97 @@ export function App({ store, initialStatusMessage }: AppProps) {
+
+
Presence
+
+ Mode
+ {
+ const nextMode =
+ event.currentTarget.value as NpcPresenceMode;
+ setNpcPresenceModeDraft(nextMode);
+ scheduleDraftCommit(() => applyNpcChange());
+ }}
+ >
+ {NPC_PRESENCE_MODES.map((mode) => (
+
+ {mode}
+
+ ))}
+
+
+
+ {npcPresenceModeDraft === "timeWindow" ? (
+
+
+ Start Hour
+
+ setNpcPresenceStartHourDraft(
+ event.currentTarget.value
+ )
+ }
+ onBlur={() => applyNpcChange()}
+ onKeyDown={(event) =>
+ handleDraftVectorKeyDown(event, applyNpcChange)
+ }
+ onKeyUp={(event) =>
+ handleNumberInputKeyUp(event, applyNpcChange)
+ }
+ onPointerUp={(event) =>
+ handleNumberInputPointerUp(
+ event,
+ applyNpcChange
+ )
+ }
+ />
+
+
+ End Hour
+
+ setNpcPresenceEndHourDraft(
+ event.currentTarget.value
+ )
+ }
+ onBlur={() => applyNpcChange()}
+ onKeyDown={(event) =>
+ handleDraftVectorKeyDown(event, applyNpcChange)
+ }
+ onKeyUp={(event) =>
+ handleNumberInputKeyUp(event, applyNpcChange)
+ }
+ onPointerUp={(event) =>
+ handleNumberInputPointerUp(
+ event,
+ applyNpcChange
+ )
+ }
+ />
+
+
+ ) : null}
+
+
+ {npcPresenceModeDraft === "always"
+ ? "Always keeps this NPC active in the runner."
+ : "Time windows use project-global in-game hours and can cross midnight."}
+
+
+