Skip to content

revert(gui): show every Integrations client without a disclosure - #3418

Merged
lidge-jun merged 1 commit into
devfrom
codex/260904-restore-integrations
Sep 4, 2026
Merged

revert(gui): show every Integrations client without a disclosure#3418
lidge-jun merged 1 commit into
devfrom
codex/260904-restore-integrations

Conversation

@lidge-jun

@lidge-jun lidge-jun commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Summary

Reverts #3391, which hid most of the Integrations page behind two disclosures:

  • Tabs for uninstalled file clients moved behind a 다른 클라이언트 (N) button that sat outside the tablist.
  • Overview cards for those clients folded under a closed 설치되지 않음 (N) details.

Both are inline again: the full tab strip wraps to two rows and every client card is visible. The page subtitle and the summary's last-change cell that the same change removed come back with it.

Verification

  • bun run typecheck — exit 0.
  • bun run lint:gui — exit 0.
  • bun run build:gui — exit 0.
  • cd gui && bun test — 1310 pass / 0 fail across 210 files.
  • Live on port 10100: 18 tabs render across two rows with no overflow button, and all 17 client cards are visible without a disclosure.

Screenshots

Integrations restored

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

Summary by CodeRabbit

  • New Features

    • Added a subtitle to the Integrations page.
    • Added a summary showing when the latest journal operation occurred.
    • All integration tabs are now displayed directly, with keyboard navigation covering every tab.
  • Improvements

    • Integration clients are shown in a single list instead of being grouped behind an expandable section.
    • Improved grid behavior on narrow screens to prevent horizontal overflow.
  • Removals

    • Removed the “more clients” and “hide uninstalled clients” controls.

Reverts #3391. That change hid the tabs for uninstalled file clients behind a 다른 클라이언트 (N) button outside the tablist, and folded their overview cards under a closed 설치되지 않음 (N) details. Both are back inline: the full tab strip wraps to two rows and every client card is visible, along with the page subtitle and the summary last-change cell it also removed.
@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner September 4, 2026 02:25
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the chore Maintenance, CI, tests, refactors, or build changes (not a user-facing bug or feature). label Sep 4, 2026
@lidge-jun
lidge-jun merged commit 8b60e4c into dev Sep 4, 2026
22 of 23 checks passed
@lidge-jun
lidge-jun deleted the codex/260904-restore-integrations branch September 4, 2026 02:26
@coderabbitai

coderabbitai Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Team

Run ID: 55dda1d7-2515-461f-9c01-25b48f52fdf7

📥 Commits

Reviewing files that changed from the base of the PR and between 07414e0 and 8b30d60.

