Files
archy/neode-ui/src/stores/loginTransition.ts
T
archipelagoandClaude Fable 5 fa91faa67c
Demo images / Build & push demo images (push) Failing after 1m42s
fix(intro): hold companion popup until dashboard reveal cinematic ends
The remote-companion popup fired on a blind 5s timer while the
first-visit dashboard entrance cinematic runs for 8s, so on a fresh
install it appeared mid-reveal and broke the intro. The cinematic now
publishes an introCinematicPlaying flag via the loginTransition store,
and the popup waits for it to clear (plus a 2s grace) before showing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 06:57:42 -04:00

58 lines
1.8 KiB
TypeScript

import { defineStore } from 'pinia'
import { ref } from 'vue'
/** Signals that we just logged in - Dashboard uses this for zoom + oomph */
export const useLoginTransitionStore = defineStore('loginTransition', () => {
const justLoggedIn = ref(false)
/**
* True only when the user just finished the onboarding wizard
* (first password setup), as distinct from a regular re-login.
* Dashboard uses this to decide whether to play the full glitchy
* reveal vs just a quick interface-draw.
*/
const justCompletedOnboarding = ref(false)
/** Show empty welcome block until typing starts (hide static text) */
const pendingWelcomeTyping = ref(false)
/** Trigger welcome typing on Home - set true after dashboard animation finishes */
const startWelcomeTyping = ref(false)
/**
* True while the dashboard entrance cinematic (zoom/glitch reveal) is
* playing. Overlays that would visually compete with it (e.g. the
* companion intro popup) hold off until this flips back to false.
*/
const introCinematicPlaying = ref(false)
function setJustLoggedIn(value: boolean) {
justLoggedIn.value = value
}
function setJustCompletedOnboarding(value: boolean) {
justCompletedOnboarding.value = value
}
function setPendingWelcomeTyping(value: boolean) {
pendingWelcomeTyping.value = value
}
function setStartWelcomeTyping(value: boolean) {
startWelcomeTyping.value = value
}
function setIntroCinematicPlaying(value: boolean) {
introCinematicPlaying.value = value
}
return {
justLoggedIn,
setJustLoggedIn,
justCompletedOnboarding,
setJustCompletedOnboarding,
pendingWelcomeTyping,
setPendingWelcomeTyping,
startWelcomeTyping,
setStartWelcomeTyping,
introCinematicPlaying,
setIntroCinematicPlaying,
}
})