From c992bc313d1dd7f195c19baf57b00bdaef40989c Mon Sep 17 00:00:00 2001 From: YohannanK <55054045+johnfkoo951@users.noreply.github.com> Date: Mon, 14 Sep 2026 15:36:41 +0900 Subject: [PATCH] docs: unify bilingual plugin introduction and user guides Document source-verified installation, commands, settings and privacy boundaries. Preserve runtime code, release versions and existing attribution. --- README.ko.md | 407 ++++------------------------------------------- README.md | 407 ++++------------------------------------------- docs/guide.ko.md | 256 +++++++++++++++++++++++++++++ docs/guide.md | 254 +++++++++++++++++++++++++++++ 4 files changed, 570 insertions(+), 754 deletions(-) create mode 100644 docs/guide.ko.md create mode 100644 docs/guide.md diff --git a/README.ko.md b/README.ko.md index eda7daa..2cf5cf9 100644 --- a/README.ko.md +++ b/README.ko.md @@ -1,392 +1,45 @@ -[๐Ÿ‡ฌ๐Ÿ‡ง English](README.md) ยท [๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด](README.ko.md) +[![English](https://img.shields.io/badge/English-README-134538)](README.md) [![ํ•œ๊ตญ์–ด](https://img.shields.io/badge/ํ•œ๊ตญ์–ด-README-E985A2)](README.ko.md) # CMDS Eagle +Eagle ์ž๋ฃŒ๋ฅผ ๋…ธํŠธ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ๋กœ์ปฌ ์›๋ณธ, ํœด๋Œ€ ๊ฐ€๋Šฅํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ํด๋ผ์šฐ๋“œ URL ์ค‘ ํ•„์š”ํ•œ ํ˜•ํƒœ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. -[Eagle](https://eagle.cool) ์—์…‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ณผํŠธ์™€ ์—ฐ๊ฒฐํ•˜๋Š” Obsidian ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. +**๋ฒ„์ „ 1.8.4 | ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.** -## 1.8.4์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ +Obsidian 1.6.6 ์ด์ƒ | ๋ฐ์Šคํฌํ†ฑ ์ „์šฉ. -**์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์ง€์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ชฉ๋ก์— ์˜์›ํžˆ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค.** ๊ฐ์ง€๋Š” ํ”„๋กœํ•„์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, -Eagle์—์„œ ์ด๋ฆ„์„ ๋ฐ”๊พผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์˜ˆ์ „ ํ•ญ๋ชฉ์œผ๋กœ ์„ค์ •์— ๋‚จ์•˜๊ณ  ์ง€์šธ ๋ฐฉ๋ฒ•๋„ -์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค„์— ์ œ๊ฑฐ ๋ฒ„ํŠผ์ด ์žˆ๊ณ , Eagle์ด ๋” ์ด์ƒ ์•Œ์ง€ ๋ชปํ•˜๋ฉด์„œ ๋””์Šคํฌ์—์„œ๋„ ์‚ฌ๋ผ์ง„ -๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” `Missing`์œผ๋กœ ํ‘œ์‹œ๋˜๋ฉฐ ๋ชฉ๋ก ์œ„์— `Remove all missing` ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. +![CMDS Eagle storage choice](assets/CMDS-eagle3.png) +์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•  ์œ„์น˜๋ฅผ ๊ณ ๋ฅด๋Š” ํ™”๋ฉด์ž…๋‹ˆ๋‹ค. ์ด์ „ UI์ด๋ฉฐ ํ˜„์žฌ ๋ฒ„์ „์˜ ํ‘œ์‹œ ์ด๋ฆ„์€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -ํ”„๋กœํ•„์—๋Š” ์ €์žฅํ•ด๋‘” ๊ธฐ๋ณธ ํด๋”๊ฐ€ ๋“ค์–ด ์žˆ์œผ๋ฏ€๋กœ ์‚ญ์ œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ•˜๋„๋ก ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ์‹ ํ˜ธ๊ฐ€ -**๋ชจ๋‘** ์ผ์น˜ํ•  ๋•Œ๋งŒ missing์œผ๋กœ ํŒ์ •ํ•ฉ๋‹ˆ๋‹ค. Eagle์ด ๋ชฉ๋ก์—์„œ ๋บ๊ณ  *๋™์‹œ์—* ๋””์Šคํฌ์—์„œ๋„ ์‚ฌ๋ผ์ง„ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. -๋งˆ์šดํŠธ๋งŒ ํ•ด์ œ๋œ ์™ธ์žฅยท๋„คํŠธ์›Œํฌ ๋ณผ๋ฅจ์€ Eagle์ด ๊ณ„์† ๊ธฐ์–ตํ•˜๋ฏ€๋กœ ๋ชฉ๋ก์— ๋‚จ๊ณ  ์„ค์ •๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. Eagle์ด ์‹คํ–‰ -์ค‘์ด ์•„๋‹ˆ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ํŒ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. `Scan Eagle`์ด ์•Œ์•„์„œ ์ •๋ฆฌํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉด -`Remove missing libraries on scan`์„ ์ผœ๋ฉด ๋ฉ๋‹ˆ๋‹ค. +## ์ฃผ์š” ํ™œ์šฉ +- ํ˜„์žฌ Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. +- ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ ๋“œ๋กญํ•œ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํด๋”์— ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. +- ์ €์žฅ ์œ„์น˜์™€ ๋ณ„๊ฐœ๋กœ ์—ฌ์„ฏ ๊ฐ€์ง€ ๋งํฌ ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. +- ์„ค์ •ํ•œ ํด๋ผ์šฐ๋“œ๋กœ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ๋ฐ์Šคํฌํ†ฑ ๊ฐ„ ์›๋ณธ ๊ฒฝ๋กœ๋ฅผ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. -## 1.8.2์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ +## ์„ค์น˜์™€ ์ฒซ ์‚ฌ์šฉ +**์ปค๋ฎค๋‹ˆํ‹ฐ ์„ค์น˜:** ์„ค์ • โ†’ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ โ†’ ํƒ์ƒ‰ โ†’ **CMDS Eagle** โ†’ ์„ค์น˜ โ†’ ํ™œ์„ฑํ™”. -**๊ฒ€์ƒ‰์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€๋งŒ ๋ณด๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.** Eagle์€ limit์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด 200๊ฐœ๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ๊ฒ€์ƒ‰ -์ฐฝ์ด limit์„ ๋„˜๊ธฐ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•ญ๋ชฉ์ด 2,400๊ฐœ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” 8%๋งŒ ๋Œ€์ƒ์œผ๋กœ ํผ์ง€ ๋งค์นญํ•œ ์…ˆ์ด๊ณ , -๋‚˜๋จธ์ง€๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ `Items to pre-load for search`(๊ธฐ๋ณธ๊ฐ’ 5000)๋งŒํผ ๋ฏธ๋ฆฌ -๋ถˆ๋Ÿฌ์˜ค๊ณ , ๊ทธ ์ƒํ•œ์„ ๋„˜์œผ๋ฉด ์ž…๋ ฅ์— ๋งž์ถฐ Eagle์˜ keyword ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์นฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌ๊ธฐ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ -๋ชจ๋“  ํ•ญ๋ชฉ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +**์ˆ˜๋™ ์„ค์น˜:** [1.8.4 ๋ฆด๋ฆฌ์Šค](https://github.com/johnfkoo951/cmds-eagle/releases/tag/1.8.4)์˜ `main.js`, `manifest.json`, `styles.css`๋ฅผ `/.obsidian/plugins/cmds-eagle/`์— ๋„ฃ๊ณ  ๋‹ค์‹œ ๋กœ๋“œํ•œ ๋’ค ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„ค์ •์„ ๋ฐฑ์—…ํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ `data.json`์„ ๋ณต์‚ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. -**๊ฒ€์ƒ‰ ํ•„ํ„ฐ๊ฐ€ ์•„์˜ˆ ๊ทธ๋ ค์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.** ๊ฒ€์ƒ‰ ๋ฒ”์œ„ ํ•„ํ„ฐ(`Name` / `Tags` / `Notes` / `Folders`), ํŒŒ์ผ -์œ ํ˜• ํ•„ํ„ฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•ญ๋ชฉ ์ˆ˜ ํ—ค๋”๊ฐ€ ๋ชจ๋‘ ๋น ์ ธ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์ž˜๋ชป๋œ ์š”์†Œ๋ฅผ ์ฐพ๊ณ  -์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ œ ์ •์ƒ์ ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. +Eagle์„ ์—ด์–ด ์„ค์ •์—์„œ ์—ฐ๊ฒฐ์„ ์‹œํ—˜ํ•˜๊ณ , ํœด๋Œ€ ๊ฐ€๋Šฅํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์—๋Š” `photo-info`๋ฅผ ์„ ํƒํ•œ ๋’ค ์˜ˆ์ œ ๋…ธํŠธ์—์„œ **Search Eagle library and embed**๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. -**๋ณผํŠธ ๋ฃจํŠธ์—์„œ ์ฒจ๋ถ€ ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ ๊นจ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.** Obsidian์˜ *Default location for new attachments*๋ฅผ -`Vault folder`๋กœ ๋‘” ์ƒํƒœ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ์— ์ €์žฅํ•˜๋ฉด `//ํŒŒ์ผ๋ช….png` ๊ฒฝ๋กœ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ Obsidian์ด ํ•ด์„ํ•˜์ง€ -๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. [@nancyel](https://github.com/nancyel) ๋‹˜์ด [#1](https://github.com/johnfkoo951/cmds-eagle/pull/1) -์—์„œ ๋ณด๊ณ ํ•˜๊ณ  ์ˆ˜์ •ํ•ด ์ฃผ์—ˆ๊ณ , ์ธ์ ‘ํ•œ ๊ฒฝ์šฐ๊นŒ์ง€ ํ™•์žฅํ•ด ๋ฐ˜์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. +## ์„ค๋ช…์„œ +- [English user guide](docs/guide.md) +- [ํ•œ๊ตญ์–ด ์‚ฌ์šฉ์„ค๋ช…์„œ](docs/guide.ko.md) +- [Web manual](https://apps.cmdspace.work/plugins/cmds-eagle/) +- [Product family](https://apps.cmdspace.work/plugins/) +- [Issues and support](https://github.com/johnfkoo951/cmds-eagle/issues) -## 1.8.0์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ +## ๊ฐœ์ธ์ •๋ณด์™€ ํ•œ๊ณ„ +Eagle์€ ๋ณ„๋„ ๋ผ์ด์„ ์Šค์˜ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ ๊ฒ€์ƒ‰์— ํด๋ผ์šฐ๋“œ ๊ณ„์ •์€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ์—…๋กœ๋“œ๋Š” ์ด๋ฏธ์ง€ ๋ฐ”์ดํŠธ๋ฅผ ์ œ๊ณต์—…์ฒด์— ๋ณด๋‚ด๋ฉฐ ์ด์ „ ๋ช…๋ น์€ ๋‹ค๋ฅธ ๋…ธํŠธ์™€ ์›๋ณธ์„ ์ˆ˜์ •/ํœด์ง€ํ†ต ์ด๋™ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋จผ์ € ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค. -### ์—ฌ๋Ÿฌ Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - -Eagle์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์—ฝ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ -์ „ํ™˜ํ•œ ๋’ค ๋Œ์•„์™€์•ผ ํ•˜๋ฉฐ, ๊ฐ ์ „ํ™˜์—๋Š” ์•ฝ 1์ดˆ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. **Settings โ†’ Eagle libraries**์—์„œ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. - -| Target library | ๋™์ž‘ | -|---|---| -| Currently open library (๊ธฐ๋ณธ๊ฐ’) | ์ „ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 1.7.x์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. | -| Always a specific library | ํ•„์š”ํ•  ๋•Œ ์ง€์ •ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ „ํ™˜ํ•˜๊ณ , `Switch back after import`๊ฐ€ ์ผœ์ ธ ์žˆ์œผ๋ฉด ๋Œ์•„์˜ต๋‹ˆ๋‹ค. | -| Ask every time | ๊ฐ€์ ธ์˜ฌ ๋•Œ๋งˆ๋‹ค ์„ ํƒํ•˜๋ฏ€๋กœ ํ•œ ๋…ธํŠธ์— ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์—์…‹์„ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. | - -๊ฐ€์ ธ์˜ค๋Š” ๋„์ค‘ Eagle์—์„œ ์ง์ ‘ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ „ํ™˜ํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์„ ํƒ์„ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. -ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ณต๊ท€ ์ „์— ํ˜„์žฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™•์ธํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. - -### ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณ„ ํด๋” - -๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฃจํŠธ ๋Œ€์‹  ํด๋”๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋” ID๋Š” ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์†ํ•˜๋ฏ€๋กœ -๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งˆ๋‹ค ๊ธฐ๋ณธ ํด๋”๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. **Target folder**๋ฅผ *Ask every time*์œผ๋กœ ์„ค์ •ํ•˜๋ฉด -์ „์ฒด ํด๋” ๊ฒฝ๋กœ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์„ ํƒ ์ฐฝ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด `proj/jazz`๋กœ `Projects/Jazz Blend`๋ฅผ -์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, `Inbox/2026`์„ ์ž…๋ ฅํ•˜๋ฉด `Inbox` ์•„๋ž˜์— `2026` ํด๋”๋ฅผ ๋ฐ”๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - -Eagle์€ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋งŒ ํด๋”๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. API๋กœ ๊ธฐ์กด ํ•ญ๋ชฉ์„ ๋‹ค๋ฅธ ํด๋”๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ -๋Œ€์ƒ ํด๋”๋ฅผ ๋จผ์ € ์„ ํƒํ•˜๋ฉฐ, ๋‹ค์‹œ ๋ถ„๋ฅ˜ํ•˜๋ ค๋ฉด ์žฌ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. - -### ์ €์žฅ ๋ฐฉ์‹๊ณผ ๋งํฌ ๋ชจ๋“œ - -์ด์ „์—๋Š” Eagle๋กœ ๋ถ™์—ฌ๋„ฃ์–ด๋„ ๋ณผํŠธ์— ์‚ฌ๋ณธ์ด ๋‚จ์•˜๊ณ , ์‚ฝ์ž…ํ•œ ์ฐธ์กฐ๊ฐ€ ์žฌ๋™๊ธฐํ™”๋‚˜ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋กœ์˜ -์ด๋™ ํ›„์—๋Š” ์œ ์ง€๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฒ„์ „์—์„œ๋Š” ๋‹ค์Œ ์„ธ ๊ฐ€์ง€๊ฐ€ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. - -| ํ•ญ๋ชฉ | ์ด์ „ | ํ˜„์žฌ | -|---|---|---| -| `.eagle-temp/`์˜ ์ž„์‹œ ์‚ฌ๋ณธ | ๋ถ™์—ฌ๋„ฃ์„ ๋•Œ๋งˆ๋‹ค ๊ธฐ๋กํ•˜๊ณ  ์‚ญ์ œํ•˜์ง€ ์•Š์•„ Eagle๊ณผ ๋ณผํŠธ ์–‘์ชฝ์— ์›๋ณธ์ด ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. | Eagle์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ™•์ธํ•˜๋ฉด ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. | -| ์‚ฝ์ž… ๊ฒฝ๋กœ | ๋Œ€์•ˆ ์—†์ด Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ ˆ๋Œ€ `file://` ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. | ๊ธฐ๋ณธ๊ฐ’์€ ์—ฌ์ „ํžˆ `cmds-eagle`์ด์ง€๋งŒ, `photo-info`๋Š” ๋ณผํŠธ ์ƒ๋Œ€ ๊ฒฝ๋กœ ์ธ๋„ค์ผ๊ณผ `eagle://` ๋”ฅ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์žฌ๋™๊ธฐํ™” ํ›„์—๋„ ์œ ์ง€๋˜๊ณ  ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ๋„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. | -| ์ธ๋„ค์ผ ๋Œ€๊ธฐ | ๊ณ ์ •๋œ `delay(1000)`์„ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ, ํฐ ํŒŒ์ผ์€ ์ž„์‹œ ํŒŒ์ผ ๋งํฌ๋กœ ๋Œ€์ฒด๋˜์–ด ๋‚˜์ค‘์— ์—ฐ๊ฒฐ์ด ๋Š๊ฒผ์Šต๋‹ˆ๋‹ค. | ๋Œ€๊ธฐ ๊ฐ„๊ฒฉ์„ ์ง€์ˆ˜์ ์œผ๋กœ ๋Š˜๋ฆฌ๋ฉฐ ํ™•์ธํ•˜๊ณ , ์‹คํŒจํ•˜๋ฉด ๋”ฅ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ์— ์ข…์†๋œ ๊ฒฝ๋กœ๋กœ ๋Œ€์ฒดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. | - -๊ธฐ์กด ์„ค์น˜์˜ ๋™์ž‘์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. `linkMode` ๊ธฐ๋ณธ๊ฐ’์€ `cmds-eagle`์ด๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•˜๊ธฐ -์ „๊นŒ์ง€๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - -> **Eagle์—์„œ ์‚ญ์ œํ•˜๋ฉด ๋…ธํŠธ์—์„œ๋„ ์ด๋ฏธ์ง€๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.** Eagle์„ ์›๋ณธ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•˜๋Š” -> `cmds-eagle` ๊ณ„์—ด ๋ชจ๋“œ์˜ ์˜๋„๋œ ๋™์ž‘์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ Obsidian์ด ์ฐฝ์„ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๊นŒ์ง€ -> ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์‚ญ์ œ ์งํ›„์—๋„ ์ž ์‹œ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -> ์‹ค์ œ ์ƒํƒœ๋Š” `Verify Eagle references in current note`๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. -> Eagle์—์„œ ์‚ญ์ œํ•œ ๋’ค์—๋„ ๋…ธํŠธ์— ์ด๋ฏธ์ง€๋ฅผ ๋‚จ๊ธฐ๋ ค๋ฉด `photo-info`๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. - -### ๋งํฌ ๋ชจ๋“œ - -**ํŒŒ์ผ ์ €์žฅ ์œ„์น˜**(Eagle / ๋ณผํŠธ / ํด๋ผ์šฐ๋“œ / ๋งค๋ฒˆ ์„ ํƒ)์™€ **๋…ธํŠธ์— ์‚ฝ์ž…ํ•  ํ˜•์‹**์€ ์„œ๋กœ ๋…๋ฆฝ์ ์ธ -์„ค์ •์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์„ค์ •์ด `linkMode`์ž…๋‹ˆ๋‹ค. - -| ๋ชจ๋“œ | ๋…ธํŠธ์— ์‚ฝ์ž…๋˜๋Š” ๋‚ด์šฉ | ๋ณผํŠธ ์‚ฌ๋ณธ | ๋‹ค๋ฅธ ๊ธฐ๊ธฐ | -|---|---|---|---| -| **`photo-info`** | ์ธ๋„ค์ผ + ํ•œ ์ค„ ์นด๋“œ | ์ธ๋„ค์ผ 1๊ฐœ | โœ… | -| `photo-only` | ์ธ๋„ค์ผ | ์ธ๋„ค์ผ 1๊ฐœ | โœ… | -| `link-only` | `eagle://` ๋งํฌ | ์—†์Œ | โœ… | -| **`cmds-eagle`** (๊ธฐ๋ณธ๊ฐ’) | ์ ˆ๋Œ€ `file://` ์ž„๋ฒ ๋“œ + ์นด๋“œ | ์—†์Œ | ๋“ฑ๋กํ•œ ๋ฐ์Šคํฌํ†ฑ๋งŒ ์ง€์› | -| `cmds-eagle-photo-only` | ์ ˆ๋Œ€ `file://` ์ž„๋ฒ ๋“œ | ์—†์Œ | ๋“ฑ๋กํ•œ ๋ฐ์Šคํฌํ†ฑ๋งŒ ์ง€์› | -| `cmds-eagle-photo-link` | `eagle://` ํ•ญ๋ชฉ ๋งํฌ๊ฐ€ ์—ฐ๊ฒฐ๋œ ์›๋ณธ ์ด๋ฏธ์ง€ | ์—†์Œ | ๋“ฑ๋กํ•œ ๋ฐ์Šคํฌํ†ฑ๋งŒ ์ง€์› | - -```markdown -# photo-info -[![hero shot](attachments/eagle/KXYZ01.png)](eagle://item/KXYZ01) -> `png` ยท 4.2 MB ยท 1920ร—1080 ยท #ui #ref ยท [Open in Eagle](eagle://item/KXYZ01) - -# photo-only -[![hero shot](attachments/eagle/KXYZ01.png)](eagle://item/KXYZ01) - -# link-only -[hero shot](eagle://item/KXYZ01) - -``` - -`cmds-eagle*` ์„ธ ๋ชจ๋“œ๋Š” ๋ณผํŠธ ์ธ๋„ค์ผ ๋Œ€์‹  ์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ถœ๋ ฅ ๊ตฌ์„ฑ์€ ํ‘œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. -์˜ˆ์‹œ์—๋Š” ์ปดํ“จํ„ฐ๋ณ„ ํŒŒ์ผ ์œ„์น˜๋ฅผ ๋„ฃ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. - -์ธ๋„ค์ผ์€ Eagle ํ•ญ๋ชฉ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋‹ค์‹œ ์‚ฝ์ž…ํ•ด๋„ ์ค‘๋ณต ์ƒ์„ฑ๋˜์ง€ -์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๋Š” ๋…ธํŠธ ๊ธฐ์ค€ ์ƒ๋Œ€ ๊ฒฝ๋กœ์ด๋ฏ€๋กœ ๋ณผํŠธ ์ „์ฒด๋ฅผ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์นด๋“œ๋Š” -์ •ํ™•ํžˆ ํ•œ ์ค„์ž…๋‹ˆ๋‹ค. `cmds-eagle*` ๋ชจ๋“œ๋Š” ์›๋ณธ ์ž์ฒด๋ฅผ ์ž„๋ฒ ๋“œํ•˜๋ฏ€๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งˆ์šดํŠธ๋˜์–ด -์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฐ์Šคํฌํ†ฑ์—์„œ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ -[ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋™๊ธฐํ™”](#ํฌ๋กœ์Šค-ํ”Œ๋žซํผ-๋™๊ธฐํ™”)๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. -์ด์‹ ๊ฐ€๋Šฅํ•œ ์‚ฌ์ง„ ๋ชจ๋“œ๋Š” ์ธ๋„ค์ผ์„ ์–ป์ง€ ๋ชปํ•˜๋ฉด ์ผ๋ฐ˜ `eagle://` ๋งํฌ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. -์›๋ณธ ๋ชจ๋“œ๋„ ์›๋ณธ์„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋Œ€์ฒดํ•˜๋ฉฐ, ์ž„์‹œ ํŒŒ์ผ ์ฐธ์กฐ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. -`cmds-eagle-photo-link`์—์„œ๋Š” ํ‘œ์‹œ๋œ ์›๋ณธ์„ ํด๋ฆญํ•˜๋ฉด Eagle์˜ ํ•ด๋‹น ํ•ญ๋ชฉ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค. - -`photo-*` ์ถœ๋ ฅ ํ˜•์‹์€ ๊ณ„์•ฝ ํ…Œ์ŠคํŠธ๋กœ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. `src/canonical.ts`์™€ -`tests/canonical.test.ts`๋ฅผ ์ฐธ์กฐํ•˜๋ฉฐ, ํ‘œ์‹œ ํ˜•์‹์„ ๋ณ€๊ฒฝํ•  ๋•Œ ๋‘ ํŒŒ์ผ๋„ ์ผ์น˜์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. - -### ๊ธฐ์กด ๋ณผํŠธ์˜ ์ด๋ฏธ์ง€ ์ด์ „ - -`Move all local images in the vault into Eagle`์€ ์ฐธ์กฐ๋œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ๋ชจ๋“  ์ฐธ์กฐ๋ฅผ -ํ‘œ์ค€ ํ˜•์‹์œผ๋กœ ๋ฐ”๊พผ ๋’ค ๋ณผํŠธ ์‚ฌ๋ณธ์„ ํœด์ง€ํ†ต์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. -`Move this note's local images into Eagle`์€ ํ•œ ๋…ธํŠธ์—์„œ ๋Œ€์ƒ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•˜๋ฏ€๋กœ ๋จผ์ € -์‹œํ—˜ํ•˜๊ธฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋…ธํŠธ์— ์žˆ๋Š” ๋™์ผ ์ด๋ฏธ์ง€์˜ ์ฐธ์กฐ๋„ ํ•จ๊ป˜ ๋ฐ”๋€๋‹ˆ๋‹ค. -๋‘ ๋ช…๋ น ๋ชจ๋‘ ํ™•์ธ์„ ์š”์ฒญํ•˜๊ณ  ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ๋ณผํŠธ ์ „์ฒด ์ด์ „์€ ์›๋ณธ์„ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์ด๋ฉฐ -ํฐ ๋ณผํŠธ์—์„œ๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋จผ์ € ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํœด์ง€ํ†ต์œผ๋กœ ๋ณด๋‚ด๋ ค๋ฉด Obsidian์—์„œ -ํ•ด๋‹น ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ Obsidian์˜ ์‚ญ์ œ ์„ค์ •์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. - -## ์ฃผ์š” ๊ธฐ๋Šฅ - -- **๊ฒ€์ƒ‰ ๋ฐ ์ž„๋ฒ ๋“œ**: Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋…ธํŠธ์— ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”๋กœ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. -- **์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ**: ๋“ฑ๋ก๋œ Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณ ์ • ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋งˆ๋‹ค ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. -- **ํด๋” ์ง€์ •**: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณ„ ๊ธฐ๋ณธ ํด๋”๋กœ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋งค๋ฒˆ ํด๋”๋ฅผ ์„ ํƒยท์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. -- **ํด๋ผ์šฐ๋“œ ์—…๋กœ๋“œ**: ImgHippo, Cloudflare R2, Amazon S3, WebDAV๋กœ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. -- **๋ถ™์—ฌ๋„ฃ๊ธฐยท๋“œ๋กญ ์—ฐ๋™**: ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ ๋“œ๋กญํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. -- **์ผ๊ด„ ๋ณ€ํ™˜**: ๋…ธํŠธ์˜ ๋กœ์ปฌ ์ด๋ฏธ์ง€๋ฅผ ํด๋ผ์šฐ๋“œ URL๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. -- **ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋™๊ธฐํ™”**: Mac๊ณผ Windows ์‚ฌ์ด์˜ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๋ฅผ ์ž๋™ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. -- **Excalidraw ์—ฐ๋™**: ์บ”๋ฒ„์Šค์— ์ด๋ฏธ์ง€๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ ๋“œ๋กญํ•ฉ๋‹ˆ๋‹ค. Eagle ์—์…‹์€ ์›๋ณธ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ํด๋ฆฝ๋ณด๋“œ ์Šคํฌ๋ฆฐ์ƒท์€ ๋ณผํŠธ ์ฒจ๋ถ€ํŒŒ์ผ์„ ๋Š˜๋ฆฌ๋Š” ๋Œ€์‹  ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด๋กœ ์—…๋กœ๋“œํ•˜๊ณ  ์„ ํƒ์ ์œผ๋กœ Eagle์—๋„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. - -## ์„ค์น˜ - -### Community plugins์—์„œ ์„ค์น˜ (๊ถŒ์žฅ) - -1. Obsidian์—์„œ **Settings โ†’ Community plugins**๋ฅผ ์—ฝ๋‹ˆ๋‹ค. -2. **Browse**๋ฅผ ๋ˆ„๋ฅด๊ณ  **CMDS Eagle**์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. -3. **Install**์„ ๋ˆ„๋ฅธ ๋’ค **Enable**์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. - -### ์ˆ˜๋™ ์„ค์น˜ - -1. [Releases](https://github.com/johnfkoo951/cmds-eagle/releases)์—์„œ `main.js`, `manifest.json`, `styles.css`๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. -2. ๋ณผํŠธ์— `.obsidian/plugins/cmds-eagle/` ํด๋”๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. -3. ๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ์„ ํ•ด๋‹น ํด๋”์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. -4. Obsidian ์„ค์ •์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. - -### ๊ฐœ๋ฐœ ๋นŒ๋“œ - -```bash -npm install --legacy-peer-deps # upstream์ด ๊ณ ์ •ํ•œ typescript 4.7.4๋ฅผ typescript-eslint๊ฐ€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. +## ๊ฐœ๋ฐœ +```sh +npm install npm run build -npm test # ํ‘œ์ค€ ์ถœ๋ ฅ ํ˜•์‹ ๊ณ„์•ฝ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ``` +๋กœ์ปฌ ๊ฐœ๋ฐœ์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ ํŒŒ์ผ์„ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. +[๊ธฐ์กด ๋ฆด๋ฆฌ์Šค ์ด๋ ฅ](docs/guide.ko.md#๋ถ€๋ก-๊ธฐ์กด-๋ฆด๋ฆฌ์Šค-์ด๋ ฅ)์€ ์„ค๋ช…์„œ์— ๋ณด์กดํ–ˆ์Šต๋‹ˆ๋‹ค. -๋นŒ๋“œํ•œ `main.js`, `manifest.json`, `styles.css`๋ฅผ `/.obsidian/plugins/cmds-eagle/`์— -๋ณต์‚ฌํ•œ ๋’ค Obsidian ์„ค์ •์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. - -## ์š”๊ตฌ ์‚ฌํ•ญ - -- ๋กœ์ปฌ์—์„œ ์‹คํ–‰ ์ค‘์ธ [Eagle](https://eagle.cool) ์•ฑ -- Obsidian 1.6.6 ์ด์ƒ - -## ์‚ฌ์šฉ๋ฒ• - -### ๊ฒ€์ƒ‰ ๋ฐ ์ž„๋ฒ ๋“œ - -Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋…ธํŠธ์— ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”๋กœ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. - -![Search and Embed](assets/CMDS-eagle1.gif) - -### ์ด๋ฏธ์ง€ ๋ถ™์—ฌ๋„ฃ๊ธฐยท๋“œ๋กญ - -์ด๋ฏธ์ง€๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ ๋“œ๋กญํ•  ๋•Œ ์ €์žฅ ์œ„์น˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. - -![Search Modal](assets/CMDS-eagle2.gif) -![Search Results](assets/CMDS-eagle3.png) - -### ํด๋ผ์šฐ๋“œ ์—…๋กœ๋“œ - -๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๋„๋ก ์ด๋ฏธ์ง€๋ฅผ ํด๋ผ์šฐ๋“œ ์ €์žฅ์†Œ์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. - -![Cloud Upload](assets/CMDS-eagle5.gif) -![Paste Options](assets/CMDS-eagle4.gif) - -### ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋™๊ธฐํ™” - -์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ์›๋ณธ์„ ์ž„๋ฒ ๋“œํ•˜๋Š” `cmds-eagle*` ๋ชจ๋“œ์—๋งŒ ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ปดํ“จํ„ฐ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ -๋งˆ์šดํŠธํ•œ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๋“ฑ๋กํ•˜๋ฉด ๋…ธํŠธ๋ฅผ ์ฝ๋Š” ์ปดํ“จํ„ฐ์— ๋งž๊ฒŒ ๊ฒฝ๋กœ๋ฅผ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. - -![Cross-Platform Sync](assets/CMDS-eagle-cross-platform.gif) - -**๋™์ž‘ ๋ฐฉ์‹:** -1. ๊ฐ ์ปดํ“จํ„ฐ์—์„œ **Add current computer**๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‹คํ–‰ ์ค‘์ธ ์šด์˜์ฒด์ œ์™€ - ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ ๋กœ์ปฌ ํ”„๋กœํ•„์„ ์‹๋ณ„ํ•˜๋ฏ€๋กœ, ๋™๊ธฐํ™”๋œ Windows ์„ ํƒ๊ฐ’์„ macOS์˜ ํ˜„์žฌ ํ”„๋กœํ•„๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. -2. ํ•ด๋‹น ์ปดํ“จํ„ฐ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฃจํŠธ๋ฅผ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. - | ํ”Œ๋žซํผ | ์ง€์› ์œ„์น˜ | - |---|---| - | macOS | ๋กœ์ปฌ ๋ณผ๋ฅจ ๋˜๋Š” ๋งˆ์šดํŠธ๋œ ๋„คํŠธ์›Œํฌ ๊ณต์œ  | - | Windows drive | ๋กœ์ปฌ ๋“œ๋ผ์ด๋ธŒ ๋˜๋Š” ๋งคํ•‘๋œ ๋“œ๋ผ์ด๋ธŒ | - | Windows UNC | UNC ๋ฃจํŠธ๋กœ ์ง์ ‘ ์ง€์ •ํ•œ ๋„คํŠธ์›Œํฌ ๊ณต์œ  | -3. ํ•œ ์ปดํ“จํ„ฐ์˜ ๋ฃจํŠธ๋ฅผ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์˜ ๋ฃจํŠธ๋กœ ๋ฐ”๊ฟ” ๊ฒฝ๋กœ๋ฅผ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. - -๋ฃจํŠธ๊ฐ€ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•„๋ž˜์— ์žˆ์„ ํ•„์š”๋Š” ์—†์œผ๋ฏ€๋กœ NAS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -๊ฐ ์ปดํ“จํ„ฐ์—์„œ ์ž์‹ ์˜ ๋งˆ์šดํŠธ ์œ„์น˜๋งŒ ๋“ฑ๋กํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. UNC ๋ฃจํŠธ๋Š” ๋“œ๋ผ์ด๋ธŒ ๋ฌธ์ž๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ -์œ ์ง€๋˜์ง€๋งŒ, ๋งคํ•‘๋œ ๋“œ๋ผ์ด๋ธŒ ๋ฃจํŠธ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - -**์„ค์ •:** -- `Enable cross-platform path conversion` โ€” ๊ฒฝ๋กœ ๋ณ€ํ™˜์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. -- `Conversion mode` โ€” ๊ธฐ๋ณธ๊ฐ’์ธ `Render only`๋Š” ํ‘œ์‹œํ•  ๋•Œ๋งŒ ๊ฒฝ๋กœ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ณ  ๋…ธํŠธ์—๋Š” ์“ฐ์ง€ ์•Š์œผ๋ฏ€๋กœ, ๋™๊ธฐํ™”๋œ ๋ณผํŠธ๋ฅผ ๋‘ ์ปดํ“จํ„ฐ์—์„œ ์‚ฌ์šฉํ•ด๋„ ์ด ๋ณ€ํ™˜์œผ๋กœ ์ธํ•œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. `Modify note source`๋Š” ๋…ธํŠธ ๋‚ด์šฉ์„ ๋ฐ”๊พธ๋˜, ๋Œ€์ƒ์ด ํ˜„์žฌ ๋งˆ์šดํŠธ๋˜์ง€ ์•Š์€ ๊ฒฝ๋กœ๋Š” ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. -- `Auto-convert paths on file open` โ€” ํŒŒ์ผ์„ ์—ด ๋•Œ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. - -**์ˆ˜๋™ ๋ณ€ํ™˜:** `Convert cross-platform image paths in current note` ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. - -**์ œํ•œ ์‚ฌํ•ญ:** iOS์™€ Android๋Š” ํ•ด๋‹น ๊ณต์œ ๋ฅผ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ `file://`๋กœ NAS์— ์ ‘๊ทผํ•  ์ˆ˜ -์—†์Šต๋‹ˆ๋‹ค. ํœด๋Œ€์ „ํ™”์—์„œ๋„ ์ด๋ฏธ์ง€๋ฅผ ํ‘œ์‹œํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ณผํŠธ ์ธ๋„ค์ผ์„ ์‚ฌ์šฉํ•˜๋Š” `photo-info`๋ฅผ -์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํ†ฑ์—์„œ๋„ ๋…ธํŠธ๋ฅผ ์—ด ๋•Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งˆ์šดํŠธ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - -### Excalidraw - -Excalidraw ์บ”๋ฒ„์Šค์— ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”๋กœ ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ ๋“œ๋กญํ•˜์—ฌ Eagle๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. - -- **Eagle ์—์…‹**: Eagle์—์„œ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ๋“œ๋ž˜๊ทธํ•œ ํ•ญ๋ชฉ์€ ์ธ๋„ค์ผ์ด ์•„๋‹Œ **์›๋ณธ** ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. -- **ํด๋ฆฝ๋ณด๋“œ ์Šคํฌ๋ฆฐ์ƒท**: ํ™œ์„ฑ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด๋กœ ์—…๋กœ๋“œํ•˜์—ฌ URL๋กœ ์ž„๋ฒ ๋“œํ•˜๋ฉฐ, ์˜ต์…˜์„ ์ผœ๋ฉด Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. -- ๋ณผํŠธ ์ฒจ๋ถ€ํŒŒ์ผ ๋Œ€์‹  ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ URL์„ ์ž„๋ฒ ๋“œํ•˜๋ฏ€๋กœ `.excalidraw` ํŒŒ์ผ์„ ์ž‘๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. - -[Excalidraw](https://github.com/zsviczian/obsidian-excalidraw-plugin) ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด -์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. **Settings โ†’ Excalidraw integration**์—์„œ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. - -## ์„ค์ • - -### Eagle libraries - -**Settings โ†’ Eagle libraries**์—์„œ ๊ฐ€์ ธ์˜ฌ ์œ„์น˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์€ ๊ฐ€์ ธ์˜ค๊ธฐ์— ์ ์šฉ๋˜๋ฉฐ, -๊ฒ€์ƒ‰์€ ์—ฌ์ „ํžˆ Eagle์—์„œ ํ˜„์žฌ ์—ด๋ ค ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. - -| ์„ค์ • ๋˜๋Š” ๋ฒ„ํŠผ | ๋™์ž‘ | -|---|---| -| `Target library` | ๊ธฐ๋ณธ๊ฐ’์ธ `Currently open library`๋Š” ์ „ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. `Always a specific library`๋Š” ์ง€์ •ํ•œ `Default library`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, `Ask every time`์€ ๋“ฑ๋ก๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘์—์„œ ์„ ํƒํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. | -| `Default library` | `Always a specific library`๋ฅผ ์„ ํƒํ•˜๋ฉด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์ง€๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. | -| `Target folder` | `Each library's default folder`๋Š” ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ €์žฅํ•œ ํด๋”๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. `Ask every time`์€ ํด๋” ์ƒ์„ฑ๋„ ๊ฐ€๋Šฅํ•œ ์„ ํƒ ์ฐฝ์„ ์—ด๋ฉฐ, `Library root`๋Š” ํด๋” ์ง€์ • ์—†์ด ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. | -| `Switch back after import` | ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜จ ๋’ค ์ด์ „์— ์—ด๋ ค ์žˆ๋˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ๋„๋ฉด ๋Œ€์ƒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ด๋ฆฐ ์ƒํƒœ๋กœ ๋‘ก๋‹ˆ๋‹ค. | -| `Library switch timeout` | ์ „ํ™˜ ๋Œ€๊ธฐ ์ œํ•œ ์‹œ๊ฐ„์ด๋ฉฐ ๋‹จ์œ„๋Š” ๋ฐ€๋ฆฌ์ดˆ, ์ตœ์†Ÿ๊ฐ’์€ 1000์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์ „ํ™˜์—๋Š” ์•ฝ 1์ดˆ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. | -| `Scan Eagle` | `Detect libraries` ์•„๋ž˜์˜ ๋ฒ„ํŠผ์ž…๋‹ˆ๋‹ค. Eagle์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋ก๊ณผ ํ˜„์žฌ ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฝ์–ด ํ”„๋กœํ•„์„ ์ถ”๊ฐ€ํ•˜๋ฉฐ, ์ €์žฅ๋œ ๊ธฐ๋ณธ ํด๋”๋Š” ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €์žฅ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„์ง ์กด์žฌํ•˜๋Š”์ง€๋„ ๋‹ค์‹œ ํ™•์ธํ•ด ์‚ฌ๋ผ์ง„ ๊ฒƒ์€ `Missing`์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. | -| `Remove missing libraries on scan` | ๊ธฐ๋ณธ๊ฐ’์€ ๊บผ์ง์ž…๋‹ˆ๋‹ค. ์ผœ๋ฉด `Scan Eagle`์ด Eagle ๋ชฉ๋ก์—๋„ ์—†๊ณ  ๋””์Šคํฌ์—๋„ ์—†๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ €์žฅ๋œ ๊ธฐ๋ณธ ํด๋”์™€ ํ•จ๊ป˜ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๊บผ๋‘๋ฉด `Missing` ํ‘œ์‹œ๋งŒ ๋‚จ๊ณ  ์ง์ ‘ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. | -| `Items to pre-load for search` | ๊ฒ€์ƒ‰ ์ฐฝ์ด ๋ฏธ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ฌ ํ•ญ๋ชฉ ์ˆ˜์ž…๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’ 5000). ์ด ์ˆ˜๋ฅผ ๋„˜์œผ๋ฉด ์ž…๋ ฅ์— ๋”ฐ๋ผ Eagle์˜ keyword ๊ฒ€์ƒ‰์œผ๋กœ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค. Eagle ๊ธฐ๋ณธ๊ฐ’์ธ 200์€ ๋Œ€๋ถ€๋ถ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋„ˆ๋ฌด ์ž‘์Šต๋‹ˆ๋‹ค. | - -ํด๋” ID๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณ„๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์ • ํ•ญ๋ชฉ์ด๋‚˜ -`Set default Eagle folder for the open library` ๋ช…๋ น์œผ๋กœ ๊ฐ๊ฐ ๊ธฐ๋ณธ ํด๋”๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. -๊ธฐ๋ณธ ํด๋”๊ฐ€ ์—†์œผ๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฃจํŠธ๋กœ ๊ฐ€์ ธ์˜ค๋ฉฐ, ์ €์žฅ๋œ ํด๋”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์„ ๋•Œ๋„ ์•Œ๋ฆผ์„ -ํ‘œ์‹œํ•˜๊ณ  ๋ฃจํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชฉ๋ก์ด ๋น„์–ด ์žˆ์œผ๋ฉด ๋จผ์ € `Scan Eagle`์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. - -๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค„์˜ ์ œ๊ฑฐ ๋ฒ„ํŠผ์€ ํ•ด๋‹น ํ•ญ๋ชฉ์„ ์ €์žฅ๋œ ๊ธฐ๋ณธ ํด๋”์™€ ํ•จ๊ป˜ ๋ชฉ๋ก์—์„œ ์ง€์›๋‹ˆ๋‹ค. `Default library`๋กœ -์„ ํƒํ•ด๋‘” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๊ทธ ์„ ํƒ๋„ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค. ์ œ๊ฑฐํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Eagle์ด ์—ฌ์ „ํžˆ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ๋‹ค์Œ -์Šค์บ”์—์„œ ๋‹ค์‹œ ๋‚˜ํƒ€๋‚˜๋ฏ€๋กœ, ์‚ญ์ œ๊ฐ€ ์˜๊ตฌ์ ์ธ ๊ฒƒ์€ ์‹ค์ œ๋กœ ์‚ฌ๋ผ์ง„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฟ์ž…๋‹ˆ๋‹ค. - -์—ด๋ ค ์žˆ์ง€ ์•Š์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๋ฉด Eagle์„ ์ „ํ™˜ํ•˜๊ณ , `Switch back after import`๊ฐ€ ์ผœ์ ธ -์žˆ์œผ๋ฉด ์ž‘์—… ํ›„ ๋Œ์•„์˜ต๋‹ˆ๋‹ค. ๊ฐ ์ „ํ™˜์—๋Š” ์•ฝ 1์ดˆ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜ค๋Š” ๋„์ค‘ Eagle์—์„œ ์ง์ ‘ -๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ฐ”๊พธ๋ฉด ๋ณต๊ท€ ์‹œ ์‚ฌ์šฉ์ž์˜ ์„ ํƒ์„ ์กด์ค‘ํ•˜์—ฌ ์ด์ „ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋˜๋Œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - -๊ทธ ์•„๋ž˜์—์„œ ์‚ฌ์šฉํ•  ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด์™€ ๊ฒ€์ƒ‰ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. - -![Settings](assets/CMDS-eagle6.png) - -## ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด - -| ์ œ๊ณต์—…์ฒด | ์„ค์ • | -|---|---| -| **ImgHippo** (๋ฌด๋ฃŒ) | [imghippo.com](https://imghippo.com)์— ๊ฐ€์ž…ํ•˜๊ณ  [์„ค์ •](https://www.imghippo.com/settings)์—์„œ API ํ‚ค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์Šต๋‹ˆ๋‹ค. | -| **Cloudflare R2** | Worker ๋ฐฐํฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. | -| **Amazon S3** | ์ผ๋ฐ˜ S3 ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. | -| **WebDAV** | Synology, Nextcloud ๋“ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. | - -![Cloud Settings](assets/CMDS-eagle7.png) - -## ๋ช…๋ น์–ด - -Obsidian ๋ช…๋ น ํŒ”๋ ˆํŠธ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ด๋ฆ„์€ ๋“ฑ๋ก๋œ ๋ช…๋ น ์ด๋ฆ„๊ณผ ๊ฐ™์œผ๋ฉฐ, -ํด๋ผ์šฐ๋“œ ๋ช…๋ น ์„ธ ๊ฐ€์ง€๋Š” ๋ชจ๋‘ ์„ค์ •์—์„œ ํ™œ์„ฑํ™”ํ•œ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. - -### Search Eagle library and embed - -`search-eagle`์€ **ํ˜„์žฌ ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ**๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํผ์ง€ ๊ฒ€์ƒ‰ ์ฐฝ์„ ์—ฝ๋‹ˆ๋‹ค. -๊ฒ€์ƒ‰ ๋ฒ”์œ„๋Š” `Name`, `Tags`, `Notes`, `Folders`, ํŒŒ์ผ ์œ ํ˜•์€ `Images`, `Videos`, `Docs`, -`All`๋กœ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์—์…‹์„ ์ฐพ์•„ ์„ ํƒํ•˜๋ฉด `linkMode`๊ฐ€ ์ง€์ •ํ•œ ํ˜•์‹์œผ๋กœ ํ˜„์žฌ ๋…ธํŠธ์— -์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก๋œ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ค๊ธฐ ๋Œ€์ƒ์œผ๋กœ ์ „ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, -๊ฒ€์ƒ‰ํ•˜๋ ค๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋จผ์ € ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - -### Switch Eagle library - -`switch-eagle-library`๋Š” ๋ณผํŠธ ์•ˆ์—์„œ Eagle์˜ ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ์„ ํƒ ์ฐฝ์„ ์—ฝ๋‹ˆ๋‹ค. -๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์ „์— ์‚ฌ์šฉํ•˜๋ฉฐ, ๋…ธํŠธ ๋‚ด์šฉ์ด๋‚˜ ๊ฐ€์ ธ์˜ค๊ธฐ ๋Œ€์ƒ ์„ค์ •์€ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. -Eagle์€ ์‹คํ–‰ ์ค‘์ด์–ด์•ผ ํ•˜๊ณ  ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์—ด๋ฉฐ, ๋ช…๋ น ์‹คํ–‰ ํ›„ ์„ ํƒํ•œ -๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ด๋ฆฐ ์ƒํƒœ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ๋จผ์ € ๊ฐ์ง€๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. - -### Set default Eagle folder for the open library - -`set-eagle-default-folder`๋Š” ํ˜„์žฌ ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ธฐ๋ณธ ํด๋”๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. -๋งค๋ฒˆ ํด๋”๋ฅผ ๊ณ ๋ฅด์ง€ ์•Š๊ณ  ๊ฐ™์€ ์œ„์น˜๋กœ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ธฐ๋ณธ๊ฐ’๋งŒ ์ €์žฅํ•˜๊ณ  -๊ธฐ์กด ํ•ญ๋ชฉ์„ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋…ธํŠธ๋ฅผ ๋ฐ”๊พธ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ํด๋” ID๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณ„๋กœ ๋‹ค๋ฅด๋ฉฐ, ์ €์žฅํ•œ -์„ ํƒ์€ `Target folder`๊ฐ€ `Each library's default folder`์ผ ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. -`Ask every time`์ด๋‚˜ `Library root`์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - -### Upload clipboard Eagle image to cloud - -`upload-clipboard-to-cloud`๋Š” ํด๋ฆฝ๋ณด๋“œ์˜ Eagle ํ•ญ๋ชฉ ๋งํฌ, Eagle localhost URL ๋˜๋Š” Eagle -๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ ์œ„์น˜๋ฅผ ์ฝ์–ด ํ™œ์„ฑ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด๋กœ ์›๋ณธ์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. -๊ธฐ์กด Eagle ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ƒˆ ์—…๋กœ๋“œ์— ์„ฑ๊ณตํ•˜๋ฉด ํ˜„์žฌ ํŽธ์ง‘๊ธฐ์— Markdown -์ด๋ฏธ์ง€๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ๊ณต๊ฐœ URL์„ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌํ•˜๋ฉฐ, ํ•ญ๋ชฉ์„ ์ฐพ์€ ๊ฒฝ์šฐ Eagle ์—…๋กœ๋“œ ํƒœ๊ทธ๋„ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. -์Šคํฌ๋ฆฐ์ƒท ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์•„๋‹Œ ํ…์ŠคํŠธ ์ฐธ์กฐ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ํ•ญ๋ชฉ ์กฐํšŒ๋Š” ํ˜„์žฌ ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. -์ด๋ฏธ ์—…๋กœ๋“œํ•œ ํ•ญ๋ชฉ์œผ๋กœ ์ธ์‹๋˜๋ฉด ์ƒˆ ์ž„๋ฒ ๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด URL๋งŒ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. - -### Embed Eagle image and upload to cloud - -`embed-and-upload`๋Š” ํด๋ฆฝ๋ณด๋“œ ํ…์ŠคํŠธ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” Eagle ์ด๋ฏธ์ง€๋ฅผ ํ™œ์„ฑ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด๋กœ -์—…๋กœ๋“œํ•˜๊ณ , ๋ฐ˜ํ™˜๋œ ๊ณต๊ฐœ URL๋กœ Markdown ์ด๋ฏธ์ง€๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. -์—…๋กœ๋“œ์™€ ์ž„๋ฒ ๋“œ๋ฅผ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ•ญ๋ชฉ์„ ์ฐพ๊ณ  ์—…๋กœ๋“œ ํ‚ค๋ฅผ ๋ฐ›์€ ๊ฒฝ์šฐ Eagle์— -์—…๋กœ๋“œ ํƒœ๊ทธ๋„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฐ์ƒท ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์ง€์›๋˜๋Š” Eagle ํ…์ŠคํŠธ ์ฐธ์กฐ์™€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ -์›๋ณธ์ด ํ•„์š”ํ•˜๋ฉฐ, ๊ฒฐ๊ณผ URL์„ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์—…๋กœ๋“œ ํ•ญ๋ชฉ์„ ๊ฑด๋„ˆ๋›ฐ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. - -### Convert all images in note to cloud URLs - -`convert-all-to-cloud`๋Š” ํ˜„์žฌ ๋…ธํŠธ์—์„œ ์ธ์‹ํ•œ ๋กœ์ปฌ Markdown ์ด๋ฏธ์ง€ ์ž„๋ฒ ๋“œ๋ฅผ ํ™œ์„ฑ ํด๋ผ์šฐ๋“œ -์ œ๊ณต์—…์ฒด๋กœ ์—…๋กœ๋“œํ•˜๊ณ , ์„ฑ๊ณตํ•œ URL์„ ๋…ธํŠธ ์›๋ฌธ์—์„œ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. -๊ธฐ์กด ๋…ธํŠธ๋ฅผ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ๋„ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ํŒŒ์ผ URL, Eagle localhost -์ธ๋„ค์ผ URL์˜ ์›๋ณธ, ์ง€์›๋˜๋Š” ์ƒ๋Œ€ ์ด๋ฏธ์ง€ ๋งํฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ ์œ„ํ‚ค ํ˜•์‹ ์ž„๋ฒ ๋“œ๋‚˜ ์ผ๋ฐ˜ ์›น ์ด๋ฏธ์ง€๋Š” -์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›๋ณธ ํŒŒ์ผ์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์—…๋กœ๋“œ ์„ฑ๊ณต ์ˆ˜์™€ ์ „์ฒด ์ˆ˜๋ฅผ ์•Œ๋ฆฌ๋ฉฐ, -์‹คํŒจํ•œ ์—…๋กœ๋“œ์˜ ์ฐธ์กฐ๋Š” ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธ ๋Œ€ํ™”์ƒ์ž ์—†์ด ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ์‹คํ–‰ ์ „์— ๋…ธํŠธ์™€ ์ œ๊ณต์—…์ฒด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. - -### Convert cross-platform image paths in current note - -`convert-cross-platform-paths`๋Š” ์„ค์ •์˜ ์ปดํ“จํ„ฐ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•ด ๊ธฐ๊ธฐ ๊ฐ„ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๋ฅผ -๋ณ€ํ™˜ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๋ฐ์Šคํฌํ†ฑ์—์„œ ๋™๊ธฐํ™”๋œ ๋…ธํŠธ๋ฅผ ์—ด ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. -`Conversion mode`๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ธ `Render only`์ด๋ฉด ํ‘œ์‹œ๋œ ์ด๋ฏธ์ง€๋งŒ ๋ฐ”๊พธ๊ณ  ๋…ธํŠธ์—๋Š” ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. -`Modify note source`์ด๋ฉด ๋…ธํŠธ์˜ ํŒŒ์ผ URL์„ ๋ฐ”๊พธ๋˜ ๋งˆ์šดํŠธ๋˜์ง€ ์•Š์€ ๋Œ€์ƒ์€ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. -๋จผ์ € `Enable cross-platform path conversion`์„ ์ผœ๊ณ  ํ˜„์žฌ ์ปดํ“จํ„ฐ๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋ฉฐ, -์ด ๋ช…๋ น์ด Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ๋™๊ธฐํ™”ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. - -### Move this note's local images into Eagle - -`migrate-note-images-to-eagle`์€ ํ™•์ธ์„ ๋ฐ›์€ ๋’ค ํ˜„์žฌ ๋…ธํŠธ์— ์ž„๋ฒ ๋“œ๋œ ์ง€์› ํ˜•์‹์˜ ๋ณผํŠธ ์ด๋ฏธ์ง€๋ฅผ -์„ค์ •๋œ Eagle ๋Œ€์ƒ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ , ๋ณผํŠธ ์ „์ฒด์—์„œ ์ฐพ์€ ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ ๋ชจ๋“  ์ฐธ์กฐ๋ฅผ `linkMode`์— -๋”ฐ๋ผ ๋ฐ”๊พผ ๋’ค ๊ฐ ๋ณผํŠธ ์›๋ณธ์„ ํœด์ง€ํ†ต์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. -๋ณผํŠธ ์ „์ฒด ์ด์ „ ์ „์— ์†Œ๊ทœ๋ชจ๋กœ ์‹œํ—˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋‹ค๋ฅธ ๋…ธํŠธ๋„ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -์ƒ์„ฑ๋œ Eagle ์ธ๋„ค์ผ๊ณผ ์ž„์‹œ ์ค€๋น„ ํŒŒ์ผ์€ ์ œ์™ธํ•˜๊ณ , ๊ฐ€์ ธ์˜ค๊ธฐ๋‚˜ ์ฐธ์กฐ ๋ณ€๊ฒฝ์ด ์‹คํŒจํ•˜๋ฉด ๋ณผํŠธ ์›๋ณธ์„ -๋‚จ๊ฒจ ๋‘์ง€๋งŒ ์•ž์„œ ์„ฑ๊ณตํ•œ ๋ณ€๊ฒฝ๊นŒ์ง€ ๋˜๋Œ๋ฆฌ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. -ํ™•์ธ ๋ฌธ๊ตฌ์—๋Š” ์‹œ์Šคํ…œ ํœด์ง€ํ†ต์œผ๋กœ ํ‘œ์‹œ๋˜์ง€๋งŒ ๊ตฌํ˜„์€ Obsidian์˜ ์‚ญ์ œ ์„ค์ •์„ ๋”ฐ๋ฅด๋ฏ€๋กœ, -๋ณผํŠธ ํœด์ง€ํ†ต ๋Œ€์‹  ์‹œ์Šคํ…œ ํœด์ง€ํ†ต์œผ๋กœ ๋ณด๋‚ด๋ ค๋ฉด Obsidian์—์„œ ์‹œ์Šคํ…œ ํœด์ง€ํ†ต์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. - -### Move all local images in the vault into Eagle - -`migrate-vault-images-to-eagle`์€ ํ™•์ธ์„ ๋ฐ›์€ ๋’ค Markdown ๋…ธํŠธ์—์„œ ์ง€์› ํ˜•์‹์˜ ๋ณผํŠธ ์ด๋ฏธ์ง€ -์ž„๋ฒ ๋“œ๋ฅผ ์ฐพ์•„ ์„ค์ •๋œ Eagle ๋Œ€์ƒ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ , ๋ฐœ๊ฒฌํ•œ ๋ชจ๋“  ์ฐธ์กฐ๋ฅผ ๋ฐ”๊พผ ๋‹ค์Œ ์„ฑ๊ณตํ•œ ์ด๋ฏธ์ง€์˜ -๋ณผํŠธ ์‚ฌ๋ณธ์„ ํœด์ง€ํ†ต์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. -์ „์ฒด ์ด์ „์— ์‚ฌ์šฉํ•˜์ง€๋งŒ **๋ณผํŠธ ์›๋ณธ์„ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์ด๋ฉฐ ํฐ ๋ณผํŠธ์—์„œ๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, -๋จผ์ € ๋ฐฑ์—…ํ•˜๊ณ  `Move this note's local images into Eagle`๋ถ€ํ„ฐ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค**. -์ฐธ์กฐ๋˜์ง€ ์•Š์€ ํŒŒ์ผ, ์ƒ์„ฑ๋œ Eagle ์ธ๋„ค์ผ, ์ž„์‹œ ์ค€๋น„ ํŒŒ์ผ์€ ์ด์ „ ๋Œ€์ƒ์ด ์•„๋‹ˆ๋ฉฐ, ํ•œ ๋ฒˆ์˜ -๋Œ€์ƒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์—… ๊ตฌ๊ฐ„์—์„œ ์ผ๊ด„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋กค๋ฐฑ ๋Œ€์‹  ์„ฑ๊ณตยท์‹คํŒจ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. -๋…ธํŠธ ๋‹จ์œ„ ๋ช…๋ น๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ œ๊ฑฐํ•œ ์‚ฌ๋ณธ์„ ์‹œ์Šคํ…œ ํœด์ง€ํ†ต์— ๋ณด๋‚ด๋ ค๋ฉด Obsidian์˜ ์‚ญ์ œ ์„ค์ •์—์„œ -์‹œ์Šคํ…œ ํœด์ง€ํ†ต์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. - -### Verify Eagle references in current note - -`verify-eagle-links`๋Š” **๋””์Šคํฌ์—์„œ ํŒŒ์ผ์ด ์‚ฌ๋ผ์กŒ๊ฑฐ๋‚˜ Eagle์—์„œ ํ•ญ๋ชฉ์ด ์‚ฌ๋ผ์ง„ ์ฐธ์กฐ**๋ฅผ -๋ณด๊ณ ํ•˜๋ฉฐ, ๋…ธํŠธ ์ฐธ์กฐ์—์„œ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์œ„์น˜๊ฐ€ ์—†๋Š” ๋”ฅ ๋งํฌ๋ฅผ -ํ™•์ธํ•  ํ˜„์žฌ ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. -์—์…‹์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ด๋™ํ•œ ๋’ค ์‚ฌ์šฉํ•˜๋ฉฐ, ์‚ญ์ œํ•œ ์ด๋ฏธ์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ณต๋˜์–ด Obsidian ์ฐฝ์„ -๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ™”๋ฉด๋งŒ ๋ฏฟ๊ธฐ๋ณด๋‹ค ์ด ๋ช…๋ น์œผ๋กœ ์‹ค์ œ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. -๋…ธํŠธ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์•Œ๋ฆผ๊ณผ ์ฝ˜์†” ์ƒ์„ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ๊ฒ€์‚ฌ ์ค‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž ์‹œ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -Eagle์ด ์‹คํ–‰ ์ค‘์ด์ง€ ์•Š์œผ๋ฉด ๋””์Šคํฌ ํŒŒ์ผ๋งŒ ํ™•์ธํ•˜๋ฉฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋”ฅ ๋งํฌ์˜ -๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹๋ณ„ํ•˜์ง€ ๋ชปํ•˜๋ฉด ํ•ญ๋ชฉ ๊ฒ€์ฆ์ด ์ œํ•œ๋˜๋ฏ€๋กœ ๋ฏธํ™•์ธ ํ•ญ๋ชฉ์ด ๋ฐ˜๋“œ์‹œ ์‚ญ์ œ๋˜์—ˆ๋‹ค๋Š” ๋œป์€ ์•„๋‹™๋‹ˆ๋‹ค. - -## ์ œ์ž‘์ž - -**Yohan Koo (CMDSPACE)** โ€” https://cmdspace.work - -## ๋ผ์ด์„ ์Šค - -MIT +## ์ œ์ž‘์ž์™€ ๋ผ์ด์„ ์Šค +**Yohan Koo (CMDSPACE)**, https://cmdspace.work. **MIT**, [LICENSE](LICENSE). diff --git a/README.md b/README.md index 165271b..1edf794 100644 --- a/README.md +++ b/README.md @@ -1,392 +1,45 @@ -[๐Ÿ‡ฌ๐Ÿ‡ง English](README.md) ยท [๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด](README.ko.md) +[![English](https://img.shields.io/badge/English-README-134538)](README.md) [![ํ•œ๊ตญ์–ด](https://img.shields.io/badge/ํ•œ๊ตญ์–ด-README-E985A2)](README.ko.md) # CMDS Eagle +Bring Eagle assets into your notes, with an explicit choice between local originals, portable previews, and cloud URLs. -Obsidian plugin to connect [Eagle](https://eagle.cool) asset library with your vault. +**Version 1.8.4 | Available in Community Plugins.** -## What's new in 1.8.4 +Obsidian 1.6.6+ | Desktop only. -**A renamed or deleted library stayed in the list for good.** Detection only ever added profiles, so a -library you renamed in Eagle kept its old entry in settings โ€” pointing at a path that no longer exists, -with no way to remove it. Every library row now has a remove button, and a library Eagle has forgotten -that is also gone from disk is marked `Missing` with a `Remove all missing` action above the list. +![CMDS Eagle storage choice](assets/CMDS-eagle3.png) +Choose where an image is stored. Earlier UI shown; current labels may differ. -Removal stays deliberate by default, because a profile holds your saved default folder. A library is -only called missing when **both** signals agree: Eagle no longer lists it *and* the bundle is gone from -disk. An external or network volume that is merely unmounted is still remembered by Eagle, so it stays -listed and keeps its settings. When Eagle is not running nothing is judged at all. Turn on -`Remove missing libraries on scan` if you would rather have `Scan Eagle` clean up on its own. +## What it does +- Search the open Eagle library and embed an image with its metadata. +- Import pasted/dropped images into a chosen Eagle library and folder. +- Choose six link modes independently of the image storage destination. +- Upload through configured cloud providers or map original-file paths across desktops. -## What's new in 1.8.2 +## Install and first use +**Community:** Settings โ†’ Community plugins โ†’ Browse โ†’ **CMDS Eagle** โ†’ Install โ†’ Enable. -**Search saw only a fraction of your library.** Eagle returns 200 items when no limit is given, and the -search modal never gave one โ€” so on a 2,400-item library it fuzzy-matched against 8% of it and -everything else behaved as though it did not exist. The modal now pre-loads `Items to pre-load for -search` (default 5000) and, beyond that cap, merges in Eagle's own keyword search as you type, so no -item is unreachable regardless of library size. +**Manual:** Download `main.js`, `manifest.json`, and `styles.css` from [release 1.8.4](https://github.com/johnfkoo951/cmds-eagle/releases/tag/1.8.4), place them in `/.obsidian/plugins/cmds-eagle/`, reload Obsidian, and enable. Back up existing settings; do not copy another userโ€™s `data.json`. -**The search filters were never drawn.** The scope filters (`Name` / `Tags` / `Notes` / `Folders`), the -file-type filters and the library item-count header had all been silently missing, because the code that -inserts them looked for the wrong element. They now render. +Open Eagle, test the connection in settings, choose `photo-info` for a portable preview, then run **Search Eagle library and embed** in a sample note. -**Attachments no longer break at the vault root.** With Obsidian's *Default location for new attachments* -left at `Vault folder`, saving an image locally produced a `//name.png` path that Obsidian could not -resolve. Reported and fixed by [@nancyel](https://github.com/nancyel) in -[#1](https://github.com/johnfkoo951/cmds-eagle/pull/1), then extended to the neighbouring cases. +## Read the manual +- [English user guide](docs/guide.md) +- [ํ•œ๊ตญ์–ด ์‚ฌ์šฉ์„ค๋ช…์„œ](docs/guide.ko.md) +- [Web manual](https://apps.cmdspace.work/plugins/cmds-eagle/) +- [Product family](https://apps.cmdspace.work/plugins/) +- [Issues and support](https://github.com/johnfkoo951/cmds-eagle/issues) -## What's new in 1.8.0 +## Privacy and limits +Eagle is a separately licensed desktop application. Local search needs no cloud account. Cloud uploads disclose image bytes to your provider. Migration commands can rewrite other notes and trash vault originals: back up first. -### Multiple Eagle libraries - -Eagle opens one library at a time, so importing into another one means switching Eagle to it and -switching back โ€” about a second each way. Set this up under **Settings โ†’ Eagle libraries**: - -| Target library | Behaviour | -|---|---| -| Currently open library (default) | Never switches. Identical to 1.7.x. | -| Always a specific library | Switches to it when needed, then restores if `Switch back after import` is enabled. | -| Ask every time | Prompts, so one note can hold assets from several libraries. | - -If you switch libraries in Eagle yourself while an import is running, your choice wins โ€” the plugin -checks before restoring and leaves Eagle where you put it. - -### Per-library folders - -Imports can land in a folder rather than the library root. Folder ids belong to their library, so each -library remembers its own default folder. **Target folder** can also be set to *Ask every time*, which -opens a picker that searches full paths (`proj/jazz` finds `Projects/Jazz Blend`) and can create a -folder inline โ€” type `Inbox/2026` to create `2026` under `Inbox`. - -Eagle assigns folders at import time only: its API cannot move an item between folders afterwards. So -the target is chosen up front, and re-filing means re-importing. - -### Capture and link modes - -Pasting into Eagle previously left a copy in the vault as well, and the reference that was inserted did -not survive a resync or a move to a second machine. This version changes three things: - -| | Before | Now | -|---|---|---| -| Staged copy under `.eagle-temp/` | written on every paste, never deleted โ€” the original ends up in both Eagle and the vault | removed once Eagle confirms the import | -| Inserted path | absolute `file://` into the Eagle library, with no alternative | still the default (`cmds-eagle`), but `photo-info` now offers a vault-relative thumbnail + `eagle://` deep link that survives a resync and renders on other devices | -| Thumbnail wait | hardcoded `delay(1000)`; large files fall back to a link to the temp file, which is then orphaned | exponential-backoff polling, then a deep link โ€” never a machine-local path | - -Existing installs keep their current behaviour: `linkMode` defaults to `cmds-eagle`, so nothing changes -until you pick another mode. - -> **Deleting in Eagle removes the image from your notes.** That is the intent of the `cmds-eagle` -> modes โ€” Eagle is the source of truth. Be aware that the image may keep rendering for a while after -> deletion: Obsidian serves it from memory until the window reloads. Run -> `Verify Eagle references in current note` to see the real state. Choose `photo-info` instead if you -> want notes to survive deletions in Eagle. - -### Link modes - -Two independent settings: **where the file is stored** (Eagle / vault / cloud / ask) and **what goes into -the note**. The second one is `linkMode`: - -| mode | note contains | vault copies | other devices | -|---|---|---|---| -| **`photo-info`** | thumbnail + one-line card | 1 thumbnail | โœ… | -| `photo-only` | thumbnail | 1 thumbnail | โœ… | -| `link-only` | `eagle://` link | none | โœ… | -| **`cmds-eagle`** (default) | absolute `file://` embed + card | none | registered desktops only | -| `cmds-eagle-photo-only` | absolute `file://` embed | none | registered desktops only | -| `cmds-eagle-photo-link` | original image linked to its `eagle://` item | none | registered desktops only | - -```markdown -# photo-info -[![hero shot](attachments/eagle/KXYZ01.png)](eagle://item/KXYZ01) -> `png` ยท 4.2 MB ยท 1920ร—1080 ยท #ui #ref ยท [Open in Eagle](eagle://item/KXYZ01) - -# photo-only -[![hero shot](attachments/eagle/KXYZ01.png)](eagle://item/KXYZ01) - -# link-only -[hero shot](eagle://item/KXYZ01) - -``` - -For the three `cmds-eagle*` modes, the table describes the equivalent output using the original -image rather than a vault thumbnail; machine-specific file locations are omitted from these examples. - -The thumbnail is keyed by Eagle item id (so renames and re-inserts are idempotent), the image path is -relative to the note (so the whole vault syncs), and the card is exactly one line. The `cmds-eagle*` -modes embed the original itself, so they need the library to be mounted โ€” see -[Cross-platform sync](#cross-platform-sync) for sharing one library across desktops. The portable -photo modes degrade to a plain `eagle://` link when their thumbnail is unavailable. The original modes -do the same when the original cannot be resolved โ€” never to a temp-file reference. -In `cmds-eagle-photo-link`, clicking the rendered original opens that exact item in Eagle. - -The `photo-*` output shape is covered by contract tests โ€” see `src/canonical.ts` and -`tests/canonical.test.ts`. Keep them in sync when changing the rendered form. - -### Moving an existing vault over - -`Move all local images in the vault into Eagle` imports every referenced image, rewrites all references -to the canonical form, and sends the vault copy to the trash. `Move this note's local images into Eagle` -selects images from one note โ€” try that first. References to those images in other notes are also -rewritten. Both ask for confirmation and report what they touched. The vault-wide operation is -destructive and can be slow on large vaults; back up first. To send originals to the system trash, -select that option in Obsidian: the plugin follows Obsidian's deletion setting. - -## Features - -- **Search & Embed**: Search Eagle library and embed images directly into notes -- **Multiple libraries**: Import into any known Eagle library โ€” fixed, or chosen per import -- **Folder targeting**: Send imports to a per-library default folder, or pick (or create) one each time -- **Cloud Upload**: Upload images to cloud storage (ImgHippo, Cloudflare R2, Amazon S3, WebDAV) -- **Paste/Drop Integration**: Automatically handle pasted or dropped images -- **Batch Convert**: Convert all local images in a note to cloud URLs -- **Cross-Platform Sync**: Automatically convert image paths between Mac and Windows -- **Excalidraw Integration**: Paste or drop images onto an Excalidraw canvas โ€” Eagle assets embed the original, and clipboard screenshots are uploaded to your cloud provider (and optionally added to your Eagle library) instead of bloating the vault with attachments - -## Installation - -### From community plugins (recommended) - -1. Open **Settings โ†’ Community plugins** in Obsidian -2. Click **Browse** and search for **CMDS Eagle** -3. Click **Install**, then **Enable** - -### Manual installation - -1. Download `main.js`, `manifest.json`, `styles.css` from [Releases](https://github.com/johnfkoo951/cmds-eagle/releases) -2. Create folder: `.obsidian/plugins/cmds-eagle/` -3. Copy downloaded files into the folder -4. Enable plugin in Obsidian settings - -### Development build - -```bash -npm install --legacy-peer-deps # upstream pins typescript 4.7.4, which typescript-eslint rejects +## Development +```sh +npm install npm run build -npm test # canonical-form contract tests ``` +Build the plugin assets for local development. +[Preserved release history](docs/guide.md#appendix-preserved-release-history) is in the manual. -Then copy `main.js`, `manifest.json`, and `styles.css` into `/.obsidian/plugins/cmds-eagle/` -and enable the plugin in Obsidian settings. - -## Requirements - -- [Eagle](https://eagle.cool) app running locally -- Obsidian 1.6.6+ - -## Usage - -### Search and embed - -Search your Eagle library and embed images directly into notes. - -![Search and Embed](assets/CMDS-eagle1.gif) - - - -### Image paste/drop - -When pasting or dropping images, choose where to save them. - -![Search Modal](assets/CMDS-eagle2.gif) -![Search Results](assets/CMDS-eagle3.png) - - -### Cloud upload - -Upload images to cloud storage for sharing and portability. - -![Cloud Upload](assets/CMDS-eagle5.gif) -![Paste Options](assets/CMDS-eagle4.gif) - -### Cross-platform sync - -Only relevant to the `cmds-eagle*` modes, which embed the original by absolute path. Register the -absolute path each computer mounts the library at, and those paths are remapped for whichever -machine is reading the note. - -![Cross-Platform Sync](assets/CMDS-eagle-cross-platform.gif) - -**How it works:** -1. On each computer, choose **Add current computer**. The plugin matches the local profile from the - running OS and login username, so a synced Windows selection cannot become current on macOS. -2. Enter that machine's absolute library root: - | Platform | Supported location | - |---|---| - | macOS | A local volume or mounted network share | - | Windows drive | A local or mapped drive | - | Windows UNC | A network share addressed directly by its UNC root | -3. Paths are remapped by swapping one root for the other - -The root is not required to sit under a home directory, so a library on a NAS works โ€” each machine -just registers its own mount point. A UNC root survives drive-letter reassignment; a mapped drive root does not. - -**Settings:** -- `Enable cross-platform path conversion` โ€” turn the feature on -- `Conversion mode` โ€” `Render only` (default) remaps images as they are displayed and never writes to - the note, so two machines sharing a synced vault cannot conflict. `Modify note source` rewrites the - note, and skips any path whose target is not currently mounted. -- `Auto-convert paths on file open` - -**Manual conversion:** command `Convert cross-platform image paths in current note` - -**Limits.** `file://` cannot reach a NAS from iOS or Android โ€” mobile cannot mount the share. Notes -that must render on a phone need `photo-info` (vault thumbnail) instead. On desktop the library must -be mounted when the note is opened. - -### Excalidraw - -Paste or drop images directly onto an Excalidraw canvas and let Eagle handle them: - -- **Eagle assets** (copied/dragged from Eagle) resolve to the **original** image (not the thumbnail). -- **Clipboard screenshots** are uploaded to your active cloud provider and embedded by URL โ€” and, when enabled, added to your Eagle library. -- Images are embedded as portable cloud URLs, keeping the `.excalidraw` file small instead of storing vault attachments. - -Requires the [Excalidraw](https://github.com/zsviczian/obsidian-excalidraw-plugin) plugin and a configured cloud provider. Toggle it under **Settings โ†’ Excalidraw integration**. - -## Settings - -### Eagle libraries - -Use **Settings โ†’ Eagle libraries** to choose where imports go. These settings control imports; -search still uses the library Eagle currently has open. - -| Setting or button | Behaviour | -|---|---| -| `Target library` | `Currently open library` (default) never switches; `Always a specific library` uses the selected `Default library`; `Ask every time` prompts from known libraries. | -| `Default library` | Appears when `Always a specific library` is selected. Choose a detected library. | -| `Target folder` | `Each library's default folder` uses that library's saved folder; `Ask every time` opens a folder picker with creation support; `Library root` imports without a folder. | -| `Switch back after import` | When enabled, restores the previously open library after importing into another library. Disable it to leave the target open. | -| `Library switch timeout` | Maximum wait for a switch, in milliseconds; minimum 1000. A switch normally takes about one second. | -| `Scan Eagle` | Under `Detect libraries`, reads Eagle's known library history and the open library, adding profiles without overwriting saved default folders. It also re-checks which stored libraries still exist, marking the gone ones `Missing`. | -| `Remove missing libraries on scan` | Off by default. When on, `Scan Eagle` removes libraries Eagle no longer lists that are also absent from disk, along with their saved default folder. When off they stay, marked `Missing`, for you to remove. | -| `Items to pre-load for search` | How many items the search modal loads up front (default 5000). Past this, typing falls back to Eagle's own keyword search. Eagle's own default of 200 is too low for most libraries. | - -Folder ids are per-library: set defaults separately, using the library controls or -`Set default Eagle folder for the open library`. If no default is set, imports use the library root; -an unavailable saved folder also falls back to the root with a notice. Scan first if the library list is empty. - -Each library row carries a remove button that drops it from the list along with its saved default folder. -Removing the library selected as `Default library` clears that selection. A removed library comes back on -the next scan if Eagle still knows it, so removal is only permanent for a library that is really gone. - -Importing into a non-open library switches Eagle and, with `Switch back after import` enabled, -switches back afterwards โ€” approximately one second each way. If you switch to another library -in Eagle yourself mid-import, the restoration check respects your choice rather than switching back. - -Below that, configure your preferred cloud provider and search defaults. - - -![Settings](assets/CMDS-eagle6.png) - -## Cloud providers - -| Provider | Setup | -|----------|-------| -| **ImgHippo** (Free) | Sign up at [imghippo.com](https://imghippo.com), get API key from [settings](https://www.imghippo.com/settings) | -| **Cloudflare R2** | Requires Worker deployment (see docs) | -| **Amazon S3** | Standard S3 credentials | -| **WebDAV** | Works with Synology, Nextcloud, etc. | - -![Cloud Settings](assets/CMDS-eagle7.png) - -## Commands - -Run these commands from Obsidian's command palette. Names below match the registered commands; -all three cloud commands use the active cloud provider configured in settings. - -### Search Eagle library and embed - -`search-eagle` opens a fuzzy search modal over the **open library**, with search scope filters -`Name`, `Tags`, `Notes`, and `Folders`, and file type filters `Images`, `Videos`, `Docs`, and `All`. -Use it to find an existing asset and insert it into the active note in the shape specified by `linkMode`. -It does not search every known library or switch to the import target; open the intended library first. - -### Switch Eagle library - -`switch-eagle-library` opens a library picker so you can change the library Eagle has open from inside -the vault. Use it before searching a different collection; it changes Eagle's open library, not note content -or the configured import target. Eagle opens one library at a time, must be running, and keeps the -selected library open after this command; if none are known, the plugin attempts detection first. - -### Set default Eagle folder for the open library - -`set-eagle-default-folder` lets you pick or create the default folder for imports into the open library. -Use it to route future imports without choosing a folder each time; it saves that library's default, -without moving existing items or changing note content. Folder ids are per-library, and the saved -choice applies when `Target folder` is `Each library's default folder`, not `Ask every time` or `Library root`. - -### Upload clipboard Eagle image to cloud - -`upload-clipboard-to-cloud` reads an Eagle item link, Eagle localhost URL, or Eagle library file location -from the clipboard and uploads the original through the active cloud provider. Use it to share an -existing Eagle image: a successful new upload inserts a Markdown image in the active editor, copies -the public URL to the clipboard, and updates Eagle upload tags when an item is resolved. -It expects a text reference, not raw screenshot bytes; item lookup uses the open library. -If the item is already recognised as uploaded, it copies the existing URL instead of inserting a new embed. - -### Embed Eagle image and upload to cloud - -`embed-and-upload` uploads the Eagle image referenced by clipboard text through the active cloud -provider and inserts a Markdown image using the returned public URL. Use it to embed and upload -in one step; when an item is resolved and an upload key is returned, it also records upload tags in Eagle. -It requires a supported Eagle text reference and an accessible original, not a raw screenshot, -and does not copy the resulting URL to the clipboard or skip an already uploaded item. - -### Convert all images in note to cloud URLs - -`convert-all-to-cloud` uploads recognised local Markdown image embeds in the current note through -the active cloud provider and replaces successfully uploaded URLs in the note source. -Use it to make an existing note more portable; it handles file URLs, Eagle localhost thumbnail URLs -(uploading their originals), and supported relative image links, but not wiki-style embeds or arbitrary web images. -It leaves original files in place and reports an uploaded/total count; failed uploads keep their old references. -The command starts without a confirmation dialogue, so check the note and provider before running it. - -### Convert cross-platform image paths in current note - -`convert-cross-platform-paths` remaps image paths between machines using the computer profiles -in settings; use it when opening a synced note on another desktop. -With `Conversion mode` set to `Render only` (default), it changes displayed images without writing -the note; `Modify note source` rewrites the note's file URLs and skips targets that are not mounted. -Enable `Enable cross-platform path conversion` and register the current computer first; this does -not copy or synchronise the Eagle library itself. - -### Move this note's local images into Eagle - -`migrate-note-images-to-eagle` asks for confirmation, imports supported vault images embedded in -the current note into the configured Eagle target, and rewrites every reference it finds to those images -across the vault using `linkMode` before trashing each vault original. -Use it as a small trial before vault-wide migration; other notes sharing the same images can also change. -Generated Eagle thumbnails and temporary staging files are excluded, and a failed import or rewrite -leaves the vault original in place, although earlier successful changes are not rolled back. -The confirmation describes system trash, but the implementation uses Obsidian's deletion preference: -select system trash in Obsidian to send the copies there rather than to the vault trash. - -### Move all local images in the vault into Eagle - -`migrate-vault-images-to-eagle` asks for confirmation and scans Markdown notes for supported embedded -vault images, imports them into the configured Eagle target, rewrites every reference it finds, and -trashes the vault copies after successful rewriting. -Use it for a full migration, but **this is destructive and can be slow on large vaults: back up and run -`Move this note's local images into Eagle` first**. -Unreferenced files, generated Eagle thumbnails, and temporary staging files are not migration targets; -the batch uses one target-library session and reports successes and failures rather than rolling back. -As with the per-note command, choose system trash in Obsidian's deletion settings if that is where -the removed copies should go. - -### Verify Eagle references in current note - -`verify-eagle-links` reports references whose **file is missing on disk** or whose **item is gone from -Eagle**, checking across every library identifiable from the note's references, plus the open library -for deep links without a library location. Use it after deleting or moving assets: a deleted image can -keep rendering until the Obsidian window reloads because it is served from memory, so this command -is the reliable way to check the true state rather than trusting the displayed image. -It reports notices and console details without rewriting the note, but may temporarily switch libraries. -If Eagle is not running, only disk files are checked; unavailable libraries or deep links whose library -cannot be identified can prevent item verification, so a reported unresolved item is not proof of deletion. - -## Author - -**Yohan Koo (CMDSPACE)** โ€” https://cmdspace.work - -## License - -MIT +## Credits and license +**Yohan Koo (CMDSPACE)**, https://cmdspace.work. **MIT**, [LICENSE](LICENSE). diff --git a/docs/guide.ko.md b/docs/guide.ko.md new file mode 100644 index 0000000..571002f --- /dev/null +++ b/docs/guide.ko.md @@ -0,0 +1,256 @@ +# CMDS Eagle ์‚ฌ์šฉ์„ค๋ช…์„œ +์‹œ๊ฐ ์ž๋ฃŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋…ธํŠธ์™€ ์—ฐ๊ฒฐํ•˜๋˜, ์›๋ณธ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์™€ ๊ณต๊ฐœ ์‚ฌ๋ณธ์„ ๊ตฌ๋ถ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. + +## ๋ฐฐํฌ ์ƒํƒœ์™€ ์ค€๋น„๋ฌผ +**2026-09-14**์— ํ™•์ธํ•œ **1.8.4 ์†Œ์Šค** ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. ๊ณต๊ฐœ ๋ฆด๋ฆฌ์Šค 1.8.4์—๋Š” ์„ค์น˜ ํŒŒ์ผ 3์ข…์ด ์žˆ์œผ๋ฉฐ Obsidian Community Plugins ๋ชฉ๋ก์—๋„ ๋“ฑ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋“ฑ๋ก์€ ์ˆ˜๋™ ๋ณด์•ˆ ๊ฒ€ํ†  ์™„๋ฃŒ๋ฅผ ๋œปํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก์—๋Š” Obsidian ์ง์›์˜ ์ˆ˜๋™ ๊ฒ€ํ† ๋ฅผ ๋ฐ›์ง€ ์•Š์•˜๋‹ค๋Š” ๊ณ ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. +- Eagle์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํ“จํ„ฐ์™€ **Obsidian ๋ฐ์Šคํฌํ†ฑ 1.6.6 ์ด์ƒ**. ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +- [Eagle](https://eagle.cool) ์„ค์น˜, ํ•ด๋‹น ์ œํ’ˆ ์ด์šฉ ์กฐ๊ฑด์— ๋งž๋Š” ๋ผ์ด์„ ์Šค, ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ MIT ๋ผ์ด์„ ์Šค์ด๊ณ  Eagle์€ ๋ณ„๋„ ์ œํ’ˆ์ž…๋‹ˆ๋‹ค. +- ๊ธฐ๋ณธ ๋กœ์ปฌ API ์ฃผ์†Œ๋Š” `http://localhost:41595`. ๋กœ์ปฌ ๊ฒ€์ƒ‰๊ณผ ๊ฐ€์ ธ์˜ค๊ธฐ์—๋Š” ํด๋ผ์šฐ๋“œ ๊ณ„์ •์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. +- ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์€ ImgHippo, R2, S3, WebDAV ๋˜๋Š” ์‚ฌ์šฉ์ž ์„œ๋ฒ„์˜ ๊ณ„์ •๊ณผ ์ €์žฅ/์ „์†ก ๋น„์šฉ์„ ๋ณ„๋„๋กœ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„œ๋ฒ„๋ฅผ ๋Œ€์‹  ๊ฐœ์„คํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. +- ๋ฐฑ์—…ํ•œ ํ…Œ์ŠคํŠธ ๋…ธํŠธ์™€ ๋น„๊ณต๊ฐœ ์ •๋ณด๊ฐ€ ์—†๋Š” ์ด๋ฏธ์ง€ 1๊ฐœ. ์ฒซ ์ž‘์—…์œผ๋กœ ๋ณผํŠธ ์ „์ฒด ์ด์ „์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +## ์„ค์น˜ +1. Obsidian **์„ค์ • โ†’ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ โ†’ ํƒ์ƒ‰**์„ ์—ฝ๋‹ˆ๋‹ค. +2. **CMDS Eagle**์„ ๊ฒ€์ƒ‰ํ•ด ๊ถŒํ•œ ์•ˆ๋‚ด๋ฅผ ํ™•์ธํ•œ ๋’ค ์„ค์น˜ํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. +3. Eagle์„ ์‹คํ–‰ํ•œ ์ƒํƒœ์—์„œ **์„ค์ • โ†’ CMDS Eagle โ†’ Connection โ†’ Test Connection**์œผ๋กœ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. +์ˆ˜๋™ ์„ค์น˜๋Š” [1.8.4 ๋ฆด๋ฆฌ์Šค](https://github.com/johnfkoo951/cmds-eagle/releases/tag/1.8.4)์˜ `main.js`, `manifest.json`, `styles.css`๋ฅผ `/.obsidian/plugins/cmds-eagle/`์— ํ•จ๊ป˜ ๋„ฃ๊ณ  Obsidian์„ ๋‹ค์‹œ ๋กœ๋“œํ•œ ๋’ค ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์˜ `data.json`์œผ๋กœ ๊ธฐ์กด ์„ค์ •์„ ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +## ์ฒซ ์„ฑ๊ณต: ๋…ธํŠธ ํ•˜๋‚˜์— ์ด๋ฏธ์ง€ ํ•˜๋‚˜ +1. Eagle์—์„œ ํ…Œ์ŠคํŠธ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. +2. ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •์˜ **Where to store images โ†’ Import into Eagle (recommended)**์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋ถ™์—ฌ๋„ฃ๊ธฐ/๊ฐ€์ ธ์˜ค๊ธฐ์˜ ์ €์žฅ ์œ„์น˜์ด๋ฉฐ, ๊ฒ€์ƒ‰ํ•œ ๊ธฐ์กด ์ž๋ฃŒ์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋Š” ์„ค์ •์€ ์•„๋‹™๋‹ˆ๋‹ค. +3. **What goes into the note โ†’ Photo + info โ€” portable thumbnail** (`photo-info`)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ๋„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ฝ๊ธฐ ์ข‹์€ ์ถ”์ฒœ๊ฐ’์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ๊ธฐ๋ณธ๊ฐ’์€ `cmds-eagle`์ž…๋‹ˆ๋‹ค. +4. ์—ฐ์Šต์šฉ Markdown ๋…ธํŠธ๋ฅผ ์—ด๊ณ  ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์„ ์œ„์น˜์— ์ปค์„œ๋ฅผ ๋‘ก๋‹ˆ๋‹ค. +5. Ctrl/Cmd+P๋กœ ๋ช…๋ น ํŒ”๋ ˆํŠธ๋ฅผ ์—ด์–ด **Search Eagle library and embed**๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์•Œ๊ณ  ์žˆ๋Š” ์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•ด ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. +6. ์ด๋ฏธ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ํ•œ ์ค„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์นด๋“œ, **Open in Eagle** ๋งํฌ๊ฐ€ ์˜๋„ํ•œ ์ž๋ฃŒ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •ํ•œ ์ธ๋„ค์ผ ํด๋”์—๋Š” ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์‚ฌ๋ณธ์ด ์ƒ๊น๋‹ˆ๋‹ค. +๋…ธํŠธ์™€ ์ธ๋„ค์ผ์„ ๋™๊ธฐํ™”ํ•˜๋ฉด ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ๋„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ `eagle://` ๋งํฌ๋ฅผ ์—ด๋ ค๋ฉด ํ•ด๋‹น ๊ธฐ๊ธฐ์— Eagle๊ณผ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. + +## ์ €์žฅ ์œ„์น˜์™€ ๋งํฌ ๋ชจ๋“œ๋Š” ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค +**Where to store images**๋Š” Eagle/๋ณผํŠธ/ํด๋ผ์šฐ๋“œ/๋งค๋ฒˆ ๋ฌป๊ธฐ ์ค‘ ์ €์žฅ ์œ„์น˜๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค. **What goes into the note**๋Š” Eagle ์ž๋ฃŒ๋ฅผ ๋…ธํŠธ์— ์–ด๋–ป๊ฒŒ ์ฐธ์กฐํ• ์ง€ ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ ๊ธฐ์กด ๋…ธํŠธ ์ „์ฒด๊ฐ€ ์ด์ „๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. + +| ๋ชจ๋“œ | ๋…ธํŠธ์— ๋“ค์–ด๊ฐ€๋Š” ๋‚ด์šฉ | ๋ณผํŠธ ์‚ฌ๋ณธ | ์ ํ•ฉํ•œ ์šฉ๋„์™€ ํ•œ๊ณ„ | +|---|---|---|---| +| `photo-info` | Eagle ๋งํฌ๊ฐ€ ๊ฑธ๋ฆฐ ์ธ๋„ค์ผ๊ณผ ํ•œ ์ค„ ์นด๋“œ | ์ธ๋„ค์ผ | ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ ํœด๋Œ€ ๊ฐ€๋Šฅํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ | +| `photo-only` | Eagle ๋งํฌ๊ฐ€ ๊ฑธ๋ฆฐ ์ธ๋„ค์ผ | ์ธ๋„ค์ผ | ๊ฐ„๊ฒฐํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ | +| `link-only` | Eagle ๋”ฅ๋งํฌ | ์—†์Œ | ์ด๋ฏธ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์—†๋Š” ์ด๋™ ๋งํฌ; ์ˆ˜์‹ ์ž์—๊ฒŒ Eagle ํ•„์š” | +| `cmds-eagle` ๊ธฐ๋ณธ๊ฐ’ | ์›๋ณธ `file://` ์ž„๋ฒ ๋“œ์™€ ์นด๋“œ | ์—†์Œ | ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งˆ์šดํŠธ๋œ ๋“ฑ๋ก ๋ฐ์Šคํฌํ†ฑ | +| `cmds-eagle-photo-only` | ์›๋ณธ `file://` ์ž„๋ฒ ๋“œ | ์—†์Œ | ๋ฐ์Šคํฌํ†ฑ์—์„œ ์›๋ณธ ํ™”์งˆ๋กœ ๋ณด๊ธฐ | +| `cmds-eagle-photo-link` | Eagle ๋งํฌ๊ฐ€ ๊ฑธ๋ฆฐ ์›๋ณธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ | ์—†์Œ | ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ํ•ด๋‹น Eagle ํ•ญ๋ชฉ ์—ด๊ธฐ | + +์ธ๋„ค์ผ์€ ์›๋ณธ ๋ฐฑ์—…์ด ์•„๋‹™๋‹ˆ๋‹ค. Eagle์ด ์ธ๋„ค์ผ์„ ๋งŒ๋“ค์ง€ ์•Š๋Š” ์ž‘์€ ์ด๋ฏธ์ง€๋Š” ์›๋ณธ์ด ๋ณต์‚ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์•ˆ์— ์ด๋ฏธ์ง€๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ์ž„์‹œ ํŒŒ์ผ ๋Œ€์‹  Eagle ๋”ฅ๋งํฌ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. Eagle ์›๋ณธ์„ ์‚ญ์ œํ•˜๋ฉด ์›๋ณธ ๊ฒฝ๋กœ ๋ชจ๋“œ๋Š” ๊นจ์ง‘๋‹ˆ๋‹ค. ๋ณต์‚ฌ๋œ ์ธ๋„ค์ผ์€ ๋‚จ์„ ์ˆ˜ ์žˆ์ง€๋งŒ Eagle ์ด๋™ ๋งํฌ๋Š” ๋” ์ด์ƒ ํ•ด๋‹น ํ•ญ๋ชฉ์„ ์—ด์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. + +## ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํด๋”, ๊ฒ€์ƒ‰ +๊ฒ€์ƒ‰ ๋Œ€์ƒ์€ **ํ˜„์žฌ Eagle์— ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ**์ž…๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜ค๊ธฐ ๋Œ€์ƒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐ”๊พผ๋‹ค๊ณ  ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋™์‹œ์— ๊ฒ€์ƒ‰ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. +- **Detect libraries โ†’ Scan Eagle**์€ ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ Eagle์ด ๊ธฐ์–ตํ•˜๋Š” ์ด๋ ฅ์„ ์ฝ์Šต๋‹ˆ๋‹ค. +- **Target library**: ํ˜„์žฌ ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(๊ธฐ๋ณธ), ์ง€์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋งค๋ฒˆ ๋ฌป๊ธฐ. ์ง€์ • ๋ชจ๋“œ์—์„œ **Default library**๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. +- **Target folder**: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณ„ ๊ธฐ๋ณธ ํด๋”, ๋งค๋ฒˆ ๋ฌป๊ธฐ, ๋ฃจํŠธ. ํด๋” ID๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งˆ๋‹ค ๋‹ค๋ฅด๋ฏ€๋กœ ๊ฐ๊ฐ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. +- ํด๋” ์„ ํƒ๊ธฐ๋Š” ์ „์ฒด ๊ฒฝ๋กœ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— ์ƒˆ ํด๋”๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Eagle API๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ ์‹œ ํด๋”๋ฅผ ๋ฐฐ์ •ํ•˜๋ฉฐ, ์ด ์„ค์ •์œผ๋กœ ๊ธฐ์กด ํ•ญ๋ชฉ์„ ์‚ฌํ›„ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +- **Switch back after import**๋Š” ์ ์ ˆํ•  ๋•Œ ์ด์ „ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ค‘ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋ฐ”๊พผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ•์ œ๋กœ ๋˜๋Œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +- ๊ธฐ์–ต๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ”„๋กœํ•„์„ ์ง€์šฐ๋ฉด ์ €์žฅํ•œ ๊ธฐ๋ณธ ํด๋”๋„ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ์˜ Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…์€ ์•„๋‹ˆ๋ฉฐ ๋‹ค์Œ ๊ฒ€์ƒ‰์—์„œ ์žฌ๋ฐœ๊ฒฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- **Remove missing libraries on scan**์€ ๊ธฐ๋ณธ ๊บผ์ง์ž…๋‹ˆ๋‹ค. Eagle ์ด๋ ฅ๊ณผ ๋””์Šคํฌ ์–‘์ชฝ์—์„œ ์‚ฌ๋ผ์ง„ ๊ฒฝ์šฐ๋งŒ Missing์œผ๋กœ ๋ด…๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์‹คํŒจ ์ž์ฒด๋ฅผ ์‚ญ์ œ ์ฆ๊ฑฐ๋กœ ์‚ผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +- ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋Š” ์ด๋ฆ„/ํƒœ๊ทธ/๋ฉ”๋ชจ/ํด๋”์™€ ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. **Items to pre-load for search**๋Š” ๊ธฐ๋ณธ 5000์ด๋ฉฐ ๊ทธ ๋ฐ–์˜ ํ•ญ๋ชฉ์€ ์ž…๋ ฅ ์ค‘ Eagle ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰์œผ๋กœ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค. + +## ๋ช…๋ น์–ด ์‚ฌ์ „ +๋ช…๋ น ํŒ”๋ ˆํŠธ์—๋Š” CMDS Eagle ์ ‘๋‘์–ด๊ฐ€ ๋ถ™์Šต๋‹ˆ๋‹ค. ํŽธ์ง‘๊ธฐ ๋™์ž‘์—๋Š” ํ™œ์„ฑ Markdown ํŽธ์ง‘๊ธฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. + +| ์‹ค์ œ ๋ช…๋ น ์ด๋ฆ„ | ๊ธฐ๋Šฅ๊ณผ ์˜ํ–ฅ | +|---|---| +| Search Eagle library and embed | ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ฐพ์•„ ์‚ฝ์ž… | +| Switch Eagle library | Eagle์—์„œ ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ณ€๊ฒฝ | +| Set default Eagle folder for the open library | ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฐ€์ ธ์˜ค๊ธฐ ํด๋” ์ €์žฅ | +| Upload clipboard Eagle image to cloud | ํด๋ฆฝ๋ณด๋“œ Eagle ์ฐธ์กฐ๋ฅผ ์ฝ์–ด ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  URL ์‚ฝ์ž… | +| Embed Eagle image and upload to cloud | Eagle ํ•ญ๋ชฉ ์„ ํƒ ํ›„ ์—…๋กœ๋“œ์™€ ์‚ฝ์ž… | +| Convert all images in note to cloud URLs | ํ˜„์žฌ ๋…ธํŠธ์˜ ์ง€์› ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  ๋งํฌ ์ˆ˜์ • | +| Convert cross-platform image paths in current note | ๋“ฑ๋กํ•œ ๋ฃจํŠธ ๊ฒฝ๋กœ ๋งคํ•‘; ์›๋ฌธ ์ˆ˜์ • ์—ฌ๋ถ€๋Š” Conversion mode์— ๋”ฐ๋ฆ„ | +| Move this note's local images into Eagle | ์„ ํƒ ๋…ธํŠธ์˜ ๋กœ์ปฌ ์ด๋ฏธ์ง€ ์ด์ „; **๋‹ค๋ฅธ ๋…ธํŠธ ์ˆ˜์ •๊ณผ ์›๋ณธ ํœด์ง€ํ†ต ์ด๋™ ๊ฐ€๋Šฅ** | +| Move all local images in the vault into Eagle | ๋ณผํŠธ ์ „์ฒด ์ด์ „; **ํŒŒ๊ดด์  ์ž‘์—…์ด๋ฉฐ ์ฒซ ์‹ค์Šต์šฉ ์•„๋‹˜** | +| Verify Eagle references in current note | ํŒŒ์ผ/ํ•ญ๋ชฉ ๋ˆ„๋ฝ ๋ณด๊ณ ; ์ผ์‹œ์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ „ํ™˜ ๊ฐ€๋Šฅ; ๋…ธํŠธ ์›๋ฌธ์€ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Œ | + +## ์„ค์ • ์‚ฌ์ „ +๋‹ค์Œ์€ 1.8.4 ์„ค์ • ์ฝ”๋“œ์—์„œ ํ™•์ธํ•œ ์‹ค์ œ ํ‘œ์‹œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. + +| ๊ตฌ์—ญ | ์ฃผ์š” ์„ค์ • | +|---|---| +| Connection | Eagle API Base URL, Connection Timeout(๋ฐ€๋ฆฌ์ดˆ), Test Connection | +| Eagle libraries | Target library/folder, ์กฐ๊ฑด๋ถ€ Default library, Switch back after import, Library switch timeout, Scan Eagle, ๋ˆ„๋ฝ ํ”„๋กœํ•„ ์ •๋ฆฌ | +| Image paste/drop behavior | Where to store images, What goes into the note, Thumbnail folder(๊ธฐ๋ณธ `attachments/eagle`), Hidden tag prefixes in card | +| ์ธ๋„ค์ผ ์ฒ˜๋ฆฌ | Thumbnail wait timeout(๊ธฐ๋ณธ 10000 ms), Thumbnail size warning(๊ธฐ๋ณธ 2048 KB), Remove staged copy after import | +| Search & embed | Include metadata card, Items to pre-load for search | +| Cloud storage provider | Active Cloud Provider์™€ ํ•ด๋‹น ์ œ๊ณต์—…์ฒด์˜ ์ธ์ฆ/URL | +| Cross-platform sync | Enable cross-platform path conversion, Conversion mode, Auto-convert paths on file open, Add current computer์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฃจํŠธ | +| Excalidraw integration | Embed images in Excalidraw via cloud, Also add pasted screenshots to Eagle | + +์ž„์‹œ `.eagle-temp/` ํŒŒ์ผ์€ ์ •๋ฆฌ๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ Eagle์— ๋ณต์‚ฌํ•œ ์›๋ณธ์˜ ์ „์ฒด ํฌ๊ธฐ๊ฐ€ ํ™•์ธ๋œ ๋’ค ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๋””๋ฒ„๊น… ๋ชฉ์ ์œผ๋กœ ์ด ์˜ต์…˜์„ ๋„๋ฉด ์‚ฌ๋ณธ์ด ๋” ๋‚จ์Šต๋‹ˆ๋‹ค. + +## ํด๋ผ์šฐ๋“œ ์—…๋กœ๋“œ์™€ Excalidraw +ํด๋ผ์šฐ๋“œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ œ๊ณต์—…์ฒด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„ ์„ ํƒ๋งŒ์œผ๋กœ ์ธ์ฆ ์ •๋ณด๊ฐ€ ์ฑ„์›Œ์ง€์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. + +| ์ œ๊ณต์—…์ฒด | ์ค€๋น„ํ•  ๊ฒƒ | +|---|---| +| ImgHippo | ๊ณ„์ •/API ํ‚ค; ์„œ๋น„์Šค ๋ณด๊ด€ ์ •์ฑ…๊ณผ ์ œํ•œ ํ™•์ธ | +| Cloudflare R2 | ํ˜ธํ™˜ Worker ์—…๋กœ๋“œ ์—”๋“œํฌ์ธํŠธ, Worker API ํ‚ค, ๊ณต๊ฐœ ๋ฒ„ํ‚ท URL; ๋ฒ„ํ‚ท๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑ | +| Amazon S3 | ์—”๋“œํฌ์ธํŠธ, ๋ฆฌ์ „, ๋ฒ„ํ‚ท, ์•ก์„ธ์Šค ํ‚ค ID์™€ ๋น„๋ฐ€ํ‚ค, ์„ ํƒ์  ๊ณต๊ฐœ URL | +| WebDAV | ์„œ๋ฒ„ URL, ์‚ฌ์šฉ์ž๋ช…/์•”ํ˜ธ, ์—…๋กœ๋“œ ๊ฒฝ๋กœ, ์™ธ๋ถ€์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐœ URL | +| Custom server | ํ”Œ๋Ÿฌ๊ทธ์ธ ์—…๋กœ๋“œ ๊ณ„์•ฝ์— ๋งž๋Š” Upload URL๊ณผ Public URL | + +๋น„๋ฏผ๊ฐ ์ด๋ฏธ์ง€๋กœ ์‹œํ—˜ํ•˜๊ณ  ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ๊ฒฐ๊ณผ URL์ด ์—ด๋ฆฌ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—…๋กœ๋“œ ์„ฑ๊ณต๊ณผ ๊ณต๊ฐœ ์ฝ๊ธฐ ๊ฐ€๋Šฅ์€ ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. ์š”๊ธˆ, ์ ‘๊ทผ ์ •์ฑ…, ๋ณด๊ด€ ๊ธฐ๊ฐ„์€ ํ•ด๋‹น ์„œ๋น„์Šค๊ฐ€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. +Excalidraw ์—ฐ๋™์—๋Š” ๋ณ„๋„ Excalidraw ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํด๋ผ์šฐ๋“œ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Eagle ์ž๋ฃŒ๋Š” ์›๋ณธ์„ ์‚ฌ์šฉํ•˜๊ณ , ์Šคํฌ๋ฆฐ์ƒท์€ ์—…๋กœ๋“œํ•˜๋ฉด์„œ ์„ ํƒ์ ์œผ๋กœ Eagle์—๋„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์€ ์™ธ๋ถ€ ์ด๋ฏธ์ง€ URL์— ์˜์กดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. CMDS Eagle์ด ์ด ์ด๋ฏธ์ง€๋ฅผ ์•”ํ˜ธํ™”ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. + +## ์—ฌ๋Ÿฌ ๊ธฐ๊ธฐ์—์„œ ์ฝ๊ธฐ +๊ฒฝ๋กœ ๋ณ€ํ™˜์€ **Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋™๊ธฐํ™”๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฃจํŠธ ๋งคํ•‘**์ž…๋‹ˆ๋‹ค. ๊ฐ ๋ฐ์Šคํฌํ†ฑ์—์„œ **Add current computer**๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ค์ œ ๋งˆ์šดํŠธ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฃจํŠธ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋ณผ๋ฅจ, Windows ๋“œ๋ผ์ด๋ธŒ, UNC ๊ณต์œ  ๊ฒฝ๋กœ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ธฐ๋ณธ **Render only**๋Š” ํ‘œ์‹œ๋งŒ ๋ฐ”๊พธ๊ณ  Markdown์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. **Modify note source**๋Š” ํŒŒ์ผ URL์„ ์ˆ˜์ •ํ•˜๋ฉฐ ๋งˆ์šดํŠธ๋˜์ง€ ์•Š์€ ๊ฒฝ๋กœ๋Š” ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ๊ฐ€ ๋…ธํŠธ๋ฅผ ๋™๊ธฐํ™”ํ•œ๋‹ค๋ฉด render-only๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํœด๋Œ€ํฐ์€ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ฐ์Šคํฌํ†ฑ `file://` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋™๊ธฐํ™”๋œ ์ธ๋„ค์ผ์ด๋‚˜ ๊ณต๊ฐœ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. + +## ์ด์ „ ๋ช…๋ น ์‹คํ–‰ ์ „ ์ฃผ์˜ +๋ณผํŠธ์™€ Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ชจ๋‘ ๋ฐฑ์—…ํ•˜๊ณ  ๋‹ค๋ฅธ ํŽธ์ง‘์„ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. ๋…ธํŠธ ๋‹จ์œ„ ์ด์ „๋„ ์ด๋ฏธ์ง€ ์„ ํƒ๋งŒ ํ•œ ๋…ธํŠธ์—์„œ ํ•  ๋ฟ, **๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‹ค๋ฅธ Markdown ๋…ธํŠธ๊นŒ์ง€ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค**. ๊ฐ€์ ธ์˜ค๊ธฐ์™€ ์ฐธ์กฐ ์ˆ˜์ •์ด ์„ฑ๊ณตํ•œ ๋’ค ๋ณผํŠธ ์›๋ณธ์„ Obsidian ์‚ญ์ œ ์„ค์ •์— ๋”ฐ๋ผ ํœด์ง€ํ†ต์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํœด์ง€ํ†ต์„ ์›ํ•˜๋ฉด Obsidian์—์„œ ๊ทธ ๋ฐฉ์‹์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. +์ƒ์„ฑ ์ธ๋„ค์ผ, ์ž„์‹œ ํŒŒ์ผ, ์ฐธ์กฐ๋˜์ง€ ์•Š์€ ์ž์‚ฐ์€ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ์‹คํŒจํ•œ ํ•ญ๋ชฉ์˜ ์›๋ณธ์€ ๋‚จ์ง€๋งŒ **์•ž์„œ ์„ฑ๊ณตํ•œ ๋ณ€๊ฒฝ์€ ์ž๋™ ๋กค๋ฐฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค**. ๋ณ€๊ฒฝ ํŒŒ์ผ๊ณผ ์‹คํŒจ ๋ชฉ๋ก์„ ํ™•์ธํ•˜๊ณ , ๋ณต์›ํ•  ๋•Œ ๋” ์ตœ๊ทผ์˜ ํŽธ์ง‘์„ ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜๋‚˜ ์„ค๋ช…์„œ ์—ด๋žŒ๋งŒ์œผ๋กœ ์ด์ „์€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +## ๊ฐœ์ธ์ •๋ณด์™€ ํ•œ๊ณ„ +- ๋กœ์ปฌ ๊ฒ€์ƒ‰์€ Eagle API์— ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์  ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” Eagle๊ณผ ์ง€์ •ํ•œ ๋ณผํŠธ ์œ„์น˜์— ์“ฐ๋ฉฐ ํด๋ผ์šฐ๋“œ ๋™์ž‘์€ ์ด๋ฏธ์ง€ ๋ฐ”์ดํŠธ์™€ ์š”์ฒญ ์ •๋ณด๋ฅผ ํ•ด๋‹น ์„œ๋น„์Šค์— ๋ณด๋ƒ…๋‹ˆ๋‹ค. +- `data.json`, ์ €์žฅ์†Œ ํ‚ค, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฝ๋กœ, ์ง„๋‹จ ์ถœ๋ ฅ์€ ๋น„๊ณต๊ฐœ๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ๋ž€์ด ๊ฐ€๋ ค์ ธ ์žˆ๋‹ค๊ณ  ์ €์žฅ ํŒŒ์ผ๊นŒ์ง€ ์•”ํ˜ธํ™”๋๋‹ค๋Š” ๋œป์€ ์•„๋‹™๋‹ˆ๋‹ค. +- ๊ณต๊ฐœ ์ด๋ฏธ์ง€ URL์€ ์ „๋‹ฌ๋˜๊ฑฐ๋‚˜ ์บ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธํŠธ ๋งํฌ ์‚ญ์ œ๋งŒ์œผ๋กœ ํด๋ผ์šฐ๋“œ ์ž์‚ฐ ์‚ญ์ œ๊ฐ€ ๋ณด์žฅ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. +- `file://`, `eagle://`๋Š” ๊ณต๊ฐœ ์›น ์ด๋ฏธ์ง€ URL์ด ์•„๋‹™๋‹ˆ๋‹ค. Share ํŽ˜์ด์ง€๊ฐ€ ์ˆ˜์‹ ์ž์˜ ์ปดํ“จํ„ฐ์— ๋‚ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•ด ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +- ๋ฐ์Šคํฌํ†ฑ ์ง€์›์€ ๋ชจ๋“  OS์˜ ์ƒˆ ์ปดํ“จํ„ฐ ์‹œํ—˜ ์™„๋ฃŒ๋ฅผ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์„ค๋ช…์„œ ์ž‘์—…์—์„œ๋Š” ์†Œ์Šค์™€ ๋ฆด๋ฆฌ์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ–ˆ์œผ๋ฉฐ ๊ฐ€์ ธ์˜ค๊ธฐ, ์ด์ „, ํด๋ผ์šฐ๋“œ ์—…๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. + +## ๋ฌธ์ œ ํ•ด๊ฒฐ + +| ์ฆ์ƒ | ํ™•์ธ ์ˆœ์„œ | +|---|---| +| ์—ฐ๊ฒฐ ์‹คํŒจ | Eagle ์‹คํ–‰๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—ด๊ธฐ โ†’ API ์ฃผ์†Œ/์‹œ๊ฐ„ ํ™•์ธ โ†’ Test Connection | +| ์•Œ๊ณ  ์žˆ๋Š” ์ž๋ฃŒ๊ฐ€ ์•ˆ ๋‚˜์˜ด | ์—ด๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™•์ธ โ†’ ๊ฒ€์ƒ‰ ๋ฒ”์œ„/ํ˜•์‹ ํ•„ํ„ฐ ํ•ด์ œ โ†’ ์ •ํ™•ํ•œ ์ด๋ฆ„ ๊ฒ€์ƒ‰ | +| Eagle ๋งํฌ๋งŒ ์‚ฝ์ž…๋จ | ์ด๋ฏธ์ง€ ์กด์žฌ์™€ ์ธ๋„ค์ผ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ํ™•์ธ; ์ž„์‹œ ๊ฒฝ๋กœ๋ฅผ ์ถ”์ธกํ•ด ๋ถ™์ด์ง€ ์•Š๊ธฐ | +| ์‚ญ์ œํ•œ ์ด๋ฏธ์ง€๊ฐ€ ๊ณ„์† ๋ณด์ž„ | Obsidian ์ฐฝ ๋‹ค์‹œ ๋กœ๋“œ ํ›„ Verify Eagle references ์‹คํ–‰; ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ ์ฃผ์˜ | +| ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ ์•ˆ ๋ณด์ž„ | ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งˆ์šดํŠธ์™€ ์ปดํ“จํ„ฐ ๋ฃจํŠธ ๋“ฑ๋ก ๋˜๋Š” photo-info ์‚ฌ์šฉ | +| ์—…๋กœ๋“œ ์„ฑ๊ณต ๋’ค ์ด๋ฏธ์ง€๊ฐ€ ์•ˆ ์—ด๋ฆผ | ์—…๋กœ๋“œ ์ธ์ฆ๊ณผ ๋ณ„๋„๋กœ ๊ณต๊ฐœ URL/์ฝ๊ธฐ ๊ถŒํ•œ ํ™•์ธ | +| ์ง€์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋‹ค์‹œ ๋‚˜ํƒ€๋‚จ | Eagle์ด ์—ฌ์ „ํžˆ ๊ธฐ์–ตํ•˜๋Š” ํ•ญ๋ชฉ์ธ์ง€ ํ™•์ธ; ํ”„๋กœํ•„ ์‚ญ์ œ๋Š” ๋””์Šคํฌ ์‚ญ์ œ๊ฐ€ ์•„๋‹˜ | +| ์ด์ „์ด ์ผ๋ถ€๋งŒ ์™„๋ฃŒ๋จ | ์ถ”๊ฐ€ ์ผ๊ด„ ์‹คํ–‰ ์ค‘๋‹จ โ†’ ์•Œ๋ฆผ/์ฝ˜์†”/๋ฐฑ์—… ํ™•์ธ; ๋จผ์ € ์„ฑ๊ณตํ•œ ๋ณ€๊ฒฝ์€ ๋‚จ์Œ | + +## ์—…๋ฐ์ดํŠธ, ์ง€์›, ์ œ์ž‘์ž +์—…๋ฐ์ดํŠธ ์ „์— ์„ค์ •์„ ๋ฐฑ์—…ํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๊ฐ™์€ ๋ฆด๋ฆฌ์Šค์˜ ํŒŒ์ผ 3์ข…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋…ธํŠธ ํ•˜๋‚˜๋กœ ์žฌํ™•์ธํ•˜๊ณ  ๋ฒ„์ „์ด ๋‹ค๋ฅธ ํŒŒ์ผ์„ ์„ž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +[์ œํ’ˆ๊ณผ ์›น ์„ค๋ช…์„œ](https://apps.cmdspace.work/plugins/cmds-eagle/) | [๋ฆด๋ฆฌ์Šค](https://github.com/johnfkoo951/cmds-eagle/releases) | [๋ฌธ์ œ ์‹ ๊ณ ](https://github.com/johnfkoo951/cmds-eagle/issues). +์‹ ๊ณ ์—๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ/Obsidian/Eagle ๋ฒ„์ „, OS, ๋งํฌ ๋ชจ๋“œ, ์ œ๊ณต์—…์ฒด ์ข…๋ฅ˜, ๋น„๋ฏผ๊ฐ ์žฌํ˜„ ์ ˆ์ฐจ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ ์ •๋ณด๋‚˜ ๊ฐœ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ „์ฒด ์„ค์ • ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +**Yohan Koo (CMDSPACE)**, https://cmdspace.work. MIT, [LICENSE](https://github.com/johnfkoo951/cmds-eagle/blob/main/LICENSE) ์ฐธ์กฐ. + +## ์†Œ์Šค์™€ ๊ฒ€์ฆ ๊ธฐ์ค€ +`manifest.json`, `src/main.ts`, `src/settings.ts`, `src/types.ts`, `src/canonical.ts`, `src/api.ts`, `src/cloud-providers.ts`๋ฅผ ๋Œ€์กฐํ–ˆ์Šต๋‹ˆ๋‹ค. [์†Œ์Šค ์ €์žฅ์†Œ](https://github.com/johnfkoo951/cmds-eagle). ์•„๋ž˜ ๊ธฐ์กด ์Šคํฌ๋ฆฐ์ƒท์€ ์ €์žฅ ์œ„์น˜ ์„ ํƒ์„ ๋ณด์—ฌ์ฃผ๋ฉฐ 1.8.4 ์ „์ฒด UI๋ฅผ ๋ณด์ฆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ™”๋ฉด์˜ ๋น„๊ณต๊ฐœ ์ •๋ณด ๋…ธ์ถœ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. +![๊ธฐ์กด Eagle ์ €์žฅ ์œ„์น˜ ์„ ํƒ ํ™”๋ฉด](https://raw.githubusercontent.com/johnfkoo951/cmds-eagle/main/assets/CMDS-eagle3.png) + +## ๋ถ€๋ก: ๊ธฐ์กด ๋ฆด๋ฆฌ์Šค ์ด๋ ฅ +์ด์ „ README์˜ 1.8.0โ€“1.8.4 ์„ค๋ช…์„ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ์—ญ์‚ฌ์  ํ‘œํ˜„์€ ๋‹น์‹œ ๊ธฐ๋ก์ด๋ฉฐ ํ˜„์žฌ ์‚ฌ์šฉ ์ ˆ์ฐจ์™€ ํ•œ๊ณ„๋Š” ์œ„ ์„ค๋ช…์„œ๋ฅผ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. +### 1.8.4์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ +**์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์ง€์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ชฉ๋ก์— ์˜์›ํžˆ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค.** ๊ฐ์ง€๋Š” ํ”„๋กœํ•„์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, +Eagle์—์„œ ์ด๋ฆ„์„ ๋ฐ”๊พผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์˜ˆ์ „ ํ•ญ๋ชฉ์œผ๋กœ ์„ค์ •์— ๋‚จ์•˜๊ณ  ์ง€์šธ ๋ฐฉ๋ฒ•๋„ +์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค„์— ์ œ๊ฑฐ ๋ฒ„ํŠผ์ด ์žˆ๊ณ , Eagle์ด ๋” ์ด์ƒ ์•Œ์ง€ ๋ชปํ•˜๋ฉด์„œ ๋””์Šคํฌ์—์„œ๋„ ์‚ฌ๋ผ์ง„ +๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” `Missing`์œผ๋กœ ํ‘œ์‹œ๋˜๋ฉฐ ๋ชฉ๋ก ์œ„์— `Remove all missing` ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. + +ํ”„๋กœํ•„์—๋Š” ์ €์žฅํ•ด๋‘” ๊ธฐ๋ณธ ํด๋”๊ฐ€ ๋“ค์–ด ์žˆ์œผ๋ฏ€๋กœ ์‚ญ์ œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ•˜๋„๋ก ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ์‹ ํ˜ธ๊ฐ€ +**๋ชจ๋‘** ์ผ์น˜ํ•  ๋•Œ๋งŒ missing์œผ๋กœ ํŒ์ •ํ•ฉ๋‹ˆ๋‹ค. Eagle์ด ๋ชฉ๋ก์—์„œ ๋บ๊ณ  *๋™์‹œ์—* ๋””์Šคํฌ์—์„œ๋„ ์‚ฌ๋ผ์ง„ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. +๋งˆ์šดํŠธ๋งŒ ํ•ด์ œ๋œ ์™ธ์žฅยท๋„คํŠธ์›Œํฌ ๋ณผ๋ฅจ์€ Eagle์ด ๊ณ„์† ๊ธฐ์–ตํ•˜๋ฏ€๋กœ ๋ชฉ๋ก์— ๋‚จ๊ณ  ์„ค์ •๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. Eagle์ด ์‹คํ–‰ +์ค‘์ด ์•„๋‹ˆ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ํŒ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. `Scan Eagle`์ด ์•Œ์•„์„œ ์ •๋ฆฌํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉด +`Remove missing libraries on scan`์„ ์ผœ๋ฉด ๋ฉ๋‹ˆ๋‹ค. + +### 1.8.2์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ +**๊ฒ€์ƒ‰์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€๋งŒ ๋ณด๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.** Eagle์€ limit์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด 200๊ฐœ๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ๊ฒ€์ƒ‰ +์ฐฝ์ด limit์„ ๋„˜๊ธฐ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•ญ๋ชฉ์ด 2,400๊ฐœ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” 8%๋งŒ ๋Œ€์ƒ์œผ๋กœ ํผ์ง€ ๋งค์นญํ•œ ์…ˆ์ด๊ณ , +๋‚˜๋จธ์ง€๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ `Items to pre-load for search`(๊ธฐ๋ณธ๊ฐ’ 5000)๋งŒํผ ๋ฏธ๋ฆฌ +๋ถˆ๋Ÿฌ์˜ค๊ณ , ๊ทธ ์ƒํ•œ์„ ๋„˜์œผ๋ฉด ์ž…๋ ฅ์— ๋งž์ถฐ Eagle์˜ keyword ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์นฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌ๊ธฐ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ +๋ชจ๋“  ํ•ญ๋ชฉ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +**๊ฒ€์ƒ‰ ํ•„ํ„ฐ๊ฐ€ ์•„์˜ˆ ๊ทธ๋ ค์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.** ๊ฒ€์ƒ‰ ๋ฒ”์œ„ ํ•„ํ„ฐ(`Name` / `Tags` / `Notes` / `Folders`), ํŒŒ์ผ +์œ ํ˜• ํ•„ํ„ฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•ญ๋ชฉ ์ˆ˜ ํ—ค๋”๊ฐ€ ๋ชจ๋‘ ๋น ์ ธ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์ž˜๋ชป๋œ ์š”์†Œ๋ฅผ ์ฐพ๊ณ  +์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ œ ์ •์ƒ์ ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. + +**๋ณผํŠธ ๋ฃจํŠธ์—์„œ ์ฒจ๋ถ€ ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ ๊นจ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.** Obsidian์˜ *Default location for new attachments*๋ฅผ +`Vault folder`๋กœ ๋‘” ์ƒํƒœ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ์— ์ €์žฅํ•˜๋ฉด `//ํŒŒ์ผ๋ช….png` ๊ฒฝ๋กœ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ Obsidian์ด ํ•ด์„ํ•˜์ง€ +๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. [@nancyel](https://github.com/nancyel) ๋‹˜์ด [#1](https://github.com/johnfkoo951/cmds-eagle/pull/1) +์—์„œ ๋ณด๊ณ ํ•˜๊ณ  ์ˆ˜์ •ํ•ด ์ฃผ์—ˆ๊ณ , ์ธ์ ‘ํ•œ ๊ฒฝ์šฐ๊นŒ์ง€ ํ™•์žฅํ•ด ๋ฐ˜์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. + +### 1.8.0์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ +#### ์—ฌ๋Ÿฌ Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ +Eagle์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์—ฝ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ +์ „ํ™˜ํ•œ ๋’ค ๋Œ์•„์™€์•ผ ํ•˜๋ฉฐ, ๊ฐ ์ „ํ™˜์—๋Š” ์•ฝ 1์ดˆ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. **Settings โ†’ Eagle libraries**์—์„œ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. + +| Target library | ๋™์ž‘ | +|---|---| +| Currently open library (๊ธฐ๋ณธ๊ฐ’) | ์ „ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 1.7.x์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. | +| Always a specific library | ํ•„์š”ํ•  ๋•Œ ์ง€์ •ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ „ํ™˜ํ•˜๊ณ , `Switch back after import`๊ฐ€ ์ผœ์ ธ ์žˆ์œผ๋ฉด ๋Œ์•„์˜ต๋‹ˆ๋‹ค. | +| Ask every time | ๊ฐ€์ ธ์˜ฌ ๋•Œ๋งˆ๋‹ค ์„ ํƒํ•˜๋ฏ€๋กœ ํ•œ ๋…ธํŠธ์— ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์—์…‹์„ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. | + +๊ฐ€์ ธ์˜ค๋Š” ๋„์ค‘ Eagle์—์„œ ์ง์ ‘ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ „ํ™˜ํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์„ ํƒ์„ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. +ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ณต๊ท€ ์ „์— ํ˜„์žฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™•์ธํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. + +#### ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณ„ ํด๋” +๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฃจํŠธ ๋Œ€์‹  ํด๋”๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋” ID๋Š” ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์†ํ•˜๋ฏ€๋กœ +๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งˆ๋‹ค ๊ธฐ๋ณธ ํด๋”๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. **Target folder**๋ฅผ *Ask every time*์œผ๋กœ ์„ค์ •ํ•˜๋ฉด +์ „์ฒด ํด๋” ๊ฒฝ๋กœ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์„ ํƒ ์ฐฝ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด `proj/jazz`๋กœ `Projects/Jazz Blend`๋ฅผ +์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, `Inbox/2026`์„ ์ž…๋ ฅํ•˜๋ฉด `Inbox` ์•„๋ž˜์— `2026` ํด๋”๋ฅผ ๋ฐ”๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +Eagle์€ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋งŒ ํด๋”๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. API๋กœ ๊ธฐ์กด ํ•ญ๋ชฉ์„ ๋‹ค๋ฅธ ํด๋”๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ +๋Œ€์ƒ ํด๋”๋ฅผ ๋จผ์ € ์„ ํƒํ•˜๋ฉฐ, ๋‹ค์‹œ ๋ถ„๋ฅ˜ํ•˜๋ ค๋ฉด ์žฌ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. + +#### ์ €์žฅ ๋ฐฉ์‹๊ณผ ๋งํฌ ๋ชจ๋“œ +์ด์ „์—๋Š” Eagle๋กœ ๋ถ™์—ฌ๋„ฃ์–ด๋„ ๋ณผํŠธ์— ์‚ฌ๋ณธ์ด ๋‚จ์•˜๊ณ , ์‚ฝ์ž…ํ•œ ์ฐธ์กฐ๊ฐ€ ์žฌ๋™๊ธฐํ™”๋‚˜ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋กœ์˜ +์ด๋™ ํ›„์—๋Š” ์œ ์ง€๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฒ„์ „์—์„œ๋Š” ๋‹ค์Œ ์„ธ ๊ฐ€์ง€๊ฐ€ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. + +| ํ•ญ๋ชฉ | ์ด์ „ | ํ˜„์žฌ | +|---|---|---| +| `.eagle-temp/`์˜ ์ž„์‹œ ์‚ฌ๋ณธ | ๋ถ™์—ฌ๋„ฃ์„ ๋•Œ๋งˆ๋‹ค ๊ธฐ๋กํ•˜๊ณ  ์‚ญ์ œํ•˜์ง€ ์•Š์•„ Eagle๊ณผ ๋ณผํŠธ ์–‘์ชฝ์— ์›๋ณธ์ด ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. | Eagle์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ™•์ธํ•˜๋ฉด ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. | +| ์‚ฝ์ž… ๊ฒฝ๋กœ | ๋Œ€์•ˆ ์—†์ด Eagle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ ˆ๋Œ€ `file://` ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. | ๊ธฐ๋ณธ๊ฐ’์€ ์—ฌ์ „ํžˆ `cmds-eagle`์ด์ง€๋งŒ, `photo-info`๋Š” ๋ณผํŠธ ์ƒ๋Œ€ ๊ฒฝ๋กœ ์ธ๋„ค์ผ๊ณผ `eagle://` ๋”ฅ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์žฌ๋™๊ธฐํ™” ํ›„์—๋„ ์œ ์ง€๋˜๊ณ  ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ๋„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. | +| ์ธ๋„ค์ผ ๋Œ€๊ธฐ | ๊ณ ์ •๋œ `delay(1000)`์„ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ, ํฐ ํŒŒ์ผ์€ ์ž„์‹œ ํŒŒ์ผ ๋งํฌ๋กœ ๋Œ€์ฒด๋˜์–ด ๋‚˜์ค‘์— ์—ฐ๊ฒฐ์ด ๋Š๊ฒผ์Šต๋‹ˆ๋‹ค. | ๋Œ€๊ธฐ ๊ฐ„๊ฒฉ์„ ์ง€์ˆ˜์ ์œผ๋กœ ๋Š˜๋ฆฌ๋ฉฐ ํ™•์ธํ•˜๊ณ , ์‹คํŒจํ•˜๋ฉด ๋”ฅ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ์— ์ข…์†๋œ ๊ฒฝ๋กœ๋กœ ๋Œ€์ฒดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. | + +๊ธฐ์กด ์„ค์น˜์˜ ๋™์ž‘์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. `linkMode` ๊ธฐ๋ณธ๊ฐ’์€ `cmds-eagle`์ด๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•˜๊ธฐ +์ „๊นŒ์ง€๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +> **Eagle์—์„œ ์‚ญ์ œํ•˜๋ฉด ๋…ธํŠธ์—์„œ๋„ ์ด๋ฏธ์ง€๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.** Eagle์„ ์›๋ณธ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•˜๋Š” +> `cmds-eagle` ๊ณ„์—ด ๋ชจ๋“œ์˜ ์˜๋„๋œ ๋™์ž‘์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ Obsidian์ด ์ฐฝ์„ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๊นŒ์ง€ +> ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์‚ญ์ œ ์งํ›„์—๋„ ์ž ์‹œ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +> ์‹ค์ œ ์ƒํƒœ๋Š” `Verify Eagle references in current note`๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. +> Eagle์—์„œ ์‚ญ์ œํ•œ ๋’ค์—๋„ ๋…ธํŠธ์— ์ด๋ฏธ์ง€๋ฅผ ๋‚จ๊ธฐ๋ ค๋ฉด `photo-info`๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. + +#### ๋งํฌ ๋ชจ๋“œ +**ํŒŒ์ผ ์ €์žฅ ์œ„์น˜**(Eagle / ๋ณผํŠธ / ํด๋ผ์šฐ๋“œ / ๋งค๋ฒˆ ์„ ํƒ)์™€ **๋…ธํŠธ์— ์‚ฝ์ž…ํ•  ํ˜•์‹**์€ ์„œ๋กœ ๋…๋ฆฝ์ ์ธ +์„ค์ •์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์„ค์ •์ด `linkMode`์ž…๋‹ˆ๋‹ค. + +| ๋ชจ๋“œ | ๋…ธํŠธ์— ์‚ฝ์ž…๋˜๋Š” ๋‚ด์šฉ | ๋ณผํŠธ ์‚ฌ๋ณธ | ๋‹ค๋ฅธ ๊ธฐ๊ธฐ | +|---|---|---|---| +| **`photo-info`** | ์ธ๋„ค์ผ + ํ•œ ์ค„ ์นด๋“œ | ์ธ๋„ค์ผ 1๊ฐœ | ๊ฐ€๋Šฅ | +| `photo-only` | ์ธ๋„ค์ผ | ์ธ๋„ค์ผ 1๊ฐœ | ๊ฐ€๋Šฅ | +| `link-only` | `eagle://` ๋งํฌ | ์—†์Œ | ๊ฐ€๋Šฅ | +| **`cmds-eagle`** (๊ธฐ๋ณธ๊ฐ’) | ์ ˆ๋Œ€ `file://` ์ž„๋ฒ ๋“œ + ์นด๋“œ | ์—†์Œ | ๋“ฑ๋กํ•œ ๋ฐ์Šคํฌํ†ฑ๋งŒ ์ง€์› | +| `cmds-eagle-photo-only` | ์ ˆ๋Œ€ `file://` ์ž„๋ฒ ๋“œ | ์—†์Œ | ๋“ฑ๋กํ•œ ๋ฐ์Šคํฌํ†ฑ๋งŒ ์ง€์› | +| `cmds-eagle-photo-link` | `eagle://` ํ•ญ๋ชฉ ๋งํฌ๊ฐ€ ์—ฐ๊ฒฐ๋œ ์›๋ณธ ์ด๋ฏธ์ง€ | ์—†์Œ | ๋“ฑ๋กํ•œ ๋ฐ์Šคํฌํ†ฑ๋งŒ ์ง€์› | + +```markdown +# photo-info +[![hero shot](attachments/eagle/KXYZ01.png)](eagle://item/KXYZ01) +> `png` ยท 4.2 MB ยท 1920ร—1080 ยท #ui #ref ยท [Open in Eagle](eagle://item/KXYZ01) + +# photo-only +[![hero shot](attachments/eagle/KXYZ01.png)](eagle://item/KXYZ01) + +# link-only +[hero shot](eagle://item/KXYZ01) + +``` + +`cmds-eagle*` ์„ธ ๋ชจ๋“œ๋Š” ๋ณผํŠธ ์ธ๋„ค์ผ ๋Œ€์‹  ์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ถœ๋ ฅ ๊ตฌ์„ฑ์€ ํ‘œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. +์˜ˆ์‹œ์—๋Š” ์ปดํ“จํ„ฐ๋ณ„ ํŒŒ์ผ ์œ„์น˜๋ฅผ ๋„ฃ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. + +์ธ๋„ค์ผ์€ Eagle ํ•ญ๋ชฉ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋‹ค์‹œ ์‚ฝ์ž…ํ•ด๋„ ์ค‘๋ณต ์ƒ์„ฑ๋˜์ง€ +์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๋Š” ๋…ธํŠธ ๊ธฐ์ค€ ์ƒ๋Œ€ ๊ฒฝ๋กœ์ด๋ฏ€๋กœ ๋ณผํŠธ ์ „์ฒด๋ฅผ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์นด๋“œ๋Š” +์ •ํ™•ํžˆ ํ•œ ์ค„์ž…๋‹ˆ๋‹ค. `cmds-eagle*` ๋ชจ๋“œ๋Š” ์›๋ณธ ์ž์ฒด๋ฅผ ์ž„๋ฒ ๋“œํ•˜๋ฏ€๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งˆ์šดํŠธ๋˜์–ด +์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฐ์Šคํฌํ†ฑ์—์„œ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ +[ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋™๊ธฐํ™”](#์—ฌ๋Ÿฌ-๊ธฐ๊ธฐ์—์„œ-์ฝ๊ธฐ)๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. +์ด์‹ ๊ฐ€๋Šฅํ•œ ์‚ฌ์ง„ ๋ชจ๋“œ๋Š” ์ธ๋„ค์ผ์„ ์–ป์ง€ ๋ชปํ•˜๋ฉด ์ผ๋ฐ˜ `eagle://` ๋งํฌ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. +์›๋ณธ ๋ชจ๋“œ๋„ ์›๋ณธ์„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋Œ€์ฒดํ•˜๋ฉฐ, ์ž„์‹œ ํŒŒ์ผ ์ฐธ์กฐ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +`cmds-eagle-photo-link`์—์„œ๋Š” ํ‘œ์‹œ๋œ ์›๋ณธ์„ ํด๋ฆญํ•˜๋ฉด Eagle์˜ ํ•ด๋‹น ํ•ญ๋ชฉ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค. + +`photo-*` ์ถœ๋ ฅ ํ˜•์‹์€ ๊ณ„์•ฝ ํ…Œ์ŠคํŠธ๋กœ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. `src/canonical.ts`์™€ +`tests/canonical.test.ts`๋ฅผ ์ฐธ์กฐํ•˜๋ฉฐ, ํ‘œ์‹œ ํ˜•์‹์„ ๋ณ€๊ฒฝํ•  ๋•Œ ๋‘ ํŒŒ์ผ๋„ ์ผ์น˜์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. + +#### ๊ธฐ์กด ๋ณผํŠธ์˜ ์ด๋ฏธ์ง€ ์ด์ „ +`Move all local images in the vault into Eagle`์€ ์ฐธ์กฐ๋œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ๋ชจ๋“  ์ฐธ์กฐ๋ฅผ +ํ‘œ์ค€ ํ˜•์‹์œผ๋กœ ๋ฐ”๊พผ ๋’ค ๋ณผํŠธ ์‚ฌ๋ณธ์„ ํœด์ง€ํ†ต์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. +`Move this note's local images into Eagle`์€ ํ•œ ๋…ธํŠธ์—์„œ ๋Œ€์ƒ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•˜๋ฏ€๋กœ ๋จผ์ € +์‹œํ—˜ํ•˜๊ธฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋…ธํŠธ์— ์žˆ๋Š” ๋™์ผ ์ด๋ฏธ์ง€์˜ ์ฐธ์กฐ๋„ ํ•จ๊ป˜ ๋ฐ”๋€๋‹ˆ๋‹ค. +๋‘ ๋ช…๋ น ๋ชจ๋‘ ํ™•์ธ์„ ์š”์ฒญํ•˜๊ณ  ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ๋ณผํŠธ ์ „์ฒด ์ด์ „์€ ์›๋ณธ์„ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์ด๋ฉฐ +ํฐ ๋ณผํŠธ์—์„œ๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋จผ์ € ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํœด์ง€ํ†ต์œผ๋กœ ๋ณด๋‚ด๋ ค๋ฉด Obsidian์—์„œ +ํ•ด๋‹น ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ Obsidian์˜ ์‚ญ์ œ ์„ค์ •์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. diff --git a/docs/guide.md b/docs/guide.md new file mode 100644 index 0000000..34c6e0e --- /dev/null +++ b/docs/guide.md @@ -0,0 +1,254 @@ +# CMDS Eagle user guide +Connect a visual asset library to your notes without confusing the original, the preview, and the published copy. + +## Status and prerequisites +This guide covers source version **1.8.4**, checked on **2026-09-14**. Release 1.8.4 contains the three installable plugin files and CMDS Eagle is in the Obsidian Community Plugins registry. Registry listing is not a manual security review; its listing explicitly says it has not been manually reviewed by Obsidian staff. +- Obsidian **desktop 1.6.6+** on a machine that can run Eagle; no mobile plugin support. +- [Eagle](https://eagle.cool) installed, licensed according to Eagle's own terms, running with a library open. The plugin is MIT-licensed; Eagle is separate software. +- Local API normally at `http://localhost:41595`. No cloud account is needed for local search/import. +- Optional cloud account and storage/traffic budget for ImgHippo, R2, S3, WebDAV, or a custom upload service. The plugin does not provision a storage service for you. +- A backed-up test note and one non-sensitive image. Do not begin with a whole-vault migration. + +## Install +1. Open Obsidian **Settings โ†’ Community plugins โ†’ Browse**. +2. Search **CMDS Eagle**, install, and enable it. Review the community-plugin permissions notice first. +3. Open **Settings โ†’ CMDS Eagle โ†’ Connection โ†’ Test Connection** with Eagle running. +For manual installation, download `main.js`, `manifest.json`, and `styles.css` from [release 1.8.4](https://github.com/johnfkoo951/cmds-eagle/releases/tag/1.8.4). Put all three in `/.obsidian/plugins/cmds-eagle/`, reload Obsidian, and enable the plugin. Do not replace an existing `data.json` with somebody else's configuration. + +## First success: one image in one note +1. In Eagle, open a library containing a harmless sample image. +2. In plugin settings choose **Where to store images โ†’ Import into Eagle (recommended)**. This is about new pastes/imports, not where an existing searched item lives. +3. Choose **What goes into the note โ†’ Photo + info โ€” portable thumbnail** (`photo-info`) for a portable preview. This is a recommendation, not the shipped default: the default is `cmds-eagle`. +4. Open a scratch Markdown note and place the cursor where the image should appear. +5. Open the command palette with Ctrl/Cmd+P and run **Search Eagle library and embed**. Search by a known item name, then choose it. +6. Check the rendered preview, the one-line metadata card, and the **Open in Eagle** link. A thumbnail should be in the vault's configured thumbnail folder. +Success means the image is visible and the link opens the intended Eagle item. Syncing the note and thumbnail can make the preview visible elsewhere; opening `eagle://` still requires a supported Eagle installation and the relevant library. + +## Decide storage and link style separately +**Storage** (`Where to store images`) offers Eagle, vault, cloud, or ask. **Link style** (`What goes into the note`) controls the reference inserted for an Eagle item. Changing the default does not migrate every existing note. + +| Mode | What the note uses | Copy in vault | Best use / limitation | +|---|---|---|---| +| `photo-info` | Thumbnail linked to Eagle, plus a one-line card | Thumbnail | Portable reading with metadata | +| `photo-only` | Thumbnail linked to Eagle | Thumbnail | Portable, compact reading | +| `link-only` | Eagle deep link | None | Navigation, not an image preview; recipient needs Eagle | +| `cmds-eagle` (default) | Original `file://` embed and metadata card | None | Original quality on a mounted, registered desktop | +| `cmds-eagle-photo-only` | Original `file://` embed | None | Compact original-quality desktop preview | +| `cmds-eagle-photo-link` | Original preview linked to Eagle | None | Click the original preview to open its Eagle item | + +A thumbnail is not a backup of the original. Small images without an Eagle thumbnail may use a copied original instead. If an image cannot be resolved within the configured wait, the output falls back to an Eagle deep link rather than a temporary file. Deleting an Eagle original breaks the original-file modes; a previously copied thumbnail may survive, but its Eagle link will no longer resolve. + +## Libraries, folders, and search +Search uses the library Eagle **currently has open**. Import destination settings do not make search span every library at once. +- **Detect libraries โ†’ Scan Eagle** reads the open library and library history. +- **Target library**: currently open (default), always a specific library, or ask every time. The specific-library mode exposes **Default library**. +- **Target folder**: each library's default, ask every time, or library root. Folder IDs belong to a library; configure them separately. +- The folder picker searches full paths and can create a folder before import. Eagle's API assigns folders during import; re-filing an already imported item is not promised by this control. +- **Switch back after import** restores the previous library when appropriate. A manual library change during import is respected rather than overwritten. +- Removing a remembered library profile also removes its saved default folder, not the Eagle library on disk. A scan may rediscover it. +- **Remove missing libraries on scan** is off by default. A library is marked missing only when absent from both Eagle's history and disk; an unavailable scan is not evidence of deletion. +- Search has name/tag/notes/folder scope and file-type filters. **Items to pre-load for search** defaults to 5000; additional results can come from Eagle keyword search as you type. + +## Command reference +Command-palette entries are prefixed by CMDS Eagle. Editor actions need an active Markdown editor. + +| Exact command | Use and side effects | +|---|---| +| Search Eagle library and embed | Search the open library and insert the chosen item | +| Switch Eagle library | Change the library open in Eagle | +| Set default Eagle folder for the open library | Save the import folder for that library | +| Upload clipboard Eagle image to cloud | Read an Eagle reference from the clipboard, upload the resolved image, insert a URL | +| Embed Eagle image and upload to cloud | Choose an Eagle item, upload and insert it | +| Convert all images in note to cloud URLs | Upload supported images in the active note and rewrite their links; inspect the resulting note | +| Convert cross-platform image paths in current note | Remap registered roots; source writes depend on Conversion mode | +| Move this note's local images into Eagle | Migrate referenced local images; **can rewrite other notes and trash originals** | +| Move all local images in the vault into Eagle | Vault-wide migration; **destructive, not a first-use action** | +| Verify Eagle references in current note | Report missing files/items; may temporarily switch libraries; does not rewrite the note | + +## Settings reference +The visible labels below come from the 1.8.4 settings implementation. + +| Section | Important controls | +|---|---| +| Connection | Eagle API Base URL; Connection Timeout (milliseconds); Test Connection | +| Eagle libraries | Target library/folder; Default library when relevant; Switch back after import; Library switch timeout; Scan Eagle; missing-profile removal | +| Image paste/drop behavior | Where to store images; What goes into the note; Thumbnail folder (default `attachments/eagle`); Hidden tag prefixes in card | +| Thumbnail handling | Thumbnail wait timeout (default 10000 ms); Thumbnail size warning (default 2048 KB); Remove staged copy after import | +| Search & embed | Include metadata card; Items to pre-load for search | +| Cloud storage provider | Active Cloud Provider and that provider's credentials/URLs | +| Cross-platform sync | Enable cross-platform path conversion; Conversion mode; Auto-convert paths on file open; Add current computer and library root | +| Excalidraw integration | Embed images in Excalidraw via cloud; Also add pasted screenshots to Eagle | + +The staged file under `.eagle-temp/` is removed after the copied Eagle original is confirmed at full size when cleanup is enabled. Disabling that option for debugging leaves additional copies. + +## Cloud upload and Excalidraw +Set a provider before using any cloud command; selecting its name alone does not configure credentials. + +| Provider | Required setup | +|---|---| +| ImgHippo | Account/API key from the provider; review its retention and service limits | +| Cloudflare R2 | Compatible Worker upload endpoint, Worker API key, public bucket URL; a bucket alone is insufficient | +| Amazon S3 | Endpoint, region, bucket, access key ID and secret; optional public URL | +| WebDAV | Server URL, username/password, upload path, externally readable public URL | +| Custom server | Upload URL and public URL matching the plugin's custom upload contract | + +Test using a non-sensitive image, then open the resulting URL in a browser that is not logged in. Upload success does not prove public readability. Charges, access policies, and retention are controlled by the chosen service. +Excalidraw integration requires that separate plugin and a configured cloud provider. Eagle assets resolve to originals; screenshots can be uploaded and optionally also imported into Eagle. The drawing then depends on externally reachable image URLs. These uploads are not encrypted by CMDS Eagle. + +## Cross-device reading +Path conversion is a root mapping, **not Eagle-library synchronization**. On each desktop use **Add current computer** and enter the actual mounted library root. Local volumes, mapped Windows drives, and UNC network shares can be represented. +**Render only** is the default conversion mode: it changes displayed paths without editing the Markdown. **Modify note source** rewrites file URLs and skips unmounted targets. Prefer render-only when several computers sync the same notes. Phones cannot mount a desktop `file://` library through this plugin; use synced thumbnails or accessible cloud images for reading there. + +## Migration: read before running +Back up both the vault and Eagle library and pause competing edits first. The per-note migration chooses images from one note, but **rewrites references to those images across other Markdown notes too**. Successful imports/references are processed before the vault originals are trashed according to Obsidian's deletion preference. Select system trash in Obsidian if that is the intended destination. +Generated thumbnails, temporary staging files, and unreferenced assets are excluded. Failure preserves the affected original, but earlier successful operations are **not automatically rolled back**. Inspect the reported touched files and failures. Restore from your backup deliberately, without overwriting newer edits. Migration is not performed by installing the plugin or reading this guide. + +## Privacy and limitations +- Local search talks to Eagle's local API; explicit imports write to Eagle and selected vault locations. Cloud actions send image bytes and associated request data to the configured service. +- Treat `data.json`, storage keys, library paths, and diagnostic output as private. A masked field is not proof of encrypted-at-rest storage. +- Public image URLs can be forwarded or cached. Removing a note link does not guarantee deletion of its cloud asset. +- `file://` and `eagle://` links are not public web image URLs. A Share page cannot make a recipient's machine mount your library. +- Desktop source support is not a clean-machine test on every OS. This documentation pass inspected source and public release metadata; it did not execute imports, migrations, or provider uploads. + +## Troubleshooting + +| Symptom | Check next | +|---|---| +| Connection fails | Start Eagle, open a library, verify the local API URL and timeout, then Test Connection | +| Known item missing | Confirm the open library; clear scope/type filters; search the exact name; check pre-load limit and API keyword results | +| Only an Eagle link appears | Thumbnail/original could not be resolved; check file availability and thumbnail wait, not a guessed temp path | +| Image still appears after deletion | Reload the Obsidian window and run Verify Eagle references; cached rendering can be stale | +| Missing on another computer | Mount the library, register that computer/root, or use photo-info for a synced preview | +| Cloud upload succeeds but image fails | Verify public URL/access policy separately from upload credentials | +| Removed library reappears | Eagle still remembers it; profile removal does not remove Eagle's history or disk data | +| Migration partly completes | Stop further bulk runs; inspect notices/console and backups; successful prior edits remain | + +## Updates, support, and credits +Back up configuration before upgrading; use Community Plugins updates or the matching three files from one release, then retest one note. Keep release versions together. +[Product and web manual](https://apps.cmdspace.work/plugins/cmds-eagle/) | [Releases](https://github.com/johnfkoo951/cmds-eagle/releases) | [Issues](https://github.com/johnfkoo951/cmds-eagle/issues). +When reporting a problem, include plugin/Obsidian/Eagle versions, OS, link mode, provider type, and a sanitized reproduction. Never attach credentials, a private library, or full plugin settings. +**Yohan Koo (CMDSPACE)**, https://cmdspace.work. MIT; see [LICENSE](https://github.com/johnfkoo951/cmds-eagle/blob/main/LICENSE). + +## Source and verification reference +Behavior was checked against `manifest.json`, `src/main.ts`, `src/settings.ts`, `src/types.ts`, `src/canonical.ts`, `src/api.ts`, and `src/cloud-providers.ts`. [Source repository](https://github.com/johnfkoo951/cmds-eagle). Existing screenshot below shows the storage-choice interaction, not every current 1.8.4 setting; reviewed for visible private content. +![Existing Eagle storage-choice screenshot](https://raw.githubusercontent.com/johnfkoo951/cmds-eagle/main/assets/CMDS-eagle3.png) + +## Appendix: preserved release history +The following records the earlier README release notes (1.8.0โ€“1.8.4). Historical wording is retained; the current workflow and limitations above take precedence. +### What's new in 1.8.4 +**A renamed or deleted library stayed in the list for good.** Detection only ever added profiles, so a +library you renamed in Eagle kept its old entry in settings โ€” pointing at a path that no longer exists, +with no way to remove it. Every library row now has a remove button, and a library Eagle has forgotten +that is also gone from disk is marked `Missing` with a `Remove all missing` action above the list. + +Removal stays deliberate by default, because a profile holds your saved default folder. A library is +only called missing when **both** signals agree: Eagle no longer lists it *and* the bundle is gone from +disk. An external or network volume that is merely unmounted is still remembered by Eagle, so it stays +listed and keeps its settings. When Eagle is not running nothing is judged at all. Turn on +`Remove missing libraries on scan` if you would rather have `Scan Eagle` clean up on its own. + +### What's new in 1.8.2 +**Search saw only a fraction of your library.** Eagle returns 200 items when no limit is given, and the +search modal never gave one โ€” so on a 2,400-item library it fuzzy-matched against 8% of it and +everything else behaved as though it did not exist. The modal now pre-loads `Items to pre-load for +search` (default 5000) and, beyond that cap, merges in Eagle's own keyword search as you type, so no +item is unreachable regardless of library size. + +**The search filters were never drawn.** The scope filters (`Name` / `Tags` / `Notes` / `Folders`), the +file-type filters and the library item-count header had all been silently missing, because the code that +inserts them looked for the wrong element. They now render. + +**Attachments no longer break at the vault root.** With Obsidian's *Default location for new attachments* +left at `Vault folder`, saving an image locally produced a `//name.png` path that Obsidian could not +resolve. Reported and fixed by [@nancyel](https://github.com/nancyel) in +[#1](https://github.com/johnfkoo951/cmds-eagle/pull/1), then extended to the neighbouring cases. + +### What's new in 1.8.0 +#### Multiple Eagle libraries +Eagle opens one library at a time, so importing into another one means switching Eagle to it and +switching back โ€” about a second each way. Set this up under **Settings โ†’ Eagle libraries**: + +| Target library | Behaviour | +|---|---| +| Currently open library (default) | Never switches. Identical to 1.7.x. | +| Always a specific library | Switches to it when needed, then restores if `Switch back after import` is enabled. | +| Ask every time | Prompts, so one note can hold assets from several libraries. | + +If you switch libraries in Eagle yourself while an import is running, your choice wins โ€” the plugin +checks before restoring and leaves Eagle where you put it. + +#### Per-library folders +Imports can land in a folder rather than the library root. Folder ids belong to their library, so each +library remembers its own default folder. **Target folder** can also be set to *Ask every time*, which +opens a picker that searches full paths (`proj/jazz` finds `Projects/Jazz Blend`) and can create a +folder inline โ€” type `Inbox/2026` to create `2026` under `Inbox`. + +Eagle assigns folders at import time only: its API cannot move an item between folders afterwards. So +the target is chosen up front, and re-filing means re-importing. + +#### Capture and link modes +Pasting into Eagle previously left a copy in the vault as well, and the reference that was inserted did +not survive a resync or a move to a second machine. This version changes three things: + +| | Before | Now | +|---|---|---| +| Staged copy under `.eagle-temp/` | written on every paste, never deleted โ€” the original ends up in both Eagle and the vault | removed once Eagle confirms the import | +| Inserted path | absolute `file://` into the Eagle library, with no alternative | still the default (`cmds-eagle`), but `photo-info` now offers a vault-relative thumbnail + `eagle://` deep link that survives a resync and renders on other devices | +| Thumbnail wait | hardcoded `delay(1000)`; large files fall back to a link to the temp file, which is then orphaned | exponential-backoff polling, then a deep link โ€” never a machine-local path | + +Existing installs keep their current behaviour: `linkMode` defaults to `cmds-eagle`, so nothing changes +until you pick another mode. + +> **Deleting in Eagle removes the image from your notes.** That is the intent of the `cmds-eagle` +> modes โ€” Eagle is the source of truth. Be aware that the image may keep rendering for a while after +> deletion: Obsidian serves it from memory until the window reloads. Run +> `Verify Eagle references in current note` to see the real state. Choose `photo-info` instead if you +> want notes to survive deletions in Eagle. + +#### Link modes +Two independent settings: **where the file is stored** (Eagle / vault / cloud / ask) and **what goes into +the note**. The second one is `linkMode`: + +| mode | note contains | vault copies | other devices | +|---|---|---|---| +| **`photo-info`** | thumbnail + one-line card | 1 thumbnail | Yes | +| `photo-only` | thumbnail | 1 thumbnail | Yes | +| `link-only` | `eagle://` link | none | Yes | +| **`cmds-eagle`** (default) | absolute `file://` embed + card | none | registered desktops only | +| `cmds-eagle-photo-only` | absolute `file://` embed | none | registered desktops only | +| `cmds-eagle-photo-link` | original image linked to its `eagle://` item | none | registered desktops only | + +```markdown +# photo-info +[![hero shot](attachments/eagle/KXYZ01.png)](eagle://item/KXYZ01) +> `png` ยท 4.2 MB ยท 1920ร—1080 ยท #ui #ref ยท [Open in Eagle](eagle://item/KXYZ01) + +# photo-only +[![hero shot](attachments/eagle/KXYZ01.png)](eagle://item/KXYZ01) + +# link-only +[hero shot](eagle://item/KXYZ01) + +``` + +For the three `cmds-eagle*` modes, the table describes the equivalent output using the original +image rather than a vault thumbnail; machine-specific file locations are omitted from these examples. + +The thumbnail is keyed by Eagle item id (so renames and re-inserts are idempotent), the image path is +relative to the note (so the whole vault syncs), and the card is exactly one line. The `cmds-eagle*` +modes embed the original itself, so they need the library to be mounted โ€” see +[Cross-platform sync](#cross-device-reading) for sharing one library across desktops. The portable +photo modes degrade to a plain `eagle://` link when their thumbnail is unavailable. The original modes +do the same when the original cannot be resolved โ€” never to a temp-file reference. +In `cmds-eagle-photo-link`, clicking the rendered original opens that exact item in Eagle. + +The `photo-*` output shape is covered by contract tests โ€” see `src/canonical.ts` and +`tests/canonical.test.ts`. Keep them in sync when changing the rendered form. + +#### Moving an existing vault over +`Move all local images in the vault into Eagle` imports every referenced image, rewrites all references +to the canonical form, and sends the vault copy to the trash. `Move this note's local images into Eagle` +selects images from one note โ€” try that first. References to those images in other notes are also +rewritten. Both ask for confirmation and report what they touched. The vault-wide operation is +destructive and can be slow on large vaults; back up first. To send originals to the system trash, +select that option in Obsidian: the plugin follows Obsidian's deletion setting.