⛔ Files ignored due to path filters (1)
  • docs/pr-assets/integrations-restored.png is excluded by !**/*.png
📒 Files selected for processing (13)
  • gui/src/i18n/de.ts
  • gui/src/i18n/en.ts
  • gui/src/i18n/fr.ts
  • gui/src/i18n/ja.ts
  • gui/src/i18n/ko.ts
  • gui/src/i18n/ru.ts
  • gui/src/i18n/tr.ts
  • gui/src/i18n/zh-TW.ts
  • gui/src/i18n/zh.ts
  • gui/src/pages/Integrations.tsx
  • gui/src/pages/integrations/IntegrationsOverview.tsx
  • gui/src/styles-integrations.css
  • gui/tests/integrations-surfaces.test.tsx

📝 Walkthrough

Walkthrough

The integrations page now displays all tabs and client rows without overflow disclosures. IntegrationsOverview owns integration-state loading, displays the latest journal change, and uses a responsive grid. Obsolete locale keys and related tests were removed.

Changes

Integrations UI

Layer / File(s) Summary
Page navigation and component contracts
gui/src/pages/Integrations.tsx, gui/src/i18n/*.ts
The page removes overflow-tab handling, navigates across all tabs, adds integrations.subtitle, and no longer passes statesResource to IntegrationsOverview. The removed disclosure labels are deleted from all listed locale catalogs.
Overview state and rendering
gui/src/pages/integrations/IntegrationsOverview.tsx, gui/src/styles-integrations.css, gui/tests/integrations-surfaces.test.tsx
IntegrationsOverview creates its own state resource, displays the latest journal timestamp, renders all rows, and uses a responsive grid. Tests remove the old resource wrapper and disclosure assertions.

Estimated code review effort: 3 (Moderate) | ~20 minutes

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/260904-restore-integrations

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@lidge-jun

Copy link
Copy Markdown
Owner Author

리뷰 · 우선순위 71 / 80

이 PR은 지금 dev HEAD 07414e0f1(#3415까지)에 앉아 있는 260904 대시보드-미니멀 열차 중 Integrations만 접었던 #3391을 되돌린다. #3391은 설치되지 않은 파일 클라이언트 탭을 tablist 밖의 다른 클라이언트 (N) 버튼 뒤로 숨기고, Overview 카드는 닫힌 설치되지 않음 (N) details 아래로 접었으며, 페이지 부제와 summary의 마지막 변경 칸도 같이 없앴다. 그 결과는 “조용한 화면” 대신 “어디에 무엇이 있는지 찾기 어려운 화면”이었다. 바로 앞에서 머지된 #3415가 Dashboard/Models/Usage 조작감을 다시 펼친 것과 같은 제품 판단이다. 이번 브랜치는 그 열차의 Integrations 조각만, 다른 미니멀 후속(#3393 Codex 카드, #3396 Startup 등)은 건드리지 않고 되돌린다. git merge-tree 기준 dev와의 충돌은 없다.

코드로 보면 되돌림이 한 줄기로 읽힌다. gui/src/pages/Integrations.tsx에서 page가 들고 있던 useDataSurface(integration-states…)·isSecondary·page-tabs-more 버튼을 제거하고, 18개 탭을 다시 전부 보이게 하며 키보드 Home/End/화살표도 전체 TABS를 순회한다. 페이지 부제(integrations.subtitle)도 다시 깐다. Overview(gui/src/pages/integrations/IntegrationsOverview.tsx)는 page에서 받던 statesResource prop을 버리고 스스로 loadIntegrationStates를 구독한다(enabled: active). present/absent 분할과 <details className="integration-cards-more">는 사라지고, 카드 그리드는 rows 전체를 한 번에 그린다. summary에는 integrations.summary.lastChange 칸이 돌아온다. i18n 9개 로케일에서 integrations.moreClients / fewerClients / notInstalled 세 키를 지우고, gui/src/styles-integrations.css의 disclosure·more-button 규칙도 함께 뺀다. 테스트는 #3391이 넣었던 “더보기 버튼·딥링크 pin·접힌 카드” 두 케이스를 삭제하고, Overview 마운트는 다시 prop 없이 <IntegrationsOverview apiBase active />로 단순화한다.

설계상 중요한 점은 상태를 page에 끌어올린 이유가 탭 숨김뿐이었다는 것이다. #3391은 “탭 필터와 Overview가 같은 fetch를 쓰게” lift했고, 이번 되돌림은 탭을 다시 전부 보여 주니 lift가 필요 없어진다. Overview가 다시 소유자가 되고 enabled: active로 숨은 패널은 폴링을 멈춘다. 패널은 한 번 마운트되면 유지되므로 Overview를 한 번이라도 연 뒤에는 상태가 남고, Overview를 안 거친 딥링크(예: #integrations/hermes)는 원래처럼 해당 파일 클라이언트 페이지가 자체 상태를 쓴다. types.ts/config.ts 분할과는 무관하고, “닫고 리베이스” 대상도 아니다.

검증은 #3415보다 깔끔하다. 작성자 기준 typecheck / lint:gui / build:gui 통과, gui && bun test 1310/0, 포트 10100에서 탭 두 줄·카드 전부 노출을 실측했다. PR 본문에 Integrations 복구 스크린샷이 붙어 있고, Actions의 enforce-target은 이미 pass다(#3415가 스크린샷 때문에 막혔던 것과 대비). hygiene·label·react-doctor·api usage 등도 초록이고, gates·테스트 샤드·npm-global은 아직 대기 중이다. 남은 리스크는 기능 버그보다 밀도: 탭 18개 두 줄 + 미설치 카드까지 한 그리드면, 머신에 클라이언트가 거의 없을 때 Overview가 다시 길어질 수 있다. 그건 버그가 아니라 #3391이 풀려던 UX 문제의 반대쪽이다.

gui/src/pages/Integrations.tsx - 탭 숨김·more 버튼·states lift를 통째로 제거한다. #3391의 a11y 의도(tablist 밖에 overflow, 화살표는 visible만)도 같이 사라지므로, 복구 후 키보드가 18개 탭을 모두 도는 게 원하는 동작인지 제품 기준으로만 확인하면 된다.
gui/src/pages/integrations/IntegrationsOverview.tsx - statesResource를 다시 Overview 소유로 되돌리고 enabled: active를 쓴다. page와 공유 fetch는 없어지지만, 탭 필터가 없으니 이중 fetch 문제도 없다. last-change 칸 복구는 journal history[0]?.at에 의존하므로, journal이 비면 integrations.status.unknown이 보인다(미니멀 이전과 동일).
gui/tests/integrations-surfaces.test.tsx - disclosure/more-button 회귀 테스트 두 개를 지웠다. 남는 the tab strip marks every client tab…은 마크 검증만 한다. “모든 카드가 1차 그리드에 있다”·“Last change 칸이 있다” 같은 복구 방향의 얇은 긍정 테스트는 없다. 나중에 미니멀이 다시 오면 같은 실수가 테스트 없이 들어올 수 있다.
gui/src/i18n/*.ts (9로케일) - more/fewer/notInstalled 키 삭제는 코드 참조와 맞다. #3415가 orphan-key 스크립트를 이미 지운 상태라, 키 삭제가 탐지기에 걸릴 일은 없다.
docs/pr-assets/integrations-restored.png - enforce-target용 자산이 본문에 연결돼 있고 게이트가 통과했다. 컷 내용(두 줄 탭 + 전체 카드)이 PR 주장과 일치하는지만 머지 전에 한 번 눈으로 보면 충분하다.

메인테이너의 판단이 필요한 지점

  • Integrations의 “전부 펼침”을 #3415와 같은 영구 제품 방향으로 고정할지, 아니면 밀도 불만이 다시 나오면 IA(그룹/검색)로 다시 접을지
  • 복구 방향을 지키는 얇은 긍정 테스트를 이 PR에 넣을지, 머지 후 chore로 둘지
  • gates·테스트 샤드 초록을 기다린 뒤 바로 머지할지(충돌·스코프상 대기 이유는 거의 없음)

너의 추천
CI(특히 gates·gui 테스트 샤드) 초록 확인되면 dev에 바로 머지. #3415와 같은 “미니멀 접기 되돌림” 열차의 다음 칸이고, 스코프·스크린샷·충돌 모두 깨끗하다. 긍정 회귀 테스트 한두 줄은 머지 직후 초소형 follow-up으로 남겨도 된다. types/config 분할 무관 — 닫지 말고 랜딩.

이 댓글은 grok-bot이 작성했습니다

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

Labels

chore Maintenance, CI, tests, refactors, or build changes (not a user-facing bug or feature).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant