Skip to content

feat(loops): Add Introducing Loops promo card#3675

Merged
charlesvien merged 6 commits into
mainfrom
feat/loops-promo-card
Jul 22, 2026
Merged

feat(loops): Add Introducing Loops promo card#3675
charlesvien merged 6 commits into
mainfrom
feat/loops-promo-card

Conversation

@charlesvien

@charlesvien charlesvien commented Jul 22, 2026

Copy link
Copy Markdown
Member

Problem

Loops ships behind its flag but nothing in the app announces it, so people who don't already know the feature exists never find it.

Changes

Adds an "Introducing Loops" card to the bottom left of the sidebar, above the workspace switcher: the loop hog on a solid lighter panel, a one-line description and a small "Learn more" button (same outline style as the Loops page). Clicking it opens an announcement dialog with the hog hero, a short explainer, five example jobs (three engineering, two ops, drawn from the real loop templates) and "Not now" / "Try now" actions. "Try now" navigates to the Loops page.

The card retires itself once it has done its job: answering the dialog either way, dismissing via the hover X or simply visiting the Loops page all hide it permanently (persisted through electronStorage, hydration-gated so it never flashes). "Reset onboarding and tours" in Advanced settings brings it back. Loops also moves above MCP servers in the default sidebar nav order. Everything is gated on the same LOOPS_FLAG as the nav item, with open/dismiss/try-now analytics events.

Promo card

Card in the sidebar

Introducing Loops dialog

Loops page with the card auto-hidden

How did you test this?

  • pnpm typecheck across the monorepo and Biome on the touched files, both clean
  • vitest run on the loops and sidebar suites in packages/ui, 68 tests pass (updated the nav-order test for the new default order)
  • Drove the running dev app over CDP: card renders above the workspace switcher with Loops above MCP servers in the nav, clicking opens the dialog, "Try now" lands on /code/loops and hides the card, "Not now" and the X hide it too, visiting the Loops page auto-hides it, and the persisted flag survives reload; the promo store reset() restores the card

Automatic notifications

  • Publish to changelog?
  • Alert Sales and Marketing teams?

@trunk-io

trunk-io Bot commented Jul 22, 2026

Copy link
Copy Markdown

😎 This pull request was merged.

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown

React Doctor found no issues in the changed files. 🎉

Reviewed by React Doctor for commit 3325453.

@greptile-apps

greptile-apps Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
packages/ui/src/features/loops/loopsPromoStore.ts:19
**Dismissal Can Be Lost on Exit**

`dismiss()` updates memory, but `electronStorage` delays the persisted write and only starts an unawaited flush on `pagehide`. If the desktop window closes immediately after dismissal, the IPC write may not finish, so the card appears again on the next launch despite being described as permanently dismissed.

Reviews (1): Last reviewed commit: "add introducing loops promo card and dia..." | Re-trigger Greptile

Comment thread packages/ui/src/features/loops/loopsPromoStore.ts Outdated
@charlesvien charlesvien added the Stamphog This will request an autostamp by stamphog on small changes label Jul 22, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Additive, flag-gated UI promo card with no touch on auth/billing/data/CI/deps; the one review concern (dismissal write possibly lost on quick window close) is a minor UX edge case already mitigated by an explicit flush call and marked resolved, and the author has strong familiarity with this exact code.

  • Author wrote 100% of the modified lines and has 30 merged PRs in these paths (familiarity STRONG).
  • 👍 on the PR from greptile-apps[bot].
Gate mechanics and policy version
Gate Result
prerequisites all clear
deny-list no deny categories matched
size 260L, 6F substantive, 266L/7F incl. docs/generated/snapshots — within ceiling
tier T1-agent / T1c-medium (266L, 7F, single-area, feat)
stamphog 2.0.0b3 .stamphog/policy.yml @ e2df6c6 · reviewed head 4491450

@stamphog

stamphog Bot commented Jul 22, 2026

Copy link
Copy Markdown

Retaining stamphog approval — delta since last review classified as trivial_paths.

@charlesvien
charlesvien merged commit 9ca0258 into main Jul 22, 2026
33 checks passed
@charlesvien
charlesvien deleted the feat/loops-promo-card branch July 22, 2026 06:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Stamphog This will request an autostamp by stamphog on small changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant