Skip to content

release: Phase 2 batch 2 — Try posts, code review fixes, CI notifications#139

Merged
thxforall merged 16 commits into
mainfrom
dev
Apr 9, 2026
Merged

release: Phase 2 batch 2 — Try posts, code review fixes, CI notifications#139
thxforall merged 16 commits into
mainfrom
dev

Conversation

@thxforall
Copy link
Copy Markdown
Contributor

Summary

Phase 2 두 번째 릴리스. 팀원 PR 통합, 코드 리뷰 수정, CI 알림 개선.

Features

Code Review Fixes (#134-137)

  • TryUploadPage: render-time side effects → useEffect, Suspense 래핑
  • ImageCard/SmartNav/mobile-header: <img>next/image
  • AuthProvider: setInterval 미인증 유저 제외
  • SpotSolutionTabs: ARIA 접근성
  • Rust: image dimensions validation, post_type 상수화
  • docs/agent: votes, tries, useVoting 문서 반영

CI/CD

  • Telegram 알림 MarkdownV2 디자인 (이벤트별 시각 구분)
  • Claude Review 완료 시 텔레그램 알림
  • Vercel 배포 결과 텔레그램 알림 (deployment_status)

Test plan

  • Playwright QA: Auth, ImageCard, Search Fallback
  • TypeScript 타입 체크 통과
  • Rust cargo check 통과
  • OAuth 실제 로그인 플로우 (수동)
  • Telegram 알림 동작 확인 (이 PR 머지 시 테스트)

🤖 Generated with Claude Code

cocoyoon and others added 14 commits April 2, 2026 16:10
Integrate #29 (spot reviews) into Try posts. Add spot_ids optional
tagging, try_spot_tags schema, GET /spots/:spotId/tries endpoint,
and SpotTagSelector UI to FLW-08 and SCR-CREA-TRY-01 specs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements the full TODO list for issue #45 across 5 phases:

Phase 1 - Upload UX & Error Handling:
- Weighted upload progress (compression 0-30%, upload 30-95%)
- Spot placement guide overlay when no spots placed
- Submit error retry UI with inline error message
- Image dimension validation (200-8000px) and corruption detection
- Offline draft save/restore via localStorage

Phase 2 - Voting & Tracking:
- Votes proxy API route (GET/POST/DELETE /solutions/{id}/votes)
- useVoting hook with optimistic updates
- VotingButtons wired to backend (replaces hardcoded values)
- Affiliate click tracking via existing user_events system

Phase 3 - Auth:
- AuthGate component for login-required actions (BottomSheet)
- Route protection for /request/* in proxy.ts

Phase 4 - Solution Browsing:
- SpotSolutionTabs for spot-by-spot solution comparison
- Voting UX: verified badge, fill-on-vote, animated accuracy bar

Phase 5 - Image Editing:
- ImageEditor with react-advanced-cropper (crop/rotate/aspect ratios)
- Integrated into upload flow with edit button overlay

Closes #45

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add "Try post" feature: users share their own attempt at a look,
optionally tagging which items (spots) they own from the original post.
Integrates #29 (spot reviews) into the Try flow.

Backend (Rust):
- Migration: parent_post_id + post_type on posts, try_spot_tags table
- Entity: posts.rs updated, try_spot_tags.rs created
- API: POST /posts/try, GET /posts/{id}/tries, GET /tries/count,
  GET /spots/{id}/tries
- Feed filter: tries excluded from main post list
- PostDetailResponse includes try_count

Frontend (Next.js):
- useTries hook: real API calls replacing stub
- /request/try page with DropZone, SpotTagSelector, comment
- createTryPost API function + proxy route
- SpotTagSelector chip-toggle component

Closes #24, closes #25, closes #29

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

- CreateReportDto / UpdateReportStatusDto: derive Validate + length rules
- openapi paths: admin posts PATCH /{id} (admin_update_post)

Made-with: Cursor
- CreatePostDto: group_id, artist_id (optional UUID)
- CreateSolutionInlineDto / CreateSolutionDto: brand_id
- create_post_transaction + into_active_model mapping
- dto_tests.inc + solution DTO tests

Made-with: Cursor
Resolve 6 merge conflicts — both sides included:
- migration/lib.rs: add try_fields + try_spot_tags migrations
- entities/posts.rs: add parent_post_id, post_type fields
- dto.rs: add try fields to PostResponse, PostListItem, PostDetailResponse
- useTries.ts: use TryPostListItem type
- FLW-08-my-try.md: use spot_ids in spec

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

# Conflicts:
#	packages/web/lib/components/detail/ImageDetailContent.tsx
#	packages/web/lib/components/detail/OtherSolutionsList.tsx
#	packages/web/lib/components/detail/TopSolutionCard.tsx
CRITICAL:
- TryUploadPage: render-time side effects → useEffect, Suspense 경계 추가
- ImageCard/SmartNav/mobile-header: native img → next/image 전환

WARNING:
- AuthProvider: setInterval 미인증 유저 제외
- SpotSolutionTabs: role="tablist/tab/tabpanel" 접근성 추가
- ExploreClient: 추천 태그 상수 추출
- Rust dto: image dimensions validate(range) 추가
- Rust service: post_type 매직 스트링 → 상수

DOCS:
- api-v1-routes: votes, tries 엔드포인트 추가
- web-hooks-and-stores: useVoting, useCreateTryPost 추가
- web-routes-and-features: /request/try, proxy 라우트 추가

Closes #134, #135, #136, #137

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: code review batch — CRITICAL+WARNING+docs (#134-137)
- claude-review.yml: 리뷰 완료 시 텔레그램 알림 (성공/실패)
- telegram-notify.yml: deployment_status 이벤트 추가 (Vercel 배포 결과)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
각 이벤트별 시각적 구분:
- 📦 Push: 브랜치, 커밋 해시, 메시지
- 🔀 PR: 제목 볼드, additions/deletions 표시, 브랜치 방향
- 📌 Issue: 라벨 태그, 작성자
- 🚀/💥 Deploy: 환경명, 성공/실패 구분, 배포 URL
- 🤖 Claude Review: 리뷰 완료/실패 구분

MarkdownV2 실패 시 plain text 자동 fallback 포함.

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 8:51am

MarkdownV2 제거 → plain text로 전환 (파싱 에러 방지)
각 이벤트별 구분선(┄) + 최소 정보만 표시
Claude review 알림도 동일 스타일로 통일

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add react-advanced-cropper dependency (missing from PR #56)
- Fix CompressionResult → compressed.file in try/page.tsx
- Remove MobileUploadOptions with incompatible props
- Fix TryPostUser.display_name → username
- Fix tryPost.title → media_title

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.

3 participants