Skip to content

Keep onboarding graph hints visible#5754

Merged
kodjima33 merged 1 commit intomainfrom
codex/macos-onboarding-legend-always-show
Mar 17, 2026
Merged

Keep onboarding graph hints visible#5754
kodjima33 merged 1 commit intomainfrom
codex/macos-onboarding-legend-always-show

Conversation

@kodjima33
Copy link
Collaborator

Summary

  • keep the onboarding knowledge graph footer visible whenever the graph is visible
  • remove the timed hint-hide state and hover-only reveal logic

Verification

  • built the desktop app from this worktree with
  • launched a local from this worktree
  • verified via OVERVIEW: CLI for AI agents to control macOS apps via Accessibility API

USAGE: agent-swift

OPTIONS:
--version Show the version.
-h, --help Show help information.

SUBCOMMANDS:
doctor Check prerequisites and diagnose issues
connect Connect to a macOS app
disconnect Disconnect from the connected app
status Show connection status
snapshot Capture element tree with refs
press Press element by ref
fill Enter text into element by ref
get Read element property by ref
find Find element by locator
screenshot Capture app screenshot
is Assert element condition
wait Wait for condition or delay
scroll Scroll by direction or element ref
click Click element or coordinates via CGEvent
schema Show command schema

See 'agent-swift help ' for detailed help. that , , and were still present after 7 seconds

@kodjima33 kodjima33 merged commit b3b8f22 into main Mar 17, 2026
1 check passed
@kodjima33 kodjima33 deleted the codex/macos-onboarding-legend-always-show branch March 17, 2026 17:38
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 17, 2026

Greptile Summary

This PR simplifies the onboarding knowledge-graph hint footer by removing the timed flash/hover-reveal state machine (showGraphHints, hintsHovered, flashGraphHints()) and replacing it with a single persistent visibility condition: graphHasData && !showTrustPreview. The hints now stay visible for the entire time the graph is shown, which is a better UX default.

  • Removes two now-unused @State variables (showGraphHints, hintsHovered) and the .onHover modifier that drove them.
  • Removes the flashGraphHints() helper and its 5-second DispatchQueue timer.
  • New opacity expression (graphHasData && !showTrustPreview) is consistent with the same condition used on lines 93 and 107 for the graph scene view and the top label, making the three elements appear and disappear in sync.
  • Minor cosmetic note: the hints footer animation duration (0.3 s) is slightly shorter than the trust-preview dismissal animation (0.45 s), which can cause the hints to be briefly visible while the trust card is still fading. Consider matching the duration for a seamless cross-fade.

Confidence Score: 5/5

  • Safe to merge — purely cosmetic UI simplification with no functional regressions.
  • The change is small (net -20 lines), touches only view-layer state and animation modifiers, removes dead code cleanly, and the new condition mirrors identical guards already used in the same view. The only issue found is a minor animation duration mismatch that causes a subtle cosmetic overlap, not a functional bug.
  • No files require special attention.

Important Files Changed

Filename Overview
desktop/Desktop/Sources/OnboardingView.swift Removes timed hint-flash state machine (showGraphHints, hintsHovered, flashGraphHints()) and replaces the complex opacity condition with a simple graphHasData && !showTrustPreview expression; minor animation duration mismatch (hints 0.3s vs graph/trust-preview 0.45s) but no functional issues.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Graph data arrives] --> B[handleGraphDataArrival]
    B --> C[graphHasData = true\n easeIn 0.35s]
    C --> D[DispatchQueue delay 1.4s]
    D --> E[showTrustPreview = false\n easeInOut 0.45s]
    E --> F{graphHasData && !showTrustPreview}
    F -->|true| G[Graph view visible\n transition .opacity]
    F -->|true| H[Top label visible\n transition .opacity]
    F -->|true| I[Hints footer visible\n animation easeInOut 0.3s]
    F -->|false| J[All three hidden / trust card shown]
Loading

Last reviewed commit: 8899fb9

Comment on lines 136 to +137
.animation(.easeInOut(duration: 0.3), value: graphHasData)
.animation(.easeInOut(duration: 0.3), value: showTrustPreview)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Animation duration mismatch with trust-preview transition

The hints footer uses a 0.3s animation keyed on showTrustPreview, but the trust preview card itself is dismissed with withAnimation(.easeInOut(duration: 0.45)) (see handleGraphDataArrival). Because view-level .animation(_:value:) takes precedence over the enclosing withAnimation block for this modifier, the hints will reach full opacity about 150 ms before the trust card finishes fading out, making them briefly visible while the trust card is still on screen.

For a seamless cross-fade, align the duration with the dismissal animation:

Suggested change
.animation(.easeInOut(duration: 0.3), value: graphHasData)
.animation(.easeInOut(duration: 0.3), value: showTrustPreview)
.animation(.easeInOut(duration: 0.3), value: graphHasData)
.animation(.easeInOut(duration: 0.45), value: showTrustPreview)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant