Files
sori.studio/docs/update.md

1003 lines
63 KiB
Markdown

# 업데이트 이력
## v1.0.2
- 운영 DB가 비어 있을 때 `/admin/login`에서 `ADMIN_EMAIL`/`ADMIN_PASSWORD`로 최초 owner 계정을 생성하도록 수정.
- 배포 문서의 `.env.production` 생성 명령과 최초 관리자 생성 기준 정리.
- 패키지 버전 `1.0.2`로 갱신.
## v1.0.1
- Docker Compose 기본 네트워크 주소 풀 충돌을 피하기 위해 전용 브리지 네트워크와 `DOCKER_SUBNET` 설정 추가.
- 배포 문서에 NAS Docker 네트워크 충돌 시 `DOCKER_SUBNET` 변경 기준 추가.
- 패키지 버전 `1.0.1`로 갱신.
## v1.0.0
- 운영 환경에서 `DATABASE_URL` 누락 시 샘플 콘텐츠 fallback 대신 즉시 실패하도록 수정.
- 회원 세션 서명 비밀값을 `ADMIN_PASSWORD` fallback 없이 `MEMBER_SESSION_SECRET` 필수 사용으로 분리.
- JavaScript 문법 점검 스크립트(`scripts/check-js-syntax.js`)와 `lint`·`test`·`verify` npm 스크립트 추가.
- `npm audit fix`로 Nitro 취약점 권고를 반영하고 취약점 0건 확인.
- Docker compose 설정 검증과 Docker 앱 이미지 빌드 검증 진행.
- `.env.production``MEMBER_SESSION_SECRET` 설정 여부 확인 후 배포 todo 정리.
- 운영 시작 기준 버전 `1.0.0`으로 갱신.
## v0.0.121
- 게시글 작성 본문 위 자동 저장 안내 배너를 제거하고, 툴바 상태 문구 옆에 복원·무시 버튼을 두도록 변경.
- 패키지 버전 `0.0.121`로 갱신.
## v0.0.120
- 발행 모달 설정을 행 단위 접기/펼침으로 정리하고, 접힌 상태에서는 현재 선택값만 표시하도록 변경.
- 발행 모달에 Ghost와 동일한 SVG(게시 형태·펼침 화살표·발행 시점 시계)를 적용하고 본문·헤더·CTA 문구를 한글로 통일.
- 발행 설정 영역의 외곽 상하 보더를 제거하고 행 사이 구분선만 유지하도록 조정.
- 발행 모달 본문 영역을 가로 중앙 정렬(`max-w` 컬럼)로 맞춤.
- 패키지 버전 `0.0.120`으로 갱신.
## v0.0.119
- 게시물 저장 버튼 클릭 시 고스트 스타일의 전체 화면 발행 모달을 열도록 변경.
- 발행 모달에서 뉴스레터 옵션을 제거하고, 상태(발행/초안/비공개)를 버튼식으로 선택하도록 추가.
- 발행 모달에서 발행 시점(즉시/예약) 버튼 선택과 예약 시각 입력을 지원하도록 추가.
- 발행 모달의 `Continue, final review →` 확정 시 실제 저장/발행이 수행되도록 연결.
- 관리자 블록 에디터 콜아웃에 Emoji ON/OFF, 이모지 프리셋 선택, 배경 프리셋 선택 기능 추가.
- 콜아웃 마크다운 저장 형식을 `:::callout emoji=... bg=...` 메타 포함 형태로 확장.
- 공개 본문 콜아웃 렌더러에 이모지 표시/숨김과 배경 프리셋 렌더링 연결.
- 공개 콜아웃 카드 외부 여백을 상단 중심(`mt-8`)으로 조정.
- 관리자 콜아웃 편집 UI를 카드 내부에서 분리해 우측 고정 설정 패널로 이동하고, 편집 카드가 공개 렌더와 동일하게 보이도록 정리.
- 콜아웃 카드 보더를 제거해 Ghost 톤으로 정리하고, 콜아웃 설정 패널을 블록 옆 위치로 이동.
- 콜아웃 이모지 설정을 고정 프리셋 버튼만 사용하지 않고 입력 팝업(직접 입력/붙여넣기 + 빠른 선택) 방식으로 확장.
- 콜아웃 본문 왼쪽 이모지 버튼에서 이모지 입력 팝오버를 직접 여는 흐름으로 정리.
- 배경색은 컬러 버튼 클릭 시에만 팔레트 팝오버가 열리도록 단순화하고, 텍스트 색상을 관리자 화면에서 고정 진한 톤으로 보정.
- 콜아웃 이모지 입력을 가변 길이 contenteditable에서 단일 이모지 입력 필드로 정리하고, 첫 그래프림만 반영하도록 보정.
- 공개 콜아웃의 이모지·텍스트 정렬을 `items-center` 기준으로 조정해 관리자 편집 카드와 높이 체감을 맞춤.
- 콜아웃 이모지 입력 필드에 한글 IME 조합 종료 시점 반영을 추가해 `가` 입력 시 자모 분리 대신 완성형 문자로 저장되도록 보정.
- 관리자 블록 에디터에서 Enter 등 키보드 입력 직후 hover 강조를 잠시 비활성화하고, 마우스 이동 시 hover가 다시 동작하도록 조정.
- 키보드 우선 모드에서 블록 왼쪽 핸들(세로 마커) hover 표시도 함께 비활성화해, 포인터가 다른 문단 위에 있어도 현재 입력 문맥을 유지하도록 보정.
- 블록 에디터 슬래시 입력 상태에서 Enter 처리 조건을 보정해, `/` 또는 `//` 입력 상태에서는 엔터가 일반 줄바꿈/다음 문단 생성으로 동작하도록 수정.
- 한글 IME 조합 중 `/제목` 입력 뒤 Enter 시 조합 종료 직후 슬래시 명령이 바로 적용되도록 pending 명령 처리 추가.
- 빈 문단 삭제 동작 이후 콜아웃이 일반 문단으로 변환되는 경로를 차단하기 위해 Enter의 빈 블록 기본 문단 전환 대상에서 콜아웃을 제외.
- 한글 IME 조합 종료 직후 슬래시 메뉴가 늦게 뜨는 문제를 줄이기 위해 조합 종료 동기화를 즉시+지연 2회 수행하도록 보정.
- 게시물 상세에서 본문과 댓글 섹션 사이 간격을 Ghost 기준 `48px`(`mt-12`)으로 조정.
- 이미지/갤러리 블록을 생성만 하고 사용하지 않은 상태로 다른 블록으로 이동하면 해당 미사용 구조형 블록을 자동 정리하도록 보정.
## v0.0.118
- 관리자 게시글 저장 버튼을 변경사항이 있을 때만 활성화하도록 수정.
- 관리자 게시글 수정 삭제 버튼을 기본 중립 톤, hover 시 위험 색상 강조로 조정.
- 관리자 게시글 태그 배지 삭제 버튼을 SVG 아이콘으로 교체하고 정렬 보정.
- 패키지 버전 `0.0.118`로 갱신.
## v0.0.117
- 관리자 글쓰기 갤러리 미디어 선택을 복수 선택 후 확인 적용 방식으로 변경.
- 관리자 갤러리 블록의 이미지 수에 따라 1개는 전체 너비, 2개는 2열, 3개 이상은 3열로 표시하도록 수정.
- 관리자 갤러리 블록 이미지 드래그 순서 변경과 삽입 위치 표시 추가.
- 패키지 버전 `0.0.117`로 갱신.
## v0.0.116
- 관리자 게시글 제목 입력에서 한글 조합 중 Enter가 본문으로 마지막 글자를 넘기지 않도록 IME 조합 상태 가드 추가.
- 관리자 게시글 목록 태그 표시를 쉼표 구분 텍스트에서 읽기 전용 배지 목록으로 변경.
- 패키지 버전 `0.0.116`으로 갱신.
## v0.0.115
- 사용자 설정 화면을 좁은 공개 본문 폭에 맞춰 요약 영역 상단, 프로필·활동 영역 하단 구조로 재배치.
- 사용자 설정 비밀번호 변경·회원 탈퇴 모달 입력 필드 보더가 보이도록 정리.
- 관리자 사이트 설정에서 관리자 프로필·관리자 비밀번호 변경 섹션 제거.
- 관리자 사이트 설정에 1:1 로고 이미지 업로드와 파비콘 생성 기능 추가.
- 사이트 설정 로고 URL·파비콘 URL 저장 컬럼 마이그레이션(`022_add_site_logo_urls.sql`) 추가.
- 공개 헤더와 오른쪽 사이드바에 이미지 로고 표시를 연결하고 파비콘 head 링크를 추가.
- 패키지 버전 `0.0.115`로 갱신.
## v0.0.114
- 관리자 하단 사용자 메뉴의 `내 프로필` 경로를 사용자 설정에서 관리자 멤버 편집 화면으로 변경.
- 관리자 멤버 편집 설정 메뉴에 비밀번호 직접 변경과 멤버 삭제 모달 추가.
- 사용자 설정 화면을 관리자 멤버 편집과 같은 요약/본문 구조로 재정리.
- 사용자 설정의 비밀번호 변경과 회원 탈퇴를 설정 메뉴 모달로 분리.
- 로그인 시 이전 로그인 시각/IP를 보존하는 `021_add_member_previous_login.sql` 마이그레이션 추가.
- 회원 프로필 API에 가입일, 이전 로그인, 댓글 수 정보를 추가.
- 패키지 버전 `0.0.114`로 갱신.
## v0.0.113
- 관리자 미저장 변경사항 모달을 화면 상단 40px 여백 위치로 조정.
- 관리자 멤버 상세 폼에서 썸네일 URL 입력 필드 제거.
- 관리자 멤버 상세 요약 썸네일에 hover 등록·변경·삭제 UI 추가.
- 관리자 멤버 목록 상태 표시를 배지에서 일반 텍스트로 변경.
- 관리자 멤버 목록에 이름·이메일·레이블·상태·최근 접속·가입일 조건 필터 추가.
- 패키지 버전 `0.0.113`으로 갱신.
## v0.0.112
- 관리자 멤버 폼 본문을 3분할 그리드로 변경하고 요약 1fr, 입력 영역 2fr 비율로 조정.
- 관리자 공통 미저장 변경사항 이탈 확인 모달 추가.
- 관리자 게시글 작성/수정 화면에 미저장 변경사항 라우트 이탈 확인과 브라우저 이탈 기본 확인 연결.
- 관리자 멤버 추가/수정 화면에 미저장 변경사항 라우트 이탈 확인과 브라우저 이탈 기본 확인 연결.
- 이탈 승인 시 게시글 로컬 자동 저장본 삭제 처리 추가.
- 패키지 버전 `0.0.112`로 갱신.
## v0.0.111
- 관리자 멤버 상세 화면(`/admin/members/:id`) 추가.
- 관리자 멤버 추가 화면(`/admin/members/new`) 추가.
- 멤버 목록 행 클릭 시 상세 화면으로 이동하도록 수정.
- 멤버 기본 정보 저장 API(`GET/PUT /admin/api/members/:id`, `POST /admin/api/members`) 추가.
- 회원 레이블·관리자 노트 저장 컬럼 마이그레이션(`020_add_member_admin_fields.sql`) 추가.
- 멤버 폼에 썸네일 URL, 이름, 이메일, 레이블, 관리자 노트, 기존 회원 활동 요약 표시.
- 패키지 버전 `0.0.111`로 갱신.
## v0.0.110
- 관리자 멤버 목록을 Ghost형 테이블 구조로 재정리.
- 멤버 이름 아래 이메일, 가입일 아래 최근 활동을 함께 표시하도록 수정.
- 멤버 목록에서 권한 변경 선택·저장 UI 제거.
- 멤버 검색 입력과 멤버 추가 버튼 추가.
- 뉴스레터 Open rate 대체 컬럼으로 댓글 작성 개수 표시 유지.
- 패키지 버전 `0.0.110`으로 갱신.
## v0.0.109
- 관리자 사이드바 `메뉴` 항목을 `네비게이션`으로 변경하고 전용 아이콘 적용.
- 관리자 게시글 아이콘을 Ghost형 편집 아이콘으로 교체.
- 관리자 멤버 메뉴 우측에 총 멤버 수 표시 추가.
- 관리자 로그아웃을 상단 메뉴에서 제거하고 하단 사용자 드롭다운으로 이동.
- 관리자 하단에 사용자 썸네일 트리거와 설정 아이콘 추가.
- 패키지 버전 `0.0.109`로 갱신.
## v0.0.108
- 관리자 사이드바 너비를 Ghost 기준 320px로 조정.
- 관리자 우측 캔버스가 기본 화면 높이와 배경색을 유지하도록 `admin-layout__main` 배경·여백 수정.
- 관리자 사이드바 페이지·미디어·설정 아이콘 추가.
- 패키지 버전 `0.0.108`로 갱신.
## v0.0.107
- 관리자 사이드바를 밝은 Ghost형 톤으로 조정.
- 관리자 `글` 메뉴명을 `게시글`로 변경하고 게시글·태그·멤버 메뉴 아이콘 추가.
- 게시글 메뉴 우측 `+` 버튼으로 `/admin/posts/new` 바로 진입 추가.
- 패키지 버전 `0.0.107`로 갱신.
## v0.0.106
- 태그 상세(`/tag/:slug`) 헤더와 게시물 목록을 공통 `site-section-header`·`site-section-body` 패딩 구조로 맞춤.
- 태그 상세 게시물 목록의 중복 구분선을 정리.
- 패키지 버전 `0.0.106`으로 갱신.
## v0.0.105
- `005_add_navigation_items.sql`: `(location,label,url)` 유니크 제약 제거 후에도 기본 메뉴가 재삽입되지 않도록 `NOT EXISTS` 기반 시드로 수정.
- `019_dedupe_navigation_items.sql`: 반복 마이그레이션 실행으로 생긴 네비게이션 중복 행 정리 및 중복 방지 인덱스 추가.
- 로컬 개발 DB 네비게이션 중복 행 정리.
- 패키지 버전 `0.0.105`로 갱신.
## v0.0.104
- 관리자 API 요청마다 현재 DB 권한 재확인 미들웨어 추가.
- 회원 탈퇴 시 마지막 `owner` 계정 삭제 차단 및 관리자 세션 쿠키 정리.
- 최초 회원 생성 시 `users` 테이블 잠금으로 동시 가입 owner 판정 안정화.
- 이메일 OTP 발송 실패 시 방금 만든 챌린지 삭제, 발송 성공 후 이전 pending 챌린지 정리.
- 본문 북마크·임베드 외부 링크를 `http(s)` URL로 제한.
- 패키지 버전 `0.0.104`로 갱신.
## v0.0.103
- `docs/map.md`: 관리자 메뉴 관리 행 설명에서 제거된 마이그레이션 안내 문구 반영.
## v0.0.102
- `AdminBlockEditor`: 빈 단락은 HTML 주석 마커로 직렬화·복원, 슬래시 메뉴 하이라이트·스크롤·긴 목록 `max-h`·블록 경계에서 위/아래 방향키로 인접 블록 이동.
- `ContentMarkdownRenderer`: 동일 마커 줄을 빈 단락으로 표시.
- `SiteHeader`: 검색 열기 버튼에 `min-w-[470px]`(md 이상)로 최소 폭 고정.
- `pages/admin/navigation`: 상단 마이그레이션 안내 문단 제거.
## v0.0.101
- `server/utils/navigation-tree.js` `buildPublicPrimaryTree`: 평면 `primary`에서 **동일 id 중복 제거**(정렬 후 첫 행 유지), **유효 부모 아래에 붙은 항목은 루트에서 제외**해 사이드바에 항목이 두 번 보이던 현상 방지.
## v0.0.100
- `.env.example`·`docs/deploy.md`·`docs/spec.md`: **`EMAIL_OTP_PEPPER` 의미**(OTP 해시용 서버 비밀, 긴 난문자열 권장·미설정 시 `MEMBER_SESSION_SECRET` 사용) 문구 보강.
## v0.0.99
- `SiteHeader`: 헤더 내부 `grid-cols-3`로 검색 패널 **중앙 열 정렬**(Ghost류 레이아웃).
- Resend 기반 **이메일 OTP**: 마이그레이션 `018_email_otp_challenges.sql`, `POST /api/auth/email-otp/request`, `POST /api/auth/password-reset/confirm`, `signup`·`bootstrap-status` 연동.
- `pages/forgot-password.vue`, `signin`에서 비밀번호 찾기 링크. `getUserByEmail`·로그인 이메일 **대소문자 무시** 조회.
- `nuxt.config` `runtimeConfig`: `resendApiKey`, `resendFromEmail`, `emailOtpPepper`.
## v0.0.98
- `SidebarPrimaryNavList`: `navRowShell`**`w-full`** 추가해 `site-panel-hover` 배경이 행 가로 전체를 쓰도록 함.
- `LeftSidebar`: 푸터 API `footer` 링크 **`flex-wrap`**·`nav` **`min-w-0 flex-1`**, 링크·테마 버튼 **`shrink-0`**로 항목이 많을 때 가로 오버플로 방지.
## v0.0.97
- `SidebarPrimaryNavList`: 하위 폴더 부모도 리프와 동일 **세로 막대→호버 원형** `before` 장식. 내부 링크가 현재 경로와 일치하면 장식을 **`--site-accent`**로 표시(`aria-current="page"`).
## v0.0.96
- `SidebarPrimaryNavList`: 하위가 있는 부모는 **행 전체 버튼**으로 토글, chevron **회전 애니메이션**, 하위 영역 **높이 전환 애니메이션**, 펼침 전용 배경 제거·너비·간격 리프와 통일.
## v0.0.95
- 메뉴 관리: `표시`·`폴더` 체크 제거(항목은 항상 공개, `is_folder`는 저장 시 자식 유무로 서버 설정). 테이블+행 드래그 UX를 태그 메인 태그와 동일 톤(`bg-[#f9f9f7]`·`opacity-50`, 입력 위에서는 드래그 시작 안 함).
- 태그 관리 메인 태그: 드래그 중인 행에 `opacity-50` 적용(메뉴 관리와 동일한 이탈 피드백).
- `PUT /admin/api/navigation`: `parent_id`/`is_folder` 컬럼 부재 시 한국어 안내(503) 및 화면에 마이그레이션 안내 블록.
## v0.0.94
- 메뉴 관리: 상단/하단 탭 분리, 순서는 드래그(태그 관리와 유사). 상단은 `parent_id` 트리·하위 추가·폴더(`is_folder`)·동일 부모 내 순서 변경.
- `GET /api/navigation``primary`는 트리 응답, 좌측 사이드바는 `SidebarPrimaryNavList`로 접기/펼치기(`localStorage` 유지).
- 마이그레이션 `017_navigation_hierarchy.sql`, 공유 `lib/navigation-editor-tree.js`, `server/utils/navigation-tree.js` 검증·저장 순서.
## v0.0.93
- `composables/useAdminToast.js` 추가: 관리자 우측 상단 토스트(자동 숨김).
- 관리자 미디어(`pages/admin/media/index.vue`): 본문 상단 `errorMessage` 배너 제거, 폴더·이름 변경·삭제 등 실패 피드백을 토스트로 통일해 모달에 가리지 않게 함.
## v0.0.92
- 회원 `PUT /api/auth/profile`에서 관리 썸네일 URL이 바뀌거나 비워질 때도 `removeManagedAvatarAsset`으로 메타만 분리해, 해제 후에도 디스크·썸네일 탭 목록과 일치하도록 정리.
- 관리자 미디어 상세 모달에 **다운로드** 버튼 추가.
- 썸네일 탭 안내: 프로필 해제 시에도 파일이 삭제되지 않음·목록 갱신은 새로고침을 명시.
## v0.0.91
- 회원 썸네일 교체·삭제·탈퇴 시 이전 파일은 디스크에 남기고 `media_metadata`만 제거해, 관리자 썸네일 탭에서 미사용 자산을 구분·삭제할 수 있게 함.
- 관리자 미디어: 프로필이 참조 중인 썸네일만 삭제·이름 변경 차단(미참조 파일은 허용).
- `POST /admin/api/uploads`·`POST /api/auth/avatar`: 저장 파일명은 원본명 기반, 동일 폴더 충돌 시 `-2` 넘버링.
- 관리자 미디어 검색: 파일명·게시물 사용처 제목만; 모달에서 폴더 요약 중복 행 제거.
- `renameMediaItem`: 대상 폴더에 동일 파일명이 있으면 409.
## v0.0.90
- 관리자 미디어: 상단 탭으로 **미디어 라이브러리**와 **썸네일**(회원 `/members/avatars/`만) 분리, 썸네일 검색에 닉네임·이메일·IP 반영.
- 게시물용 관리자 업로드는 디스크 `posts/연/월` 유지하되 `media_metadata` 및 목록 논리 폴더는 **`미분류`**로 통일; 회원 아바타 메타는 **`썸네일`**.
- `listMediaItems``avatarOwner` 부착, 썸네일 파일의 관리자 삭제·이름 변경·임의 논리 폴더 이동 차단, 예약 폴더 `썸네일``media_folders` 생성·삭제 차단.
- 마이그레이션 `016_media_category_normalize.sql`로 레거시 `posts`/`회원/썸네일` 카테고리 문자열 정리.
## v0.0.89
- 관리자 미디어 썸네일 선택 컨트롤을 네이티브 체크박스에서 대비가 분명한 토글 버튼(미선택: 흰 배경·진한 테두리, 선택: 진한 배경·흰 체크)으로 교체.
- `docs/spec.md`에 미디어 디스크 경로와 `media_metadata` 논리 폴더 관계를 명시(이후 v0.0.90에서 `미분류`/`썸네일` 정책으로 갱신).
## v0.0.88
- 관리자 미디어: 썸네일 본문 클릭 시 상세 모달, 좌측 상단 체크박스로 다중 선택(Shift 범위 유지), 툴바 `현재 폴더로 이동` 제거.
- 폴더 추가는 상시 입력 대신 모달로 이름 입력.
- `DELETE /admin/api/media-folders` 및 폴더 행 삭제 UI 추가(삭제 시 해당 분류 메타는 `미분류`로).
## v0.0.87
- 메인 태그 `정렬 저장`·메뉴 `메뉴 저장`은 서버에서 받은 상태와 비교해 변경이 있을 때만 버튼이 활성화되도록 조정.
- 관리자 로그인·회원 로그인(`signin`) 제출 버튼은 이메일·비밀번호가 모두 입력된 경우에만 활성화.
- 관리자 글 목록의 삭제는 휴지통 아이콘으로 바꾸고, 기본은 낮은 불투명도·호버 시에만 강조.
- `AGENTS.md`에 커밋 후 원격 반영 시 `git push` 생략 방지 지침을 추가.
## v0.0.86
- 관리자 게시물 미리보기 본문 영역을 공개 상세와 동일한 `max-w-[720px]`·좌우 패딩으로 감싸 여백을 맞춤.
- 글 작성 폼에서 태그 토큰은 로마자 슬러그 변환 대신 한글 유지 정규화를 사용하고, 저장 시 태그 `name`은 한글 슬러그에 맞게 표시되도록 저장소 `normalizeTagSlugs`·`getTagNameFromSlug`를 조정.
- 관리자 게시물 폼에서 SEO 제목·설명 입력을 제거하고 저장 시 제목·요약을 메타 필드로 기록하도록 변경. `admin-post-input`의 SEO 문자열 길이 제한을 완화.
- 관리자 태그 관리 화면의 성공·오류 안내를 본문 상단 블록 대신 우측 상단 고정 토스트로 표시.
## v0.0.85
- 관리자 블록 에디터 저장 시 의도적으로 만든 빈 문단(연속 Enter)을 제거하지 않도록 빈 문단 마커(`<!--sori:blank-paragraph-->`) 직렬화/복원 로직을 추가.
- 공개 본문 마크다운 렌더러에서도 빈 문단 마커를 문단 블록으로 해석해 저장 후에도 문단 간 여백 의도를 유지하도록 맞춤.
## v0.0.84
- 관리자 블록 에디터 본문에서 위/아래 방향키 입력 시 커서가 블록 시작/끝 경계에 있으면 이전/다음 문단(또는 구조형 블록)으로 이동하도록 보완.
- 슬래시 메뉴를 최대 높이 제한 + 내부 스크롤 구조로 변경해 명령 개수가 많아도 화면을 넘기지 않도록 조정.
- 슬래시 메뉴 방향키 이동 시 현재 하이라이트 항목이 항상 스크롤 영역 안에 보이도록 자동 스크롤을 추가.
## v0.0.83
- 관리자 블록 에디터 슬래시 메뉴에서 방향키 이동 시 하이라이트 인덱스가 매번 초기화되던 문제를 수정해 연속 이동이 가능하도록 보정.
- 슬래시 메뉴가 열린 블록(`text``/`로 시작)에서만 위/아래 방향키 메뉴 이동 로직이 동작하도록 분기해, 일반 본문 블록의 방향키 입력 간섭을 줄임.
## v0.0.82
- 메인 태그 목록의 `삭제` 버튼을 제거하고 `일반 태그로 변경`(강등) 버튼으로 교체.
- 일반 태그 삭제는 일반 태그 검색 결과 영역에서만 가능하도록 변경.
- 태그 생성/수정 폼에서 정렬 순서 입력과 태그 유형 선택을 제거해, 메인/일반 전환은 태그 목록 액션으로만 처리하도록 단순화.
## v0.0.81
- 관리자 글 작성 태그 입력에서 한글 조합 중 Enter 입력 시 중복 태그가 생성되지 않도록 IME 조합 상태 가드를 추가.
- 게시물 저장 중 새로 생성되는 태그는 기본값을 `general`(일반 태그)로 저장하도록 수정.
- 관리자 태그 화면에서 `관리용 태그` 명칭을 `메인 태그`로 변경.
- 관리자 태그 화면의 일반 태그 전체 목록 테이블을 제거하고, 일반 태그 검색 후 `메인 태그로 전환`하는 흐름으로 개편.
- 관리자 태그 목록 API에 `tagType`, `q`, `limit` 조회 옵션을 추가해 일반 태그 검색을 지원.
## v0.0.80
- 태그에 유형(`managed`/`general`) 컬럼을 추가하는 마이그레이션(`015_add_tag_type_and_reorder_support.sql`)을 추가.
- 관리자 태그 입력 폼에 태그 유형 선택을 추가하고, 일반 태그는 정렬 순서를 사용하지 않도록 정리.
- 관리자 태그 목록을 `관리용 태그`/`일반 태그`로 분리.
- 관리용 태그 목록에 드래그 앤 드롭 정렬 UI를 추가하고, 저장 버튼으로 순서를 일괄 반영하도록 개선.
- `PUT /admin/api/tags/reorder` API를 추가해 관리용 태그의 `sort_order`를 순차 재정렬하도록 확장.
- 공개 태그 API(`GET /api/tags`)는 관리용 태그만 반환하도록 변경해 좌측 카테고리 영역과 태그 관리 목적을 분리.
## v0.0.79
- 댓글 목록에 작성자 썸네일(`avatar_url`)을 노출하고, 썸네일이 없으면 이니셜 아바타를 표시하도록 UI를 개선.
- 댓글/대댓글에 좋아요 토글을 추가하고, 좋아요 수/내 좋아요 상태를 함께 반환하도록 API와 저장소를 확장.
- 댓글 시간 표기를 `n분 전`, `n시간 전`, 24시간 이후 날짜 형식으로 변경.
- `comment_likes` 테이블 마이그레이션(`012_add_comment_likes.sql`)을 추가.
- 댓글 정렬 옵션(`Best`, `Latest`, `Oldest`)을 실제 동작하도록 연결.
- 댓글/대댓글 카드 보더를 최소화하고 간격·아이콘 스타일을 정리해 더 단정한 레이아웃으로 조정.
- 대댓글 아바타가 깨질 때 이니셜로 안전하게 대체되도록 이미지 로드 실패 처리 보강.
- 공개 레이아웃(`default`, `post`)의 데스크톱 3열 `gap-x`를 제거해 본문-사이드 사이가 이중 패딩처럼 보이던 간격을 정리.
- 좌측 사이드바 네비게이션/카테고리 hover 배경을 `site-panel-hover` 기반으로 통일해 다크 모드에서 텍스트 가독성 저하를 수정.
- 관리자 멤버 목록에 권한 컬럼을 추가하고, 환경변수 관리자 계정을 `관리자` 권한으로 함께 표시하도록 보강.
- 사용자 테이블에 관리자 권한 컬럼(`is_admin`)을 추가하는 마이그레이션(`013_add_user_admin_role.sql`)을 추가.
- 최초 사용자 생성 시 관리자 권한을 자동 부여하고, 가입 응답에 관리자 여부를 함께 반환하도록 수정.
- 관리자 로그인은 환경변수 고정 계정 대신 `is_admin` 회원 계정 인증으로 전환.
- `GET /api/auth/bootstrap-status`를 추가해 최초 관리자 등록 필요 여부를 조회하도록 확장.
- 회원가입 화면에서 최초 사용자일 때 `관리자 등록` 타이틀/설명/필드 라벨을 노출하도록 수정.
- 관리자 로그인 시 회원 세션도 함께 설정하고, 관리자 로그아웃 시 회원 세션도 함께 정리하도록 수정.
- 관리자 설정 화면에 관리자 프로필(썸네일 업로드/제거, 이름 저장) 섹션을 추가.
- 관리자 설정 화면에서 현재 비밀번호 확인 기반 관리자 비밀번호 변경을 지원하도록 추가.
- 회원 권한 3단계(`owner`/`admin`/`member`)를 위한 마이그레이션(`014_add_user_role_levels.sql`)을 추가.
- 관리자 멤버 화면에서 권한 선택/저장 UI와 `PUT /admin/api/members/:id/role` 권한 변경 API를 추가.
## v0.0.78
- 관리자 미디어 목록에서 회원 썸네일 경로(`/uploads/members/avatars/`)를 다시 포함해 `회원/썸네일` 폴더에서 확인 가능하도록 수정.
- 회원 썸네일 파일도 일반 미디어와 동일하게 폴더 트리/검색/카운트 집계에 반영되도록 정리.
## v0.0.77
- 회원 설정 프로필 영역에서 썸네일 URL 입력을 제거하고, 썸네일 미리보기 + 이미지 변경/제거 버튼 중심 UI로 개편.
- 썸네일 업로드 완료 안내 문구를 실제 동작과 맞게 간소화.
- 썸네일 수동 크롭 UI는 우선순위 낮은 후속 작업으로 `docs/todo.md`에 기록.
## v0.0.76
- 회원 썸네일 업로드 시 원본 비율과 관계없이 중앙 기준 1:1 정사각형으로 강제 크롭하도록 변경.
- 크롭 결과 해상도는 `AVATAR_MAX_WIDTH`, `AVATAR_MAX_HEIGHT` 중 작은 값을 사용해 정사각형(`N x N`)으로 저장하도록 정리.
## v0.0.75
- 회원 썸네일 업로드 시 최소 해상도 제한(`AVATAR_MIN_WIDTH`, `AVATAR_MIN_HEIGHT`)을 추가해 너무 작은 이미지를 차단.
- 썸네일 품질과 리사이즈 설정값이 비정상일 때 서버에서 안전 범위로 보정(clamp)하도록 방어 로직을 추가.
- 최대 해상도 설정이 최소 해상도보다 작게 들어와도 자동 보정되도록 처리.
## v0.0.74
- 회원 썸네일 업로드 시 원본 포맷과 관계없이 WebP로 변환 저장하도록 수정.
- 회원 썸네일 업로드 시 `AVATAR_MAX_WIDTH`, `AVATAR_MAX_HEIGHT` 기준으로 자동 리사이즈(`fit: inside`)를 적용.
- 썸네일 품질을 `AVATAR_WEBP_QUALITY` 환경 변수로 제어하도록 설정을 추가.
## v0.0.73
- 회원 썸네일 교체 시 기존 회원 전용 썸네일 파일/메타데이터를 자동 정리하는 공통 유틸을 추가.
- `DELETE /api/auth/avatar`를 추가해 회원 설정에서 썸네일 제거를 지원하고, 제거 시 프로필 `avatarUrl`을 비움.
- 회원 탈퇴 시에도 회원 전용 썸네일 파일/메타데이터가 함께 정리되도록 처리.
## v0.0.72
- 회원 썸네일 업로드 API(`POST /api/auth/avatar`)를 추가하고 업로드 경로를 `/uploads/members/avatars/YYYY/MM`으로 분리.
- 회원 설정 페이지에서 썸네일 파일 업로드를 직접 처리하고, 업로드 후 프로필 저장 흐름으로 연결.
- 관리자 미디어 목록에서 회원 썸네일은 전용 카테고리(`회원/썸네일`)로 구분해 관리.
## v0.0.71
- 헤더 사용자 영역에서 구독 버튼을 제거하고, 로그인 상태 기반 아바타/드롭다운(설정, 로그아웃 / 비로그인 시 Sign up, Sign in)으로 정리.
- 회원 설정 페이지(`/settings`)를 추가하고 닉네임 변경(중복 확인), 썸네일 URL 변경, 비밀번호 변경, 회원 탈퇴 기능을 연결.
- 관리자 멤버 화면(`/admin/members`)과 회원 목록 API를 추가해 닉네임, 이메일, 최근 접속 시각/IP, 댓글 개수, 활동 현황을 확인할 수 있게 구성.
- 회원 활동 컬럼(`last_seen_at`, `last_seen_ip`)과 아바타 컬럼(`avatar_url`)을 DB에 추가하고, 로그인/세션 조회/댓글 작성 시 최근 활동을 갱신.
## v0.0.70
- 회원 인증 API(`POST /api/auth/signup`, `POST /api/auth/login`, `GET /api/auth/me`, `POST /api/auth/logout`)와 회원 세션 쿠키(`sori_member_session`)를 추가.
- 댓글 DB 스키마(`users`, `comments`)와 게시물 댓글 API(`GET/POST /api/posts/:slug/comments`)를 추가하고, 대댓글은 1단까지만 허용하도록 검증을 적용.
- 게시물 상세 `#comments` 영역에 `PostComments` UI를 연결해 로그인 회원 댓글/답글 작성과 댓글 목록 표시를 구현.
- `signin`/`signup` 화면을 시뮬레이션에서 실제 API 연동으로 전환.
## v0.0.66
- 태그 검색은 `description`을 제외하고 `name`·`slug`만 부분 일치하도록 조정해, `p` 같은 한 글자 입력으로 의미 없는 태그가 뜨는 혼선을 줄임.
- 검색 모달 헤더 아이콘은 입력 비어있으면 돋보기, 입력이 있으면 X(클리어)로 전환하고 클릭 시 입력값을 비운다. 좌측/우측 닫기 X는 제거하고 `Esc`·백드롭 클릭·모바일 취소로 닫는다.
- 검색 입력은 IME(한글 조합) 중에도 디바운스로 검색을 갱신해 `워`처럼 조합 상태가 유지되는 입력에서도 결과가 나오게 하고, 조합 종료 시점에는 확정값으로 즉시 한 번 더 갱신한다.
## v0.0.67
- 공개 검색에서 `/uploads/...` 파일 경로와 마크다운 이미지 토큰(`![](...)`)은 노이즈로 간주해 매칭 대상에서 제거, 이미지 파일명 때문에 숫자 검색이 걸리던 문제를 해결.
## v0.0.68
- 게시물 상세(`pages/post/[slug].vue`) 섹션 패딩을 내부 래퍼로 이동해 레이아웃 그리드 패딩과 중복되던 2중 패딩을 제거.
- 댓글 섹션 구분선(`border-y`)은 패딩 없이 전체 폭으로 표시하고, 내용만 내부 래퍼에 패딩을 적용.
## v0.0.69
- 공개 레이아웃(`layouts/default.vue`, `layouts/post.vue`)에서 메뉴 닫힘 시 추가로 주던 메인 우측 패딩을 제거해 가로 패딩이 1회만 적용되도록 정리.
- 홈/태그 목록/태그 상세 공개 페이지 섹션의 `px-*`를 제거하고 레이아웃 그리드 패딩만 사용하도록 통일해 2중 패딩을 해소.
## v0.0.65
- 헤더 `/` 단축키·검색 영역 클릭으로 통합 검색 모달(`SiteSearchModal`)을 연다. `INPUT`·`TEXTAREA`·`SELECT`·`contenteditable` 포커스일 때는 `/`를 가로채지 않는다.
- `GET /api/search?q=``searchPublicContent`(저장소)로 태그·게시물(제목·요약·본문) 부분 일치 검색, 모달에서 Tags·Posts 섹션·일치 구간 강조·`html.site-search-open` 스크롤 잠금.
## v0.0.64
- 비개발용 `paths.mjs``#internal/nitro`를 import하는데 루트 `package.json` `imports`에 없어 `Package import specifier "#internal/nitro" is not defined`가 나던 문제를, `scripts/node-paths-nitro-shim.mjs`로 최소 `useRuntimeConfig().app`만 제공하고 `#internal/nitro`를 매핑해 해결.
## v0.0.63
- `tailwindcss.cssPath``~/assets/css/main.css`로 지정해, 없는 기본 경로 때문에 `node_modules/tailwindcss/tailwind.css`가 추가로 주입되던 이중 `@tailwind` 로딩을 제거.
- `tailwind.config.js` `content``composables`·`modules`·`plugins` 스캔 경로 추가.
## v0.0.62
- 다크 인증 페이지에서 `input`이 UA 기본색으로 남아 글자·아이콘이 안 보이던 문제를 `main.css``.auth-form-input`(글자색·캐럿·placeholder·autofill)로 보정.
- `AuthPasswordVisibilityToggle`은 Tailwind 의존을 줄이고 `scoped` CSS로 버튼·아이콘 크기·포커스 링을 고정.
- signin/signup 루트에 `[color-scheme:dark]`, signup 패널에 `border`·`bg-[#0d1116]`(`auth-signup__panel`)로 카드 대비 보강.
## v0.0.61
- 로그인·회원가입 비밀번호 표시 토글을 `AuthPasswordVisibilityToggle`(Material 스타일 SVG 눈 아이콘)으로 통일, 텍스트 보기/숨기기 제거.
- 회원가입 비밀번호·비밀번호 확인 각각 독립 토글·포커스 링을 가진 입력 행으로 정리.
## v0.0.60
- 홈 Featured 가로 트랙에 `touch-pan-x`·`-webkit-overflow-scrolling:touch`·`overscroll-x-contain`을 두어 모바일에서 손가락으로 가로 슬라이드(스크롤·스냅)가 잘 먹도록 함.
- Featured 이전/다음 화살표는 스크롤 시작·끝에 따라 `disabled`와 시각적 비활성 처리, `ResizeObserver`·`scroll`로 상태 동기화.
## v0.0.59
- Nuxt 3.21 SSR이 `#internal/nuxt/paths`를 외부 import로 두는데 `.nuxt/paths.mjs`가 기본적으로 디스크에 쓰이지 않아 Node가 루트 `package.json`에서 해석하지 못하던 오류 수정.
- `modules/nuxt-ssr-paths-write.mjs`에서 `paths.mjs` 템플릿에 `write: true`를 부여하고, 루트 `package.json` `imports``./.nuxt/paths.mjs`를 매핑.
- `nuxt` 의존성을 `^3.21.2`로 올려 lockfile과 정렬.
## v0.0.58
- 공개 3열 그리드 중앙을 `minmax(0,1fr)`로 바꾸고 `lg:gap-x-4`·`xl:gap-x-5`를 두어 본문과 오른쪽 사이드 사이 시각적 간격 확보.
- `site-main`의 고정 `lg:w-[720px]`를 제거하고 `lg:max-w-[720px]`·`justify-self-start`로 그리드 패딩·`gap`이 있어도 가로 넘침이 나지 않게 함.
- 좌측 메뉴 닫힘 시 `gap` 제거(`lg:!gap-x-0`)와 본문 `lg:pr-4`로 우측만 호흡 유지.
- `MainColumn``lg:max-w-[720px]` 중심으로 정리.
## v0.0.57
- 왼쪽 사이드바 하단 푸터(`left-sidebar__footer`) 수평 패딩을 `px-1`에서 `px-4`·`sm:px-5`로 조정해 링크·테마 버튼이 가장자리에 붙지 않게 함.
- 오른쪽 사이드바 카피라이트 푸터에 `pr-3`을 두어 우측 여백을 맞춤.
## v0.0.56
- `lg`~`xl` 구간에서 헤더 내부 여백·열 간격을 키우고, 검색창을 고정 470px 대신 `max-w`+`flex-1`로 줄여 아이콘·버튼이 붙지 않게 보정.
- 브랜드 영역에 상한 `max-width`를 두어 좁은 데스크톱에서 제목과 검색·우측 액션이 겹치지 않게 함.
- 공개 레이아웃 그리드(`default`/`post`)에 `lg:px-5`·`xl:px-6`을 적용해 헤더와 본문 열 가장자리를 맞춤.
## v0.0.55
- 모바일(`lg` 미만)에서 좌측 사이드바를 고정 슬라이드 패널+백드롭으로 표시하고, 닫기는 `closeMenu`/백드롭/Escape로 처리.
- 모바일에서 본문 아래에 오른쪽 사이드바를 배치하고, 좁은 폭에서 헤더·우측 패널이 화면 가장자리에 붙지 않도록 여백·구독 폼 레이아웃을 보정.
- 좌측 메뉴 열림 시 모바일에서 문서 스크롤 잠금(`html.site-mobile-nav-open`) 적용.
- 데스크톱에서만 메뉴 닫힘 시 `max-width`가 줄어들도록 보정(`lg:max-w-[1007px]`).
## v0.0.54
- 회원가입 화면(`signup`)을 모바일 우선 여백·카드 패널 구조로 보정해 가독성 개선.
- 회원가입 2단계에 로그인 진입 링크 추가.
- 회원가입 3단계 상태 메시지(`aria-live`)와 재전송 안내 문구를 정리.
- 로그인 화면(`signin`) 비밀번호 보기/숨기기 토글 추가.
- 로그인 화면 상태 메시지를 오류/안내로 분리하고 홈 이동 링크 추가.
## v0.0.53
- 게시물 상세 제목 우측 공유 버튼에 공유 모달 추가(X/Bluesky/Facebook/LinkedIn/Email/링크복사).
- 헤더 우측 Account 링크 제거, 사용자 아바타 버튼+드롭다운(Anonymous/Sign up/Sign in) 추가.
- 회원가입 화면(`/signup`)을 AFFiNE 참고 3단계(환영/입력/이메일 확인) 플로우로 추가.
- 회원가입 3단계에 인증 메일 재전송(쿨다운)과 인증 완료 후 로그인 이동 흐름 추가.
- 로그인 화면(`/signin`)을 동일한 다크 톤 폼 스타일로 추가.
- 회원가입 하단 스텝 인디케이터를 `min-h` 기반 하단 고정 배치로 보정.
- 회원가입 1단계 문구를 사이트 설정(`site-settings.title`, `site-settings.description`) 연동으로 변경.
- 회원가입 페이지 타이머(`setInterval`)를 `onMounted`에서만 실행하도록 수정해 SSR 오류를 해결.
## v0.0.52
- 홈/태그 목록 Featured 아이콘이 제목 줄 높이를 흔들지 않도록 고정 크기(`h-4 w-4`)·정렬 방식으로 보정.
- 게시물 상세 제목 아래 메타 정보에 `/` 구분자 표시를 `after` 규칙으로 통일.
## v0.0.51
- 좌·우 사이드바 데스크톱 열 높이를 `calc(100vh - 57px)`로 고정해 내부 스크롤·하단 푸터 배치가 뷰포트 기준으로 맞도록 수정.
- 사이드 푸터에 상단 보더 추가(스크롤 영역과 시각적 구분).
- 공개 피드·게시 상세·아카이브 발행일 `YYYY.MM.DD` 통일, `composables/formatPostDate.js` 사용·`<time datetime>` 보강.
- `pages/tag/[slug].vue` 동일 날짜·datetime 처리.
## v0.0.50
- 데스크톱(`lg+`)에서 긴 본문은 **문서 스크롤**(브라우저 오른쪽 스크롤바)로 처리하고, `main` 단독 스크롤은 제거.
- 좌·우 사이드바는 `sticky`+`max-h`로 뷰포트에 맞추고, 내부 스크롤은 `.site-sidebar-scroll`로 스크롤바만 숨김(휠·트랙패드 스크롤 유지).
## v0.0.49
- 데스크톱(`lg+`) 공개 레이아웃을 뷰포트 높이에 고정하고 중앙 컬럼만 세로 스크롤되도록 변경.
- 좌·우 사이드바는 열 높이 안에서 본문만 스크롤하고 푸터(링크·테마·카피라이트)는 항상 열 하단에 고정.
## v0.0.48
- 공개 본문에 Thred형 북마크 카드(`ProseBookmark`, `:::bookmark`)와 회원가입 CTA(`ProseSignup`, `:::signup`) 추가.
- `ProseEmbed`에서 Twitter/X 게시물 URL을 공식 embed iframe으로 렌더링하고 테마와 동기화.
- Callout 왼쪽 강조선·이미지 캡션 변수 색상 등 카드/미디어 스타일을 Thred에 가깝게 보정.
## v0.0.47
- 공개 본문 렌더러에서 Ordered list(숫자 목록) 문법을 지원.
- 공개 본문 인용구를 멀티라인 처리하고 대체(Alternative) 인용구 스타일 문법을 추가.
- 공개 본문 리스트/인용/이미지/갤러리/카드류 기본 스타일을 Thred 톤(보더/라운드/패널/타이포)으로 통일.
- 기술 명세에 공개 본문 스타일 가이드를 추가.
## v0.0.46
- 홈 Latest 피드 보기 방식 토글(4종) 드롭다운과 localStorage 저장 추가.
- 홈 Latest 피드 Default 아이콘을 원본(restore) SVG로 보정.
- 홈/태그 상세 목록 Featured 번개 아이콘을 SVG로 교체.
- 홈/태그 상세 목록 댓글 아이콘을 SVG로 교체.
- Nuxt future 호환성 버전을 명시해 설정 resolve 오류를 예방.
- 개발 서버 실행 스크립트에서 종료 시 최근 로그를 함께 출력하도록 보강.
- 로컬 개발 환경 파일 감시(EMFILE) 이슈 완화를 위해 Vite watch polling 옵션 추가.
- 게시물 레이아웃에서 누락된 그리드 클래스를 복구해 `/post/:slug` 화면 깨짐을 수정.
- 게시물 상세 헤더를 Thred 패턴(제목+메타+썸네일) 기준으로 재구성.
- 태그 목록 카드의 ↗ 텍스트 아이콘을 SVG 아이콘으로 교체.
## v0.0.45
- 사용자 화면 기본 배경을 `#fcfcfc`로 통일하고 보더 기준 구분으로 정리.
- 오른쪽 사이드바 왼쪽 경계선이 항상 보이도록 보더 추가.
- 왼쪽 사이드바 열림/닫힘 시 폭이 스르륵 줄어드는 전환 애니메이션 추가.
- 왼쪽 네비게이션 항목 왼쪽에 회색 세로 바 표시를 추가하고 hover 시 원형 아이콘으로 전환되도록 수정.
- 왼쪽 네비게이션 hover 배경색을 더 연하게 조정하고, 마우스 오버 시 텍스트가 함께 이동하도록 전환 효과 보정.
- 왼쪽 사이드바 전환과 네비게이션 hover 효과 구현을 커스텀 CSS에서 Tailwind 유틸리티 클래스로 전환.
- 왼쪽 네비게이션과 카테고리 영역의 패딩, 간격, hover 동작을 원본 Thred 마크업 패턴에 맞춰 재정렬.
- 왼쪽 사이드바 네비게이션/카테고리/작성자 섹션의 내부 패딩과 텍스트 이동량을 미세 조정.
- 태그 목록 페이지를 원본 Thred 구조에 맞춰 중앙 히어로와 3열 태그 카드 레이아웃으로 재구성.
- 태그 상세 페이지(`tag/[slug]`)를 원본 Thred 구조에 맞춰 헤더 간격과 리스트형 게시물 카드 레이아웃으로 재구성.
- 태그 상세 페이지 게시물 메타 영역에 featured 강조, 태그 컬러 배지, 구분자 스타일을 원본 패턴에 맞춰 보정.
- 태그 상세 페이지에서 복수 태그 글은 첫 번째 태그만 배지로 표시하고, 배지와 `/` 구분자가 겹치지 않도록 메타 구조 수정.
- 오른쪽 사이드바 Follow 영역을 원본 패턴의 소셜 아이콘 링크 행으로 교체.
- 홈 중앙 메인 영역을 원본 Thred 구조에 맞춰 Hero/Featured/Latest 섹션 간격과 내부 보더 정렬 기준으로 재구성.
- 홈 Latest와 태그 상세 목록 카드 우하단 hover 화살표 액션 버튼 추가.
- 홈 Latest와 태그 상세 목록 카드의 우하단 액션 화살표를 텍스트에서 SVG 아이콘으로 교체.
- 홈 Featured 영역을 그리드에서 가로 슬라이드 트랙(좌우 버튼 이동) 구조로 변경.
- 홈 Featured 슬라이드 폭을 브레이크포인트별 1.4/1.6/2.6 카드 비율 계산식으로 보정.
- 기술 명세 현재 버전을 v0.0.45로 갱신.
## v0.0.44
- 사용자 화면 다크/라이트 테마 전환 composable 추가.
- 헤더와 좌측 사이드바에 테마 전환 버튼 연결.
- 사용자 화면 링크, 카드, 입력, 버튼 hover 인터랙션 보강.
- `ZCF-v1.0.5` 및 샘플 폴더가 Git에 포함되지 않도록 제외 규칙 추가.
- 기술 명세 현재 버전을 v0.0.44로 갱신.
## v0.0.43
- 대표 이미지가 설정된 상태의 변경/삭제 액션을 이미지 아래 버튼 영역이 아니라 이미지 hover 오버레이로 수정.
- 대표 이미지 선택 모달에서 미디어 클릭 시 즉시 적용하지 않고 선택 상태만 표시하도록 수정.
- 대표 이미지 선택 모달 하단의 대표 이미지로 적용 버튼으로 선택 이미지를 확정하도록 수정.
- 기술 명세 현재 버전을 v0.0.43으로 갱신.
- 패키지 버전을 0.0.43으로 갱신.
## v0.0.42
- 관리자 글쓰기 화면의 문서 스크롤 잠금 클래스를 html/body에 직접 적용하도록 보강.
- 관리자 글 설정의 태그 입력을 Figma 기준 배지형 입력으로 수정.
- 태그 입력 중 Enter가 게시물 저장으로 이어지던 문제 수정.
- 관리자 글 설정에서 Canonical URL과 OG 이미지 입력 UI 제거.
- 게시물 저장 시 Canonical URL은 기본 글 주소, OG 이미지는 대표 이미지를 따르도록 정리.
- 대표 이미지 선택 모달에 이미지 업로드와 미디어 라이브러리 탭 추가.
- 기술 명세 현재 버전을 v0.0.42로 갱신.
- 패키지 버전을 0.0.42로 갱신.
## v0.0.41
- 관리자 블록 에디터 `/` 명령 메뉴가 아래 블록 텍스트와 겹쳐 보이던 문제 수정.
- 관리자 블록 에디터 드래그 종료 시 삽입선 위치 기준으로 블록 이동이 확정되도록 보정.
- 개발 서버에서 Nuxt DevTools 도킹 패널로 보이는 하단 검은 영역을 막기 위해 DevTools 비활성화.
- 기술 명세 현재 버전을 v0.0.41로 갱신.
- 패키지 버전을 0.0.41로 갱신.
## v0.0.40
- 관리자 글쓰기 화면에서 바깥 문서가 함께 스크롤되어 하단 배경이 노출되던 문제 수정.
- 관리자 블록 에디터 드래그 중 드롭 위치를 위/아래 삽입선으로 표시하도록 추가.
- 관리자 블록 에디터 드롭 이동 위치가 표시된 삽입선과 일치하도록 수정.
- 관리자 블록 에디터 한글 조합 중 Shift+Enter 입력 시 조합 완료 후 줄바꿈이 바로 적용되도록 보정.
- 기술 명세 현재 버전을 v0.0.40으로 갱신.
- 패키지 버전을 0.0.40으로 갱신.
## v0.0.39
- 관리자 블록 에디터 Shift+Enter 줄바꿈이 문단 첫 위치로 커서를 이동시키던 문제 수정.
- 관리자 블록 에디터 텍스트 DOM 동기화를 `textContent` 기준으로 보정.
- 관리자 블록 에디터 왼쪽 블록 핸들을 AFFiNE 참고 스타일의 세로 막대형 hover 표시로 수정.
- 기술 명세 현재 버전을 v0.0.39로 갱신.
- 패키지 버전을 0.0.39로 갱신.
## v0.0.38
- 관리자 블록 에디터 슬래시 메뉴 필터가 입력 즉시 동기화되도록 보정.
- 관리자 블록 에디터에서 `/갤` Enter 입력 시 필터링된 갤러리 명령이 적용되도록 수정.
- 관리자 블록 에디터에서 Shift+Enter 줄바꿈과 Enter 문단 생성을 구분하도록 수정.
- 관리자 블록 에디터 구조형 블록의 자체 위아래 여백을 제거하고 블록 행 사이 margin-top 기준으로 정리.
- 관리자 블록 에디터 하단의 불필요한 최소 높이로 생기던 빈 영역 제거.
- 관리자 글 수정 화면의 보기/삭제 액션을 Figma 기준에 맞춰 게시물 설정 패널 내부로 이동.
- 기술 명세 현재 버전을 v0.0.38로 갱신.
- 패키지 버전을 0.0.38로 갱신.
## v0.0.37
- 관리자 블록 에디터의 한글 조합 입력 종료 후 Enter 처리 보정.
- 관리자 블록 에디터의 슬래시 메뉴 필터가 한글 조합 완료 뒤 갱신되도록 수정.
- 관리자 블록 에디터에서 ` ``` ` 입력 시 코드 블록으로 즉시 변환되도록 추가.
- 관리자 코드 블록 글자색과 caret 색상 보정.
- 관리자 블록 에디터에 블록 핸들 선택, Delete/Backspace 삭제, 드래그 이동 기능 추가.
- 할 일 문서에 블록 핸들 액션 메뉴 후속 작업 추가.
- 기술 명세 현재 버전을 v0.0.37로 갱신.
- 패키지 버전을 0.0.37로 갱신.
## v0.0.36
- 할 일 문서에서 완료 또는 현재 기준 불필요한 QA 항목 정리.
- 기술 명세 현재 버전을 v0.0.36으로 갱신.
- 패키지 버전을 0.0.36으로 갱신.
## v0.0.35
- 관리자 공통 레이아웃의 기본 내부 패딩 제거.
- 관리자 글 작성/수정 화면에서 좌측 관리자 네비게이션을 숨기도록 수정.
- 관리자 글 작성/수정 폼을 에디터 작업 영역과 우측 설정 패널의 1차 좌우 분할 구조로 수정.
- 게시물 설정 패널 열림/닫힘 너비 전환 애니메이션 추가.
- 관리자 글 작성/수정 화면의 버튼, 입력, 미디어 선택 요소 hover/focus 효과 보강.
- 기술 명세 현재 버전을 v0.0.35로 갱신.
- 패키지 버전을 0.0.35로 갱신.
## v0.0.34
- 배포 문서에 개발/운영 DB 분리 검증 절차 추가.
- 로컬 개발 DB 실행 안내에 Docker Desktop과 Colima 기준 병기.
- 할 일에서 개발 DB와 운영 DB 분리 검증 절차 작성 항목 정리.
- 기술 명세 현재 버전을 v0.0.34로 갱신.
- 패키지 버전을 0.0.34로 갱신.
## v0.0.33
- 개발 서버 실행 링크 출력을 개발 서버, Admin, Tailwind Viewer 3개 주소로 정리.
- 개발 서버 실행 링크가 Nuxt 출력 URL 대신 프로젝트 고정 포트 43117 기준으로 표시되도록 수정.
- 배포 문서에 로컬 PostgreSQL DB 확인 방법 추가.
- 할 일에서 CloudBeaver PostgreSQL 연결 방식 확정 항목 정리.
- 기술 명세 현재 버전을 v0.0.33으로 갱신.
- 패키지 버전을 0.0.33으로 갱신.
## v0.0.32
- 관리자 글 작성/수정 화면의 별도 제목 헤더 제거.
- 관리자 글 작성/수정 폼을 Ghost 스타일 상단 바와 중앙 에디터 구조로 수정.
- 대표 이미지 추가 영역을 에디터 본문 상단으로 이동.
- 게시물 설정 패널을 420px 우측 패널과 토글 구조로 정리.
- 관리자 글 에디터 컬럼을 좌우 32px 패딩 포함 804px로 보정해 실제 본문 폭 740px 유지.
- 블록 에디터 첫 placeholder 문구를 간결하게 수정.
- 패키지 버전을 0.0.32로 갱신.
## v0.0.31
- 관리자 글 작성/수정 폼에 미리보기 버튼 추가.
- 저장 전 게시물 입력값을 브라우저 저장소에 담아 새 미리보기 탭으로 전달하도록 추가.
- 관리자 게시물 미리보기 화면 추가.
- 미리보기 화면이 공개 게시물 본문 렌더러와 같은 컴포넌트를 사용하도록 연결.
- 패키지 버전을 0.0.31로 갱신.
## v0.0.30
- 게시물 OG 이미지 필드 추가.
- 관리자 글 작성/수정 폼에 OG 이미지 선택, 업로드, 변경, 삭제 기능 추가.
- 공개 게시물 상세 화면에 OG 이미지와 Twitter large image 카드 메타 연결.
- 미디어 라이브러리 사용 현황에 게시물 OG 이미지 사용처 표시 추가.
- 패키지 버전을 0.0.30으로 갱신.
## v0.0.29
- 게시물 SEO 메타데이터 컬럼 추가.
- 관리자 글 작성/수정 폼에 SEO 제목, SEO 설명, canonical URL, 검색엔진 노출 제외 설정 추가.
- 관리자 게시물 생성/수정 API가 SEO 값을 저장하도록 수정.
- 공개 게시물 상세 화면에 SEO 제목, description, canonical, robots, 기본 OG 메타 연결.
- 패키지 버전을 0.0.29로 갱신.
## v0.0.28
- 관리자 글 작성/수정 폼에 발행 시각 입력 기능 추가.
- 발행 상태에서 미래 발행 시각을 저장하면 예약 발행으로 처리하도록 추가.
- 공개 게시물 목록과 상세 API가 미래 발행 글을 노출하지 않도록 수정.
- 관리자 글 목록에서 발행/예약/초안/비공개 상태 표시를 구분하도록 수정.
- 예약 발행 글은 공개 보기 버튼을 숨기도록 수정.
- 패키지 버전을 0.0.28로 갱신.
## v0.0.27
- 미디어 폴더 테이블 추가.
- 관리자 미디어 폴더 목록/생성 API 추가.
- 관리자 미디어 화면을 왼쪽 폴더 트리와 오른쪽 썸네일 갤러리 구조로 수정.
- 미디어 Ctrl/Command 클릭 및 Shift 클릭 복수 선택 기능 추가.
- 선택 미디어를 폴더로 드래그해 일괄 이동하는 기능 추가.
- 미디어 폴더 이동은 실제 파일 경로가 아닌 메타데이터 경로를 갱신하도록 유지.
- 패키지 버전을 0.0.27로 갱신.
## v0.0.26
- 미디어 메타데이터 테이블 추가.
- 미디어 URL별 카테고리 저장 기능 추가.
- 관리자 미디어 목록에 카테고리 필터 추가.
- 관리자 미디어 상세 모달에 카테고리 수정 기능 추가.
- 미디어 파일명 변경/삭제 시 메타데이터도 함께 갱신하도록 수정.
- 패키지 버전을 0.0.26으로 갱신.
## v0.0.25
- 관리자 블록 에디터에서 빈 문단 placeholder를 마지막 보조 입력 블록에만 표시하도록 수정.
- 네비게이션 항목 데이터베이스 테이블 추가.
- 공개 네비게이션 조회 API 추가.
- 관리자 네비게이션 조회/일괄 저장 API 추가.
- 관리자 메뉴 관리 화면 추가.
- 공개 왼쪽 사이드바 상단/하단 메뉴를 네비게이션 API와 연결.
- 패키지 버전을 0.0.25로 갱신.
## v0.0.24
- 관리자 블록 에디터에서 마지막 빈 문단 Enter 입력 시 연속 빈 줄이 유지되도록 수정.
- 사이트 설정 데이터베이스 테이블 추가.
- 공개 사이트 설정 조회 API 추가.
- 관리자 사이트 설정 조회/수정 API 추가.
- 관리자 사이트 설정 화면을 실제 저장 API와 연결.
- 공개 헤더와 오른쪽 사이드바에 사이트 설정 값을 연결.
- 패키지 버전을 0.0.24로 갱신.
## v0.0.23
- 관리자 고정 페이지 목록 화면을 실제 API와 연결.
- 관리자 고정 페이지 생성 화면 추가.
- 관리자 고정 페이지 수정 화면 추가.
- 관리자 고정 페이지 생성/수정/삭제 API 추가.
- 고정 페이지 작성 폼에 블록 에디터와 대표 이미지 선택 기능 연결.
- 패키지 버전을 0.0.23으로 갱신.
## v0.0.22
- 관리자 블록 에디터 마지막에 클릭 가능한 빈 문단 블록을 항상 유지하도록 수정.
- 빈 마지막 문단 블록은 저장 콘텐츠에 포함하지 않도록 유지.
- 한글 조합 입력 직후 Enter가 새 블록 입력으로 중복 처리되는 문제 보정.
- 관리자 글 저장/수정/삭제 진행 상태를 토스트로 표시하도록 추가.
- 새 글 저장 후 수정 화면으로 이동해도 저장 성공 토스트를 표시하도록 추가.
- 패키지 버전을 0.0.22로 갱신.
## v0.0.21
- 관리자 글 작성/수정 폼에 로컬 자동 저장 기능 추가.
- 자동 저장본이 있으면 복원 또는 삭제 안내를 표시하도록 추가.
- 글 저장 성공 시 해당 자동 저장본을 삭제하도록 연결.
- 자동 저장 상태 시간을 글 작성 화면 하단에 표시하도록 추가.
- 패키지 버전을 0.0.21로 갱신.
## v0.0.20
- 관리자 블록 에디터에 콜아웃 블록 추가.
- 관리자 블록 에디터에 토글 블록 추가.
- 관리자 블록 에디터에 임베드 블록 추가.
- 공개 본문 렌더러에 콜아웃, 토글, 임베드 마크다운 확장 파싱 추가.
- YouTube 임베드 URL을 공개 화면에서 iframe으로 렌더링하도록 수정.
- 패키지 버전을 0.0.20으로 갱신.
## v0.0.19
- 관리자 블록 에디터의 한글 조합 입력 중복 방지 처리 추가.
- 이미지/갤러리 삽입 시 파일명을 alt/caption으로 자동 표시하지 않도록 수정.
- 이미지 블록 alt 입력을 이미지 hover 또는 focus 상태에서만 표시하도록 수정.
- 공개 게시물 카드에 대표 이미지 썸네일 표시 추가.
- ProseImage Wide/Full-width 화면 이탈 보정 작업을 할 일에 기록.
- 패키지 버전을 0.0.19로 갱신.
## v0.0.18
- 새 글 작성 화면에서 빈 본문 블록이 생성되지 않던 문제 수정.
- 공개 게시물 목록 경로 `/posts` 추가.
- 공개 게시물 상세 경로를 `/post/:slug` 기준으로 추가.
- 기존 `/posts/:slug` 상세 경로를 `/post/:slug`로 리다이렉트하도록 수정.
- 공개 태그 목록 경로 `/tags` 추가.
- 공개 태그 상세 경로를 `/tag/:slug` 기준으로 추가.
- 기존 `/tags/:slug` 상세 경로를 `/tag/:slug`로 리다이렉트하도록 수정.
- 공개 화면과 관리자 미리보기 링크를 단수형 상세 경로 기준으로 정리.
- 패키지 버전을 0.0.18로 갱신.
## v0.0.17
- 관리자 글 작성/수정 폼의 대표 이미지 URL 직접 입력을 이미지 선택 UI로 변경.
- 대표 이미지 썸네일, 삭제, 변경, 새 업로드 기능 추가.
- 대표 이미지를 기존 미디어 라이브러리에서 선택할 수 있도록 추가.
- 관리자 미디어 화면을 고밀도 썸네일 갤러리 구조로 변경.
- 미디어 경로, 사용 현황, 용량, 파일명 변경, 삭제 정보를 상세 모달로 이동.
- 패키지 버전을 0.0.17로 갱신.
## v0.0.16
- 관리자 미디어 목록에 게시물/페이지 사용 현황 표시 추가.
- 미디어 사용처를 대표 이미지와 본문 위치로 구분해 표시.
- 사용 중인 미디어의 파일명 변경과 삭제를 차단하도록 수정.
- 미디어 검색 대상에 사용 중인 게시물/페이지 제목 추가.
- 패키지 버전을 0.0.16으로 갱신.
## v0.0.15
- 관리자 블록 에디터 `/` 메뉴 항목 제목 색상을 진한 본문색으로 수정.
- 관리자 미디어 목록 API 추가.
- 관리자 미디어 파일명 변경 API 추가.
- 관리자 미디어 삭제 API 추가.
- 관리자 미디어 관리 화면 추가.
- 관리자 사이드바에 미디어 메뉴 추가.
- 글쓰기 이미지/갤러리 블록에서 기존 업로드 미디어 선택 기능 추가.
- 패키지 버전을 0.0.15로 갱신.
## v0.0.14
- 관리자 블록 에디터에 단일 이미지 블록 추가.
- 관리자 블록 에디터에 복수 이미지 갤러리 블록 추가.
- 이미지 블록의 기본/와이드/풀사이즈 표시 옵션 추가.
- 관리자 이미지 업로드 API 추가.
- 공개 본문 렌더러에 이미지와 갤러리 렌더링 추가.
- 공개 갤러리 이미지 클릭 시 라이트박스로 크게 보는 기능 추가.
- 업로드 파일이 Git에 포함되지 않도록 `public/uploads/` 제외 처리.
- 향후 미디어 라이브러리 관리 기능 범위 정리.
- 패키지 버전을 0.0.14로 갱신.
## v0.0.13
- 개발 서버 실행 로그를 프로젝트 전용 링크 요약 출력으로 정리.
- `npm run dev``scripts/dev-server.js`를 통해 Nuxt 개발 서버를 실행하도록 수정.
- 패키지 버전을 0.0.13으로 갱신.
## v0.0.12
- 관리자 글 제목 입력에서 Enter 입력 시 본문 첫 블록으로 이동하도록 수정.
- 관리자 블록 에디터 본문 글자 색상을 관리자 화면 기준으로 고정.
- 패키지 버전을 0.0.12로 갱신.
## v0.0.11
- 관리자 블록 에디터에서 빈 문단 Enter 입력 시 새 빈 블록이 생성되도록 수정.
- 관리자 블록 에디터의 `/` 명령 메뉴에서 Enter로 선택 항목을 적용하도록 수정.
- 관리자 블록 에디터의 `/` 명령 메뉴에 위/아래 방향키 선택 이동 추가.
- 관리자 글 에디터 후속 작업 순서 정리.
- 패키지 버전을 0.0.11로 갱신.
## v0.0.10
- 관리자 블록 에디터의 `contenteditable` 입력 중복 문제 수정.
- 관리자 블록 에디터의 `/` 명령 메뉴가 화면 하단에서 위로 열리도록 수정.
- 빈 블록 placeholder가 활성 블록에만 표시되도록 수정.
- 관리자 글 제목 입력을 본문 흐름 안의 큰 제목 필드로 변경.
- 패키지 버전을 0.0.10으로 갱신.
## v0.0.9
- 관리자 글 작성/수정 폼을 textarea 방식에서 블록형 에디터 방식으로 변경.
- 관리자 블록 에디터에 `/` 명령 메뉴 추가.
- 관리자 블록 에디터에 `#`, `##`, `###`, `>`, `-` 입력 단축 변환 추가.
- 공개 게시물과 고정 페이지 본문을 마크다운 렌더러에 연결.
- 패키지 버전을 0.0.9로 갱신.
## v0.0.8
- 관리자 글 작성/수정 폼에 마크다운 미리보기 탭 추가.
- 관리자 글 작성/수정 폼에 제목, 굵게, 목록, 인용, 코드 문법 삽입 버튼 추가.
- 패키지 버전을 0.0.8로 갱신.
## v0.0.7
- 태그 정렬 순서와 색상 코드 필드 추가.
- 태그 표시 필드 마이그레이션 추가.
- 관리자 태그 생성/수정 화면을 개별 페이지로 분리.
- 관리자 태그 목록 화면의 인라인 수정 제거.
- 공개 좌측 사이드바 카테고리를 실제 태그 색상과 정렬 순서 기준으로 연결.
- 관리자 태그 상세 조회 API 추가.
- 관리자 태그 목록 API 추가.
- 관리자 태그 생성 API 추가.
- 관리자 태그 수정 API 추가.
- 관리자 태그 삭제 API 추가.
- 관리자 태그 관리 화면을 실제 API에 연결.
- 관리자 글 삭제 API 추가.
- 관리자 글 목록과 수정 화면에 삭제 액션 추가.
- 관리자 글 작성 API 추가.
- 관리자 글 상세 조회 API 추가.
- 관리자 글 수정 API 추가.
- 관리자 글 작성/수정 공통 폼 추가.
- 관리자 새 글 작성 화면과 수정 화면을 실제 저장 API에 연결.
- 관리자 글 상태를 초안/발행/비공개로 저장할 수 있도록 수정.
- 관리자 접근 미들웨어의 서버 인증 확인 방식 수정.
- 환경 변수 기반 관리자 로그인 기능 추가.
- 관리자 세션 쿠키 인증 유틸리티 추가.
- 관리자 로그아웃 및 세션 조회 API 추가.
- 관리자 글 목록 API와 화면 연결.
- 개발 서버의 `#app-manifest` 가상 모듈 분석 오류를 피하도록 Nuxt app manifest 실험 기능 비활성화.
- Nuxt 컴포넌트 자동 import 설정을 문서의 컴포넌트명 기준에 맞게 수정.
- 홈, 태그, 게시물, 고정 페이지 공개 화면을 실제 API 데이터에 연결.
- 로컬 PostgreSQL 마이그레이션 실행 스크립트 추가.
- 개발 DB 마이그레이션 npm 명령 추가.
- Homebrew, Docker CLI, Docker Compose, Colima 기반 로컬 컨테이너 실행 환경 구성.
- Docker Compose가 `ENV_FILE` 값으로 로컬/운영 환경 파일을 선택할 수 있도록 수정.
- 로컬 PostgreSQL 개발 DB 컨테이너 실행 및 시드 데이터 확인.
- Nuxt 개발/프리뷰 스크립트가 `.env.development`를 명시적으로 읽도록 수정.
- 새 개발 환경에서 Node.js 22 LTS 기준 의존성 설치 및 빌드 검증.
- 로컬 개발 필수 조건 문서의 Node.js 권장 버전 정리.
- 패키지 버전을 0.0.7로 갱신.
## v0.0.6
- `.env.example`의 실제 계정/비밀번호 값을 예시 전용 placeholder로 교체.
- 로컬 개발 전용 `.env.development` 파일 생성.
- 개발 DB 비밀번호와 관리자 비밀번호를 랜덤 값으로 분리.
- 환경 변수 파일 관리 기준 문서 정리.
- 패키지 버전을 0.0.6으로 갱신.
- 이미 원격에 올라간 비밀번호 사용 여부 점검 항목 추가.
## v0.0.5
- PostgreSQL 초기 스키마 마이그레이션 추가.
- 개발용 시드 데이터 SQL 추가.
- Nuxt 서버 API 저장소 계층 추가.
- `DATABASE_URL`이 있으면 PostgreSQL을 사용하고, 없으면 샘플 데이터를 사용하도록 수정.
- Docker Compose에 PostgreSQL 서비스와 전용 DB 포트 43119 추가.
- 공개 API가 저장소 계층을 통해 게시물, 페이지, 태그를 조회하도록 수정.
## v0.0.4
- 헤더 좌측 아이콘을 브랜드 마크에서 메뉴 토글 버튼으로 수정.
- Vue/Nuxt 상태 기반 좌측 사이드바 열기/닫기 기능 추가.
- 메뉴 열림 상태를 `localStorage``MENU_STATE`에 저장하도록 추가.
- 메뉴 닫힘 상태에서 공개 레이아웃 그리드가 좌측 사이드바 폭을 제거하도록 수정.
## v0.0.3
- Thred 참고 화면 기준 공개 레이아웃 색상 토큰 정리.
- 라이트/다크 모드 CSS 변수 기반 테마 추가.
- 헤더 아래 3단 컬럼 최소 높이를 화면 전체 높이로 수정.
- 좌우 사이드바를 본문과 별개로 전체 높이 패널처럼 표시하도록 수정.
- 홈 화면 히어로, 추천 영역, 최신 글 영역 구조 보강.
- 사이트 헤더 검색 영역과 구독/계정 액션 구조 추가.
- 좌우 사이드바 임시 콘텐츠 구조 보강.
- 로컬 개발/프리뷰 포트 43117 유지.
## v0.0.2
- Nuxt 3 프로젝트 기본 실행 구조 추가.
- Tailwind CSS 설정과 전역 Pretendard 기준 스타일 추가.
- 공개 레이아웃, 게시물 레이아웃, 고정 페이지 레이아웃, 관리자 레이아웃 골격 추가.
- 사이트 컴포넌트와 콘텐츠 컴포넌트 초기 골격 추가.
- 홈, 게시물 상세, 태그, 고정 페이지, 관리자 기본 화면 추가.
- Nuxt `server/api` 기반 백엔드 골격 추가.
- Zod 기반 콘텐츠 스키마와 샘플 API 추가.
- `.env.example`, Dockerfile, docker-compose.yml, .dockerignore 추가.
- 로컬 개발 포트 43117, NAS Docker 외부 포트 43118 기준 추가.
## v0.0.1
- sori.studio 개인 블로그/CMS 방향 정리.
- note.md 원본 기획 기준 문서 재점검.
- Ghost 스타일 관리자와 Thred 스타일 공개 화면 기준 명세 정리.
- Nuxt SSR, JavaScript, JSDoc, Zod, Tailwind CSS 기본 전제 정리.
- Git 원격 저장소와 작성자 기준 문서화.
- 로컬 개발 DB와 NAS 운영 DB 분리 원칙 추가.
- 공개 레이아웃, 콘텐츠 컴포넌트, 관리자 화면 계획 정리.
- pages 전체 화면 표시 기준 정리.
- 배포 가이드에 clone, 개발/운영 환경 변수, NAS 운영 DB 기준 추가.
- 초기 할 일, 배포 초안, 파일-화면 매핑 문서 정리.
- note.md 삭제 정리.
- Git 저장소 초기 기준점 설정 진행.