Metadata-Version: 2.4
Name: memobot
Version: 1.5.29
Summary: Google Drive-synchronized floating Post-it memo pad for Windows, macOS, and Linux
Home-page: https://github.com/yourusername/memo-bot
Author: Your Name
Author-email: Your Name <your.email@example.com>
Project-URL: Homepage, https://github.com/yourusername/memo-bot
Project-URL: Bug-Tracker, https://github.com/yourusername/memo-bot/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Office/Business :: News/Diary
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: pywebview>=5.0
Requires-Dist: google-api-python-client>=2.0
Requires-Dist: google-auth-oauthlib>=1.0
Requires-Dist: google-auth-httplib2>=0.1.0
Requires-Dist: pystray>=0.19.0
Requires-Dist: pillow>=10.0.0
Requires-Dist: pytesseract>=0.3.10
Dynamic: author
Dynamic: home-page
Dynamic: requires-python

# Memo-Bot v1.5.29 🤖📌



구글 드라이브 기반의 완벽히 동기화되는 크로스 플랫폼 포스트잇 메모장입니다.
안드로이드(Flutter)와 데스크톱(Windows, macOS, Linux - Python/PyWebView) 환경을 지원하며, 사용자의 구글 드라이브 **숨겨진 앱 폴더 (Application Data Folder)**를 이용해 보안이 매우 뛰어나고 깔끔한 동기화를 수행합니다.

---

## 🎨 기술 스택 및 특징

* **Desktop Client**: Python + PyWebView (HTML/JS/CSS). OS 내장 웹뷰를 사용하므로 배포 파일 및 메모리 소모가 최소화됩니다.
* **Mobile Client (Android)**: Flutter (Material 3 다크 모드). 모던하고 유려한 포스트잇 리스트 및 편집 인터페이스 제공.
* **Sync Engine**: Google Drive AppData API. 사용자의 파일 목록에 노출되지 않는 고유 앱 저장소를 사용하고, 파일의 `appProperties` 메타데이터를 캐싱하여 트래픽 소모가 매우 적고 반응이 빠른 동기화를 지원합니다.

---

## 🌟 주요 핵심 기능 (Features)

* **🔄 구글 드라이브 양방향 동기화**: 모바일과 데스크톱 간 작성한 포스트잇 메모가 구글 드라이브 앱 전용 숨김 저장소를 통해 실시간 연동 및 동기화됩니다.
* **📌 메모 접기 (Fold) 및 최상단 고정 (Pin)**: 메모 헤더를 더블클릭하거나 접기 단추를 누르면 제목만 보이도록 접을 수 있으며, 압정 아이콘으로 Z-Order 최상단 고정을 간편하게 제어합니다.
* **🔘 메모 버로우 (Burrow) 기능 (v1.5.20+)**:
  - 작업 화면을 방해하는 메모 창을 일시적으로 완전히 숨기고, 아주 작은 **투명 도트(dot) 아이콘**으로 전환합니다.
  - **다양한 스타일 튜닝**: 환경설정에서 도트의 디자인(● 원, ◆ 마름모, ■ 정사각형)과 크기(4단계 조절)를 취향껏 선택할 수 있습니다.
  - **마우스 호버 툴팁 피드백**: 버로우 도트 위에 마우스를 얹으면 **300ms 지연 후** 메모의 제목이 툴팁으로 나타나 내용을 빠르게 확인 가능하며, 마우스를 치우면 즉시 닫힙니다.
  - **멀티 모니터 좌표 기억**: 도트를 원하는 위치로 드래그해 두면 해당 스크린 좌표를 실시간 추적 및 기록하여, 앱 종료 후 다시 켜도 **멀티 모니터 상의 드래그했던 정확한 그 지점**에 도트가 복원됩니다.
  - **모서리 기준 복원**: 도트를 마우스 왼쪽 클릭하여 복원(Unburrow)하면, 도트가 놓여 있던 자리가 메모 창의 **왼쪽 위 모서리**가 되도록 부드럽게 창이 복구됩니다.
* **🔌 입력 플러그인 지원**: 환경설정을 통해 최대 5개의 다양한 파이썬 스크립트 기반 입력 플러그인을 연결하여 간편하게 메모 작성에 연동할 수 있습니다.

---

## 📂 데이터 저장 경로 및 파일 포맷

메모를 작성하고 저장하면 각 메모는 로컬 컴퓨터에 개별 **JSON 파일** 형태로 저장됩니다.

### 1. 로컬 저장 경로
* **Windows**: `C:\Users\<사용자명>\.memobot\notes\`
* **macOS / Linux**: `~/.memobot/notes/`

### 2. 파일 형식 및 이름
* 각 메모당 `note_<고유ID>.json` 형식으로 저장됩니다. (예: `note_a1b2c3d4.json`)

### 3. JSON 데이터 구조 예시
메모의 내용, 색상, 좌표 및 크기, 태그 정보뿐만 아니라 첨부된 이미지 데이터까지 단일 JSON 파일 내에 보관합니다.
```json
{
  "id": "a1b2c3d4-...",
  "content": "메모 내용입니다. #태그",
  "color": "yellow",
  "tags": ["태그"],
  "x": 120,
  "y": 250,
  "width": 250,
  "height": 250,
  "is_folded": false,
  "on_top": true,
  "updated_at": "2026-06-04T12:57:08Z",
  "image": "data:image/png;base64,iVBORw0KGgoAAA..." // 첨부된 이미지 데이터 (Base64 인코딩)
}
```

> [!NOTE]
> 구글 드라이브 동기화가 실행되면 구글 드라이브의 숨겨진 앱 전용 저장소(AppData Folder) 폴더에도 로컬과 동일한 파일명 및 JSON 데이터 포맷으로 저장 및 동기화됩니다.

---

## 🔑 구글 드라이브 API 설정 (OAuth 2.0)

양쪽 플랫폼에서 동기화 기능을 활성화하기 위해 Google Cloud Console에서 OAuth 2.0 자격 증명을 설정해야 합니다.

1. **Google Cloud Console 접속**:
   * [Google Cloud Console](https://console.cloud.google.com/)에 구글 계정으로 로그인합니다.
   * 새 프로젝트를 생성합니다 (예: `Memo-Bot`).

2. **Google Drive API 활성화**:
   * **API 및 서비스 > 라이브러리**로 이동합니다.
   * `Google Drive API`를 검색하고 **사용(Enable)** 버튼을 클릭합니다.

3. **OAuth 동의 화면 설정**:
   * **API 및 서비스 > OAuth 동의 화면**으로 이동합니다.
   * User Type을 **외부(External)**로 선택하고 생성을 누릅니다.
   * 필수 정보(앱 이름, 이메일 등)를 입력합니다.
   * **범위(Scopes)** 설정 단계에서 `.../auth/drive.appdata` 범위를 추가합니다 (구글 드라이브의 앱 전용 숨겨진 폴더 읽기/쓰기 권한).
   * **테스트 사용자 (Test Users)** 등록 단계에서 동기화 테스트에 사용할 본인의 구글 이메일을 반드시 추가합니다.

> [!IMPORTANT]
> OAuth 동의 화면의 퍼블리싱 상태가 **테스트(Testing)** 모드인 경우, 테스트 사용자로 이메일 계정이 등록되어 있어야만 구글 로그인이 정상 처리되고 차단 에러(403 access_denied)가 발생하지 않습니다.

4. **사용자 인증 정보(Credentials) 생성**:
   * **API 및 서비스 > 사용자 인증 정보**로 이동합니다.
   * **사용자 인증 정보 만들기 > OAuth 클라이언트 ID**를 클릭합니다.
   * 애플리케이션 유형을 **데스크톱 앱(Desktop App)**으로 선택하고 이름을 입력 후 생성합니다.
   * 생성된 클라이언트 ID의 JSON 파일을 다운로드합니다.

---

## 💻 데스크톱 앱 실행 및 배포 (Python)

### 1. 자격 증명 파일 배치
다운로드받은 클라이언트 비밀번호 JSON 파일을 `client_secrets.json`으로 이름을 변경하여 다음 경로에 저장합니다.
* **Windows**: `C:\Users\<사용자명>\.memobot\client_secrets.json`
* **macOS/Linux**: `~/.memobot/client_secrets.json`

### 2. 개발자 모드 로컬 실행
```bash
cd desktop
# 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 의존성 패키지 설치
pip install -e .

