Skip to content

feat: iOS 런칭 트랙 — 서버 주소 런타임 설정 + PWA 설치 지원 - #26

Merged
redsunjin merged 8 commits into
mainfrom
claude/elegant-chaplygin-febec9
Jul 21, 2026
Merged

feat: iOS 런칭 트랙 — 서버 주소 런타임 설정 + PWA 설치 지원#26
redsunjin merged 8 commits into
mainfrom
claude/elegant-chaplygin-febec9

Conversation

@redsunjin

Copy link
Copy Markdown
Owner

Summary

아이패드(Safari)를 보조 컨트롤 데크로 쓰기 위한 iOS 런칭 트랙 0~1단계 구현입니다. 스펙: docs/superpowers/specs/2026-07-21-ios-launch-track-design.md

0단계 — 서버 주소 런타임 설정

  • WS 주소가 빌드타임 고정(VITE_WS_URL)이던 것을 런타임 해석으로 전환: localStorage(maestro.server.ws-url) > VITE_WS_URL > ws://<페이지 호스트>:8080
  • 헤더 서버 <host:port> 버튼 → 주소 입력/정규화(IP만 입력해도 ws://IP:8080)/연결 테스트/저장/기본값 복원 모달
  • 주소 변경 시 자동 재연결, 첫 실행(비-localhost + 미저장 + 기본 주소 연결 실패) 시 설정 화면 1회 자동 오픈
  • 기존 로컬 dev 흐름(localhost 기본값·Mock 모드)과 e2e의 VITE_WS_URL env 주입은 불변

1단계 — PWA

  • manifest.webmanifest + apple-mobile-web-app 메타태그 + 아이콘(180/192/512/maskable) → iPad Safari '홈 화면에 추가' 시 standalone 전체화면
  • 서비스워커 없음(라이브 서버 필수, LAN http에서 SW 미동작이라 스펙상 비범위)
  • 아이콘은 scripts/generate-pwa-icons.mjs(기존 Playwright devDependency)로 재생성 가능

Test plan

  • npm run qa — 단위/UI 100 tests + production build PASS
  • npm run test:e2e — 기존 승인/반려 플로우 + 신규 서버 주소 패널 + PWA 어서션 3/3 PASS
  • 태블릿 뷰포트(1024×768) 브라우저에서 헤더 버튼/설정 모달 시각 확인

🤖 Generated with Claude Code

selimDGAX and others added 8 commits July 21, 2026 14:42
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…n test

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ount confirmed)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 14b271b24a

ℹ️ 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".

Comment thread src/App.jsx
Comment on lines 232 to +233
} = useProjectRegistryOps({
wsUrl: WS_URL,
wsUrl,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Do not forward the previous server token to a new host

When a user with a saved maestro.server.api-token changes the address to another host, useProjectRegistryOps immediately reruns its refresh for this new wsUrl, while src/hooks/useProjectRegistryOps.js:83,123-129,156-158 reuses the globally stored token in the Authorization header. Merely saving a replacement server therefore discloses the old server's bearer credential to that host; clear the token when the origin changes or scope stored tokens by normalized server origin.

Useful? React with 👍 / 👎.

Comment thread src/App.jsx
Comment on lines +375 to +377
disconnectWebSocket();
if (isPlayingRef.current) {
connectWebSocket();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Clear old-server approval notes before reconnecting

If the address is changed while a session has pending notes, this transition disconnects and reconnects but leaves notes and notesRef populated from the old server. A subsequent lane action sends one of those retained request IDs through the new socket, so an approval card from server A is actioned against server B, where it can remain stuck or affect a colliding request; reset server-scoped pending state when wsUrl changes.

Useful? React with 👍 / 👎.

@redsunjin
redsunjin merged commit cd6f501 into main Jul 21, 2026
2 checks passed
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.

2 participants