mirror of
https://github.com/stablyai/orca.git
synced 2026-09-24 08:02:33 +00:00
* feat(status-bar): notify upgraded users usage meters show % used Show a one-time status-bar callout when upgraded profiles still use the new percent-used default. Brand-new profiles and users who already chose remaining stay quiet; dismissing or changing the setting is permanent. * Add settings deep-link to expand Appearance's Window accordion for one-s - Replaces the searchQuery-based redirect (fragile, flashed filter UI) with a dedicated appearanceAccordionDeepLink store field that force-opens the correct accordion and scrolls to the target row - Rebuilds the status-bar change notice as a plain elevated card instead of a Popover, since PopoverContent's glass/backdrop-filter defaults fought the opaque callout styling and needed heavy overrides - Simplifies the light/dark card CSS tokens accordingly * Reposition status-bar usage-change notice via fixed-position portal Portal the one-shot callout to document.body with fixed positioning anchored via getBoundingClientRect, since the status-bar's overflow-hidden flex ancestors clipped or mispositioned the previous in-tree absolute layout. * Refine status-bar usage notice styling and test coverage - Replace hand-tuned light/dark card colors with existing design tokens (--popover, --border) and the documented floating elevation, so the callout stays in sync with the design system instead of duplicating its own palette - Add tests covering dismiss via X button, "Got it", and Escape - Scope the foreground-process confirm assertion to the pane's ptyId so an unrelated pane's delayed confirm can't cause a false failure
48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
import { ONBOARDING_FINAL_STEP, ONBOARDING_FLOW_VERSION } from '../../../src/shared/constants'
|
|
import { FEATURE_INTERACTION_IDS } from '../../../src/shared/feature-interactions'
|
|
import { FEATURE_TIP_IDS } from '../../../src/shared/feature-tips'
|
|
|
|
const SEEN_FIRST_RUN_CONTEXTUAL_TOUR_IDS = [
|
|
'workspace-board',
|
|
'browser',
|
|
'tasks',
|
|
'automations',
|
|
'workspace-creation'
|
|
] as const
|
|
const SEEN_FIRST_RUN_FEATURE_INTERACTION_TIMESTAMP = Date.parse('2026-01-01T00:00:00.000Z')
|
|
|
|
export function getE2ECompletedOnboardingProfile() {
|
|
return {
|
|
settings: {
|
|
telemetry: {
|
|
optedIn: true,
|
|
installId: '00000000-0000-4000-8000-000000000000',
|
|
existedBeforeTelemetryRelease: false
|
|
}
|
|
},
|
|
onboarding: {
|
|
flowVersion: ONBOARDING_FLOW_VERSION,
|
|
closedAt: 1,
|
|
outcome: 'completed',
|
|
lastCompletedStep: ONBOARDING_FINAL_STEP
|
|
},
|
|
ui: {
|
|
// Why: completed-onboarding E2E profiles should not be interrupted by
|
|
// first-run education modals that cover the UI under test.
|
|
featureTipsSeenIds: [...FEATURE_TIP_IDS],
|
|
featureInteractions: Object.fromEntries(
|
|
FEATURE_INTERACTION_IDS.map((id) => [
|
|
id,
|
|
{ firstInteractedAt: SEEN_FIRST_RUN_FEATURE_INTERACTION_TIMESTAMP }
|
|
])
|
|
),
|
|
contextualToursSeenIds: [...SEEN_FIRST_RUN_CONTEXTUAL_TOUR_IDS],
|
|
contextualToursAutoEligible: false,
|
|
projectOrderManualDefaultNoticeDismissed: true,
|
|
// Why: E2E profiles model completed existing users and should not be
|
|
// interrupted by the usage-display change toast covering the UI under test.
|
|
usagePercentageDisplayChangeNoticeDismissed: true
|
|
}
|
|
}
|
|
}
|