Skip to main content

Google Drive-synchronized floating Post-it memo pad for Windows, macOS, and Linux

Project description

Memo-Bot v1.5.11 ๐Ÿ“Œ

๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ ๊ธฐ๋ฐ˜์˜ ์™„๋ฒฝํžˆ ๋™๊ธฐํ™”๋˜๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํฌ์ŠคํŠธ์ž‡ ๋ฉ”๋ชจ์žฅ์ž…๋‹ˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ(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 ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹ฑํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ ์†Œ๋ชจ๊ฐ€ ๋งค์šฐ ์ ๊ณ  ๋ฐ˜์‘์ด ๋น ๋ฅธ ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“‚ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ฒฝ๋กœ ๋ฐ ํŒŒ์ผ ํฌ๋งท

๋ฉ”๋ชจ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ €์žฅํ•˜๋ฉด ๊ฐ ๋ฉ”๋ชจ๋Š” ๋กœ์ปฌ ์ปดํ“จํ„ฐ์— ๊ฐœ๋ณ„ JSON ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

1. ๋กœ์ปฌ ์ €์žฅ ๊ฒฝ๋กœ

  • Windows: C:\Users\<์‚ฌ์šฉ์ž๋ช…>\.memobot\notes\
  • macOS / Linux: ~/.memobot/notes/

2. ํŒŒ์ผ ํ˜•์‹ ๋ฐ ์ด๋ฆ„

  • ๊ฐ ๋ฉ”๋ชจ๋‹น note_<๊ณ ์œ ID>.json ํ˜•์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. (์˜ˆ: note_a1b2c3d4.json)

3. 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์— ๊ตฌ๊ธ€ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.
    • ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: 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)๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  1. ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด(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. ๊ฐœ๋ฐœ์ž ๋ชจ๋“œ ๋กœ์ปฌ ์‹คํ–‰

cd desktop
# ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™”
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# ์˜์กด์„ฑ ํŒจํ‚ค์ง€ ์„ค์น˜
pip install -e .

# ์•ฑ ์‹คํ–‰
memobot

3. PyPI ๋ฐฐํฌ์šฉ ๋นŒ๋“œ ๋ฐ ์—…๋กœ๋“œ

ํŒจํ‚ค์ง€ ์ฒญ์†Œ, ๋นŒ๋“œ, ์—…๋กœ๋“œ๋ฅผ ์ผ๊ด„์ ์œผ๋กœ ์ž๋™ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค:

# Windows ํ™˜๊ฒฝ์—์„œ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ๋ฐฐ์น˜ํŒŒ์ผ ์‹คํ–‰
./publish_pypi.bat
  • ์‹คํ–‰ ์‹œ ๊ธฐ์กด ๋นŒ๋“œ ์ž„์‹œ ํŒŒ์ผ๋“ค์„ ๋ชจ๋‘ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , build ๋ฐ twine ๋ชจ๋“ˆ์„ ์ž๋™์œผ๋กœ ์ตœ์‹  ์„ค์น˜/์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋นŒ๋“œ ์™„๋ฃŒ ํ›„ [1] TestPyPI ์—…๋กœ๋“œ, [2] ๊ณต์‹ PyPI ์—…๋กœ๋“œ, [3] ์—…๋กœ๋“œ ์—†์ด ๋นŒ๋“œ๋งŒ ์ˆ˜ํ–‰ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ ์™„๋ฃŒ ์‹œ ์‚ฌ์šฉ์ž๋Š” pip install memobot ๋ช…๋ น์–ด๋งŒ์œผ๋กœ ํฌ๋กœ์Šค ํ”Œ๋žซํผ(Windows, macOS, Linux) ํ™˜๊ฒฝ์— ์„ค์น˜ํ•˜๊ณ  memobot ๋ช…๋ น์–ด๋กœ ์ฆ‰์‹œ ์•ฑ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. PyPI ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ• (์„ค์น˜, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ)

์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ํŒŒ์ด์ฌ์ด ์„ค์น˜๋œ ํ™˜๊ฒฝ์—์„œ ์•„๋ž˜์˜ pip ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ํŒจํ‚ค์ง€๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„ค์น˜ (Install):
    pip install memobot
    
  • ์‹คํ–‰ (Run): ์„ค์น˜ ํ›„ ํ„ฐ๋ฏธ๋„์ด๋‚˜ ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ์—์„œ ์•„๋ž˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค (์œˆ๋„์šฐ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฒ€์€์ƒ‰ ์ฝ˜์†”์ฐฝ ์—†์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์šฉ ์•ฑ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค).
    memobot
    
  • ์ตœ์‹  ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ (Update):
    pip install --upgrade memobot
    
  • ์‚ญ์ œ (Uninstall):
    pip uninstall memobot
    

๐Ÿ“ฑ ๋ชจ๋ฐ”์ผ ์•ฑ ์‹คํ–‰ (Flutter Android)

1. Flutter ์˜์กด์„ฑ ๊ตฌ์„ฑ

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. ์•ฑ ์‹คํ–‰

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 ํŒจํ‚ค์ง€๋ฅผ ๋จผ์ € ์„ค์น˜ํ•ด ์ฃผ์„ธ์š”:
    # 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.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 ํŒจํ‚ค์ง€๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์—…๋กœ๋“œ ๋ฐ ๋ฐฐํฌ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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)๋ฅผ ๋ถ€์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

memobot-1.5.11.tar.gz (3.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

memobot-1.5.11-py3-none-any.whl (3.5 MB view details)

Uploaded Python 3

File details

Details for the file memobot-1.5.11.tar.gz.

File metadata

  • Download URL: memobot-1.5.11.tar.gz
  • Upload date:
  • Size: 3.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for memobot-1.5.11.tar.gz
Algorithm Hash digest
SHA256 139478054cbb519a30ac8f74068d95f0a5a7af2c2825ffc72f8f68ea1b29962c
MD5 4cc4e6e76941d63e4e650c86a35be265
BLAKE2b-256 a4c3d0d59b01d36da4fc54c52f39db24c142d10e80bf988433a00520da9399f4

See more details on using hashes here.

File details

Details for the file memobot-1.5.11-py3-none-any.whl.

File metadata

  • Download URL: memobot-1.5.11-py3-none-any.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for memobot-1.5.11-py3-none-any.whl
Algorithm Hash digest
SHA256 5204e1f4b34f916982be821adcb03b7c7b421b288e0aadf2e73cbf1f7c92de7f
MD5 5f06a12b217b5d64559b872621c616be
BLAKE2b-256 5ab5d24e4b2dd8bd9e6ac031643c467c9c7320469a8d38d0d857a23dbaaf3053

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page