- 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>
- electron/preload.cjs: contextBridge 로 window.desktop.setWindowSize 노출
- main.cjs: preload 연결 + ipcMain 'window:setSize'/'getSize' 핸들러
- SettingsView: PC(window.desktop 존재 시)에서 해상도 선택 추가
(1024×720 ~ 1920×1080), 선택 시 창 크기 변경+가운데 정렬
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 계정정보: 아이디·가입유형 행 제거 (이름/이메일/권한만), '이름 변경' 버튼
- ProfileEdit: 소셜(구글) 계정은 비밀번호 재인증 없이 바로 이름만 변경
(아이디/이메일 편집/비밀번호 변경 섹션은 LOCAL 전용으로 숨김)
- 백엔드 updateProfile 은 provider 무관하게 동작(변경 없음)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- App.vue 그리드 'top top' → 'left top' (사이드바가 헤더 행까지 차지)
- 사이드바 브랜드 영역 높이 56px 로 헤더와 정렬(보더 일치)
- 모바일은 기존 드로어 구조 유지
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 등록 모달의 '자주 쓰는 내역 불러오기' 버튼·피커 모달 제거(번거로운 3단계 해소)
(저장 기능은 유지)
- 가계부 quick-bar 에 '⭐ 자주 쓰는 내역' 라벨 추가
- useQuick: 등록 성공과 목록 갱신 분리 — 갱신 단계 오류가 '등록 실패'로
오인되던 문제 방지(앱에서 등록 안 됨처럼 보이던 케이스 대응)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 가계부/예산 month-nav: 좌 spacer + 우 mn-actions(flex:1)로 네비 중앙 고정,
추가/검색·필터 버튼 우측 정렬
- 커뮤니티 검색 모달: input min-width:0 + select/버튼 flex:none 으로
검색 아이콘이 모달 밖으로 밀리는 문제 해결
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 가계부: 내역 추가 → month-nav(검색·필터 옆), 헤더는 pending 있을 때만
- 예산: 예산 추가 → month-nav(월 변경 옆)
- 고정지출: 지금 반영/추가 → 안내문구 아래
- 커뮤니티: 글쓰기 → 태그 필터와 같은 줄(list-top)
- 분류 관리: 기본 분류 불러오기 → 지출/수입 탭과 같은 줄(tabs-row)
- 미사용 boardTitle/boardLabel 정리
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 각 화면 내 <h1> 페이지 타이틀 제거 → 헤더 타이틀로 일원화
(가계부 pending 카운트는 유지, 액션 헤더는 우측 정렬)
- 게시글 상세: 공지 등록/해제 버튼 제거 + '목록' 아이콘 추가(list 아이콘 신규)
- 글 작성/수정 공지 체크박스로 일원화(편집 시 기존값 로드)
- ProfileEdit/AccountInfo 화면 내 뒤로가기 제거, 미사용 router 정리
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1) 사이드바 상단에 돼지 로고 + '돈돼지 가계부'('메뉴' 텍스트 대체, 데스크톱/모바일 공통)
2) 헤더에서 돼지 로고 제거 → 현재 화면 타이틀 표시(라우트별)
3) 설정에 화면 테마(시스템/라이트/다크) 선택 추가
- base.css: data-theme 기반 수동 다크 + 시스템 설정 폴백
- theme.js 유틸 + ui 스토어 theme 상태, main.js 시작 시 적용(깜빡임 방지)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- installer.nsh: 기본 설치경로를 %LOCALAPPDATA%\Programs\DonDwaeji 로
(perMachine=false 와 함께 관리자 권한 불필요 → '디바이스 변경 허용' UAC 안 뜸)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- electron-builder artifactName: SlimBudget-Setup → DonDwaeji-Setup
- build/installer.nsh: 기본 설치경로를 $PROGRAMFILES\DonDwaeji 로 고정
(productName 한글이라 name='sb_pt' 로 폴백되던 문제 회피)
- WebOnlyNotice 다운로드 URL 도 DonDwaeji-Setup.exe 로 변경
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- formatRelative: 1시간 이내 N분 전 / 1일 이내 N시간 전 / 그 이상 YYYY.MM.DD
- formatYmdDot 헬퍼 추가(기존 formatYmd 컴팩트 형식은 유지)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- AppHeader: 좁은 화면(폰)은 브랜드명 텍스트 숨기고 로고만 → 두 줄 줄바꿈 방지
- 안드로이드 런처 라벨 '돈돼지가계부'(한 줄), 앱 내부 브랜드명은 유지
- Electron: accounts.google.com 팝업을 앱 내부 자식 창으로 열어
GIS 로그인 결과(credential)가 앱 창으로 돌아오게 함(외부 브라우저 X)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- LoginModal: 서버에서 구글 클라이언트 ID 수신 시에만 버튼 노출
- 웹/PC: Google Identity Services 렌더 버튼
- 앱(안드로이드): @capawesome/capacitor-google-sign-in 네이티브 버튼
- 네이티브/웹 모두 ID 토큰을 /api/auth/google 로 전달(aud=웹 클라이언트 ID)
- auth 스토어/authApi 에 googleLogin·googleClientId 추가
- src/native/googleAuth.js 네이티브 래퍼 신규
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 저장된 piggy-fg.png 는 투명이 아니라 체커판이 회색/흰색으로 박힘 → 헤더·파비콘·PC에 회색 박스
- 회색/흰색 배경 키잉 + 돼지 본체 bbox 크롭 → assets/piggy-src.png(투명)
- 파비콘·헤더·PC ico = 투명 + 돼지만, 안드로이드는 금색 배경 유지
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- favicon.png / apple-touch-icon.png / build/icon.ico: 투명 배경 + 돼지 ~95%
- 안드로이드: 금색 배경 유지(적응형 특성) + 전경/단일 돼지 크게
- 헤더 로고도 동일 재생성
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>