# 앱 실행
memobot
```

### 3. PyPI 배포용 빌드 및 업로드
패키지 청소, 빌드, 업로드를 일괄적으로 자동 처리해주는 배치 스크립트가 제공됩니다:
```bash
# Windows 환경에서 빌드 및 배포 배치파일 실행
./publish_pypi.bat
```
* 실행 시 기존 빌드 임시 파일들을 모두 초기화하고, `build` 및 `twine` 모듈을 자동으로 최신 설치/업그레이드한 후 빌드를 수행합니다.
* 빌드 완료 후 **[1] TestPyPI 업로드**, **[2] 공식 PyPI 업로드**, **[3] 업로드 없이 빌드만 수행** 중 하나를 선택해 진행할 수 있습니다.
* 배포 완료 시 사용자는 `pip install memobot` 명령어만으로 크로스 플랫폼(Windows, macOS, Linux) 환경에 설치하고 `memobot` 명령어로 즉시 앱을 실행할 수 있습니다.

### 4. PyPI 패키지 관리 방법 (설치, 업데이트, 삭제)

일반 사용자는 파이썬이 설치된 환경에서 아래의 pip 명령어를 사용해 패키지를 편리하게 관리할 수 있습니다.

* **설치 (Install)**:
  ```bash
  pip install memobot
  ```
* **실행 (Run)**:
  설치 후 터미널이나 명령 프롬프트에서 아래 명령을 실행하면 데스크톱 앱이 실행됩니다 (윈도우 환경에서는 검은색 콘솔창 없이 백그라운드용 앱으로 실행됩니다).
  ```bash
  memobot
  ```
* **최신 버전 업데이트 (Update)**:
  ```bash
  pip install --upgrade memobot
  ```
* **삭제 (Uninstall)**:
  ```bash
  pip uninstall memobot
  ```

---

## 📱 모바일 앱 실행 (Flutter Android)

### 1. Flutter 의존성 구성
```bash
cd mobile
flutter pub get
```

### 2. 안드로이드 플랫폼 설정
구글 로그인 연동을 위해 안드로이드 앱의 패키지명과 디버그 서명 키(SHA-1)를 Google Cloud Console의 동일 프로젝트에 등록해야 합니다.

1. **OAuth 클라이언트 ID 추가 생성**:
   * Google Cloud Console > 사용자 인증 정보 > OAuth 클라이언트 ID 생성.
   * 유형을 **Android**로 선택합니다.
   * 패키지 이름 입력 (예: `com.example.memobot`).
   * 개발용 SHA-1 지문 인증서를 입력합니다 (JDK의 `keytool`을 통해 조회 가능).
2. **서비스 파일 다운로드**:
   * 필요에 따라 Firebase와 결합하여 사용할 경우 `google-services.json`을 `mobile/android/app/` 아래에 배치할 수 있으나, 본 구현에서는 `google_sign_in` 패키지가 클라이언트 ID를 통해 직접 동작하므로 최소한의 설정만으로 작동 가능합니다.

### 3. 앱 실행
```bash
flutter run
```

---

## 💡 플랫폼별 참고 사항 (macOS / Android / Linux)

### 🍎 macOS (맥) 환경에서의 유의점
* **무설정 즉시 실행**: macOS에는 렌더링 백엔드인 Cocoa `WKWebView`가 OS 레벨에서 완벽하게 내장되어 있어, 추가적인 패키지 설치 없이 `pip install memobot` 후에 즉시 실행 가능합니다.
* **윈도우 전용 스타일 차이**: 작업 표시줄(Taskbar)에서 창 아이콘 숨기기, OS 네이티브 그림자 제거, 윈도우 스타일 강제 변경 등 Win32 API 및 DWM(Desktop Window Manager)을 직접 제어하는 일부 네이티브 최적화 기능은 윈도우에서만 작동하며, macOS에서는 `pywebview` 표준 창 형태로 렌더링됩니다.

### 🤖 Android (안드로이드) 환경에서의 유의점
* **구글 로그인 경고창 우회 (최초 1회)**: 구글 클라우드 콘솔의 OAuth 동의 화면이 [앱 게시 (In Production / 배포)] 상태이지만 아직 구글의 공식 브랜드 검수(Verification)를 완료하지 않았기 때문에, 최초 로그인 시 *"이 앱은 Google의 확인을 받지 않았습니다 (This app isn't verified)"* 경고창이 발생합니다. 이때 당황하지 마시고 **[고급 (Advanced)]** -> **[Memo-Bot(으)로 이동 (안전하지 않음)]**을 클릭하여 로그인을 완료해 주시면 됩니다. (배포 상태이므로 특정 테스트 사용자로 등록하지 않은 계정에서도 연동 및 사용이 가능합니다.)
* **동기화 주기**: 모바일 앱은 과도한 배터리 소모를 방지하기 위해 백그라운드 푸시 동기화를 지원하지 않습니다. 데스크톱에서 수정한 내용을 불러오고 싶을 때, 앱 메인 화면 상단에서 아래로 당겨서 새로고침(Pull to Refresh)하거나 동기화 버튼을 눌러 동적 동기화를 트리거할 수 있습니다.

### 🐧 Linux (리눅스) 환경에서의 유의점
* **웹 렌더러 패키지 설치 필수**: 리눅스 데스크톱 환경에서는 웹 창을 렌더링하기 위해 GTK WebKit2 라이브러리가 필요합니다. `pip` 설치 전 아래 OS 패키지를 먼저 설치해 주세요:
  ```bash
  # Ubuntu / Debian 계열
  sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0 gir1.2-webkit2-4.1
  ```

---

## 🔄 동기화 및 충돌 방지 세부 설계

* **Tombstoning (소프트 삭제)**: 사용자가 앱 내에서 메모를 삭제하면 파일이 즉시 영구 삭제되지 않고 내부 필드가 `is_deleted: true`로 갱신됩니다. 이는 다른 디바이스가 동기화 시점에 해당 메모를 로컬에서도 똑같이 지워주도록 유도하며, 완벽한 삭제 전파를 제공합니다.
* **Last-Write-Wins (최종 쓰기 우선)**: 오프라인 수정을 포함하여 서로 다른 기기에서 같은 포스트잇을 수정한 경우, JSON 내부의 `updated_at` 타임스탬프를 기준으로 더 늦게 편집된 최종 데이터를 기준으로 덮어씁니다.

---

## 🚀 업데이트 내역 (Changelog)

### v1.5.29 (2026-07-11)
- **버로우 도트 툴팁(제목) 스마트 배치 및 화면 잘림 방지 (Clamping) 구현**:
  - 도트가 화면 아래쪽(모니터 하단 절반 영역)에 있을 경우, 툴팁이 도트 위(상단)로 스마트하게 정렬하여 작업 표시줄이나 화면 아래에 가려지지 않도록 개선했습니다.
  - 도트가 화면 위쪽 절반 영역에 있을 때 툴팁이 아래로 내려오는 기존 동작은 정확히 유지됩니다.
  - 도트가 화면 왼쪽이나 오른쪽 극단 모서리에 붙어 있을 때 툴팁 일부가 화면 밖으로 잘려서 렌더링되던 현상을 방지하기 위해, 모니터 가로 영역(좌우 마진 6px) 기준으로 자동 clamp 하도록 보정했습니다. (멀티 모니터 완벽 지원)

### v1.5.28 (2026-07-11)
- **Tcl/Tk 다중 스레드 기동 배제 및 단일 Tk 스레드 아키텍처(Toplevel) 도입으로 Tcl_AsyncDelete 원천 해결**:
  - 메모를 버로우할 때마다 개별 데몬 스레드에서 `tk.Tk()`를 동적으로 기동 및 소멸시키던 구조를 완전 폐기하고, 프로세스 내에 오직 단 하나의 **글로벌 Tk 루트 스레드**만 상시 유지하는 구조로 리팩토링했습니다.
  - 개별 버로우 도트들은 단일 Tk 루트에 귀속되는 `tk.Toplevel` 윈도우로 생성되며, 윈도우 생성/소멸 등의 모든 UI 작업이 메인 Tk thread에 안전하게 대리 처리(Marshalling)됩니다.
  - 이로써 다중 스레드에서 Tcl 인터프리터가 생성 및 파괴를 교차 경합하며 발생시키던 `Tcl_AsyncDelete` Wrong Thread 크래시 문제를 **근본적으로 100% 원천 해결**했습니다.

### v1.5.27 (2026-07-11)
- **가비지 컬렉터(GC)에 의한 Tcl/Tk 비동기 자원 파괴 크래시 영구 해결**:
  - 메모를 언버로우한 직후 pywebview 창을 드래그해서 움직이는 과정에서 가비지 컬렉션(GC)이 트리거되어 `Tcl_AsyncDelete` 크래시를 유발하는 문제를 완벽히 차단했습니다.
  - Tkinter 초기화 시 `NoDefaultRoot()`를 선언해 전역 루트 등록을 우회하고, 파괴 완료 시 `tk._default_root = None` 처리를 통해 Tcl 전역 찌꺼기 레퍼런스를 명시적 해제했습니다.
  - `BurrowDotWindow` 클래스에 오버라이드된 소멸자(`__del__`)를 선언하여 가비지 컬렉터 스레드가 백그라운드에서 임의로 Tcl 인터프리터를 건드려 폭발하는 문제를 완전히 종결했습니다.

### v1.5.26 (2026-07-11)
- **버로우 연속 생성-소멸 다중 스레드 경쟁 크래시 (Tcl_AsyncDelete) 영구 해결**:
  - 이전 도트 창이 파괴(`root.destroy()`)되는 시점과 새로운 도트 창이 활성화되어 생성되는 시점 사이에 비동기 스레드 간섭이 일어나던 Tcl/Tk 멀티스레드 자원 경쟁을 완벽히 격리했습니다.
  - Tkinter 종료 이벤트를 통제하는 `destroyed_event` 스레드 이벤트를 도입하여, 이전 윈도우 인스턴스가 완전히 100% 해제되어 소멸 스레드가 끝난 후에만 pywebview 복구 및 다음 버로우 기동 프로세스가 순차 진행되도록 엄격히 통제했습니다.
  - 이로써 아주 빠르게 언버로우와 버로우를 연속 반복할 때 발생하던 임의의 프로그램 다운 현상을 근본적으로 원천 차단했습니다.

### v1.5.25 (2026-07-11)
- **Tkinter 버로우 창 스레드 충돌 및 드래그 릴리즈 크래시 최종 해결**:
  - 마우스 드래그가 없는 단순 클릭 릴리즈(`release` 콜백) 시에도 `root.destroy()`를 직접 기동하여 발생하던 Tcl/Tk 스레드 경합 문제를 완전히 차단했습니다.
  - 마우스 릴리즈 콜백 내부에서도 직접 파괴하지 않고 상태 플래그(`_close_requested`)만 설정하도록 변경하여, 소멸 처리가 항상 단일 Tkinter 메인 루프 스택 하단에서 실행되도록 일원화했습니다.
  - 이로써 이동, 클릭, 복원, 연속 버로우 동작 시 발생하던 모든 비정상 다운 현상을 완벽히 종결했습니다.

### v1.5.24 (2026-07-11)
- **Tkinter 버로우 창 스레드 충돌 핫픽스 (Tcl_AsyncDelete 해결)**:
  - 데스크톱 사용 도중 특정 상황에서 `Tcl_AsyncDelete: async handler deleted by the wrong thread` 에러가 발생하며 비정상적으로 다운되는 현상을 해결했습니다.
  - Tkinter 메인 윈도우 스레드가 아닌 외부 스레드(pywebview API)에서 `root.destroy()`나 `root.after()`를 직접 호출하지 않도록, `_close_requested` 상태 플래그 기반의 폴링(Polling) 루프를 구축해 스레드 안전하게 파괴하도록 리팩토링했습니다.

### v1.5.23 (2026-07-10)
- **로컬 패키지 버전 충돌 방지 핫픽스**:
  - 사용자 PC의 글로벌 파이썬 `site-packages`에 구버전 `memobot` 패키지가 이미 전역 설치되어 있는 경우, 대시보드의 버전 뱃지가 로컬 소스코드가 아닌 구버전(`1.5.17`)으로 고정 노출되는 Shadowing 현상을 수정했습니다.
  - 백엔드 버전 반환 API가 로컬의 `__init__.py` 파일을 먼저 탐색 및 직접 파싱하도록 참조 순서를 보완했습니다.

### v1.5.21 (2026-07-10)
- **외부 패키지(pywin32) 종속성 제거 및 런타임 에러 핫픽스**:
  - 패키징(Memo-Bot.exe) 빌드 실행 시 `ModuleNotFoundError: No module named 'win32event'`가 발생하는 문제를 해결했습니다.
  - 중복 실행 감지용 Win32 Named Mutex 로직을 외부 모듈 `win32event`/`win32api` 대신 파이썬 표준 라이브러리인 `ctypes` 기반 호출로 대체 구현하여 배포 안정성을 확보하고 불필요한 의존성을 제거했습니다.

### v1.5.20 (2026-07-10)
- **독립 Python tkinter 기반 버로우(Burrow) 기능 도입**:
  - 메모를 화면에서 아주 작은 크기로 축소하는 버로우 기능 개선. pywebview 윈도우 한계를 극복하고 독립적인 초경량 투명 tkinter 닷(dot) 윈도우를 백엔드 스레드에서 기동합니다.
  - 버로우 닷의 디자인(모양: ●원, ◆마름모, ■정사각형)과 크기(4단계 조절)를 환경설정에서 자유롭게 선택 가능합니다.
  - 마우스를 도트 위에 얹으면 메모 제목이 툴팁으로 즉시 나타나고, 마우스 이탈 시 즉시 자연스럽게 툴팁이 닫힙니다.
  - 버로우 상태에서 도트를 드래그하여 임의의 위치 및 멀티 모니터로 이동하면 해당 최종 좌표를 실시간으로 저장하여, 앱 종료 후 다시 켰을 때도 해당 모니터의 정확한 위치에 그대로 복원됩니다.
  - 앱 시작 시 버로우된 메모는 pywebview 창을 화면 밖 격리 구역(`-20000, -20000`)에 숨김 생성하여 브라우저 강제 노출이나 윈도우 겹침 등의 오작동을 원천 차단했습니다.

### v1.5.19 (2026-07-09)
- **접힌 메모 가로/세로 3단계 크기 조절 기능 추가**:
  - 메모 매니저(대시보드) 창의 상단 컨트롤에 **세로 높이 조절(`card-height-btn`)** 및 **가로 폭 조절(`card-width-btn`)** 버튼을 추가하여, 총 9가지 조합의 크기 세팅을 개별 설정할 수 있습니다.
  - 가로 폭은 220px / 340px / 460px로, 세로 높이는 38px / 68px / 105px로 토글 순환되며, 설정은 브라우저 `localStorage`에 자동 보관됩니다.
  - 2단계(Medium) 및 3단계(Tall) 높이 모드에서는 메모 수정일자와 본문 요약 프리뷰(2~4줄) 및 등록된 해시태그 배지들이 동적으로 자동 노출됩니다.
- **그룹 메모 삭제 시 대시보드 및 그룹 창 실시간 연동**:
  - 그룹에 소속된 메모를 삭제할 경우, 해당 메모 스티커가 닫히는 동시에 **대시보드와 그룹 폴더 창에서도 즉시 실시간 삭제 반영**됩니다.
  - 그룹 내에 남은 메모가 존재하지 않으면, 빈 그룹 창이 공중에 남는 대신 **해당 그룹 창이 자동으로 즉시 종료**됩니다.
- **모바일/데스크톱 릴리즈 버전 통합 동기화 (1.5.19+31)**:
  - 데스크톱 패키지 버전(`1.5.19`)과 모바일 플러터 앱 버전(`1.5.19+31`)을 동기화했습니다.

### v1.5.18 (2026-07-09)
- **그룹 기능 고도화**:
  - 그룹 폴더 창 내에서 즉시 새로운 메모를 생성하여 소속시킬 수 있는 **[+] 버튼**을 헤더에 추가했습니다.
  - 그룹 내부 메모 리스트(패널 및 팬아웃 프리뷰)에서 제목이 지정된 메모의 경우, **굵은 글씨의 제목**과 본문 요약이 병렬 표시되도록 시각적으로 개선했습니다.
  - 이미 그룹에 소속된 메모를 해당 그룹으로 다시 드래그했을 때 중복 추가를 방지하고 경고 창과 에러음을 띄우며, 해당 메모를 최상단 핀 고정(Pin) 처리합니다.
  - 드래그 동작이 종료될 때 윈도우 항상 위 속성이 꼬이지 않도록 **Z-Order 복원 기능(Win32 API)**을 적용했습니다.
- **메모 UI 및 동작 개선**:
  - 메모 매니저(대시보드)에서 접힌 상태의 메모는 내용 대신 굵은 제목만 깔끔하게 표시되도록 개선했습니다.
  - 매니저의 그룹 표시를 심플한 폴더 아이콘으로 변경하고, 마우스 오버 시 툴팁으로 그룹명을 띄워주도록 수정했습니다.
  - 그룹창에 메모를 드래그 앤 드롭으로 추가할 때, 이미 추가된 메모라면 중복 추가 확인창을 띄우는 대신 해당 위치에서 바로 최상단 고정(Pin) 상태로 전환되어 시인성을 높였습니다.
  - 그룹 추가 확인창에서 불필요하게 반복되던 "메모가 겹쳐졌습니다." 문구를 깔끔하게 제거했습니다.
- **다중 모니터 대응 강화**:
  - 다중 모니터 해제 등으로 인해 메모가 화면 밖의 좌표에서 열리는 현상을 방지하기 위해, 메모 로드 시 연결된 모니터 영역을 체크하여 자동으로 안전한 화면 중앙으로 끌고 오도록 좌표 자동 보정 기능을 추가했습니다.
- **모바일/데스크톱 릴리즈 버전 통합 동기화 (1.5.18+30)**:
  - 데스크톱 패키지 버전(`1.5.18`)과 모바일 플러터 앱 버전(`1.5.18+30`)을 동기화했습니다.


### v1.5.17 (2026-07-03)
- **트레이 아이콘 단축키 설정 메뉴 보강**:
  - 시스템 트레이 메뉴의 "단축키 설정" 서브 메뉴에서 누락되었던 퀵메мо 캡처 HUD(`capture`) 및 퀵 OCR 메모 스캔(`ocr_capture`) 단축키 On/Off 토글 제어 항목을 추가했습니다.
- **모바일/데스크톱 릴리즈 버전 통합 동기화 (1.5.17+29)**:
  - 데스크톱 패키지 버전(`1.5.17`)과 모바일 플러터 앱 버전(`1.5.17+29`)을 동기화했습니다.

### v1.5.16 (2026-07-03)
- **Named Mutex 기반 싱글 인스턴스 락(Single Instance Guard) 탑재**:
  - 중복 기동 시 기존 메모봇 프로세스의 단축키 충돌이 발생하는 문제를 완벽하게 예방하기 위해, Named Mutex 기반 싱글 인스턴스 락을 Windows 환경에 신설했습니다.
  - 중복 기동 시 이미 열려 있는 기존 메모봇 매니저 화면을 자동으로 바탕화면 앞으로 복원(SetForegroundWindow)해 주고 새로 실행한 프로세스는 안전하게 자동 종료합니다.
- **모바일/데스크톱 릴리즈 버전 통합 동기화 (1.5.16+28)**:
  - 데스크톱 패키지 버전(`1.5.16`)과 모바일 플러터 앱 버전(`1.5.16+28`)을 일관되게 동기화했습니다.

### v1.5.15 (2026-07-03)
- **스마트 OCR 자동 번역 및 실시간 다국어 번역 시스템 추가**:
  - **OCR 후 자동 번역**: 대시보드 설정창에 `스마트 OCR 자동 번역 설정` 영역을 추가하여 OCR 캡처 직후 영/한, 일/한 등 타겟 언어로 실시간 기계 번역된 텍스트가 원본 아래에 자동 덧붙여 기입되도록 구현했습니다.
  - **메모장 실시간 번역 단축 버튼**: 개별 포스트잇 헤더에 번역 단축 버튼을 추가하여, 드래그 선택 영역 또는 메모장 전체 본문을 번역할 수 있는 미려한 반투명 번역 결과 모달 레이어를 탑재했습니다.
  - **번역 모달 피드백 액션**: 모달 내에서 번역 결과를 한 번에 복사(`복사`)하거나, 본문 맨 아래에 저장(`메모에 추가`)하는 고생산성 버튼을 지원합니다.
  - **무제한 초경량 번역 엔진**: 별도의 유료 API 키 없이도 동작하는 우회 구글 번역 모듈을 파이썬 내장 라이브러리 만으로 구현하여 가볍고 빠른 동작을 달성했습니다.
- **모바일/데스크톱 릴리즈 버전 통합 동기화 (1.5.15+27)**:
  - 데스크톱 패키지 버전(`1.5.15`)과 모바일 플러터 앱 버전(`1.5.15+27`)을 동시에 상향 및 동기화했습니다.

### v1.5.14 (2026-07-02)
- **OCR 연속 화면 스크롤 및 완료 방식 고도화**:
  - 마우스를 드래그하여 최하단 경계선에 가져다 대면 자동으로 화면 스크롤 다운을 실행하고 연속 캡처 레이어가 활성화되는 연속 캡처 기법을 장착했습니다.
  - 화면 상단/중단에서 마우스 버튼을 놓으면 스크롤 없이 단발 캡처로 종료되며, 빈 곳 클릭 또는 `Escape` 키 입력 시 즉각 캡처 모드가 마쳐지고 결과 메모가 생성되는 안전장치를 설계했습니다.
  - OCR 디코딩 프로세스를 비동기 백그라운드로 스레드 분리하여 렉 현상을 원천 방어했습니다.
- **모바일 및 데스크톱 버전업 연동 (1.5.14+26)**:
  - 모바일 앱의 릴리즈 코드를 빌드 번호 `26`으로 정렬하여 버전 싱크를 조정했습니다.

### v1.5.13 (2026-07-02)
- **글로벌 단축키(핫키) Win32 바인딩 안전성 개선**:
  - Win32 환경에서 백그라운드 핫키 스레드 시작 시, OS 메시지 큐(Message Queue)가 없어 글로벌 핫키 등록(`RegisterHotKey`)이 에러를 뱉는 버그를 강제 PeekMessage 예비 호출 기법으로 해결했습니다. 단축키 바인딩 안정성을 100%로 확보했습니다.
- **PyPI 배포(pypi_upload.bat) 스크립트 개선**:
  - 버전 일괄 관리 안정성을 위해 `pyproject.toml`에도 최신 버전을 동기화했습니다.
  - 빌드 시 기존 캐시가 꼬여 구버전으로 패키징되는 문제를 원천 차단하기 위해 `src/memobot.egg-info` 폴더를 포함하여 완벽하게 리셋하도록 클린업 기능을 보강했습니다.

### v1.5.12 (2026-07-02)
- **메모 제목 설정 및 동적 접기/펴기 리사이징 구현**:
  - 포스트잇 헤더 우클릭 시 메모 제목을 직접 지정할 수 있는 입력 모달 기능을 추가했습니다. (미지정 시 첫 줄 자동 적용)
  - 뷰 모드(포커스 해제)에서 헤더 액션 버튼들을 `display: none`으로 제거하여, 제목이 넓은 공간을 온전히 활용해 한눈에 끝까지 쫙 보이고 깔끔하게 가운데 정렬되도록 레이아웃을 개선했습니다.
  - 메모를 접을 때 설정된 글자수 범위 내에서 실제 제목의 길이에 맞춰 가장 콤팩트한 최적의 폭으로 접히도록 동적 리사이즈를 적용했습니다.
  - 접혀 있는 메모를 다시 펼치거나 더블클릭으로 해제할 때, 접기 전에 임의로 조절해 두었던 원래의 펴진 가로 크기로 안전하게 원복해 줍니다.
  - 설정 화면에 "메모 제목 표시 글자수" 설정을 추가하여, 제목 최대 한도에 맞춰 접힌 메모 가로 폭을 실시간으로 제어할 수 있도록 동기화 전파 기능을 결합했습니다.

### v1.5.11 (2026-07-01)
- **포스트잇 편집 모드 진입 시 빈 줄 움찔거림 증상 수정**: 마크다운 문단 마진으로 인해 읽기 모드와 편집 모드(textarea) 간 빈 줄의 높이가 불일치하여 화면이 움찔거리던 레이아웃 튐 증상을 수정하여 모드 전환을 부드럽게 개선했습니다.

### v1.5.10 (2026-06-29)
- **메모봇 실행 시 매니저 실행 버그 수정**: 수동으로 메모봇을 직접 실행할 때도 "메모봇 실행 시 매니저 실행" 옵션이 켜져 있으면 매니저(대시보드) 창이 정상적으로 표시되도록 수정했습니다.

### v1.5.9 (2026-06-29)
- **기본 설정 및 문구 개선**: 설정 화면의 문구를 "메모봇 실행 시 매니저 실행"으로 수정하여 보다 명확하게 변경했습니다.
- **최초 실행 시 자동 최적화**: 앱 첫 실행 시 "OS 시작 시 자동 실행" 및 "메모봇 실행 시 매니저 실행" 옵션이 기본값으로 활성화되도록 개선했습니다.

### v1.5.8 (2026-06-29)
- **윈도 시작 시 매니저 창 자동 실행 옵션 추가**: 설정 화면에서 Windows 부팅 시 메모 관리자 창을 자동으로 열거나 백그라운드 트레이로만 실행할지 선택할 수 있는 체크박스 설정을 추가했습니다.
- **트레이 아이콘 컨텍스트 메뉴 개선**: 트레이 메뉴 최상단에 "설정" 메뉴를 추가하고 바로 아래 구분선(Separator)을 배치하여 설정 창 진입이 훨씬 수월해졌습니다.
- **다국어 현지화**: 새 설정에 대해 7개 언어(한국어, 영어, 일본어, 중국어, 러시아어, 프랑스어, 이탈리아어) 번역을 모두 구현했습니다.

### v1.5.7 (2026-06-27)
- **해시태그 버튼 무반응 세부 디버깅**: 해시태그 목록 팝업의 초기화 상태, 버튼 쿼리 여부, 로드 에러(Try-Catch 내 예외)를 파이썬 터미널 로그로 실시간 전송하는 상세 JS 디버깅 로깅을 구현했습니다.

### v1.5.6 (2026-06-27)
- **해시태그 버튼 무반응 오류 수정 (캐시 방지)**: WebView2 브라우저 캐시로 인해 해시태그 추가 이벤트 리스너가 반영되지 않던 현상을 해결하기 위해 `note.html`에 캐시 버스팅 파라미터(`note.js?v=155`)를 도입했습니다.

### v1.5.5 (2026-06-27)
- **해시태그 퀵 선택 기능 구현**: 포스트잇 하단 스케줄(스캐즐) 버튼 옆에 `#` 버튼을 신설하여, 기존 메모들에 등록된 모든 해시태그 목록을 한눈에 보고 다중 선택하여 현재 메모 본문에 즉시 등록/해제할 수 있도록 지원합니다.

### v1.5.4 (2026-06-27)
- **오프라인 환경 리소스 내장화 (CDN 의존성 제거)**: 인터넷 연결이 차단된 환경에서도 UI 아이콘과 폰트가 완벽하게 노출되도록 FontAwesome 6.4.0 및 Google Fonts(Inter, Outfit, Noto Sans KR/JP/SC), Vis.js 그래프 라이브러리, Highlight.js 테마 CSS를 로컬 패키지(`ui/libs`)에 내장했습니다.
- `@font-face` 로컬 웹폰트 매핑을 추가하고 모든 HTML 템플릿의 외부 CDN `<link>` 참조를 패키지 내 상대 경로로 수정하여 완전한 오프라인 독립 실행을 지원합니다.

### v1.5.3 (2026-06-27)
- 멀티모니터 환경 메모 드래그 및 복원 오류 수정 (마우스 어긋남 및 화면 이탈 현상 해결)

### v1.5.2 (2026-06-27)
- **퀵메모 스크린샷 캡쳐 붙여넣기 다운 현상 수정**: 대용량 Base64 이미지 전송 시 발생하는 WebView2/WPF IPC 크래시를 방지하기 위해, 클립보드 이미지 감지 시 JS에서 플래그만 전송하고 Python 백엔드(`PIL.ImageGrab`)에서 직접 클립보드 데이터를 긁어와 저장하도록 구조를 최적화했습니다.
- **설정 포커스 툴팁 버그 수정**: WebView2 최초 로드 시 첫 번째 요소 포커스로 인해 네이티브 툴팁이 화면에 고정되는 문제를 `app.js`에서 100ms 지연 후 `blur()` 및 `focus()` 처리와 헤더 버튼들의 `tabindex="-1"` 설정으로 완벽하게 해결했습니다.
- **스레드-세이프 창 소멸 적용**: 백그라운드 스레드에서 직접 `window.destroy()`를 호출할 때 발생하는 접근성 충돌 크래시 문제를 방지하기 위해 Win32 `PostMessageW(hwnd, WM_CLOSE, 0, 0)` 메시지 송신 방식으로 창을 닫도록 개선했습니다.
- **단축키 재등록 락 현상 해결**: 설정 창에서 핫키(단축키) 변경 시 빠른 속도로 중복 등록이 수행되는 문제를 방지하기 위해 Unregister 후 적절한 지연(0.05초)을 두어 교착 상태를 예방했습니다.
- **퀵메모 UX 개선**: 퀵메모 창에 포커스가 있는 상태에서 `ESC` 키를 누르면 창이 닫히도록 하고, 메모 작성 후 `Enter` 키를 누르면 메모가 생성됨과 동시에 퀵메모 창이 즉시 닫히도록 개선했습니다.

### v1.5.1 (2026-06-26)
- **그룹 폴더 창 상단 고정(Pin) 기능 추가**: 그룹 폴더 창 타이틀바에 핀 버튼을 추가하여 항상 위(Always on Top)로 고정할 수 있습니다. 고정 시 핀 색상이 빨간색으로 표시됩니다.
- **그룹 폴더 창 배경색 적용**: 투명도 미지원 환경에서 회색 대신 깔끔한 다크 네이비(#1a1a2e) 배경이 표시됩니다.
- **매니저 창 더블클릭 동작 복원**: 매니저 창에서 접힌 메모를 더블클릭하면 펼친 메모 상태로 전환되고, 싱글클릭은 메모 위치로 이동하는 기존 UX로 복원했습니다.
- **64비트 상단 고정 버그 수정**: 64비트 Windows에서 `SetWindowPos` ctypes 호출 시 `argtypes`/`restype` 미선언으로 포인터 값이 잘려 상단 고정이 무효화되던 문제를 수정했습니다.
- **전역 단축키 등록 오류 무시**: 이미 등록된 단축키 충돌 시 앱 시작이 중단되지 않도록 예외 처리를 강화했습니다.

### v1.5.0 (2026-06-26)
- **마그넷 도킹/그룹화 기능 완성**: 모니터 가장자리에서 2개 이상의 메모를 겹쳐 그룹으로 관리할 수 있습니다.
- **세로 방향 전개**: 상/하/좌/우 어디에 도킹하든 메모 목록이 읽기 편한 세로(아래쪽) 방향으로 부드럽게 펼쳐집니다.
- **첫 번째 메모 접근성 개선**: 그룹을 펼쳤을 때 첫 번째 메모(리더) 창이 확장되어 그룹명과 메모 제목이 모두 표시되며, 개별 클릭으로 언도킹할 수 있습니다.
- **자체 커스텀 모달 적용**: 그룹명 지정 시 화면 가장자리에서 기본 팝업이 잘리거나 인코딩이 깨지던 현상을 자체 제작 HTML 모달로 완벽히 해결했습니다.
- **DPI 드래그 오차 수정**: 윈도우 디스플레이 배율(125%, 150% 등) 환경에서 메모 이동 시 마우스 포인터와 창 사이의 거리가 멀어지던 문제를 수정했습니다.

### v1.4.9 (2026-06-26)
* **데스크탑 앱 배포 스크립트 수정**: 릴리즈 시 이전 버전 실행파일이 함께 업로드되는 문제 수정.
* **편집 모드 진입 UX 개선**: 바탕화면 메모 편집 모드 진입을 기본 "원클릭"으로 변경.
* **UI 레이아웃 안정성 강화**:
  - 메모 뷰 모드와 편집 모드 전환 시 발생하던 미세한 화면 꿀렁거림(Layout Shift) 현상 제거.
  - 바탕화면 메모 크기 조절 시 메니저 창이 불필요하게 흔들리며 리렌더링되는 성능 문제 해결 (순수 위치/크기 조절 시에는 동기화 신호 제외 및 최종 수정시간 미갱신).
  - 메니저 창 내 접힌 메모 목록에서 '바탕화면에서 스티커 열기' 아이콘이 네이티브 크기 조절 핸들에 가려져 클릭할 수 없던 문제 수정.

### v1.4.0 (2026-06-21)
* **안드로이드 카메라 & STT 메모 위젯 추가**:
  - 스마트폰 바탕화면에서 즉시 메모를 작성할 수 있는 듀얼 버튼(카메라/음성) 네이티브 위젯을 출시했습니다.
  - 위젯에서 카메라 아이콘을 누르면 앱이 즉시 카메라를 열고 촬영된 사진을 포함하는 새로운 폴라로이드 스타일 메모를 엽니다.
  - 위젯에서 마이크(STT) 아이콘을 누르면 `#음성메모` 태그가 달린 새 메모가 열리며 즉시 음성을 텍스트로 받아 적을 수 있습니다.

### v1.3.40 (2026-06-15)
* **모바일 및 데스크톱 인라인 이미지 호환성 구현**:
  - 데스크톱에 적용된 인라인 이미지 구문(`@[[이미지]]`)을 모바일 앱에서도 동일하게 지원합니다.
  - 모바일 목록 카드의 본문 내에 이미지가 포함된 경우 텍스트 영역 내에 `WidgetSpan`을 사용해 인라인으로 렌더링하고, 에디터에서 이미지 첨부 시 `@[[이미지]]` 태그를 커서 영역에 자동으로 삽입합니다.
  - 이미지 삭제 시 본문 내 `@[[이미지]]` 태그가 자동으로 함께 정리되도록 개선하였습니다.
  - 외부 공유 수신 시 이미지 메모에 `@[[이미지]]` 태그를 기본 삽입하도록 연동했습니다.
* **단축키 커스텀 설정 및 중복 방지 기능 완성**:
  - 설정 화면에서 단축키를 실시간으로 지정 및 변경 가능하며, 중복 단축키 입력을 차단하는 기능을 탑재했습니다.
  - 단축키 안내 창 및 매니저 팝업 가이드에 변경된 사용자 단축키 정보가 실시간으로 동적 연동되도록 완료했습니다.
  - 대시보드의 태그 필터 "전체" 버튼 미동작 오류 및 항상위 툴팁 겹침 현상을 해결하고 설정창의 높이를 860px로 확대하여 사용성을 증대했습니다.

### v1.3.39 (2026-06-14)
* **단축키 매니저 동적 연동 및 다국어 갱신**:
  - 단축키 및 본문 이미지 삽입 안내 창을 다국어로 추가 갱신하고 단축키 매니저 크기를 확대하였습니다.

* **버전 변경 시 단축키 팝업 자동 리셋**:
  - 앱 버전이 변경되면 7일 비표시 설정을 무시하고 단축키 안내 팝업이 무조건 표시되도록 개선했습니다.
  - `localStorage`에 마지막으로 팝업이 표시된 버전을 저장하여 버전 변경 여부를 감지합니다.
  - Python API `get_app_version()`을 추가하여 JS에서 현재 앱 버전을 조회할 수 있도록 했습니다.

### v1.3.37 (2026-06-14)
* **단축키 팝업 복구, 매니저 창 배치 및 높이 최적화, 새 메모 팝업 위치 개선**:
  - 대시보드와 분리되어 독립적으로 뜨던 단축키 안내 팝업창을 다시 매니저 창 내부의 모달 팝업 레이아웃으로 변경했습니다.
  - 매니저 대시보드 창의 기본 높이를 600px에서 750px로 충분히 높여 내부 팝업창이 내용을 많이 가리지 않도록 사용성을 개선했습니다.
  - 매니저 창이 실행될 때 화면의 정중앙에 뜨도록 배치 좌표 계산을 연동했습니다.
  - 새 메모를 추가하거나 생성할 때 화면 중앙이 아닌 화면의 우측 영역(가장자리 방향) 중앙에 팝업되도록 자동 배치 좌표를 개선하여 화면 가림을 최소화했습니다.

### v1.3.36 (2026-06-14)
* **모바일 버전 메모 편집기 툴바 오버플로우 문제 해결 및 버전 표시 동기화**:
  - 모바일 기기(Android 에뮬레이터 등)에서 메모 편집 창(`_NoteEditorSheet`)을 열었을 때 상단 툴바가 가로로 넘쳐 `RIGHT OVERFLOWED BY 40 PIXELS` 레이아웃 오류가 발생하던 문제를 수정했습니다.
  - 기존 단일 행 구성을 **'테마 색상 선택 행'**과 **'액션 버튼 행'**의 2단 레이아웃으로 분리했습니다.
  - 모든 액션 아이콘 버튼(저장 체크 버튼 포함)에 `visualDensity: VisualDensity.compact`, `constraints: BoxConstraints()`, `padding: EdgeInsets.all(6)` 속성을 균일하게 적용하여 모바일 기기 가로 해상도(320dp 이상)에서 오버플로우 없이 렌더링되도록 수정했습니다.
  - 모바일 버전 헤더의 버전 표시를 하드코딩된 `V1.2`에서 빌드 버전인 `V1.3.36`으로 동기화했습니다.

### v1.3.35 (2026-06-11)
* **입력 플러그인 파일 선택 모달 및 매니저 접힘/펼침 그룹 정렬 수정**:
  - Windows 환경의 설정 창에서 "입력 플러그인 설정" 시, 폴더 버튼을 눌러도 파일 선택 모달창(create_file_dialog)이 뜨지 않고 invalid file filter (*.py) 에러가 발생하던 PyWebView 버그 수정.
  - 관리자 대시보드 창에 접힌 메모와 펼친 메모를 구획하여 깔끔하게 정리해주는 "그룹 정렬 레이아웃 모드" 버튼 및 지속 설정 상태 연동 추가.

### v1.3.34 (2026-06-11)
* **단축키 및 본문 액션 고도화 & 관리자 레이아웃 버그 수정**:
  - Windows 환경에서 언제 어디서든 새 메모를 추가할 수 있는 전역 단축키(`Ctrl+N`) 구현 (설정 화면에서 개별 단축키 활성화 여부 실시간 연동).
  - 메모 창 헤더 좌측에 새 메모를 마우스 클릭으로 바로 열 수 있는 `+` 아이콘 추가.
  - 메모 본문 우측 상단에 메모 전체 내용을 클립보드로 복사하는 플로팅 복사 버튼 추가 (선택 색상 테마에 맞춰 투명도와 회색 색감이 조화롭게 자동 보정되며, 복사 성공 시 시각 피드백으로 체크 아이콘(`✓`) 일시 표시).
  - 기본 예제 플러그인 3종(`datetime_plugin`, `meeting_minutes_plugin`, `book_search_plugin`)에 메모봇 설정 언어(한국어, 영어, 일본어, 중국어)를 동적으로 감지하여 표시하는 다국어 지원 설계 적용.
  - 관리자 창에서 탭을 전환했다가 로컬 메모 탭으로 되돌아올 때 Grid 바둑판 정렬 레이아웃이 깨지고 일렬로 포개지던 CSS/JS display 초기화 버그 해결.

### v1.3.33 (2026-06-11)
* **플러그인 폴더 격리 및 기능 고도화**:
  - 플러그인 저장 폴더를 실행 파일 경로 기준의 `plugins` 폴더로 고정.
  - 설정 메뉴(Settings)에서는 최대 5개의 플러그인을 슬롯에 지정(등록)할 수 있도록 제한 유지.
  - 메모 창의 플러그인 메뉴(Popover) 및 인라인 키워드 단축 커맨드(`//triggerName//`) 입력 시, `plugins` 폴더 내에 위치한 모든 플러그인을 동적으로 감지하여 사용할 수 있도록 개선.
  - 슬롯 등록 시 외부 경로 파일을 선택하면 자동으로 `plugins` 폴더로 복사 및 파일명 기반으로 등록되도록 개선.

### v1.3.32 (2026-06-11)
* **입력 플러그인(Input Plugin) 시스템 탑재**:
  - Python 클래스 기반의 플러그인 동적 로더 및 실시간 핫리로드 기능 구현.
  - 단순 텍스트 삽입/가공형(`text`), 대화형 입력 마법사 폼(`form`), 실시간 외부 API 도서 검색(`search`)의 3가지 핵심 플러그인 스키마와 기본 샘플 플러그인 3종 배포.
  - 메모 에디터 내에서 `//triggerName//` 인라인 입력을 통해 플러그인을 단축 호출하는 실시간 감지 기능 구현.
  - 플러그인 서식 삽입 시 `{{placeholder}}` 탭 이동 및 블록 지정 지원 (Tab-stop Placeholder Navigation).

### v1.3.31 (2026-06-11)
* **모바일 및 데스크톱 10색 테마 컬러 팔레트 동시 확장**:
  - 기존 5색에서 주황(Orange), 민트(Teal), 장미(Rose), 라벤더(Lavender), 회색(Gray)의 5가지 세련된 파스텔 톤 색상을 추가하여 총 10가지 색상을 지원하도록 데스크톱과 모바일 앱(Flutter)을 동시 갱신했습니다.
  - **데스크톱 색상 선택 UI 간소화**: 가로로 5개 나열되던 색상 버튼들을 1개의 파레트 아이콘 버튼으로 축소하고, 클릭 시 10색의 컬러칩이 바둑판 배열로 깔끔하게 열리는 팝오버(Popover) 드롭다운 창을 구현했습니다.
  - **모바일 앱(Flutter) 호환성 및 테스트 안정화**: 모바일에서도 10색이 가로 스크롤로 선택 가능하며, Flutter Analyzer 및 기존 widget_test.dart 소스 내의 빌드 에러를 완벽히 해소했습니다.
* **엣지탭 겹침 현상 정밀 제어 및 핸들 감지 예외 처리**:
  - Windows의 DWM 그림자 마진 또는 보이지 않는 테두리 픽셀 오차로 인해 발생하던 엣지탭(Edge Tab)의 상하/좌우 미세 겹침 버그를 4px의 물리적 정렬 간격 버퍼(`spacing = 4`)를 적용하여 완벽하게 해소했습니다.
  - 크기 조절이나 고정 기능을 누르지 않고 즉각 엣지탭을 사용할 경우에도 윈도우 핸들(`hwnd`)이 즉각 해상화(Resolution)되어 오차 없이 스냅되도록 백엔드 안전 장치를 병합했습니다.
* **메모 가로폭 크기 조절 일관성 통일**:
  - 메모를 접었을 때와 폈을 때 조절할 수 있는 가로폭의 최솟값을 `140px`로 상호 일치시켜 접기/펴기 상태 전환 시의 레이아웃 어긋남을 최적화했습니다.

### v1.3.30 (2026-06-11)
* **화면 가장자리 도킹 기능의 정식 명칭을 '엣지탭(Edge Tab)'으로 명명 및 기능 고도화**:
  - 화면 좌측, 우측, 상단 가장자리에 드래그 시 책갈피 색인 모양으로 달라붙는 스냅 기능을 **'엣지탭(Edge Tab)'**으로 공식 정의했습니다.
  - **좌/우측 사이드 엣지탭 라벨 가독성 고도화**: WebView2 렌더링 엔진에서 90도 회전 시 폰트가 깨지거나 생략되는 문제를 해결하기 위해, 그레이스케일 안티앨리어싱 및 3D GPU 가속 옵션을 연동하여 글자가 매우 깨끗하고 선명하게 렌더링되도록 개선했습니다.
  - **폰트 스타일 콤팩트 최적화**: 엣지탭의 라벨 크기를 `11px`, 세미볼드(`font-weight: 600`)로 축소 및 미니멀하게 설계하여 깔끔한 외관을 완성했습니다.
  - **오리지널 단색 테마 및 고대비 색상 유지**: 투명도 제거와 함께 메모장 본연의 오리지널 솔리드 컬러를 그대로 적용해 일체감을 극대화했습니다.
  - **엣지탭 겹침 방지 (Non-Overlapping Snap)**: 여러 개의 메모가 동일한 엣지 영역에 도킹될 때, 물리적으로 겹쳐지지 않고 비어 있는 가장 가까운 공간에 순차적으로 정렬되도록 충돌 방지 공간 분배(Interval Snap) 로직을 연동했습니다.

### v1.3.28 (2026-06-09)
* **다국어 설정 화면 번역 매핑 버그 수정**:
  - 설정 창의 일부 옵션(프로그램 실행 설정, OS 시작 시 자동 실행, 사용할 모델 등)의 data-i18n 속성이 중복되거나 잘못 지정되어 일어 등 다른 언어 선택 시 라벨 텍스트가 엉뚱한 내용으로 출력되던 오류를 개별 매핑 키 신설을 통해 해결했습니다.

### v1.3.27 (2026-06-09)
* **다국어 설정 및 실시간 번역 동기화**:
  - 설정 메뉴에 "언어 설정 (Language)" 드롭다운을 추가하고, 한국어, 영어, 중국어, 일어, 러시아어, 프랑스어, 이탈리아어 7개 국어 팩 지원을 신설하였습니다.
  - 사용자가 언어 설정을 변경하면 메인 대시보드 및 떠 있는 모든 스티커 메모 창에 새로고침 없이 실시간으로 다국어 번역이 전파 및 갱신되도록 개선하였습니다.
  - 빌드(PyInstaller) 및 배포 패키지 구성에 언어 리소스(`languages/*`)가 누락되지 않도록 동적 런타임 경로 해결 및 설정을 보완하였습니다.
* **초소형 메모 창 잠금 해제/닫기 버튼 잘림 문제 개선**:
  - 스티커 창의 세로 높이가 180px 이하로 좁아졌을 때, 비밀번호 입력 및 확인창의 잠금 아이콘을 숨기고 요소를 가로(row)로 컴팩트하게 정렬하는 반응형 CSS 고도화를 통해 해제/닫기 버튼이 보이지 않거나 잘리지 않도록 완벽히 대응하였습니다.

### v1.3.26 (2026-06-09)
* **한글 입력 상태에서의 글로벌 단축키 작동 실패 버그 해결**:
  - 개별 메모 스티커 창이나 매니저 대시보드 내에서 한글 입력 모드로 설정되어 있을 때, `Ctrl+L`(접기/펴기), `Ctrl+D`(삭제), `Ctrl+P`(고정), `Ctrl+N`(새 메모), `Ctrl+S`(동기화) 등의 단축키가 작동하지 않던 치명적인 문제를 해결했습니다.
  - 브라우저 keydown 이벤트의 `e.key` 판별 외에 키보드의 물리적 위치를 나타내는 `e.code` 판별 검사를 병합하여 입력 상태에 100% 무관하게 단축키가 즉각 실행되도록 보완했습니다.

### v1.3.25 (2026-06-08)
* **관계 그래프 내 'AI 연결 추천' 메뉴 및 자동 위키링크 연동 기능 신설 (PyPI 배포 완료)**:
  - 관계 그래프(Relationship Graph) 상단에 [AI 연결 추천] 버튼을 새로 배치하고, 이를 통해 의미론적인 관련성은 깊지만 아직 위키링크(`[[ ]]`)로 연결되지 않은 메모 쌍을 AI 분석(Gemini / Ollama)을 통해 추천받는 전용 인터페이스를 구현했습니다.
  - 비동기 분석 중에는 세련된 글래스모피즘 스피너 로더가 진행 상황을 안내하며, AI가 탐색해 낸 연관 메모 리스트와 추천 이유를 전용 모달 창에 정렬하여 시각화합니다.
  - [연결 적용] 클릭 시 백엔드 단에서 대상 메모 파일 내용 끝자락에 `[[대상메모]]` 위키링크를 깔끔하게 추가합니다.
  - 적용 완료 시 대시보드 관계 그래프와 열려 있는 모든 스티커 메모 창이 실시간으로 동기화되어 즉시 화면에 실선이 연결되고 텍스트가 갱신됩니다.
  - **PyPI 배포**: 본 릴리즈 버전은 [PyPI memobot v1.3.25](https://pypi.org/project/memobot/1.3.25/) 패키지로 성공적으로 업로드 및 배포 완료되었습니다.

### v1.3.24 (2026-06-08)
* **메무 매니저(대시보드) 실행 시 단축키 안내 팝업 신설**:
  - 앱의 핵심 편의 기능인 퀵메모 HUD 단축키(`Ctrl+Shift+Space`), 매니저 창 복원 단축키(`Ctrl+O`) 및 각종 에디터 단축키를 사용자가 보다 직관적으로 파악할 수 있도록 대시보드 팝업창을 구현했습니다.
  - 팝업창 하단에 **[7일 동안 이 팝업 보지 않기]** 체크박스를 얹어, 체크 후 승인 시 `localStorage` 캐시 만료 시간을 7일 후로 연장하여 번거로움을 덜어주는 스마트 상태 관리를 제공합니다.

### v1.3.23 (2026-06-08)
* **관계 그래프 드래그 시 발생하는 물리 궤도 공전(회전) 억제**:
  - 드래그 동작 중에 노드들이 어떤 한 중심점을 축으로 뱅글뱅글 맴돌거나 공전하려는 물리 법칙의 문제(구심력 과다 및 감쇠율 부족)를 해결했습니다.
  - 구심력 옵션(`centralGravity`)을 `0.01`로 극소화하여 공전 현상의 근본 원인을 없앴습니다.
  - 운동 에너지의 감쇠를 지배하는 `damping` 계수를 `0.09`에서 `0.85`로 극대화하여 물리학적 점성을 크게 주었습니다. 이로써 드래그를 멈추거나 노드를 놓았을 때 춤추듯 회전하지 않고 관성이 즉각 상쇄되어 스무스하게 정지합니다.
  - 연결선 탄성 계수(`springConstant`)와 척력 계수(`gravitationalConstant`)를 완화하여 노드들이 지나치게 튕겨나가지 않도록 미세 조정했습니다.

### v1.3.22 (2026-06-08)
* **관계 그래프 무한 공전/진동 예방 방식 강화**:
  - 시뮬레이션 안정화(`stabilized`) 이벤트가 수렴하지 않는 루프(예: 순환 참조 구조)에서는 아예 발생하지 않는 특성이 있어 여전히 도는 문제가 있었습니다.
  - 이를 근본적으로 방지하기 위해, 그래프 로드 시 2초(2000ms) 후에 강제로 물리 연산을 정지시키는 강제 타이머를 추가했습니다.
  - 또한 드래그가 끝난 시점(`dragEnd`)에서도 1초(1000ms)의 관성 여유를 준 뒤 강제로 물리를 비활성화하여, 최종 위치에 온전히 고정되도록 제어를 더욱 견고히 개선했습니다.

### v1.3.21 (2026-06-08)
* **관계 그래프 무한 공전/진동 현상 해결**:
  - 관계 그래프가 물리 엔진 연산에 의해 계속 회전 및 공전하며 진동하는 버그를 해결하기 위해, vis.js Network 시뮬레이션 안정화(`stabilized`) 및 드래그 종료(`dragEnd`) 시점에 물리 효과(`physics: false`)를 끄고 그 자리에 노드들을 고정시키도록 개선했습니다.
  - 드래그 시작(`dragStart`) 시점에는 다시 물리를 켜서 연결된 노드들이 상호작용하며 끌려오도록 자연스럽게 연동했습니다.

### v1.3.20 (2026-06-08)
* **대시보드 해시태그 필터 접기/펴기 기능 및 구문 오류 해결**:
  - **해시태그 필터 토글**: 대시보드 메인 화면 상단 검색창 옆에 해시태그 필터 영역 `#필터`을 온/오프할 수 있는 토글 버튼을 추가하여, 태그 개수가 늘어나 창을 많이 차지하는 시각적 피로감을 개선했습니다.
  - **필터 상태 영속화**: 접힘/펼침 상태가 `localStorage`를 통해 브라우저 캐시에 영속적으로 저장되어, 앱 재실행 및 새로고침 시에도 이전 설정이 그대로 복원됩니다.
  - **app.js 구문 오류 수정**: 토글 스크립트 결합 시 발생하던 괄호 구문 에러를 해결하여 런타임 안정성을 확보했습니다.

### v1.3.19 (2026-06-08)
* **신규 편의 기능 3종 구현 완료**:
  - **글로벌 퀵 캡처 HUD (데스크톱 전용)**: `Ctrl+Shift+Space` 단축키로 정중앙에 미니 글래스모피즘 입력창을 띄워 1초 만에 새 메모를 기록하는 퀵 캡처 팝업 기능을 추가했습니다.
  - **위키링크 관계 그래프 뷰 (데스크톱 전용)**: Vis.js 기반 물리 엔진을 연동하여, 메모들 간의 위키링크(`[[대상]]`) 참조 관계를 연결선(Edge)과 노드(Node) 형태의 시각적 인터랙티브 맵으로 제공합니다. 노드 더블클릭 시 해당 메모 창이 즉시 열립니다.
  - **AI 스마트 태그 추천 & 한 줄 요약 (데스크톱/모바일 공통)**: AI 분석을 통해 본문 내용에 부합하는 해시태그를 자동 추천하고, 50자 내외의 요약문(`summary` 필드)을 생성 및 저장합니다. 대시보드 카드 뷰에서 한 줄 요약 이탤릭 배지를 표시하며, 데스크톱과 모바일 간 완벽히 동기화됩니다.

### v1.3.18 (2026-06-07)
* **타 기기 실행 오류 및 호환성 대폭 개선**:
  - **WebView2 런타임 누락 예외 처리**: Windows 10/11 환경에서 Microsoft Edge WebView2 Runtime이 미설치/손상되어 앱이 즉시 종료되던 문제를 보완하여, 구동 실패 시 알림창을 띄우고 설치 페이지로 바로 연결해주는 네이티브 다운로드 가이드를 추가했습니다.
  - **64비트 Windows 크래시(Access Violation) 방지**: 64비트 OS에서 `SetWindowLongW` API 호출 시 핸들 포인터(HWND)가 절단되어 프로그램이 비정상 종료되던 버그를 자동 아키텍처 판별을 통해 `SetWindowLongPtrW` 호출로 교체하여 해결했습니다.
  - **PyInstaller hiddenimports 누락 보완**: `webview.platforms.winforms`, `pystray`, `PIL`, `ctypes`, `winreg` 등 런타임 렌더링 드라이버 및 필수 모듈들을 실행 바이너리에 확실히 동봉하여 환경 제약 없는 구동을 확보했습니다.
  - **하드코딩된 개발자 계정 경로 제거**: 가이드 내 특정 개인화 경로를 플레이스홀더 및 동적 계정명 감지(API 브릿지 `get_secrets_path()`) 형태로 변경하여 가독성을 높였습니다.

### v1.3.17 (2026-06-07)
* **작은 메모 크기에서의 확인창(오버레이) 잘림 현상 해결**:
  - 메모 창의 높이가 대폭 작아진 상태에서 잠금 해제 비밀번호 입력 오버레이나 삭제 확인 팝업 등이 뜰 때, 하단의 확인/취소 버튼이 창 하단부 밖으로 밀려나 보이지 않던 잘림 버그를 수정했습니다.
  - 창의 높이가 240px 이하가 되면 팝업 상자의 여백(padding/gap), 글꼴 크기, 아이콘 크기 등을 대폭 슬림하게 조정하는 반응형 미디어 쿼리를 추가하고, 스크롤 가능하도록 레이아웃을 보완했습니다.

### v1.3.16 (2026-06-07)
* **비밀번호 수정 시 기존 비밀번호 검증 단계 추가**:
  - 설정 메뉴에서 잠금 비밀번호를 새로 수정하거나 해제하려고 할 때, 타인이 함부로 접근해 변경하지 못하도록 **기존 비밀번호 입력 확인** 대화상자를 필수적으로 거치도록 설계했습니다.
  - 이 기능은 데스크톱 설정 창(JS `prompt` 다이얼로그) 및 모바일(Flutter Android overlay) 양쪽 모두에 공통 적용되었으며, 검증에 통과해야만 새 비밀번호로의 저장이 승인됩니다.

### v1.3.15 (2026-06-07)
* **메모 비밀번호 잠금 기능 추가 (크로스 플랫폼 연동)**:
  - 데스크톱 및 모바일(Android) 양쪽 앱 모두에 개별 메모 비밀번호 잠금 기능을 도입했습니다.
  - 설정 메뉴에서 사용할 잠금 비밀번호를 개별 기기에 지정할 수 있으며(비밀번호는 동기화되지 않고 각 기기별 로컬 보안 설정에만 독립 저장), 에디터 툴바에 새로 배치된 자물쇠 토글 버튼을 통해 특정 메모를 잠그거나 해제할 수 있습니다.
  - 보안을 위해 잠긴 메모는 대시보드 리스트에서 마스킹(`🔒 잠긴 메모입니다.`) 처리되고, 실제 본문 콘텐츠와 미디어 데이터(이미지/오디오)는 검증 완료 전까지 백엔드와 클라이언트 단 모두에서 완전히 차단되어 유출을 방지합니다.
  - 메모의 잠금 여부 상태(`is_locked`)는 구글 드라이브 동기화를 통해 양방향으로 자동 연동 및 공유됩니다.

### v1.3.14 (2026-06-07)
* **설정 창 독립 팝업 분리**:
  - 기존 메모 매니저(Dashboard) 내부 레이어 모달로 띄우던 설정 창을 독립된 별도 외부 팝업 창(크기 `450x620` 고정, 타이틀바를 가진 윈도우)으로 분리하여 오픈하도록 개선했습니다.
  - 이를 통해 매니저 창의 크기 제한으로 인해 설정 메뉴 하단 및 우측 항목들이 화면에서 잘리는 현상을 완벽히 해결했습니다.
  - 기존 설정 API 및 이벤트 구조를 그대로 이식 및 활용하여 설정 변경사항이 로컬 메모, 매니저, 개별 메모 윈도우에 실시간으로 즉시 동기화됩니다.

### v1.3.13 (2026-06-07)
* **자석 정렬 드래그 개선 및 불필요한 로그/경고 제거**:
  * 접힌 메모가 자석(Magnetic) 정렬 상태로 달라붙어 있을 때 마우스 드래그를 통해 매끄럽게 떼어낼 수 없던 현상을 해결하기 위해, 누적 마우스 움직임을 추적하는 **논리적 좌표계(Logical Coordinates)** 시스템을 도입했습니다. 이제 자석 고정점으로부터 마우스를 15px 이상 이동하면 부드럽고 자연스럽게 스냅이 풀리며 이동할 수 있습니다.
  * 구글 드라이브 동기화 API 초기화 시 터미널에 불필요하게 출력되던 `file_cache is only supported with oauth2client<4.0.0` 경고 메시지를 `cache_discovery=False` 설정을 통해 억제하고 초기화 동작을 최적화했습니다.

### v1.3.12 (2026-06-07)
* **위키링크 포맷 수정 및 작업 표시줄 개별 메모 노출 방지**:
  * 위키링크 복사 시 기존 ID 및 제목 조합 방식(`[[noteId|Title]]`)에서 대중적이고 명확한 `[[NoteTitle]]` 형태로 복사되도록 수정한 후, 메모 본문 파싱 및 클릭 네비게이션 시에도 대괄호 기호(`[[`, `]]`)를 자동 제거해 올바르게 매칭되도록 보완했습니다.
  * Windows 환경에서 개별 포스트잇 메모 창들이 작업 표시줄(Taskbar)에 우후죽순 생성되는 현상을 차단하고, 오직 메인 "메모 관리자(Memo-Bot Manager)" 대시보드 창만 작업 표시줄에 노출되도록 스타일링(`WS_EX_TOOLWINDOW` 및 `ShowInTaskbar = False`)을 수정하였습니다.

### v1.3.11 (2026-06-07)
* **해시태그/위키링크 검색 및 위키링크 복사 기능 추가**: 대시보드 메인 화면에서 `#태그` 검색어 또는 `[[위키링크]]` 검색어 패턴을 인식하는 지능형 필터링 기능을 추가했습니다. 또한 개별 메모 헤더에 "위키링크 복사" 단추를 새로 배치하여 클릭 시 `[[noteId|Title]]` 포맷의 마크다운 링크가 원터치로 클립보드에 복사되고, 성공 시 체크 아이콘으로 1초간 시각적 피드백(플래시 애니메이션)을 주도록 사용성을 강화했습니다.

### v1.3.10 (2026-06-06)
* **백그라운드 실행(noconsole) 기본화**: PyInstaller 빌드 시와 PyPI 패키지 배포 시 윈도우 환경에서 터미널 창 없이 백그라운드용 GUI 앱으로 즉시 실행되도록 설정을 최적화했습니다 (`--noconsole` 및 `gui_scripts` 적용).

### v1.3.9 (2026-06-06)
* **메모 관리자 초기 로드 및 레이스 컨디션 해결**: 매니저 창 첫 실행 시 `window.pywebview` 객체가 아직 브라우저에 생성되지 않았을 때 웹 모드로 성급하게 차단되어 로컬 메모 목록이 화면에 나타나지 않던 문제를 해결하기 위해, `pywebviewready` 이벤트 리스너 등록 및 대기 로직을 전면 최적화하여 안정적으로 로컬 메모를 초기 화면에 로드합니다.

### v1.3.8 (2026-06-06)
* **대시보드 초기화 시 로컬 메모 자동 로드 수정**: 앱 실행 시 `pywebviewready` 이벤트가 리스너 등록 전에 이미 호출되어 대시보드가 처음 켜졌을 때 로컬 메모 목록이 자동으로 나타나지 않던 문제를 수정했습니다. 이제 웹뷰 API 로드 여부를 즉시 검사하여 메모 로딩이 바로 실행됩니다.
* **임포트 오류 수정 (NameError: time)**: 닫기 지연 처리(`defer_hide`) 함수 내에서 `time.sleep` 호출 시 `time` 모듈이 글로벌 임포트되어 있지 않아 발생하던 NameError 버그 및 이로 인해 닫기 동작이 아예 불가능해지던 오동작을 수정했습니다.

### v1.3.7 (2026-06-06)
* **구글 드라이브 탭 목록 레이아웃 개선 및 미리보기 수정**: 구글 클라우드 메모 관리 테이블에서 첫 번째 열(메모 미리보기)의 너비가 다른 열의 고정 너비로 인해 극도로 축소되어 `#...`이나 `메...`처럼 한 글자와 말줄임표로만 보이던 문제를 해결했습니다. 열 비율을 고정하는 대신 유연하게 설정하고 반응형 레이아웃을 도입하였으며, 마크다운 헤더 기호(예: `## `, `# `)를 제외하고 출력하도록 텍스트 전처리 기능을 추가했습니다.

### v1.3.6 (2026-06-06)
* **메모 관리자 창 닫기 무한 루프 버그 수정**: Windows 환경에서 메모 관리자 창을 닫아 트레이 아이콘으로 숨길 때, pywebview의 `hide()` 동작이 내부적으로 `closing` 이벤트를 재발하여 무한 닫기 루프(윈도우가 열리자마자 바로 사라지는 현상)가 발생하는 현상을 방지하기 위해 상태 락(is_hiding_manager)을 도입하여 예외 처리했습니다.

### v1.3.5 (2026-06-06)
* **구글 드라이브 메모 첫 줄 미리보기 지원**: 로컬에 다운로드되지 않은 클라우드 전용 메모도 대시보드의 클라우드 탭 목록에서 본문 첫 줄 내용을 미리 짧게 볼 수 있도록 개선했습니다. 이를 위해 동기화 시 메모의 첫 줄 텍스트를 드라이브 파일의 `appProperties` 메타데이터에 함께 실어 보내고, 목록 렌더링 시 이를 파싱해 출력하도록 연동했습니다.


### v1.3.4 (2026-06-06)
* **단축키 범위(Scope) 최적화**: 새 메모 추가(`Ctrl+N`) 및 동기화(`Ctrl+S`) 단축키가 메모 관리자 대시보드가 열리고 포커스되었을 때만 작동하도록 범위를 가두고, 개별 메모 삭제(`Ctrl+D`), 항상 위 토글(`Ctrl+P`), 접기 토글(`Ctrl+L`)은 개별 메모 창이 활성화되어 있을 때만 반응하도록 개선하여 단축키 충돌을 방지했습니다.
* **글로벌 단축키 지원 (Windows)**: 관리자 창이 닫혀 있거나(트레이 아이콘 상태) 백그라운드에 있을 때도 언제든지 `Ctrl+O`를 누르면 메모 관리자가 최상단으로 복원 및 강제 포커싱되도록 Windows API(RegisterHotKey)를 연동한 글로벌 단축키 스레드를 적용했습니다. 설정에서 단축키를 비활성화하면 시스템 등록도 실시간 해제됩니다.


### v1.3.3 (2026-06-06)
* **버튼 미니멀화 및 도움말 가이드 추가**: 대시보드 제어 버튼을 슬림하고 미니멀하게 디자인을 조정하고, 해시태그, 메모링크(WikiLinks), AI(Gemini) 설정 및 사용법을 상세 안내하는 도움말 가이드 모달을 탑재했습니다.

### v1.3.2 (2026-06-06)
* **Gemini API 키 다중 입력 UI 개선**: 단일 입력창에 쉼표로 길게 나열해야 했던 기존 방식 대신, 설정 창에서 한 칸에 키 하나씩 깔끔하게 등록할 수 있도록 다중 키 동적 추가(`+`)/삭제(휴지통) 인터페이스를 구현했습니다. 기존 백엔드 자동 키 순환(rotation) 알고리즘과 100% 하위 호환됩니다.

### v1.3.1 (2026-06-05)
* **옵디시언 스타일 위키링크 `[[ ]]` 연동**: 메모 본문 내 대괄호 링크(`[[메모 제목]]`) 클릭 시 해당 메모 창을 즉시 포커스하고, 메모가 없는 경우 자동으로 첫 줄 제목을 가진 신규 메모를 생성해 연동해주는 WikiLinks 기능을 탑재했습니다.
* **구글 드라이브 삭제된 메모 완전 삭제**: 구글 드라이브와 동기화 시, 이미 소프트 삭제(Tombstone) 처리된 삭제 대기 메모가 동기화 목록에 남아 잔존하는 현상을 방지하도록 원격 및 로컬에서 영구 삭제 처리하는 루틴을 보강했습니다.
* **기본 웰컴 메모 비활성화**: 앱 처음 실행 시 로컬 저장소에 기본으로 생성되던 2개의 튜토리얼 성격의 가이드 메모가 생성되지 않도록 수정하여 더 깔끔한 시작 화면을 제공합니다.
* **날짜 포맷 변경**: 메모 생성 및 업데이트 시, 시간(시/분/초) 정보만 노출되던 화면에 년-월-일 정보가 함께 노출되도록 날짜 표시 포맷을 수정했습니다 (`YYYY-MM-DD HH:MM:SS`).
* **필터 초기화 자동화**: 해시태그나 메모 내용을 수정한 후 저장 시, 편집한 메모가 현재 검색 또는 태그 필터 때문에 보이지 않는 현상을 방지하기 위해 필터를 자동으로 '전체'로 초기화하여 방금 수정한 메모가 대시보드에 즉시 노출되도록 개선했습니다.
* **슬림 카드 뷰 & 휠 스크롤 지원**: 대시보드에서 접힌 상태의 메모 카드를 대폭 슬림화(38px)하고 접힌 상태에서도 메모 본문 첫 번째 줄이 상단에 노출되도록 최적화했습니다. 추가로, 스크롤바 노출 없이 마우스 휠 스크롤을 감지해 간편하게 오르내릴 수 있도록 편의성을 강화했습니다.
* **버전 뱃지 추가**: 매니저 창 헤더의 로고 우측에 메인 테마와 조화로운 Glassmorphism 스타일의 버전 뱃지(`v1.3.1`)를 부착했습니다.

