Skip to content

feat: profile real data, brand assets, upload nav & auth fix (#46, #82, #83)#143

Merged
thxforall merged 9 commits into
devfrom
feature/46-82-83-profile-brand-upload
Apr 9, 2026
Merged

feat: profile real data, brand assets, upload nav & auth fix (#46, #82, #83)#143
thxforall merged 9 commits into
devfrom
feature/46-82-83-profile-brand-upload

Conversation

@thxforall
Copy link
Copy Markdown
Contributor

Summary

Changes (14 files, +264 -220)

Area Files
Profile ProfileClient.tsx, PublicProfileClient.tsx, [userId]/page.tsx
Nav SmartNav.tsx, MobileNavBar.tsx, ActivityTabs.tsx
Brand icon.svg, manifest.ts, layout.tsx
Auth authStore.ts, shared/supabase/client.ts
Modal RequestFlowModal.tsx
API m20260409_add_image_dimensions.rs

Test plan

  • 빌드 성공 (bun run build)
  • 타입체크 통과 (tsc --noEmit)
  • Chrome E2E: 업로드 페이지 렌더링 + 이미지 업로드 + 스팟 태깅
  • Chrome E2E: 프로필 페이지 실데이터 로딩
  • Chrome E2E: 프로필 드롭다운 동작
  • Chrome E2E: Upload 모달 (URL 변경 없이, hero 깜빡임 없음)
  • Chrome E2E: manifest.webmanifest, icon.svg 접근 가능
  • Google OAuth 로그인 정상 동작

🤖 Generated with Claude Code

thxforall and others added 9 commits April 9, 2026 19:13
- Add SVG favicon with decoded "D" logo (brand colors)
- Add PWA manifest.ts with app metadata
- Fix html lang attribute: en → ko (consistent with global-error.tsx)
- Add favicon metadata to layout.tsx

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- PublicProfileClient: replace placeholder sections with actual activity
  tabs (PostsGrid, SpotsList, SolutionsList) using Supabase queries
- ProfileClient: switch from API-based ActivityItemCard to Supabase-based
  grid components (works without backend API server)
- ActivityTabs: add configurable tabs prop with PUBLIC_TABS preset
- Profile OG metadata: add avatar image, username, Korean description
- Mobile header: show user display name instead of generic "Profile"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use IF NOT EXISTS to prevent failure when columns already exist
in the database (added via Supabase migration in #58).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- SmartNav: uncomment Upload nav item (was hidden for 1st release #35)
- MobileNavBar: add Upload icon between Search and Explore

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Avatar click now shows dropdown with:
- User info (display name, username)
- Profile link
- Upload link
- Logout button (red)

Closes on outside click and route change.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add bg-black/60 to container for instant backdrop
- Use fromTo with immediateRender to prevent opacity:0 flash
- Faster, smoother animation (0.2s backdrop, 0.25s modal)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Upload button now opens RequestModal via state instead of navigating
to /request/upload (intercepting route). This prevents the hero
section from re-rendering and flickering when the modal opens.

- Desktop nav Upload: button → RequestModal (no URL change)
- Profile dropdown Upload: same modal approach
- Direct URL /request/upload still works as full page

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Supabase defaulted to implicit grant (hash-based tokens) but the
callback route expects a code parameter for exchangeCodeForSession.
Setting flowType: 'pkce' ensures the OAuth redirect sends a code
instead of hash tokens, fixing "인증 코드가 없습니다" error.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ection

The server callback route (/api/auth/callback) requires PKCE code exchange
but @supabase/auth-helpers-nextjs v0.15 doesn't handle code verifier cookies.

Fix: redirect OAuth back to the client page instead of server callback.
Supabase JS client with detectSessionInUrl: true auto-detects the hash
tokens and sets the session via onAuthStateChange.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 9, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
decoded-app Ready Ready Preview, Comment Apr 9, 2026 10:16am

@thxforall thxforall merged commit ccb1522 into dev Apr 9, 2026
5 checks passed
@thxforall thxforall deleted the feature/46-82-83-profile-brand-upload branch April 9, 2026 10:17
@github-project-automation github-project-automation Bot moved this from Todo to Done in decoded-monorepo Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant