- 내역 추가/수정 폼을 전체화면 모달로(바깥 영역 없음·× 로만 닫힘)
→ 입력 중 바깥 실수 터치로 닫히는 불편 해소. PC는 내용 폭 460px 가운데정렬
- 분류 화면: 대분류 삼각형(▶) 토글로 소분류 펼침/접힘(기본 접힘, 개수 뱃지)
소분류 추가 시 해당 대분류 자동 펼침. 순서변경 모드에선 모두 펼침
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 백그라운드 전환 즉시 잠그던 것을, 1시간 이상 백그라운드였을 때만 잠금
- 잠깐 다른 앱(계산기 등) 다녀오는 정도로는 PIN 안 뜸
- 완전 종료/재시작은 onMounted 에서 그대로 잠금
- 카메라/갤러리/공유 suppress 는 유지
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 입력폼: 통화 드롭다운(KRW 기본 + 15개), 외화면 외화금액+환율 입력
→ 환산 원화 자동 계산(amount). 환율은 /fx/rate 자동조회('↻ 자동') + 수정 가능
- 저장: 외화면 currency/originalAmount/exchangeRate 전송, amount=환산 원화
- 목록 상세에 'USD 10.00 @1,350' 외화 뱃지 표시
- accountApi.fxRate 추가
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 스크롤 중 실수로 순서가 바뀌는 것 방지
- 기본은 drag&drop 비활성, '순서변경' 토글 켤 때만 Sortable 생성 + 손잡이(≡) 표시
- 끄면(완료) destroy. 안내 문구도 모드별로 표시
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 원인: visibilitychange(숨김)로 백그라운드를 감지하는데 카메라/파일선택/공유
호출 시에도 웹뷰가 숨겨져 잠금이 걸렸음(복귀 시 PIN 화면)
- appLock.suppressLock(): 네이티브 동작 직전 일시중지 창을 열어 그 복귀는 잠그지 않음
- 파일선택(input[type=file])은 App.vue 전역 클릭 리스너로 일괄 처리
- 카메라(OCR)·공유(백업)는 호출부에서 직접 suppressLock 호출
- 복귀(visible) 시 일시중지 창 해제
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 신규 유저 온보딩(홈 시작하기 → 분류) 흐름이 빈 분류 화면에서 끊기던 문제 보완
- 빈 상태에 이모지·안내 + '기본 분류 불러오기' 버튼(importDefaults) 노출
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 통합 핸들러 appBack.handleBack 추출: 오버레이 닫기 → 화면 뒤로 →
최상위에서 '한 번 더 누르면 종료' 토스트(네이티브)
- 하단 내비 뒤로 버튼이 옛 로직(홈에서 무반응)이라 하드웨어 뒤로와
동작이 달랐던 문제 해결 — 둘이 같은 핸들러 사용
- capacitor.js 중복 로직 제거
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
전역 에러 처리(흰 화면 방지):
- app.config.errorHandler + onErrorCaptured → 렌더/라이프사이클 오류 시
빈 화면 대신 '문제가 발생했어요 + 새로고침' 폴백 화면 표시
안드로이드 뒤로가기 우선순위 개선:
- 잠금 화면이면 우회 불가(종료) → 열린 오버레이(회원가입/로그인/비번/사이드바)
닫기 → 화면 뒤로 → 최상위에서 '한 번 더 누르면 종료'(실수 종료 방지)
- 종료 안내 토스트(커스텀 이벤트, 플러그인 없이 App.vue 렌더)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- http 인터셉터: 응답 없는 네트워크 오류(오프라인/타임아웃/서버다운) 시
net:error 이벤트 발생 (취소 요청 제외)
- App.vue: navigator.onLine + online/offline + net:error 구독 →
상단 고정 배너로 안내(+새로고침). 서버 응답 없음은 5초 후 자동 숨김
- 폐쇄 테스트(다양한 네트워크 환경)에서 무반응 대신 명확한 피드백 제공
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 홈 대시보드: 데이터 없을 때 '시작하기' 카드(계좌→분류→내역 3단계 안내, 닫기 가능)
- 가계부 내역: 빈 상태를 '첫 내역 추가' CTA로 (필터 결과 없음과 구분)
- 계좌 관리: 빈 상태를 '계좌 추가' CTA로
- 스토어 신규 유저(데이터 0)의 첫인상·활성화 개선
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 광고를 첫 출시에서 비활성화함에 따라 방침의 광고 관련 문구를
현재 상태(광고 없음) + 미래형(향후 도입 가능)으로 수정
- 4항: '광고가 표시되며' → '현재 광고 미표시, 향후 도입 시…'
- 수집/목적/제3자(카카오) 항목도 '향후 도입 시' 조건부로 완화
- Play 데이터 안전 양식(광고 식별자 미수집)과 정합성 확보
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- ADS_ENABLED=false 플래그 추가(features.js)
- 광고단위 미승인 + 데이터 안전 양식 단순화(광고 식별자 수집/제3자 공유 제거)
- AdBanner showAd + App.vue showAds 양쪽 게이팅 → 앱/웹 광고 모두 미노출,
레이아웃 하단 광고 여백도 함께 제거
- 애드핏 승인 후 true 로 되돌리면 무료 회원 광고 재노출
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 사이드바 메뉴 항목은 데모에서도 렌더되지만, 여는 햄버거 버튼이
로그인 전용(v-if=isAuthenticated)이라 모바일에서 메뉴에 도달 불가했음
- 햄버거 조건에 demo.on 추가 → 데모에서도 가계부/계좌/분류/고정지출 이동 가능
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- BILLING_ENABLED=false 플래그 추가(features.js)
- 실연동 전 구매 흐름이 테스트 스텁이라, 활성화 시 결제 없이 프리미엄이
부여되는 문제가 있어 구매 진입점을 모두 숨김
- UpgradeView: 구매 버튼 대신 '구독 곧 출시 예정' 안내
- AccountInfoView: 정기결제 관리 카드 + 업그레이드 링크 미노출
- 무료 기능은 정상 동작, 실 Google Play Billing 연동은 다음 업데이트
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- /account-deletion 공개 페이지(웹 접근) — Play 데이터 삭제 정책 URL, 웹 안내 하단 링크
- CARD_NOTIF_ENABLED=false: 카드알림 자동인식 UI 숨김
- AndroidManifest: CardNotifListenerService 선언 주석 처리(알림접근 정책 회피)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- @capacitor/local-notifications 추가, src/native/reminders.js
- 매일 설정 시각(기본 21시) 가계부 미기록 시 알림(오늘 기록하면 오늘자 제외, 7일 롤링)
- 구독 해지 상태 만료 3일 전 알림
- 설정에 알림 받기 토글 + 시간 선택(앱에서만), 권한 요청
- 앱 시작/홈/내역에서 스케줄 보정
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- terms.js 보강: 구글 로그인·인앱결제·광고·OCR·제3자·탈퇴·문의 반영
- /privacy, /terms 공개 라우트 + LegalView (웹 브라우저에서도 접근 = 앱 마켓 URL)
- 웹 안내 페이지 하단·설정 화면에 정책 링크 추가
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- AdBanner 컴포넌트(애드핏 DAN-n0I5XRBOwAdSFbEX, 728x90), 유료 회원에겐 미표시
- 웹 안내 페이지 하단 배치
- 앱 셸 하단 내비 바로 위 고정 배치(본문 하단 여백 보정)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 새글·수정 모두 boardApi.tagGroups(category)로 이 게시판 매핑 그룹만 노출
- 수정 시 전체 그룹으로 기존 태그 id 해석 → 이 게시판에 없는 태그는 별도 배지로 보존
- 다른 게시판 태그가 수정 화면에 모두 뜨던 문제 해결
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 결제 플랜/만료일/다음 결제일 표시
- 구독 해지(안내 후 자동갱신 중단, 만료일까지 이용)/재개
- 결제 가능한 플랜 목록 + 변경/구독(Android 결제, PC는 앱 안내)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- billingApi(products/verifyGoogle), native/billing(테스트 구매 토큰 생성)
- Android 앱: 상품(월간/연간) 구매 버튼 → 검증 → 프로필 갱신
- PC(웹/데스크톱): 구매 대신 앱 다운로드 안내
- 프리미엄 이용 중이면 만료일 표시
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 전역 단일 카테고리 선택 제거 → 각 태그 그룹에 사용 게시판 체크박스(커뮤니티/짠테크/재테크 팁)
- 저장 시 boards 함께 전송, 선택 없으면 전체 게시판
- 글쓰기 화면은 현재 게시판에 매핑된 그룹 태그만 노출(boardApi.tagGroups(category))
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 헤더에 내 아바타(계정정보 링크) + 앱 시작 시 프로필 동기화(재로그인 없이 아바타/포인트)
- 목록: 인기 글 상단 배지(🔥), 비추천 20+ 블라인드 표시
- 상세: 본인 글/댓글 추천·비추천 비활성, 비추천 20+ 글/댓글 블라인드(그래도 보기)
- 댓글: 인기 댓글 배지, 본문 작성자에 작성자 뱃지, 목록 하단 새로고침 버튼(입력폼 위)
- 추천자 목록 가로 줄바꿈(아바타+이름 단위, 이름 안 잘리게)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 목록: 제목 옆 추천 표시 제거 → 작성일 옆 추천 열로 표기(모바일도 라벨)
- 상세: 메타에 조회수 옆 추천수 표기
- 추천자: 클릭 시 모달 대신 하단에 아바타+이름 목록 펼침(토글)
- 아바타 크기를 본문 폰트 크기에 맞춰 16px 로 축소(목록/상세/댓글/추천자)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 목록 행 클릭 시 현재 쿼리(page/tag/keyword/searchType)를 상세로 전달
- 상세 목록 버튼·삭제 후 이동도 같은 쿼리로 복귀 → 1페이지 초기화 방지
(브라우저 뒤로가기는 기존에도 URL 쿼리로 복원됨)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- UserAvatar 컴포넌트(커스텀>구글>이니셜, 로드 실패 시 이니셜 폴백)
- 목록: 작성자 아바타 + 추천 수 표기
- 상세: 작성자 아바타, 추천/비추천 토글 버튼(내 투표 강조),
추천자 본문 하단 아바타 10개 + 초과 시 (+N명이 추천했습니다), 클릭 시 전체 목록 모달
- 댓글: 작성자 아바타 + 추천/비추천 버튼
- 계정정보: 포인트 표기(GET /auth/points 최신값)
- boardApi.votePost/voteComment/recommenders, authApi.points 추가
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 아바타 표시 우선순위: 사용자 지정(profileImage) > 구글(googlePicture) > 이니셜
- 사진 변경: 이미지 선택 → 정사각형 크롭·192px 축소(JPEG) → PUT /auth/profile-image
- 되돌리기: 사용자 지정 사진 해제 → 구글 사진(없으면 이니셜)으로 폴백
- authApi.updateProfileImage 추가, utils/avatar.js(표시 소스/이니셜/다운스케일)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- onMounted 의 runRecurrings(고정지출 자동반영)는 유료 전용 경로(/recurrings/run)라
무료 회원이 403 → premium:required → /upgrade 로 리다이렉트되던 문제
- isPremium 일 때만 runRecurrings 호출, '이 내역을 고정지출로 등록' 버튼도 유료에만 노출
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- auth 스토어 isPremium/isAdmin 추가 (plan===PREMIUM 또는 관리자)
- 사이드바: 통계·고정지출·예산·태그 메뉴에 무료 회원 잠금 배지(🔒)
- 라우트 가드: 유료 전용 화면(requiresPremium) → 무료 회원은 /upgrade
- UpgradeView: 무료/유료 기능 비교 + 업그레이드 안내
- http 인터셉터: 403 PREMIUM_REQUIRED → premium:required 이벤트 → 업그레이드 화면
- 무료 화면의 유료 API 호출 차단(홈 예산·내역 태그·OCR·카드알림 게이팅)
- 회원관리: 멤버십 컬럼 + 무료/유료 토글(관리자)
- 설정: 데이터 백업/복구 유료 게이팅, 계정정보에 멤버십 표시
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- backup.js importBackup: .xlsx 파싱 → 이름 기준 payload → POST /account/restore
- SettingsView: '가져오기' 파일 선택 + 파괴적 작업 확인(이중) + 완료 후 새로고침
- accountApi.restore (데모에선 차단)
- 창 크기: 가로/세로 각각 선택(세로 700~1200), 한 축 변경 시 나머지 유지
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- utils/backup.js: 가계부 전체(내역·계좌·분류·고정지출·예산·태그·자주내역)를
이름 기준 참조로 .xlsx 다중 시트 생성. xlsx 동적 import(별도 청크)
- 웹/PC=다운로드, 앱(네이티브)=Filesystem 저장 + Share
- SettingsView: '데이터 백업' 카드(엑셀로 내보내기 동작 / 가져오기 버튼=준비중)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- src/demo: demo.on 플래그 + DTO 형태 더미데이터 + mock API(읽기 더미/쓰기 차단)
- accountApi: Proxy 로 데모 시 읽기→더미, 쓰기→안내. 실제 뷰 그대로 렌더
- App: authed=인증||데모 → 실제 사이드바/셸 표시 + 데모 배너(로그인/나가기)
- 라우터: 데모 허용(가계부/고정/계좌/분류) 외 보호화면은 DemoLockedView(로그인 유도)
- 사이드바: 데모 시 잠금(🔒) 배지, 메뉴는 showMenu(인증||데모)
- 로그인/로그아웃 시 데모 자동 해제, 랜딩 '둘러보기'→enterDemo
- 기존 독립 DemoView 제거
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- DemoView: 자체 메뉴로 섹션 전환, 4개 화면 샘플 데이터,
통계·예산·태그·커뮤니티는 잠금(로그인 유도) 안내
- 공개 라우트 /demo, 랜딩에 '로그인 없이 둘러보기' 버튼, 헤더 타이틀 '둘러보기'
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>