Repository navigation
feat(desktop): spinner startup surface and first-launch GitHub star onboarding - #5749
Conversation
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Repository: lidge-jun/opencodex/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Deterministic PR hygiene checks passed. |
⏳ DRAFT
What to do
Review readiness checklist
0/4 boxes ticked. Automatic draft conversion failed. Please convert this pull request to a draft manually until every box above is ticked. |
…nboarding Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
ebdc2fe to
fc0336a
Compare
리뷰 · 우선순위 46 / 80이 PR은 데스크톱 앱이 켜질 때 보이는 시작 화면을 다시 그리고, 대시보드가 처음 열리면 GitHub 스타를 한 번 부탁하는 창을 더합니다. 시작 화면은 로고, 돌아가는 원, 얇은 진행 막대, 스타 창은 데스크톱 앱 안에서, 로컬 런타임일 때만, 처음 한 번 뜹니다. 이미 스타한 설치는 창을 보지 않습니다. 지금 base는
같은 파일의
메인테이너의 판단이 필요한 지점 제목 앞에 첫 문장이 "마음에 드시나요?"입니다. 앱을 써 보기도 전에 스타를 부탁합니다. 이 부탁을 첫 실행에 둘지, 몇 번 쓴 뒤로 미룰지는 제품 선택입니다. 너의 추천 base가 이 댓글은 grok-bot이 작성했습니다 |
…lit styles Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
@lidge-jun 리뷰(#5814926359) 반영했습니다 (caa4a05):
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: caa4a05b25
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| #failure { margin-top: 1.25rem; display: grid; gap: .75rem; } | ||
| :root { | ||
| color-scheme: light dark; | ||
| --bg: light-dark(#ffffff, #212121); |
There was a problem hiding this comment.
Add fallbacks for
light-dark() on macOS 13
The desktop bundle supports macOS 13, whose original WKWebView predates CSS light-dark(). Because these variables have no preceding fallback values, every consuming declaration becomes invalid there: the logo mask and spinner lose their colors, progress indicators disappear, and the consent/failure cards and buttons lose most of their visual treatment. Keep concrete light defaults before these declarations and use prefers-color-scheme for legacy dark mode, or otherwise retain the previous compatible palette.
Useful? React with 👍 / 👎.
Summary
1. Tauri startup surface (
desktop/ui/index.html) → spinner, in the dashboard's design languagelight-dark()palette, OpenAI Sans/Pretendard stack, pill buttons, hairline cards) and the brand mask (desktop/ui/logo.png, copied fromgui/public/logo.png).n / total→ collapsed Details disclosure holding the existing phase checklist (active row gets a mini spinner).setSurface(state)(running | consent | failed | idle) drives spinner / progress / status mark, so the spinner never keeps turning over a failure or the takeover question. Failure auto-opens Details.prefers-reduced-motionswaps the spin for a slow pulse.#failure[hidden]rule, 4reportPageFailure(occurrences, bounded handshake —tests/clients/desktop-startup-surface.test.tspasses untouched.2. First-launch star onboarding (
gui/src/components/desktop-star-onboarding.tsx)isDesktopShell()), only against the local runtime (targetsSettled && !targets.connected), ~1.2s after the dashboard paints. Persisted withlocalStorage["ocx-desktop-star-onboarding"].GET /api/github/star:starred→ never shown, marked seen.not-starred(user'sghsigned in) → primary button calls the existingPOST /api/github/star(one click = consent), shows a "Thanks" state, and pushesstarredinto the sidebar'ssidebar-star:<base>resource so the sidebar orb updates right away. A secondary "Open the GitHub page instead" link is offered too.unauthenticated/ GET error → primary button openshttps://github.com/lidge-jun/opencodexin the system browser (the shell's navigation guard hands external URLs to the opener).enabledturns false (e.g. switching to a remote target) the dialog is unmounted without being marked seen.gui/src/styles/star-onboarding.css(keepsstyles.cssunder its file-size ratchet cap), with an explicit reduced-motion rule.onboarding.star.*keys, translated for all 10 locales.On gh integration (as asked): I did not add a new gh flow. The repo already has a guarded gh-backed star route (host pinned to github.com, trusted executable resolution, output never returned, marked
session-only/ "must never gain a CLI verb" in the route registry). The onboarding just reuses it when gh is already signed in and otherwise falls back to the browser. I don't recommend having the app rungh auth loginfor this: it opens a device-code/browser OAuth flow and asks forrepo-level scopes just to leave a star, which is a much bigger ask than the browser page (where the user is almost always signed in already).Verification
bun test tests/clients/desktop-startup-surface.test.ts(21 pass)cd gui && bun test tests— full GUI suite passes, including newtests/desktop-star-onboarding.test.tsx(first launch asks → POST only on click; dismiss remembered; already starred never asked; signed-out gh → browser path; failed POST keeps the dialog open; disabled prompt not shown; plain browser tab never asked), plus locale parity.bun run typecheck,bun run privacy:scan,bun run structure:check,cd gui && bun run lint && bun run lint:i18n__TAURI__bridge, and the modal from the Vite dev GUI with a desktop UA. Not run in a real Tauri build.Startup — running (light / dark):


Startup — failure / takeover consent:


Star onboarding (light / dark, browser fallback path):


Checklist
Link to Devin session: https://app.devin.ai/sessions/2111e048133c47e391562c8e1f8ab36a
Open in Devin Desktop: https://app.devin.ai/desktop/session/2111e048133c47e391562c8e1f8ab36a?variant=devin
Review readiness checklist
This PR stays in draft until every box below is ticked. Tick all four boxes once the requirements are met:
Required local validation passed; commands, results, and any full-suite exception are documented.
I pushed my PR to a recent dev commit (at most 10 behind; a maintainer may still ask for the exact tip before merge).
I resolved all correct Codex and CodeRabbit findings.
My PR is ready for review.