diff --git a/docs/history.md b/docs/history.md index 14188c1..e2108c7 100644 --- a/docs/history.md +++ b/docs/history.md @@ -1,5 +1,13 @@ # 의사결정 이력 +## 2026-05-11 v0.0.54 + +### 공개 인증 화면 가독성과 입력 피드백 보정 + +회원가입/로그인은 현재 백엔드 인증 연동 전 단계이므로, 사용자가 실제 동작 상태를 오해하지 않도록 화면 피드백을 더 명확히 보여주는 것이 우선이라고 판단했다. 회원가입은 모바일 우선 여백과 카드 패널 레이아웃으로 읽기 흐름을 정리하고, 로그인 화면은 오류 메시지와 안내 메시지를 분리해 의미가 섞이지 않게 했다. + +로그인 입력에서는 비밀번호 보기/숨기기 토글을 추가해 모바일 환경에서도 오입력을 줄일 수 있게 했다. 회원가입 2단계와 로그인 화면에는 상호 이동 링크를 보강해 사용자 흐름이 한 화면에서 끊기지 않도록 정리했다. + ## 2026-05-11 v0.0.53 ### 게시물 공유 모달 UI diff --git a/docs/spec.md b/docs/spec.md index aee39a4..80b637a 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -77,6 +77,8 @@ - 3단계는 인증 메일 발송 안내와 재전송 버튼(쿨다운)을 제공한다. - 이메일 링크 확인 전에는 회원가입이 완료되지 않으며, 인증 완료 액션 이후 로그인 화면으로 이동한다. - 로그인 화면은 동일한 다크 톤 폼 레이아웃을 사용한다. +- 로그인 비밀번호 입력은 보기/숨기기 토글을 제공한다. +- 인증 화면 상태 메시지는 오류/안내를 분리해 `aria-live`로 노출한다. - 회원가입 1단계의 타이틀/설명은 `GET /api/site-settings`의 `title`, `description` 값을 우선 사용한다. ### 레이아웃 파일 @@ -510,6 +512,6 @@ APP_PORT=43118 ## 버전 관리 -- 현재 버전: v0.0.53 +- 현재 버전: v0.0.54 - 첫 커밋 이후 변경사항을 커밋할 때마다 패치 버전 증가 - 메이저/마이너 버전은 구조 변경 또는 기능 묶음 단위로 결정 diff --git a/docs/update.md b/docs/update.md index a9cd0a0..9bfeb85 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,5 +1,13 @@ # 업데이트 이력 +## v0.0.54 + +- 회원가입 화면(`signup`)을 모바일 우선 여백·카드 패널 구조로 보정해 가독성 개선. +- 회원가입 2단계에 로그인 진입 링크 추가. +- 회원가입 3단계 상태 메시지(`aria-live`)와 재전송 안내 문구를 정리. +- 로그인 화면(`signin`) 비밀번호 보기/숨기기 토글 추가. +- 로그인 화면 상태 메시지를 오류/안내로 분리하고 홈 이동 링크 추가. + ## v0.0.53 - 게시물 상세 제목 우측 공유 버튼에 공유 모달 추가(X/Bluesky/Facebook/LinkedIn/Email/링크복사). diff --git a/package.json b/package.json index c63ba36..374bd76 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sori.studio", - "version": "0.0.53", + "version": "0.0.54", "private": true, "type": "module", "scripts": { diff --git a/pages/signin.vue b/pages/signin.vue index ab87269..9929a7d 100644 --- a/pages/signin.vue +++ b/pages/signin.vue @@ -5,6 +5,8 @@ definePageMeta({ const isSubmitting = ref(false) const errorMessage = ref('') +const statusMessage = ref('') +const showPassword = ref(false) const form = reactive({ email: '', @@ -17,6 +19,7 @@ const form = reactive({ */ const validateSignIn = () => { errorMessage.value = '' + statusMessage.value = '' if (!form.email.trim() || !form.password) { errorMessage.value = '이메일과 비밀번호를 입력해 주세요.' @@ -43,14 +46,14 @@ const submitSignIn = async () => { isSubmitting.value = true await new Promise((resolve) => setTimeout(resolve, 500)) isSubmitting.value = false - errorMessage.value = '현재 로그인 API 연결 전입니다. 관리자 로그인은 /admin 을 사용해 주세요.' + statusMessage.value = '현재 로그인 API 연결 전입니다. 관리자 로그인은 /admin 을 사용해 주세요.' }