diff --git a/README.md b/README.md index 46bf5dd..1020331 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [![npx](https://img.shields.io/badge/npx-epcode-orange)](./tools/cli/) [![License](https://img.shields.io/badge/license-MIT-green)]() -> ๐Ÿ“ **ๆœ€ๆ–ฐ่ฟ›ๅฑ•**: Sprint 5 ๅทฒๅฎŒๆˆ๏ผˆ็ปŸไธ€ `epcode` CLI + Docusaurus ๆ–‡ๆกฃ็ซ™ + ๆฒป็†ๆ–‡ไปถ,2026-04-18๏ผ‰ใ€‚**5 ไธช Sprint ๅ…จ้ƒจๅฎŒๆˆ ยท ๆ•ดไฝ“ๅฎŒๆˆๅบฆ 98%**ใ€‚ +> ๐Ÿ“ **ๆœ€ๆ–ฐ่ฟ›ๅฑ•**: Phase 1 ๅทฒๅฎŒๆˆ(v0.6.0 ยท 5 Sprint ยท ๆ•ดไฝ“ๅฎŒๆˆๅบฆ 98%)ใ€‚Phase 2 ๅฏๅŠจ ยท Sprint 6 โ‘ฅ UI/UX ่ฎพ่ฎก็จฟ้ฆ–ๅ‘(10 wireframes + 5 interaction flows)ใ€‚ > > - ๐Ÿงฐ [็ปŸไธ€ CLI ยท epcode](./tools/cli/) ยท 10 ไธชๅญๅ‘ฝไปค,้›ถไพ่ต– `npx epcode --help` > - ๐ŸŒ **[ๆ–‡ๆกฃ็ซ™ ยท epcode-ai.github.io/ep-code-ai](https://epcode-ai.github.io/ep-code-ai/)** โœ… ๅทฒไธŠ็บฟ ยท ้ฆ–้กตไปฅ 4 ๆŽฅๅ…ฅๆจกๅผไธบไธ€็ญ‰ๅ…ฌๆฐ‘ diff --git a/docs/design/ui/README.md b/docs/design/ui/README.md new file mode 100644 index 0000000..37516cf --- /dev/null +++ b/docs/design/ui/README.md @@ -0,0 +1,98 @@ +# EP Code AI ยท ๆกŒ้ขๅบ”็”จ UI/UX ่ฎพ่ฎก็จฟ + +> Sprint 6 โ‘ฅ ไบงๅ‡บใ€‚ไธ‰ๅนณๅฐๆกŒ้ขๅบ”็”จ(macOS / Linux / Windows)็š„็ปŸไธ€ UI/UX ่ฎพ่ฎก่“ๅ›พใ€‚ +> +> **็Šถๆ€**: v1.0 ่‰ๆกˆ ยท ๅพ…่ฏ„ๅฎก ยท ่ฏ„ๅฎก้€š่ฟ‡ๅŽไฝœไธบ Sprint 7-8 ๅฎž็Žฐ็š„ๆƒๅจๆบ +> +> **่ง‚็œ‹้กบๅบ**: +> 1. ๆœฌๆ–‡(ๅŽŸๅˆ™ + ็ดขๅผ•) +> 2. [wireframes/](./wireframes/) โ€” 10 ๅผ ้™ๆ€้กต้ข็บฟๆก†ๅ›พ(ASCII) +> 3. [interaction-flows/](./interaction-flows/) โ€” 5 ไธชๅ…ณ้”ฎไบคไบ’ๆต็จ‹ๅ›พ(Mermaid) +> 4. [cross-platform-constraints.md](./cross-platform-constraints.md) โ€” ไธ‰ๅนณๅฐไธ€่‡ดๆ€ง็บฆๆŸ + +--- + +## ไธ€ใ€่ฎพ่ฎกๅŽŸๅˆ™ + +### 1.1 ไฟกๆฏๅฏ†ๅบฆไผ˜ๅ…ˆ,่ฃ…้ฅฐๅ…ถๆฌก + +- ไธ‰ๆ ่ง†ๅ›พๆœ€ๅคงๅŒ–ๅˆฉ็”จๅฑๅน•,่ฃ…้ฅฐๆ€ง็•™็™ฝๆŽงๅˆถๅœจ 8-12% +- ๆฒก็”จ็š„ๅŠŸ่ƒฝไธๆ”พ(ๅฆ‚ๅ“็‰Œๅคง logoใ€็ฉบ็™ฝๅผ•ๅฏผๅก็‰‡ๅ ๆปกๅฑ) + +### 1.2 ้”ฎ็›˜็ฌฌไธ€,้ผ ๆ ‡็ฌฌไบŒ + +- ๆ‰€ๆœ‰้ซ˜้ข‘ๆ“ไฝœๅฟ…้กปๆœ‰ๅฟซๆท้”ฎ(`/` ๅ‘ฝไปค้ขๆฟใ€`โŒ˜K` ๆœ็ดขใ€`โŒ˜N` ๆ–ฐไผš่ฏใ€`โŒ˜,` ่ฎพ็ฝฎ) +- ้ผ ๆ ‡ๅชๆ˜ฏ fallback,ไธๆ˜ฏไธป่ฆไบคไบ’ๆ–นๅผ +- ๅ‘ฝไปค้ขๆฟ่ฆ†็›–ๆ‰€ๆœ‰ CLI ๅญๅ‘ฝไปค(`epcode prd`ใ€`epcode adr` ็ญ‰),็”จๆˆทๅœจ GUI ้‡ŒไนŸ่ƒฝ่ท‘ + +### 1.3 ็Šถๆ€ๅฏ่ง + +- ๅฝ“ๅ‰ไพ›ๅบ”ๅ•†ใ€ๆจกๅž‹ใ€่ฟžๆŽฅ็Šถๆ€ใ€็Žฏๅขƒๆฃ€ๆŸฅ็ป“ๆžœ ้ƒฝๅœจ่ง†่ง‰ไธŠ้šๆ—ถๅฏ่ง +- ๅคฑ่ดฅ็Šถๆ€็”จ็บข/้ป„้ซ˜ไบฎ,ไธ้  toast(toast ไผš้—ช่ฟ‡) + +### 1.4 ๆธ่ฟ›ๆŠซ้œฒ + +- ้ป˜่ฎค้š่—้ซ˜็บงๅŠŸ่ƒฝ(ๆจกๅž‹ๆธฉๅบฆใ€ไธŠไธ‹ๆ–‡็ช—ๅฃใ€่ฐƒ่ฏ•้ขๆฟ็ญ‰) +- ่ฎพ็ฝฎ้กตๆœ‰ "โš—๏ธ ๅฎž้ชŒๆ€ง" tab ๆ”ถ็บณ + +### 1.5 ไธ‰ๅนณๅฐไธ€่‡ด + ๅนณๅฐ็‰นๆ€ง + +- **ๅฟ…้กปไธ€่‡ด**: ไฟกๆฏๆžถๆž„ใ€ๆ ธๅฟƒๅŠŸ่ƒฝๅฑ‚็บงใ€ๅ…ณ้”ฎๆœฏ่ฏญใ€ๅฟซๆท้”ฎ(modifier ้”ฎ้™คๅค–) +- **ๅฏๅˆ†ๅนณๅฐๅฎšๅˆถ**: ็ช—ๅฃๆŽงไปถไฝ็ฝฎใ€่œๅ•็ป„็ป‡ใ€็ณป็ปŸๆ‰˜็›˜ใ€้€š็Ÿฅๆ ทๅผ + +--- + +## ไบŒใ€็ดขๅผ• + +### Wireframes(้™ๆ€็บฟๆก†ๅ›พ,10 ๅผ ) + +| # | ๆ–‡ไปถ | ไธป้ข˜ | +|---|------|------| +| 1 | [main-three-pane.md](./wireframes/01-main-three-pane.md) | ไธป่ง†ๅ›พ(ไพง่พนๆ  + ่Šๅคฉ + Artifact) | +| 2 | [setup-wizard.md](./wireframes/02-setup-wizard.md) | ้ฆ–ๆฌกๅฏๅŠจ 4 ๆญฅๅ‘ๅฏผ | +| 3 | [settings.md](./wireframes/03-settings.md) | ่ฎพ็ฝฎ้กต(General / Provider / Shortcuts / Experimental) | +| 4 | [slash-command-palette.md](./wireframes/04-slash-command-palette.md) | ๆ–œๆ ๅ‘ฝไปคๆตฎๅฑ‚ | +| 5 | [artifact-panel-expanded.md](./wireframes/05-artifact-panel-expanded.md) | Artifact ๅ…จๅฑ่ฏฆๆƒ… | +| 6 | [provider-switcher.md](./wireframes/06-provider-switcher.md) | ไพ›ๅบ”ๅ•†ๅˆ‡ๆขๆตฎๅฑ‚ | +| 7 | [search-overlay.md](./wireframes/07-search-overlay.md) | ๅ…จๅฑ€ๆœ็ดข(โŒ˜K) | +| 8 | [conversation-context-menu.md](./wireframes/08-conversation-context-menu.md) | ไผš่ฏๅณ้”ฎ่œๅ• + ๆ”ถ่— + ๅˆ†็ป„ | +| 9 | [empty-states.md](./wireframes/09-empty-states.md) | ๅ„็ง็ฉบ็Šถๆ€ | +| 10 | [env-status-bar.md](./wireframes/10-env-status-bar.md) | ๆŒไน…ๅŒ–็Žฏๅขƒๅฅๅบท็Šถๆ€ๆ  | + +### Interaction Flows(ไบคไบ’ๆต็จ‹,5 ไธช Mermaid) + +| # | ๆ–‡ไปถ | ๆต็จ‹ | +|---|------|------| +| 1 | [flow-new-conversation.md](./interaction-flows/01-flow-new-conversation.md) | ๆ–ฐๅปบไผš่ฏไปŽๅ…ฅๅฃๅˆฐ้ฆ–ๆกๆถˆๆฏ | +| 2 | [flow-env-check-fail.md](./interaction-flows/02-flow-env-check-fail.md) | ็Žฏๅขƒๆฃ€ๆŸฅๅคฑ่ดฅ็š„ๅ…œๅบ•ๅผ•ๅฏผ | +| 3 | [flow-slash-command.md](./interaction-flows/03-flow-slash-command.md) | ๆ–œๆ ๅ‘ฝไปค่ฐƒ็”จ + ่‡ชๅŠจ่กฅๅ…จ | +| 4 | [flow-artifact-detect.md](./interaction-flows/04-flow-artifact-detect.md) | AI ่พ“ๅ‡บ โ†’ ่‡ชๅŠจ่ฏ†ๅˆซไธบ Artifact | +| 5 | [flow-provider-switch.md](./interaction-flows/05-flow-provider-switch.md) | ไผš่ฏไธญๅˆ‡ๆขไพ›ๅบ”ๅ•†็š„ๅฝฑๅ“ๅค„็† | + +--- + +## ไธ‰ใ€ไธŽ Phase 1 ็š„ๅ…ณ็ณป + +ๆœฌ่ฎพ่ฎก็จฟๅฏนๅบ” `app/ClaudeCodeHistory/` ๅทฒๆœ‰็š„ 22 ไธช Swift ๆ–‡ไปถใ€‚Sprint 7 macOS Beta ๆ—ถ: + +| ่ฎพ่ฎก็จฟ | Swift ๅฎž็Žฐ | ๆ”นๅŠจ่ฏ„ไผฐ | +|--------|----------|---------| +| ไธปไธ‰ๆ  | `ContentView.swift` + `SidebarView.swift` + `ChatView.swift` + `ArtifactPanel.swift` | ไธญ,้œ€่กฅ็ผบๅคฑๅ…ƒ็ด (ไพ›ๅบ”ๅ•†ๆ˜พ็คบใ€็Šถๆ€ๆ ) | +| ้ฆ–ๆฌกๅ‘ๅฏผ | `SetupWizardView.swift` + `EnvironmentChecker.swift` | ๅคง,ๅŠ  Provider ้…็ฝฎๆญฅ้ชค | +| ่ฎพ็ฝฎ้กต | `SettingsView.swift` + `AppSettings.swift` + `ProviderManager.swift` | ๅคง,้‡ๆž„ๆˆๅคš tab | +| ๆ–œๆ ๅ‘ฝไปค้ขๆฟ | (ๆ— ) | ๅ…จๆ–ฐ,้œ€ๅŠ ๆ–ฐ็ป„ไปถ | +| ๅ…จๅฑ€ๆœ็ดข | (ๆ— ) | ๅ…จๆ–ฐ | +| ็Šถๆ€ๆ  | `EHUBInfoBar.swift` ๅฑ€้ƒจ | ไธญ,ๆ‰ฉๅฑ•ไธบๅฎŒๆ•ด็Šถๆ€ๆ  | + +--- + +## ๅ››ใ€ๅพ…่ฏ„ๅฎก้กน + +ไธป็†ไบบ่ฏ„ๅฎกๆ—ถไผ˜ๅ…ˆๅ…ณๆณจ: + +- [ ] ไธ‰ๆ ๅธƒๅฑ€ๆฏ”ไพ‹ (240 / flex / 320 px) ๆ˜ฏๅฆๅˆ้€‚? +- [ ] ๅ‘ฝไปค้ขๆฟๆ˜ฏๅฆ่ฆ†็›–ไบ† CLI ๅ…จ้›†(10 ไธช subcommand)? +- [ ] ้ฆ–ๆฌกๅ‘ๅฏผ 4 ๆญฅๆ˜ฏๅฆ่ฟ‡้•ฟ?ๆ˜ฏๅฆ่ƒฝๅˆๅนถ 1-4 ๆญฅ? +- [ ] ่ทจๅนณๅฐ็บฆๆŸ(`cross-platform-constraints.md`)ๆ˜ฏๅฆ่ฟ‡ไธฅ? +- [ ] ๆ˜ฏๅฆ้œ€่ฆ่กฅ "AI ๆ€่€ƒไธญ" ็š„่ง†่ง‰ๅ้ฆˆ็บฟๆก†? +- [ ] ๆ˜ฏๅฆ้œ€่ฆ่กฅ "่ฎพ็ฝฎ โ†’ ้š็ง" ้กต(ๆ•ฐๆฎๆ”ถ้›†/ไธŠๆŠฅๅผ€ๅ…ณ)? diff --git a/docs/design/ui/cross-platform-constraints.md b/docs/design/ui/cross-platform-constraints.md new file mode 100644 index 0000000..806e99b --- /dev/null +++ b/docs/design/ui/cross-platform-constraints.md @@ -0,0 +1,124 @@ +# ไธ‰ๅนณๅฐไธ€่‡ดๆ€ง็บฆๆŸ + +> ๅ“ชไบ›ๅฟ…้กปไธ‰ๅนณๅฐๅฎŒๅ…จไธ€่‡ด / ๅ“ชไบ›ๅฏไปฅๅˆ†ๅนณๅฐๅฎšๅˆถ / ๅ“ชไบ›ๆฏๅนณๅฐ็‹ฌๆœ‰ใ€‚ + +## ไธ€ใ€ๅฟ…้กปไธ€่‡ด(่ฟๅ = ่ฎพ่ฎก bug) + +### 1.1 ไฟกๆฏๆžถๆž„ + +- ไธ‰ๆ ๅธƒๅฑ€(ไพง่พนๆ  / ่Šๅคฉ / Artifact ้ขๆฟ)็š„ไฝ็ฝฎๅ’Œ้กบๅบ +- ่ฎพ็ฝฎ้กต็š„ 4 ไธช tab ้กบๅบ: General โ†’ Provider โ†’ Shortcuts โ†’ Experimental +- ้ฆ–ๆฌกๅ‘ๅฏผ 4 ๆญฅ็š„้กบๅบ: Welcome โ†’ Env Check โ†’ Provider โ†’ Done + +### 1.2 ๅ…ณ้”ฎๆœฏ่ฏญ(ไธญๆ–‡ไผ˜ๅ…ˆ,่‹ฑๆ–‡ไธบ่พ…) + +| ๆฆ‚ๅฟต | ็”จ่ฏ | ไธ่ฆ็”จ | +|------|------|--------| +| AI ไธ€ๆฌกๅ›žๅค | "ๅ›žๅค" | response / answer | +| ็”จๆˆทไธ€ๆฌก่พ“ๅ…ฅ | "ๆถˆๆฏ" | prompt / query | +| ไธ€็ป„ๅฏน่ฏ | "ไผš่ฏ" | conversation / chat / dialog | +| AI ่พ“ๅ‡บ็š„ไปฃ็ /ๆ–‡ๆกฃ | "Artifact" | document / output / file | +| AI ๆœๅŠกๆ–น | "ไพ›ๅบ”ๅ•†" | provider / vendor | + +### 1.3 ๅฟซๆท้”ฎ(modifier ่ทจๅนณๅฐๆ˜ ๅฐ„) + +| ๅŠŸ่ƒฝ | macOS | Linux/Win | ๅค‡ๆณจ | +|------|-------|-----------|------| +| ๆ–ฐไผš่ฏ | `โŒ˜N` | `Ctrl+N` | | +| ๅ…จๅฑ€ๆœ็ดข | `โŒ˜K` | `Ctrl+K` | | +| ่ฎพ็ฝฎ | `โŒ˜,` | `Ctrl+,` | | +| ๆ–œๆ ๅ‘ฝไปค | `/` | `/` | ๅœจ่พ“ๅ…ฅๆก†้ฆ–ๅญ—็ฌฆ่งฆๅ‘ | +| ๅˆ‡ๆขไพ›ๅบ”ๅ•† | `โŒ˜โ‡งP` | `Ctrl+Shift+P` | | +| ๅ…ณ้—ญๅฝ“ๅ‰ไผš่ฏ | `โŒ˜W` | `Ctrl+W` | | +| ้€€ๅ‡บ | `โŒ˜Q` | `Ctrl+Q` | | + +> **macOS modifier (`โŒ˜ โ‡ง โŒฅ โŒƒ`)** โ†” **Linux/Windows (`Ctrl Shift Alt Meta`)** ไธ€ๅฏนไธ€ๆ˜ ๅฐ„ + +### 1.4 ้ขœ่‰ฒ่ฏญไน‰ + +| ่ฏญไน‰ | ้ขœ่‰ฒ | ไฝฟ็”จๅœบๆ™ฏ | +|------|------|---------| +| Primary | `#2962FF`(ๆทฑ่“) | ไธปๆŒ‰้’ฎใ€้“พๆŽฅใ€ๆฟ€ๆดป็Šถๆ€ | +| Success | `#00C853`(็ปฟ) | ็Žฏๅขƒๆฃ€ๆŸฅ้€š่ฟ‡ใ€ๆ“ไฝœๆˆๅŠŸ | +| Warning | `#FFB300`(็ฅ็€) | ๅฏ้™็บง่ฟ่กŒ็š„้—ฎ้ข˜ | +| Error | `#D50000`(็บข) | ๅฟ…้กปไฟฎๅค็š„้—ฎ้ข˜ใ€API ๅคฑ่ดฅ | +| Muted | `#6B7280`(็ฐ) | ๆฌก่ฆๆ–‡ๆœฌใ€ๅ ไฝ็ฌฆ | + +### 1.5 ๅญ—ไฝ“ + +- **ๆญฃๆ–‡**: ็ณป็ปŸ้ป˜่ฎค UI ๅญ—ไฝ“ (San Francisco / Segoe UI / Cantarell) +- **ไปฃ็  / Artifact**: `JetBrains Mono` 12px(ๆ‰“ๅŒ…ๅ†…็ฝฎ;็ณป็ปŸๆ— ๅˆ™้™็บง monospace) + +--- + +## ไบŒใ€ๅฏๅˆ†ๅนณๅฐๅฎšๅˆถ + +### 2.1 ็ช—ๅฃๆŽงไปถไฝ็ฝฎ + +| ๅนณๅฐ | ๅ…ณ้—ญ/ๆœ€ๅคง/ๆœ€ๅฐๅŒ– | ๅบ”็”จ่œๅ• | +|------|----------------|---------| +| macOS | ๅทฆไธŠ(็บข้ป„็ปฟ) | ็ณป็ปŸ่œๅ•ๆ (ๅฑๅน•้กถ) | +| Windows | ๅณไธŠ(โ”€ โ–ก โœ•) | ๅบ”็”จ็ช—ๅฃๅ†…้กถ้ƒจ | +| Linux GNOME | ๅณไธŠ | ๅบ”็”จ็ช—ๅฃๅ†…้กถ้ƒจ(ๆฑ‰ๅ ก่œๅ•) | +| Linux KDE | ๅฏ้…็ฝฎ | ๅŒ Windows | + +### 2.2 ้€š็Ÿฅๆ ทๅผ + +- macOS: ็”จ `UNUserNotificationCenter` ็ณป็ปŸ้€š็Ÿฅไธญๅฟƒ +- Windows: ็”จ toast notification (Windows 10+) +- Linux: ไผ˜ๅ…ˆ D-Bus `org.freedesktop.Notifications`,fallback ๅบ”็”จๅ†… banner + +### 2.3 ๆ–‡ไปถ้€‰ๆ‹ฉ / ไฟๅญ˜ๅฏน่ฏๆก† + +- ๅ„ๅนณๅฐ็”จ็ณป็ปŸๅŽŸ็”Ÿๅฏน่ฏๆก†,ไธ่‡ช็ป˜ + +### 2.4 ็ณป็ปŸๆ‰˜็›˜ / ่œๅ•ๆ ๅ›พๆ ‡ + +- macOS: ่œๅ•ๆ (้กถๆ )ๅณไพง +- Windows: ็ณป็ปŸๆ‰˜็›˜ +- Linux: ๅบ”็”จๆŒ‡็คบๅ™จ(Unity)/ ็ณป็ปŸๆ‰˜็›˜(ๅ…ถไป–) + +### 2.5 ้”ฎ็›˜่œๅ•ๅŠ ้€Ÿ้”ฎ(`Alt+F` ็ญ‰) + +- Windows/Linux ๅบ”็”จ่œๅ•ๆ˜พ็คบไธ‹ๅˆ’็บฟๅŠ ้€Ÿ้”ฎ +- macOS ไธๆ˜พ็คบ + +--- + +## ไธ‰ใ€ๆฏๅนณๅฐ็‹ฌๆœ‰(ๅ…ถไป–ๅนณๅฐไธๅฎž็Žฐ) + +### 3.1 macOS ็‹ฌๆœ‰ + +- **Touch Bar ๆ”ฏๆŒ**(2016-2021 MacBook Pro):ๆ”พๅธธ็”จๅ‘ฝไปคๅฟซๆท +- **Spotlight ้›†ๆˆ**:Cmd+Space ๆœ็ดขๅฏๅ‘ฝไธญๆœฌๅบ”็”จ็š„ไผš่ฏ(ๅฏ้€‰,Phase 3+) + +### 3.2 Windows ็‹ฌๆœ‰ + +- **ไปปๅŠกๆ ่ทณ่ฝฌๅˆ—่กจ**:ๅณ้”ฎๅบ”็”จๅ›พๆ ‡ๆ˜พ็คบ"ๆœ€่ฟ‘ไผš่ฏ" +- **WSL ๆกฅๆŽฅ**:ๆฃ€ๆต‹ๅˆฐ WSL ๆ—ถไผ˜ๅ…ˆๅœจ WSL ้‡Œ่ท‘ Claude Code + +### 3.3 Linux ็‹ฌๆœ‰ + +- **D-Bus ๆœๅŠก**:ๆšด้œฒ RPC ๆŽฅๅฃไพ›ๅ…ถไป–ๅทฅๅ…ท่ฐƒ็”จ(ๅฆ‚ i3wm ๅฟซๆท้”ฎ็›ดๆŽฅ่ท‘ๅ‘ฝไปค) + +--- + +## ๅ››ใ€ๅฟ…้กป้ฟๅ…็š„ๅๆจกๅผ + +| โŒ ๅๆจกๅผ | ไธบไป€ไนˆ้ฟๅ… | +|---------|----------| +| ๅœจ macOS ็”จ Windows ้ฃŽๆ ผๅ…ณ้—ญๆŒ‰้’ฎ(ๅณไธŠ โœ•) | ่ง†่ง‰่ฟๅ’Œ,ๅ macOS HIG | +| ไธ‰ไธชๅนณๅฐ็”จไธๅŒ็š„ emoji(โœ… vs โœ” vs ๐Ÿ†—) | ่ทจๅนณๅฐๆˆชๅ›พๅฏนๆฏ”ๆ—ถๆททไนฑ | +| ๅœจ Linux ็”จ Windows ้€š็Ÿฅ toast ๆ ทๅผ | ไธ่žๅ…ฅๆกŒ้ข็Žฏๅขƒ | +| ๅคๅˆถ macOS ็š„ๅ…จๅฑ€่œๅ•ๅˆฐ Linux/Windows ๅบ”็”จ็ช—ๅฃๅค– | ๅนณๅฐไน ๆƒฏไธๅŒ,็”จๆˆทๆ‰พไธๅˆฐ | +| ไธๅŒๅนณๅฐๅฟซๆท้”ฎไธไธ€่‡ด(ๅฆ‚ macOS Cmd+T,Win Ctrl+N) | ่ทจๅนณๅฐ็”จๆˆทๅ›ฐๆƒ‘ | + +--- + +## ไบ”ใ€ๆœฌ็บฆๆŸ็š„ๆผ”่ฟ› + +ไปปไฝ•ๅฏนๆœฌๆ–‡ไปถ็š„ๆ”นๅŠจ้œ€่ฆ ADR(`docs/adr/`): + +- ๅŠ ๆ–ฐ็บฆๆŸ โ†’ ๆ ‡ `Status: Proposed`,2 ๅ‘จ่ฏ„ๅฎก็ช—ๅฃ +- ๆ”น็บฆๆŸ โ†’ ๅฟ…้กปๆ ‡ๆ˜Žๅฝฑๅ“ๅ“ชไบ› wireframe / ๆต็จ‹ +- ๅˆ ็บฆๆŸ โ†’ ๅœจๆœฌๆ–‡ๆœซๅฐพ่ฟฝๅŠ  "ๅทฒๅบŸๆญข" ๆฎต,ไฟ็•™ๅކๅฒ diff --git a/docs/design/ui/interaction-flows/01-flow-new-conversation.md b/docs/design/ui/interaction-flows/01-flow-new-conversation.md new file mode 100644 index 0000000..2be9060 --- /dev/null +++ b/docs/design/ui/interaction-flows/01-flow-new-conversation.md @@ -0,0 +1,65 @@ +# Flow 01 ยท ๆ–ฐๅปบไผš่ฏ + +> ไปŽ่งฆๅ‘ๆ–ฐๅปบๅˆฐ AI ๅ‡บ็Žฐ้ฆ–ๆกๅ›žๅค็š„ๅฎŒๆ•ดๆต็จ‹ใ€‚ + +## ไธปๆต็จ‹ + +```mermaid +flowchart TD + A[็”จๆˆท่งฆๅ‘ๆ–ฐๅปบ] -->|โŒ˜N / ็‚นๅ‡ป + ๆ–ฐไผš่ฏ / ๅ‘ฝไปค้ขๆฟ/init| B{ๆ˜ฏๅฆๅทฒ้…็ฝฎไพ›ๅบ”ๅ•†?} + B -- ๅฆ --> B1[ๅผนไพ›ๅบ”ๅ•†้…็ฝฎๅผ•ๅฏผ] --> B2[ๅฎŒๆˆ้…็ฝฎ] --> C + B -- ๆ˜ฏ --> C[ไพง่พนๆ ๆ–ฐๅขž 'ๆœชๅ‘ฝๅไผš่ฏ',ไธญๆ ๅˆ‡ๅˆฐ็ฉบ็Šถๆ€-9.3] + C --> D[่พ“ๅ…ฅๆก† focus,ๆ˜พ็คบ 4 ไธช prompt ๅก็‰‡] + D --> E{็”จๆˆทๆ“ไฝœ} + E -- ็‚น prompt ๅก็‰‡ --> F[ๅก็‰‡ๅ†…ๅฎนๅกซๅ…ฅ่พ“ๅ…ฅๆก†,่‡ชๅŠจๅ‘้€] + E -- ็›ดๆŽฅ่พ“ๅ…ฅ + โŒ˜โ†ต --> F + E -- ่พ“ๅ…ฅ / ่งฆๅ‘ๅ‘ฝไปค --> G[ๆ–œๆ ๅ‘ฝไปค้ขๆฟ,่ง Flow 03] + F --> H[ๆถˆๆฏ่ฟ›ๅ…ฅ่Šๅคฉๆต, 'ๆ€่€ƒไธญ...' ๆ˜พ็คบ] + H --> I[AI ๆตๅผ่พ“ๅ‡บ,้€ๅญ—ๆ˜พ็คบ] + I --> J{้ฆ–ๆฌกๅฎŒๆ•ดๅ›žๅค?} + J -- ๆ˜ฏ --> K[ๆ นๆฎๆถˆๆฏ็”Ÿๆˆไผš่ฏๅ,ไพง่พนๆ ๆ›ดๆ–ฐ] + J -- ๅฆ --> L[ไฟๆŒ 'ๆœชๅ‘ฝๅไผš่ฏ'] + K --> M[Artifact ๆฃ€ๆต‹,่ง Flow 04] + L --> M +``` + +## ๅผ‚ๅธธๅˆ†ๆ”ฏ + +```mermaid +flowchart TD + F[ๅ‘้€ๆถˆๆฏ] --> X1{ๅ‘้€็ป“ๆžœ} + X1 -- ็ฝ‘็ปœ่ถ…ๆ—ถ --> Y1[ๆ˜พ็คบ้‡่ฏ•ๆŒ‰้’ฎ + ็Šถๆ€ๆ ๆ ‡็บข] + Y1 --> Y2{็”จๆˆท็‚น้‡่ฏ•?} + Y2 -- ๆ˜ฏ --> F + Y2 -- ๅฆ --> Y3[ๆถˆๆฏๆš‚ๅญ˜ๆœฌๅœฐ,ๆ–ญ็ฝ‘ๆขๅคๅŽ่‡ชๅŠจ้‡ๅ‘] + + X1 -- API 401/403 --> Z1[ๅผนๆจกๆ€: 'API Key ๅคฑๆ•ˆ,่ฏท้‡ๆ–ฐ้…็ฝฎ'] + Z1 --> Z2[่ทณๅˆฐ่ฎพ็ฝฎ Provider tab] + + X1 -- API 429 ้™ๆต --> W1[ๆถˆๆฏๆŽ’้˜Ÿ,ๆ˜พ็คบ 'ๆŽ’้˜Ÿไธญ... ็ฌฌ N ไฝ'] + W1 --> W2[ๆŒ‰ Retry-After ๅคด่‡ชๅŠจ้‡่ฏ•] + + X1 -- ไธŠไธ‹ๆ–‡่ถ…้•ฟ --> V1[ๅผนๆจกๆ€: 'ไธŠไธ‹ๆ–‡ๅทฒๆปก,ๅฏๆˆชๆ–ญๆ—ฉๆœŸๆถˆๆฏๆˆ–ๆ–ฐๅปบไผš่ฏ'] + V1 --> V2{้€‰้กน} + V2 -- ๆˆชๆ–ญ --> V3[ไฟ็•™ๆœ€่ฟ‘ 80% tokens,็ปง็ปญๅ‘้€] + V2 -- ๆ–ฐๅปบไผš่ฏ --> V4[ๆ–ฐไผš่ฏๅธฆๆœฌๆฌกๆถˆๆฏ] +``` + +## ๅ…ณ้”ฎๆ—ถๅบ + +| ๆญฅ้ชค | ๆœŸๆœ›ๅปถ่ฟŸ | +|------|---------| +| ่งฆๅ‘ๆ–ฐๅปบ โ†’ ไธญๆ ๅˆ‡ๅˆฐ็ฉบ็Šถๆ€ | < 50ms | +| ๅ‘้€ๆถˆๆฏ โ†’ "ๆ€่€ƒไธญ..." ๅ‡บ็Žฐ | < 100ms | +| "ๆ€่€ƒไธญ..." โ†’ ้ฆ–ๅญ—็ฌฆๆ˜พ็คบ | 500ms - 3s(ไพ›ๅบ”ๅ•†ๅ†ณๅฎš) | +| ้ฆ–ๆฌกๅ›žๅคๅฎŒๆˆ โ†’ ่‡ชๅŠจๅ‘ฝๅๅ‡บ็Žฐ | < 500ms ๅŽๅฐๅผ‚ๆญฅ | + +## ่‡ชๅŠจๅ‘ฝๅ่ง„ๅˆ™ + +่ฐƒ็”จ AI ไธ€ๆฌก้ขๅค–็š„่ฝป้‡่ฏทๆฑ‚: +``` +prompt: "็”จ 5-15 ๅญ—ๆฆ‚ๆ‹ฌไปฅไธ‹ๅฏน่ฏไธป้ข˜,ๅชๅ›ž็ญ”ไธป้ข˜:\n็”จๆˆท: <็ฌฌไธ€ๆกๆถˆๆฏ>\nAI: <็ฌฌไธ€ๆกๅ›žๅค>" +model: ็”จ haiku ๆˆ–ๅฝ“ๅ‰ไพ›ๅบ”ๅ•†ๆœ€ไพฟๅฎœ็š„ๆจกๅž‹(้™ๆœฌ) +``` + +ๅคฑ่ดฅ fallback: ๅ–็”จๆˆท้ฆ–ๆกๆถˆๆฏๅ‰ 20 ๅญ— + "..." diff --git a/docs/design/ui/interaction-flows/02-flow-env-check-fail.md b/docs/design/ui/interaction-flows/02-flow-env-check-fail.md new file mode 100644 index 0000000..abe3ab2 --- /dev/null +++ b/docs/design/ui/interaction-flows/02-flow-env-check-fail.md @@ -0,0 +1,102 @@ +# Flow 02 ยท ็Žฏๅขƒๆฃ€ๆŸฅๅคฑ่ดฅ็š„ๅ…œๅบ•ๅผ•ๅฏผ + +> ไปปไฝ•ๆ—ถๆœบๆฃ€ๆต‹ๅˆฐ็Žฏๅขƒ้—ฎ้ข˜(ๅฏๅŠจ / hover ็Šถๆ€ๆ  / ่ท‘ๅ‘ฝไปคๅ‰)็š„็ปŸไธ€ๅค„็†ใ€‚ + +## ไธปๆต็จ‹ + +```mermaid +flowchart TD + A[่งฆๅ‘็Žฏๅขƒๆฃ€ๆŸฅ] --> B[ๅนถ่กŒๆฃ€ๆŸฅๆ‰€ๆœ‰ไพ่ต–] + B --> C{็ป“ๆžœๅˆ†็ฑป} + + C -- ๅ…จ็ปฟ --> C1[็Šถๆ€ๆ ๆ˜พ็คบ โœ…] + C -- ๆœ‰ โš ๏ธ ไฝ†ๆ—  โŒ --> D[็Šถๆ€ๆ ้ป„่‰ฒ,ๅ…่ฎธ็ปง็ปญ] + C -- ๆœ‰ โŒ --> E[็Šถๆ€ๆ ็บข่‰ฒ,ๅ…ณ้”ฎๆ“ไฝœ็ฆ็”จ] + + D --> D1{็”จๆˆทๆ“ไฝœ} + D1 -- ๅฟฝ็•ฅ --> D2[็ปง็ปญๅทฅไฝœ,็Šถๆ€ๆ ๆŒ็ปญ้ป„] + D1 -- ็‚น [โ–ถ ไฟฎๅค] --> F[่ฟ›ๅ…ฅไฟฎๅคๆต็จ‹] + + E --> E1[็ฆ็”จ'ๅ‘้€ๆถˆๆฏ'ๆŒ‰้’ฎ] + E --> E2[ๅผนไธ€ๆฌกๆ€ง banner: '็ŽฏๅขƒๆŸๅ,ๅŠŸ่ƒฝๅ—้™'] + E1 --> F + + F[ไฟฎๅคๆต็จ‹] --> F1{ไพ่ต–็ฑปๅž‹} + F1 -- npm ๅŒ… (Claude Code ็ญ‰) --> F2[ๅ†…็ฝฎไธ€้”ฎๅฎ‰่ฃ…] + F1 -- ็ณป็ปŸๅ‘ฝไปค (xcode-select ็ญ‰) --> F3[ๆ˜พ็คบๅ‘ฝไปค + ๅคๅˆถๆŒ‰้’ฎ] + F1 -- ็ณป็ปŸๅŒ… (apt/brew/winget ็ญ‰) --> F4[ๆ˜พ็คบๅฏนๅบ”ๅŒ…็ฎก็†ๅ™จๅ‘ฝไปค] + + F2 --> G[ๆ‰“ๅผ€ๅ†…็ฝฎ็ปˆ็ซฏ้ขๆฟ,ๅฎžๆ—ถๆ˜พ็คบ่พ“ๅ‡บ] + G --> G1{ๅฎ‰่ฃ…็ป“ๆžœ} + G1 -- ๆˆๅŠŸ --> H[่‡ชๅŠจ้‡ๆต‹,ๆ˜พ็คบ โœ…] + G1 -- ๅคฑ่ดฅ --> G2[ๆ˜พ็คบ้”™่ฏฏๆ—ฅๅฟ— + 'ๅคๅˆถ้”™่ฏฏ' + '้‡่ฏ•' + 'ๆŸฅๆ–‡ๆกฃ'] + G2 --> F1 + + F3 --> I[็ญ‰ๅพ…็”จๆˆทๅŽปๅค–้ƒจ็ปˆ็ซฏ่ท‘] + F3 --> I1[ๆ˜พ็คบ 'ๅทฒ่ฟ่กŒ?' ๆŒ‰้’ฎ] + I1 -- ็‚นๅ‡ป --> J[้‡ๆต‹] + + F4 --> I + H --> K[ๅ…ณไฟฎๅคๅฏน่ฏๆก†,็Šถๆ€ๆ ๆ›ดๆ–ฐ] + J --> K +``` + +## ไฟฎๅคๅฏน่ฏๆก†็บฟๆก†ๅ›พ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๐Ÿ”ง ไฟฎๅค็Žฏๅขƒ้—ฎ้ข˜ โœ• โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ +โ”‚ ๅ‘็Žฐ 2 ไธช้—ฎ้ข˜,ๆญฃๅœจๅๅŠฉไฟฎๅค: โ”‚ +โ”‚ โ”‚ +โ”‚ โŒ Claude Code ๆœชๅฎ‰่ฃ… โ”‚ +โ”‚ ้œ€่ฆ: @anthropic-ai/claude-code ๅ…จๅฑ€ๅฎ‰่ฃ… โ”‚ +โ”‚ [โ–ถ ไธ€้”ฎๅฎ‰่ฃ…] โ”‚ +โ”‚ โ”‚ +โ”‚ โŒ Xcode CLT ๆœชๅฎ‰่ฃ… (macOS) โ”‚ +โ”‚ ้œ€่ฆ: ็ณป็ปŸๅ‘ฝไปคๅทฅๅ…ท โ”‚ +โ”‚ [๐Ÿ“‹ ๅคๅˆถๅ‘ฝไปค: xcode-select --install] โ”‚ +โ”‚ โš ๏ธ ๆญค้กน้œ€ๅœจๅค–้ƒจ็ปˆ็ซฏๆ‰ง่กŒ,ๅฎŒๆˆๅŽ็‚น [โœ“ ๅทฒ่ฟ่กŒ,้‡ๆต‹] โ”‚ +โ”‚ โ”‚ +โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ ๅ†…็ฝฎ็ปˆ็ซฏ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ $ npm install -g @anthropic-ai/claude-code โ”‚ โ”‚ +โ”‚ โ”‚ npm WARN deprecated ... โ”‚ โ”‚ +โ”‚ โ”‚ added 234 packages in 12s โ”‚ โ”‚ +โ”‚ โ”‚ โœ… ๅฎ‰่ฃ…ๅฎŒๆˆ,็‰ˆๆœฌ v1.2.3 โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ +โ”‚ ๐Ÿ“‹ ๅคๅˆถๆ—ฅๅฟ— ้‡ๆ–ฐๆฃ€ๆŸฅ ๅ…ณ้—ญ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ไธๆ‰“ๆ‰ฐๅŽŸๅˆ™ + +- **ๅฏๅŠจๆ—ถ**: ไธไธปๅŠจๅผนๆจกๆ€,ๅชๅœจ็Šถๆ€ๆ ๆ ‡่‰ฒ,็”จๆˆทไธปๅŠจ็‚นๆ‰ไฟฎๅค +- **่ท‘ๅ‘ฝไปคๅ‰**: ๅฆ‚ๆžœๅ‘ฝไปคไพ่ต–ๆŸไธช็ผบๅคฑ้กน,ๅผนๆจกๆ€;ๅฆๅˆ™ๆ”พ่กŒ +- **ๅธธ้ฉปๆ็คบ**: ๆฏๅคฉๆœ€ๅคš 1 ๆฌก้กถ้ƒจ banner,็‚น โœ• ๅ…ณ้—ญๅŽๅฝ“ๅคฉไธๅ†ๆ +- **ไฟฎๅคๆˆๅŠŸ**: ไธๆ‰“ๆ‰ฐ,ๅชๆ›ดๆ–ฐ็Šถๆ€ๆ ,2 ็ง’ๆทกๅ…ฅๆทกๅ‡บ โœ… ๆ็คบ + +## ไฟฎๅค่„šๆœฌๆฅๆบ + +ๆฏ็งไพ่ต–็š„ไฟฎๅคๅ‘ฝไปคๅฎšไน‰ๅœจ `tools/cross-platform/scripts/fixes/.json`: + +```json +{ + "name": "Claude Code", + "check": "claude --version", + "minVersion": "1.0.0", + "install": { + "darwin": ["npm", "install", "-g", "@anthropic-ai/claude-code"], + "linux": ["npm", "install", "-g", "@anthropic-ai/claude-code"], + "win32": ["npm.cmd", "install", "-g", "@anthropic-ai/claude-code"] + }, + "manualHint": { + "darwin": "xcode-select --install" + } +} +``` + +ๅบ”็”จๅฏๅŠจๅŠ ่ฝฝ่ฟ™ไธช็›ฎๅฝ•,่‡ชๅŠจๆž„ๅปบๆฃ€ๆŸฅๆธ…ๅ• + ไฟฎๅค็ญ–็•ฅใ€‚ diff --git a/docs/design/ui/interaction-flows/03-flow-slash-command.md b/docs/design/ui/interaction-flows/03-flow-slash-command.md new file mode 100644 index 0000000..9dace96 --- /dev/null +++ b/docs/design/ui/interaction-flows/03-flow-slash-command.md @@ -0,0 +1,101 @@ +# Flow 03 ยท ๆ–œๆ ๅ‘ฝไปค่ฐƒ็”จ + ่‡ชๅŠจ่กฅๅ…จ + ๆ‰ง่กŒ + +> ่พ“ๅ…ฅๆก†้ฆ–ๅญ—็ฌฆ `/` ่งฆๅ‘ๅ‘ฝไปค้ขๆฟ,้€‰ๅ‘ฝไปค,่กฅๅ‚ๆ•ฐ,ๆ‰ง่กŒใ€‚ + +## ไธปๆต็จ‹ + +```mermaid +flowchart TD + A[่พ“ๅ…ฅๆก†่Žท็„ฆ] --> B{้ฆ–ๅญ—็ฌฆ่พ“ๅ…ฅ '/'} + B -- ๆ˜ฏ --> C[ๅผนๅ‘ฝไปค้ขๆฟ,้ป˜่ฎคๆ˜พ็คบๆœ€่ฟ‘ + ๅ…จ้ƒจ] + B -- ๅฆ,ไธญ้—ด่พ“ๅ…ฅ / --> C0[ไธ่งฆๅ‘,ๆ™ฎ้€šๅญ—็ฌฆ] + + C --> D{็”จๆˆทๆ“ไฝœ} + D -- ็ปง็ปญ่พ“ๅ…ฅๅญ—็ฌฆ --> E[ๆจก็ณŠๆœ็ดข่ฟ‡ๆปค,ๆ›ดๆ–ฐๅˆ—่กจ] + D -- โ†‘โ†“ --> F[ๅœจๅˆ—่กจไธญๅฏผ่ˆช] + D -- esc --> G[ๅ…ณ้ขๆฟ,ไฟ็•™ '/xxx' ๅœจ่พ“ๅ…ฅๆก†] + D -- โ†ต ้€‰ไธญ้กน --> H{้€‰ไธญๅ‘ฝไปคๆ˜ฏๅฆๆœ‰ๅฟ…ๅกซๅ‚ๆ•ฐ?} + + E --> D + F --> D + + H -- ๆ— ๅฟ…ๅกซ --> M[็›ดๆŽฅๆ‰ง่กŒ] + H -- ๆœ‰ๅฟ…ๅกซ --> I[ๅˆ‡ๅˆฐๅ‚ๆ•ฐ่กฅ้ฝ็•Œ้ข] + + I --> I1[ๆ˜พ็คบๅ‚ๆ•ฐ่กจๅ•
ๅฟ…ๅกซ/ๅฏ้€‰ๅˆ†็ป„] + I1 --> I2{็”จๆˆทๆ“ไฝœ} + I2 -- ๅกซๅ†™ๅ‚ๆ•ฐ --> I3[ๅฎžๆ—ถ้ข„่งˆ็”Ÿๆˆ็š„ๅ‘ฝไปค่กŒ] + I2 -- โŒ˜โ†ต --> J[ๆ ก้ชŒๅ‚ๆ•ฐๅฎŒๆ•ดๆ€ง] + I2 -- esc --> I4[ๅ›žๅˆฐๅ‘ฝไปคๅˆ—่กจ] + + J -- ๅฟ…ๅกซ็ผบ --> J1[็บข่‰ฒ้ซ˜ไบฎ็ผบๅคฑ้กน] + J -- ้€š่ฟ‡ --> M[ๆ‰ง่กŒ] + + M --> N[่พ“ๅ…ฅๆก†ๅ…ณ้—ญ้ขๆฟ,ๅ…‰ๆ ‡ๅคฑ็„ฆ] + N --> N1[ๅœจ่Šๅคฉๆตๆ’ๅ…ฅ 'โš™ 12:42 ยท /xxx ...' ็ณป็ปŸๆถˆๆฏ] + N1 --> O[ๅŽๅฐ่ท‘ๅ‘ฝไปค,ๆ˜พ็คบ spinner] + O --> P{ๆ‰ง่กŒ็ป“ๆžœ} + P -- ๆˆๅŠŸ --> P1[ๆ›ฟๆข spinner ไธบ่พ“ๅ‡บ + ๆ“ไฝœๆŒ‰้’ฎ] + P -- ๅคฑ่ดฅ --> P2[ๆ˜พ็คบ้”™่ฏฏ + ้‡่ฏ• / ๅคๅˆถ้”™่ฏฏ / ๆŸฅๆ–‡ๆกฃ] +``` + +## ๅ‚ๆ•ฐ่กฅ้ฝ่กจๅ•่ฎพ่ฎก + +ๅ‚ๆ•ฐ็ฑปๅž‹ โ†’ UI ๆŽงไปถ: + +| ็ฑปๅž‹ | UI | +|------|-----| +| `string` | ๅ•่กŒ่พ“ๅ…ฅๆก† | +| `text` | ๅคš่กŒ textarea | +| `enum` (limited choices) | radio group | +| `boolean` | checkbox | +| `file` | ่พ“ๅ…ฅๆก† + ๆต่งˆๆŒ‰้’ฎ(็ณป็ปŸๆ–‡ไปถๅฏน่ฏๆก†) | +| `dir` | ๅŒ file,ไฝ†ๅช้€‰็›ฎๅฝ• | +| `number` | ๆ•ฐๅญ—่พ“ๅ…ฅ,ๅธฆ min/max ๆ ก้ชŒ | + +## ๅ‘ฝไปคๅ…ƒๆ•ฐๆฎๆฅๆบ + +```js +// tools/cli/commands/init.js +/** + * @command init + * @description ๆŒ‰ๆŽฅๅ…ฅๆจกๅผ่ตท้กน็›ฎ + * @category project + * @param {enum:A,B,C,D} mode ๆŽฅๅ…ฅๆจกๅผ (ๅฟ…ๅกซ) + * @param {string} name ้กน็›ฎๅ (ๅฟ…ๅกซ) + * @param {dir} dir ็›ฎๆ ‡็›ฎๅฝ• (ๅฏ้€‰,้ป˜่ฎคๅฝ“ๅ‰) + */ +``` + +ๅบ”็”จๅฏๅŠจๆ—ถๆ‰ซๆ `tools/cli/commands/*.js`,่งฃๆž JSDoc ๅคดๅปบๅ‘ฝไปคๆณจๅ†Œ่กจใ€‚ +ๆ–ฐๅขž CLI ๅญๅ‘ฝไปค โ†’ GUI ่‡ชๅŠจๆ”ฏๆŒ,ๆ— ้œ€ๆ”น GUI ไปฃ็ ใ€‚ + +## ่พ“ๅ‡บๆธฒๆŸ“ + +ๅ‘ฝไปค่พ“ๅ‡บๅœจ่Šๅคฉๆตไธญไปฅ็‰นๆฎŠๆ ทๅผๅ‘ˆ็Žฐ: + +``` +โš™ 12:42 ยท /init --mode=B --name=payment-service + โœ… ๅทฒๅˆๅง‹ๅŒ– B ๆจกๅผ้กน็›ฎ: ./payment-service + ๅคๅˆถ 4 ไธชๆ–‡ไปถ + ไธ‹ไธ€ๆญฅ: cd payment-service && cat README.md + + [๐Ÿ“‚ ๅœจ Finder ไธญๆ‰“ๅผ€] [๐Ÿ“‹ ๅคๅˆถ่ทฏๅพ„] [๐Ÿ“ค ๅ‘้€ๅˆฐ AI ่ฏ„ๅฎก] +``` + +ๆŒ‰้’ฎ: +- **ๅœจ Finder/่ต„ๆบ็ฎก็†ๅ™จไธญๆ‰“ๅผ€**: ๅนณๅฐๅŽŸ็”Ÿ +- **ๅคๅˆถ่ทฏๅพ„**: ๅ‰ช่ดดๆฟ +- **ๅ‘้€ๅˆฐ AI ่ฏ„ๅฎก**: ๆŠŠๅ‘ฝไปค่พ“ๅ‡บไฝœไธบๆถˆๆฏๅ‘็ป™ AI,ๅธธ็”จไบŽ "็œ‹ metrics ๅŽ่ฎฉ AI ่งฃ่ฏป" + +## ๆ€ง่ƒฝไธŽ้™ๅˆถ + +- ๅ‘ฝไปค้ขๆฟๆ‰“ๅผ€ๅปถ่ฟŸ < 50ms (ๆœฌๅœฐ็ดขๅผ•) +- ๆจก็ณŠๆœ็ดข < 20ms +- ๅ‘ฝไปคๆ‰ง่กŒๆœ‰ 30s ่ถ…ๆ—ถ,่ถ…ๆ—ถๆ˜พ็คบ "่ฟ›็จ‹ๆœช็ป“ๆŸ,็ปง็ปญ็ญ‰ๅพ… / ๅ–ๆถˆ" +- ๅŒไธ€ไผš่ฏๅ†…ๅฏๅนถๅ‘่ท‘ๅคšไธชๅ‘ฝไปค(ๅ„่‡ช็‹ฌ็ซ‹ spinner) + +## ๅކๅฒ / ๆ”ถ่— + +- ๆœ€่ฟ‘็”จ 5 ๆกๆŒไน…ๅŒ–(ๆœฌๅœฐ) +- ็”จๆˆทๅฏๅณ้”ฎๅ‘ฝไปค โ†’ "ๆ”ถ่—"(ๆ”ถ่—็š„ๅ‘ฝไปคๆฐธ่ฟœๅœจๅˆ—่กจๅ‰้ƒจ) diff --git a/docs/design/ui/interaction-flows/04-flow-artifact-detect.md b/docs/design/ui/interaction-flows/04-flow-artifact-detect.md new file mode 100644 index 0000000..d99df32 --- /dev/null +++ b/docs/design/ui/interaction-flows/04-flow-artifact-detect.md @@ -0,0 +1,112 @@ +# Flow 04 ยท AI ่พ“ๅ‡บ โ†’ ่‡ชๅŠจ่ฏ†ๅˆซไธบ Artifact + +> AI ๆตๅผ่พ“ๅ‡บไปฃ็ ๅ—/Markdown/JSON ็ญ‰็ป“ๆž„ๅŒ–ๅ†…ๅฎนๆ—ถ,่‡ชๅŠจๆŠฝๅ–ไธบ Artifact,ๅŠ ่ฟ›ๅณๆ ใ€‚ + +## ไธปๆต็จ‹ + +```mermaid +flowchart TD + A[AI ๅผ€ๅง‹ๆตๅผ่พ“ๅ‡บ] --> B[้€ chunk ๅ–‚็ป™ ArtifactDetector] + B --> C{ๆฃ€ๆต‹ๅ™จๅฎžๆ—ถๅˆคๆ–ญ} + C -- ๆ™ฎ้€šๆ–‡ๆœฌ --> C1[ๆญฃๅธธๆธฒๆŸ“ๅˆฐ่Šๅคฉๆต] + C -- ๆฃ€ๆต‹ๅˆฐไปฃ็ ๅ— ``` --> D[ๅˆคๆ–ญ่ฏญ่จ€ + ๅ†…ๅฎน้•ฟๅบฆ] + C -- ๆฃ€ๆต‹ๅˆฐ Markdown ้•ฟๆ–‡ๆœฌ --> E[ๅˆคๆ–ญๆ˜ฏๅฆ็‹ฌ็ซ‹ๆ–‡ๆกฃ] + C -- ๆฃ€ๆต‹ๅˆฐ JSON / YAML --> F[ๅˆคๆ–ญๆ˜ฏๅฆๅฎŒๆ•ด็ป“ๆž„] + + D --> D1{ๆ˜ฏๅฆๅ€ผๅพ— artifact ๅŒ–?} + D1 -- ๅฆ (็Ÿญไปฃ็  < 5 ่กŒ) --> C1 + D1 -- ๆ˜ฏ --> G[ๅœจ่Šๅคฉๆตๆ’ๅ…ฅ Artifact ๅ ไฝๅก] + + E --> E1{ๆ˜ฏๅฆ็‹ฌ็ซ‹ๆ–‡ๆกฃ?} + E1 -- ๆ˜ฏ (ๆœ‰ๆ ‡้ข˜ + ็ซ ่Š‚) --> G + E1 -- ๅฆ --> C1 + + F --> F1{็ป“ๆž„ๅฎŒๆ•ด?} + F1 -- ๆ˜ฏ --> G + F1 -- ๅฆ --> C1 + + G --> H[Artifact ่ฟ›ๅ…ฅๅณๆ ๅˆ—่กจ,้กถ้ƒจ้ซ˜ไบฎ] + H --> I[ๆตๅผ็ปง็ปญ,Artifact ๅ†…ๅฎนๅขž้‡ๆ›ดๆ–ฐ] + I --> J[ๆต็ป“ๆŸ] + J --> K[Artifact ่‡ชๅŠจๅ‘ฝๅ] + K --> L[้ฆ–ๆฌกๆœ‰ artifact ๆ—ถ,ๅณๆ ่‡ชๅŠจๅฑ•ๅผ€] +``` + +## ๆŠฝๅ–่ง„ๅˆ™ + +### 4.1 ไปฃ็ ๅ— + +- ่งฆๅ‘: ` ``` ` fenced code block +- ้•ฟๅบฆ้—จๆง›: โ‰ฅ 5 ่กŒ OR โ‰ฅ 200 ๅญ—็ฌฆ +- ๆ–‡ไปถๅๆๅ–: ไผ˜ๅ…ˆไปŽ ```language:filename ๆๅ–,ๅฆๅˆ™็”จ `-<ๆ—ถ้—ดๆˆณ>.` +- ไพ‹ๅค–: ๅ•่กŒๅ‘ฝไปค(ๅฆ‚ `` `npm install` ``)ไธๆŠฝๅ– + +### 4.2 Markdown ๆ–‡ๆกฃ + +- ่งฆๅ‘: ๆฃ€ๆต‹ๅˆฐ้ฆ–่กŒ `# `(ไธ€็บงๆ ‡้ข˜) + ่‡ณๅฐ‘ 1 ไธช `## `(ไบŒ็บงๆ ‡้ข˜) +- ้•ฟๅบฆ้—จๆง›: โ‰ฅ 50 ่กŒ OR โ‰ฅ 1000 ๅญ—็ฌฆ +- ๆ–‡ไปถๅ: ไปŽ H1 ๆ ‡้ข˜่ฝฌๆข(slug)+ `.md` + +### 4.3 ็ป“ๆž„ๅŒ–ๆ•ฐๆฎ + +- JSON: ๅฎŒๆ•ดๅฏน่ฑก `{...}`,้•ฟๅบฆ โ‰ฅ 100 ๅญ—็ฌฆ +- YAML: `---` ่ตทๅง‹ๆˆ–ๆ˜พ่‘—็ผฉ่ฟ›็ป“ๆž„ +- CSV: ๆ˜พ่‘—่กจๆ ผ็ป“ๆž„ + +## ่ง†่ง‰ๅ้ฆˆ + +``` +่Šๅคฉๆตไธญ: ๅณๆ  Artifacts: + +๐Ÿค– 11:33 โ–พ user-stories.md โ† ๆ–ฐๅŠ ,1.5s + ๆˆ‘ๅธฎไฝ ๆ‹†ๆˆ 8 ๆก user story: ๐Ÿ“‹ 8 ๆก ยท 4KB + ็”ŸๆˆไบŽ 11:35 + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ ๐Ÿ“„ user-stories.md โ”‚ + โ”‚ 8 ๆก user story ยท ๅทฒๆทปๅŠ ๅˆฐๅณๆ  โ”‚ + โ”‚ [๐Ÿ‘ ๆŸฅ็œ‹] [๐Ÿ“‹ ๅคๅˆถ] [๐Ÿ’พ ไฟๅญ˜ๅˆฐๆ–‡ไปถ] โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + + ็”ŸๆˆๅฎŒๆˆใ€‚่ฏฆ่งๅณไพงใ€‚ +``` + +## ๅ ไฝๅก็š„็Šถๆ€ + +```mermaid +stateDiagram-v2 + [*] --> Streaming: AI ๅผ€ๅง‹ๆตๅผ่พ“ๅ‡บไปฃ็ /Markdown + Streaming --> Streaming: ๅ†…ๅฎนๅขž้‡ๆ›ดๆ–ฐ + Streaming --> Complete: ๆต็ป“ๆŸ + Streaming --> Cancelled: ็”จๆˆทๅ–ๆถˆ็”Ÿๆˆ + Complete --> Renamed: ่‡ชๅŠจๅ‘ฝๅ + Renamed --> [*] + Cancelled --> [*]: ๅ ไฝๅกๅˆ ้™ค,ๆตๅผๅ†…ๅฎนไปๅœจ่Šๅคฉๆต +``` + +## ็”จๆˆท้€‰้กน + +่ฎพ็ฝฎ โ†’ General ๆไพ›: +- `[โœ“] ่‡ชๅŠจ Artifact ๅŒ– AI ่พ“ๅ‡บ`(้ป˜่ฎคๅผ€) +- ้•ฟๅบฆ้˜ˆๅ€ผๅฏ่ฐƒ + +ๅฆ‚ๆžœๅ…ณๆމ,ๆ‰€ๆœ‰ไปฃ็ /ๆ–‡ๆกฃ้ƒฝ็›ดๆŽฅๆธฒๆŸ“ๅœจ่Šๅคฉๆต,ๅณๆ ๆฐธ่ฟœ็ฉบใ€‚ + +## Artifact ็ฑปๅž‹ไธŽๅ›พๆ ‡ + +| ็ฑปๅž‹ | ๆ‰ฉๅฑ•ๅ | ๅ›พๆ ‡ | ๅคง็บฒ | +|------|--------|------|------| +| Markdown | .md | ๐Ÿ“„ | ๆ ‡้ข˜ | +| JavaScript / TypeScript | .js .ts | ๐Ÿ’› / ๐Ÿ”ท | function/class/export | +| Python | .py | ๐Ÿ | def/class | +| JSON / YAML | .json .yml | { | ้กถๅฑ‚ keys | +| HTML | .html | ๐ŸŒ | DOM ็ป“ๆž„ | +| ๅ›พ่กจ (mermaid) | .mmd | ๐Ÿ“Š | ่Š‚็‚น | +| ้€š็”จ | .txt | ๐Ÿ“ | ๆ—  | + +## ไธŽ Phase 1 ็š„ๅ…ณ็ณป + +ๆŠฝๅ–้€ป่พ‘ๅทฒๆœ‰ `app/ClaudeCodeHistory/ArtifactDetector.swift` ้›ๅฝขใ€‚ๆœฌ่ฎพ่ฎก็จฟๆ˜Ž็กฎ: + +- ๆŠŠ"้•ฟๅบฆ้—จๆง›"็ปŸไธ€(ๅŽŸ Swift ็‰ˆๅชๆฃ€ๆต‹ไปฃ็ ๅ—) +- ๅŠ  Markdown ๆ–‡ๆกฃๆŠฝๅ– +- ๆตๅผๆ›ดๆ–ฐ Artifact ๅ†…ๅฎน(ๅŽŸ Swift ็‰ˆไป…ๅœจๆต็ป“ๆŸๆ—ถๆŠฝ) diff --git a/docs/design/ui/interaction-flows/05-flow-provider-switch.md b/docs/design/ui/interaction-flows/05-flow-provider-switch.md new file mode 100644 index 0000000..ed729e2 --- /dev/null +++ b/docs/design/ui/interaction-flows/05-flow-provider-switch.md @@ -0,0 +1,124 @@ +# Flow 05 ยท ไผš่ฏไธญๅˆ‡ๆขไพ›ๅบ”ๅ•†็š„ๅฝฑๅ“ๅค„็† + +> ่ฟ™ๆ˜ฏไธชๆฝœๅœจ้ฃŽ้™ฉๆ“ไฝœ โ€”โ€” ๅˆ‡ๆขไธๅฝ“ไผšไธขไธŠไธ‹ๆ–‡ / ๅขž่ดน็”จใ€‚ๆต็จ‹่ฆๆ˜Ž็กฎ้ข„่ญฆ + ็ป™ๅฎ‰ๅ…จ้ป˜่ฎคใ€‚ + +## ไธปๆต็จ‹ + +```mermaid +flowchart TD + A[็”จๆˆท่งฆๅ‘ๅˆ‡ๆข] -->|้กถๆ ็‚นๅ‡ป / โŒ˜โ‡งP| B[ๅผนๅˆ‡ๆขๆตฎๅฑ‚ wireframe-06] + B --> C{็”จๆˆท้€‰ๆ‹ฉ} + C -- esc / ๅ…ณ้—ญ --> Z[ๆ— ๆ“ไฝœ,่ฟ”ๅ›ž] + C -- ้€‰็›ฎๆ ‡ไพ›ๅบ”ๅ•† --> D{ๅ‹พ้€‰ 'ๅœจๆ–ฐไผš่ฏไธญๅˆ‡ๆข'?} + + D -- ๆ˜ฏ (้ป˜่ฎค,ๆŽจ่) --> E[ๅˆ›ๅปบๆ–ฐไผš่ฏ] + E --> E1[ๆ–ฐไผš่ฏ้ป˜่ฎคไพ›ๅบ”ๅ•† = ็›ฎๆ ‡] + E1 --> E2{ๅฝ“ๅ‰ไผš่ฏๆœ‰ๆœชๅ‘ๆถˆๆฏ?} + E2 -- ๆ˜ฏ --> E3[ๆŠŠๆœชๅ‘ๆถˆๆฏๅคๅˆถๅˆฐๆ–ฐไผš่ฏ่พ“ๅ…ฅๆก†] + E2 -- ๅฆ --> E4[ๆ–ฐไผš่ฏ็ฉบ็Šถๆ€] + E3 --> F[ไพง่พนๆ ้€‰ไธญๆ–ฐไผš่ฏ,ไธญๆ ๅˆ‡ๆข] + E4 --> F + + D -- ๅฆ (้ซ˜็บง) --> G[ๅผนไบŒๆฌก็กฎ่ฎคๅฏน่ฏๆก†] + G --> G1[ๆ˜พ็คบ้ฃŽ้™ฉ:
- ไธŠไธ‹ๆ–‡ไธขๅคฑ
- ๅฏ่ƒฝ่ดน็”จๅขžๅŠ 
- ๅ›žๅคๅ็ฆป] + G1 --> G2{็”จๆˆท่พ“ๅ…ฅ 'ๅˆ‡ๆข' ็กฎ่ฎค} + G2 -- ๅ–ๆถˆ --> Z + G2 -- ็กฎ่ฎค --> H[ๅฝ“ๅ‰ไผš่ฏๅˆ‡ๆขไพ›ๅบ”ๅ•†] + + H --> H1[่Šๅคฉๆตๆ’ๅ…ฅ 'โš™ ๅทฒๅˆ‡ๆขๅˆฐ X' ็ณป็ปŸๆถˆๆฏ] + H1 --> H2[้กถๆ ไพ›ๅบ”ๅ•†ๆ˜พ็คบๆ›ดๆ–ฐ] + H2 --> H3[token ่ฎกๆ•ฐๅ™จ้‡็ฝฎ 0] + H3 --> I{ไธ‹ไธ€ๆกๆถˆๆฏๅ‘้€ๆ—ถ} + I --> J{ๆ–ฐไพ›ๅบ”ๅ•†ๆ˜ฏๅฆ้œ€่ฆ้‡ๅก‘ไธŠไธ‹ๆ–‡?} + J -- ๆ˜ฏ (ๅคงๅคšๆ•ฐๆƒ…ๅ†ต) --> K[ๆŠŠๅކๅฒๆถˆๆฏไปฅ system ๆถˆๆฏๅ‘็ป™ๆ–ฐไพ›ๅบ”ๅ•†] + J -- ๅฆ (ๅ…ผๅฎนๅ่ฎฎ) --> L[็›ดๆŽฅๅ‘ๅฝ“ๅ‰ๆถˆๆฏ] + K --> M[ๆ–ฐไพ›ๅบ”ๅ•†ๅ›žๅค] + L --> M +``` + +## "้‡ๅก‘ไธŠไธ‹ๆ–‡" ่ฏฆ็ป†็ญ–็•ฅ + +```mermaid +flowchart TD + A[ๅˆ‡ๆขๅŽ็ฌฌไธ€ๆฌกๅ‘ๆถˆๆฏ] --> B[่ฎก็ฎ—ๅކๅฒๆถˆๆฏ token ๆ•ฐ] + B --> C{ๆ˜ฏๅฆ่ถ…่ฟ‡ๆ–ฐไพ›ๅบ”ๅ•†ไธŠไธ‹ๆ–‡็ช—ๅฃ?} + C -- ๅฆ,ๅ…จ้ƒจๅกžๅพ—ไธ‹ --> D[ๆŠŠๅ…จ้ƒจๅކๅฒ + ๆ–ฐๆถˆๆฏไธ€ๆฌกๅ‘ๅ‡บ] + C -- ๆ˜ฏ,ๅกžไธไธ‹ --> E[ๆ‘˜่ฆๅŽ‹็ผฉ:
็”จไพฟๅฎœๆจกๅž‹ๆŠŠๆ—ฉๆœŸๆถˆๆฏๅŽ‹ๆˆๆ‘˜่ฆ] + E --> F[ๆ‘˜่ฆ + ๆœ€่ฟ‘ N ๆกๅŽŸๆ–‡ + ๆ–ฐๆถˆๆฏๅ‘ๅ‡บ] + F --> G{ๅŽ‹็ผฉๅŽไป่ถ…?} + G -- ๆ˜ฏ --> H[ๅผนๆจกๆ€: 'ไธŠไธ‹ๆ–‡่ถ…้•ฟ,้œ€ๆˆชๆ–ญๆˆ–ๆ–ฐๅปบ'] + G -- ๅฆ --> I[ๆญฃๅธธๅ‘้€] +``` + +## ็Šถๆ€ๆœบ + +```mermaid +stateDiagram-v2 + [*] --> Idle: ไผš่ฏ็จณๅฎš็Šถๆ€ + Idle --> Switching: ็”จๆˆท่งฆๅ‘ๅˆ‡ๆขๆตฎๅฑ‚ + Switching --> Idle: ๅ–ๆถˆ + Switching --> NewConversation: ้€‰'ๅœจๆ–ฐไผš่ฏไธญๅˆ‡ๆข' + Switching --> Confirming: ้€‰'ๅœจๅฝ“ๅ‰ไผš่ฏไธญๅˆ‡ๆข' + Confirming --> Idle: ๅ–ๆถˆ + Confirming --> InCurrent: ่พ“ๅ…ฅ'ๅˆ‡ๆข'็กฎ่ฎค + InCurrent --> Reshaping: ไธ‹ๆฌกๅ‘ๆถˆๆฏๆ—ถ + Reshaping --> Idle: ้‡ๅก‘ๆˆๅŠŸ + Reshaping --> Failed: ้‡ๅก‘ๅคฑ่ดฅ (่ถ…้•ฟ / API ้”™) + Failed --> Idle: ็”จๆˆทๅ†ณๅฎšไธ‹ไธ€ๆญฅ (ๆˆชๆ–ญ / ๆ–ฐๅปบ / ๅ–ๆถˆ) + NewConversation --> [*]: ๅทฒ่ฝฌ็งปๅˆฐๆ–ฐไผš่ฏ +``` + +## ๅˆ‡ๆข็š„็”จๆˆทๆถˆๆฏ + +ๅˆ‡ๆข็š„็ณป็ปŸๆถˆๆฏๆ ทๅผ: + +``` +โš™ 12:51 ยท ๅˆ‡ๆขไพ›ๅบ”ๅ•† + Anthropic Claude opus โ†’ AWS Bedrock claude-opus-4-v1 + + ๐Ÿ“Š ๅฝฑๅ“: + โ€ข ๅކๅฒ 156k tokens ๅฐ†ไปฅๆ‘˜่ฆๅฝขๅผ้‡ๅก‘ + โ€ข ้ข„ไผฐ้ขๅค–่ดน็”จ: $0.18 (ๆ‘˜่ฆ + ้‡ๅก‘) + + [๐Ÿ“‹ ็œ‹ๆ‘˜่ฆ้ข„่งˆ] [๐Ÿ”™ ๆ’ค้”€ๅˆ‡ๆข] +``` + +ๆ’ค้”€็ช—ๅฃ: 3 ๅˆ†้’Ÿๅ†…ๅฏ็‚น "๐Ÿ”™ ๆ’ค้”€ๅˆ‡ๆข" ๅ›žๅˆฐๅŽŸไพ›ๅบ”ๅ•†,ๆ’ค้”€ๅŽ็ณป็ปŸๆถˆๆฏๆ ‡ "ๅทฒๆ’ค้”€"ใ€‚ + +## ็”จๆˆทๆ•™่‚ฒ + +็ฌฌไธ€ๆฌก็”จๆˆทๅš "ๅœจๅฝ“ๅ‰ไผš่ฏๅˆ‡ๆข" ๆ—ถ: + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ ๐Ÿ’ก ้ซ˜็บงๆ“ไฝœ ยท ไป…่ฟ™ไธ€ๆฌกๆ็คบ โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ โ”‚ + โ”‚ ไฝ ๆญฃๅœจๅš"ไผš่ฏๅ†…ๅˆ‡ๆข",่ฟ™ๆ˜ฏไธ€ไธช้ซ˜็บงๆ“ไฝœใ€‚ โ”‚ + โ”‚ โ”‚ + โ”‚ ๅคงๅคšๆ•ฐๆƒ…ๅ†ตไธ‹,"ๅœจๆ–ฐไผš่ฏไธญๅˆ‡ๆข"ๆ›ดๅฎ‰ๅ…จ: โ”‚ + โ”‚ โœ“ ไธไธขๅކๅฒ โ”‚ + โ”‚ โœ“ ๆ— ้‡ๅก‘่ดน็”จ โ”‚ + โ”‚ โœ“ ๅ›žๅคๆ–นๅ‘ๆ›ด็จณๅฎš โ”‚ + โ”‚ โ”‚ + โ”‚ ไผš่ฏๅ†…ๅˆ‡ๆข้€‚ๅˆ: ไธดๆ—ถๅฐ่ฏ•ไธๅŒๆจกๅž‹ๅฏนๆฏ”ๅŒไธ€้—ฎ้ข˜ โ”‚ + โ”‚ โ”‚ + โ”‚ [โœ“] ็Ÿฅ้“ไบ†,ไธๅ†ๆ็คบ โ”‚ + โ”‚ ็ปง็ปญๅˆ‡ๆข โ†’ โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๅคฑ่ดฅๅค„็† + +ๅˆ‡ๆขๅŽ็ฌฌไธ€ๆฌกๅ‘้€ๅคฑ่ดฅ็š„ๅค„็†: + +| ๅคฑ่ดฅ็ฑปๅž‹ | ่กŒไธบ | +|---------|------| +| API 401/403 | ๅผนๆจกๆ€ "ๆ–ฐไพ›ๅบ”ๅ•†้‰ดๆƒๅคฑ่ดฅ,่ฆๅ›ž้€€ๅˆฐๅŽŸไพ›ๅบ”ๅ•†ๅ—?" | +| ไธŠไธ‹ๆ–‡่ถ…้•ฟ | ๅผนๆจกๆ€ "ๆ— ๆณ•้‡ๅก‘ๅ…จ้ƒจไธŠไธ‹ๆ–‡,้€‰ๆ‹ฉ: ๆˆชๆ–ญๆ—ฉๆœŸ 50% / ๆ–ฐๅปบไผš่ฏ / ๅˆ‡ๅ›žๅŽŸ" | +| ็ฝ‘็ปœ | ้‡่ฏ• 3 ๆฌก,ไปๅคฑ่ดฅๅผน "ๅˆ‡ๆขๅฏ่ƒฝๆœช็”Ÿๆ•ˆ,็œ‹ๅณไธŠ็Šถๆ€" | + +## ไธŽ Sprint 1-5 ็š„ๅฏนๆŽฅ + +- ๅˆ‡ๆขๆ—ฅๅฟ—ๅ†™ๅ…ฅไผš่ฏๅކๅฒ JSON,key: `provider_switches: [{ timestamp, from, to, reshape_strategy }]` +- ๅบฆ้‡่„šๆœฌ `tools/metrics/development/collect.js` ๅฏๅŠ ๆ–ฐ็ปดๅบฆ: ๅ‘จๅ†…ไพ›ๅบ”ๅ•†ๅˆ‡ๆขๆฌกๆ•ฐ(่กก้‡็จณๅฎšๆ€ง) diff --git a/docs/design/ui/wireframes/01-main-three-pane.md b/docs/design/ui/wireframes/01-main-three-pane.md new file mode 100644 index 0000000..b3717b6 --- /dev/null +++ b/docs/design/ui/wireframes/01-main-three-pane.md @@ -0,0 +1,79 @@ +# Wireframe 01 ยท ไธป่ง†ๅ›พ(ไธ‰ๆ ) + +> ๅบ”็”จๅฏๅŠจๅŽ้ป˜่ฎค่ฟ›ๅ…ฅ่ฟ™้‡Œใ€‚ไธ‰ๆ ๅธƒๅฑ€:ๅทฆไผš่ฏๅˆ—่กจ / ไธญ่ŠๅคฉๅŒบ / ๅณ Artifact ้ขๆฟใ€‚ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ EP Code AI [Anthropic โ–พ] โš™ โ”€ โ–ก โœ• โ”‚โ‘  +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ ๐Ÿ” ๆœ็ดข... โ”‚ ไผš่ฏ: ใ€Œ้œ€ๆฑ‚่ฏ„ๅฎก - ็ฆป่Œๆต็จ‹ใ€ ๐Ÿ“Œ โ‹ฎ โ”‚ ๐Ÿ“ฆ Artifacts (2) โ”‚โ‘ก +โ”‚ โŒ˜K โ”‚ Anthropic Claude ยท opus ยท 156k tok / 200k โ”‚ โ”‚ +โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ โ–พ prd-v1.2.md โ”‚ +โ”‚ โ–ผ ไปŠๅคฉ (3) โ”‚ โ”‚ ๐Ÿ“„ 132 ่กŒ ยท 2KB โ”‚ +โ”‚ โ— ้œ€ๆฑ‚่ฏ„ๅฎก โ”‚ ๐Ÿ‘ค 11:32 โ”‚ ็”ŸๆˆไบŽ 11:34 โ”‚ +โ”‚ โ—‹ Bug-1024 โ”‚ ๅธฎๆˆ‘ๆŠŠ prd-v1.2.md ๆ‹†ๆˆ user story โ”‚ โ”‚โ‘ข +โ”‚ โ—‹ ้ƒจ็ฝฒ SOP โ”‚ [๐Ÿ“Ž prd-v1.2.md 132 ่กŒ] โ”‚ โ–พ user-stories.md โ”‚ +โ”‚ โ”‚ โ”‚ ๐Ÿ“‹ 8 ๆก ยท 4KB โ”‚ +โ”‚ โ–ผ ๆ˜จๅคฉ (2) โ”‚ ๐Ÿค– 11:33 ยท ๆ€่€ƒ 12s ยท ่พ“ๅ‡บ 2.3k tokens โ”‚ ็”ŸๆˆไบŽ 11:35 โ”‚ +โ”‚ โ—‹ ๅบฆ้‡ๅ‘จๆŠฅ โ”‚ ๅทฒ่ฏป prd-v1.2.md(132 ่กŒ)ใ€‚่ฏ†ๅˆซๅ‡บ 8 ไธช็”จๆˆท โ”‚ โ”‚ +โ”‚ โ—‹ ADR-002 โ”‚ ๅœบๆ™ฏ,ๆŒ‰ INVEST ๆ‹†ๆˆ 8 ๆก user story: โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ โ”‚ ไธ‹่ฝฝๆ‰€ๆœ‰ โ”‚ +โ”‚ โ–ผ 4-15 ๅ‘จไธ€ โ”‚ 1. ๅ‘˜ๅทฅๆไบค็ฆป่Œ็”ณ่ฏท โ”‚ ๅฏผๅ‡บ .zip โ”‚ +โ”‚ โ—‹ ่ฎพ่ฎก่ฏ„ๅฎก โ”‚ 2. HR ๅฎกๆ ธๅŸบๆœฌ่ต„ๆ–™ โ”‚ โ”‚ +โ”‚ โ”‚ 3. ... โ”‚ โ”‚ +โ”‚ โ–ผ ๆ”ถ่— โญ (1) โ”‚ โ”‚ โ”‚ +โ”‚ โญ ๆ•…้šœๅค็›˜ โ”‚ ๅทฒ็”Ÿๆˆ โ†’ user-stories.md (ๅณไพงๅทฒๆทปๅŠ ) โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ ๐Ÿ‘ค 11:36 โ”‚ โ”‚ +โ”‚ + ๆ–ฐไผš่ฏ โŒ˜N โ”‚ [่พ“ๅ…ฅไธญ...] โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ โ”‚ +โ”‚ โ”‚ [/] [๐Ÿ“Ž] [โšก opus] โŒ˜โ†ต โ”‚โ‘ฃ +โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ ่พ“ๅ…ฅๆถˆๆฏ(โŒ˜โ†ต ๅ‘้€ / shift+โ†ต ๆข่กŒ)... โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โœ… ็Žฏๅขƒๆญฃๅธธ ยท Node v20 / Claude Code v1.2.3 โ— ่ฟžๆŽฅๆญฃๅธธ ยท ๅปถ่ฟŸ 240ms โ”‚โ‘ค +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + 240px โ†โ”€โ”€โ”€โ”€โ”€โ”€ flex,ๅ ๆปก โ”€โ”€โ”€โ”€โ”€โ”€โ†’ 320px(ๅฏๆ‹–ๆ‹ฝ) +``` + +## ๅ…ƒ็ด ่ฏดๆ˜Ž + +| # | ๅ…ƒ็ด  | ่กŒไธบ | +|---|------|------| +| โ‘  | ้กถๆ  ยท ไพ›ๅบ”ๅ•†ๅˆ‡ๆข | ็‚น `[Anthropic โ–พ]` ๅผนๅˆ‡ๆขๆตฎๅฑ‚(่ง wireframe-06)ใ€‚`โš™` ๅผ€่ฎพ็ฝฎ(wireframe-03) | +| โ‘ก | ไธญๆ ๆ ‡้ข˜ๅŒบ | ๆ˜พ็คบๅฝ“ๅ‰ไผš่ฏๅ + ๆจกๅž‹ + token ็”จ้‡ใ€‚`๐Ÿ“Œ` ๆ”ถ่—ๅˆ‡ๆข;`โ‹ฎ` ๅผนๆ›ดๅคšๆ“ไฝœ(ๆ”นๅ/ๅฏผๅ‡บ/ๅˆ ) | +| โ‘ข | ๅณๆ  Artifacts | ๅˆ—ๅ‡บๆœฌไผš่ฏไบง็”Ÿ็š„ๆ‰€ๆœ‰ Artifactใ€‚ๅฏๆŠ˜ๅ /ๅฑ•ๅผ€ใ€‚ๆ—  Artifact ๆ—ถๆ•ดไธชๅณๆ ่‡ชๅŠจๆŠ˜่ตท | +| โ‘ฃ | ๅบ•้ƒจ่พ“ๅ…ฅๆ  | `/` ่งฆๅ‘ๅ‘ฝไปค้ขๆฟ(wireframe-04);`๐Ÿ“Ž` ้™„ไปถ;`โšก` ๅˆ‡ๆจกๅž‹(ๆœฌไผš่ฏๅ†…);`โŒ˜โ†ต` ๅ‘้€ | +| โ‘ค | ็Šถๆ€ๆ  | ๆŒไน…ๆ˜พ็คบ็Žฏๅขƒๅฅๅบท + ็ฝ‘็ปœ็Šถๆ€(wireframe-10) | + +## ไธ‰ๆ ๅฎฝๅบฆ + +- ๅทฆไพง 240px(ๅฏๅœจ 200-360 ๆ‹–ๆ‹ฝ,่ฎฐๅฟ†) +- ๅณไพง 320px(ๅฏๅœจ 280-500 ๆ‹–ๆ‹ฝ;ๆ—  Artifact ่‡ชๅŠจ 0px) +- ไธญ้—ด flex(min 480px,ๅฐไบŽๅˆ™ๅผบๅˆถๆŠ˜ๅ ๅทฆ/ๅณ) + +## ๅ“ๅบ”ๅผ + +| ็ช—ๅฃๅฎฝๅบฆ | ่กŒไธบ | +|---------|------| +| `โ‰ฅ 1280` | ไธ‰ๆ ๅ…จๅผ€ | +| `1024 - 1280` | ๅณๆ ่‡ชๅŠจๆŠ˜ๅ ๆˆๆŠฝๅฑ‰(ๅ›พๆ ‡ๆŒ‰้’ฎๅ”ค่ตท) | +| `768 - 1024` | ๅทฆๆ ไนŸๆŠ˜ๅ ,ๅ˜ๆˆ็งปๅŠจ็‰ˆๅŒๅฑ‚ๆŠฝๅฑ‰ | +| `< 768` | (ไธๆ”ฏๆŒ,ๅผบๅˆถๆœ€ๅฐ็ช—ๅฃ 768) | + +## ไผš่ฏๅˆ—่กจๅˆ†็ป„ + +ๆŒ‰ไปฅไธ‹้กบๅบๅ›บๅฎš: +1. **ๆ”ถ่—**(โญ ๆ ‡่ฎฐ็š„,ไปปไฝ•ๆ—ถๅ€™็ฝฎ้กถ) +2. **ไปŠๅคฉ / ๆ˜จๅคฉ / ๆœฌๅ‘จ** (ๆŒ‰ๆœ€ๅŽๆดปๅŠจๆ—ถ้—ด) +3. **ๆœฌๆœˆ / ๆ›ดๆ—ฉ** (ๆŒ‰ๆœˆๅˆ†็ป„) + +ๆฏ็ป„ๅฏๆŠ˜ๅ ใ€‚่ฎกๆ•ฐๆ˜พ็คบๅœจ็ป„ๅๆ—ใ€‚ + +## ็ฉบ็Šถๆ€ + +- ๆ— ไผš่ฏ: ไธญๆ ๆ˜พ็คบๆฌข่ฟŽๅก + "+ ๆ–ฐไผš่ฏ โŒ˜N" ๅคงๆŒ‰้’ฎ +- ๆ—  Artifact: ๅณๆ ๅฎŒๅ…จๆŠ˜ๅ ,ไธๆ˜พ็คบ็ฉบ็™ฝ +- ่ฏฆ่ง wireframe-09 diff --git a/docs/design/ui/wireframes/02-setup-wizard.md b/docs/design/ui/wireframes/02-setup-wizard.md new file mode 100644 index 0000000..73ac79f --- /dev/null +++ b/docs/design/ui/wireframes/02-setup-wizard.md @@ -0,0 +1,134 @@ +# Wireframe 02 ยท ้ฆ–ๆฌกๅฏๅŠจๅ‘ๅฏผ + +> ็”จๆˆท้ฆ–ๆฌกๆ‰“ๅผ€ๅบ”็”จๆ—ถๅผบๅˆถ่ฟ›ๅ…ฅใ€‚4 ๆญฅ,ๆฏๆญฅๅฏ"่ทณ่ฟ‡"(ๆ ‡่ฎฐไธบๅพ…ไฟฎๅค),ๅ…จ้ƒจๅฎŒๆˆๅŽ่ฟ›ไธป่ง†ๅ›พใ€‚ + +## ๆญฅ้ชค 1 / 4 ยท ๆฌข่ฟŽ + ไธป้ข˜ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Setup ยท ็ฌฌ 1 ๆญฅ / ๅ…ฑ 4 ๆญฅ โœ• ่ทณ่ฟ‡ๅผ•ๅฏผ โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ +โ”‚ ๐Ÿ‘‹ ๆฌข่ฟŽไฝฟ็”จ โ”‚ +โ”‚ EP Code AI โ”‚ +โ”‚ โ”‚ +โ”‚ ่ฆ†็›–ไธšๅŠก ยท ๅผ€ๅ‘ ยท ๆต‹่ฏ• ยท ่ฟ็ปด ๅ››ๅคงๅœบๆ™ฏ็š„ Claude ๅขžๅผบ็”Ÿๆ€ โ”‚ +โ”‚ โ”‚ +โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ +โ”‚ ๐ŸŽจ ้€‰ๆ‹ฉไธป้ข˜ โ”‚ +โ”‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ ๆต…่‰ฒ โ”‚ โ”‚ โ— ๆทฑ่‰ฒ โ”‚ โ”‚ ่ทŸ้š็ณป็ปŸ โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ +โ”‚ ๐Ÿ“ ๅบ”็”จ่ฏญ่จ€ โ”‚ +โ”‚ [ไธญๆ–‡ โ–พ] (ๅ…ถไป–: English) โ”‚ +โ”‚ โ”‚ +โ”‚ โ”‚ +โ”‚ ไธ‹ไธ€ๆญฅ โ–ถ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๆญฅ้ชค 2 / 4 ยท ็Žฏๅขƒๆฃ€ๆŸฅ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Setup ยท ็ฌฌ 2 ๆญฅ / ๅ…ฑ 4 ๆญฅ โœ• ่ทณ่ฟ‡ โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ +โ”‚ ๐Ÿ” ๆญฃๅœจๆฃ€ๆŸฅ่ฟ่กŒ็Žฏๅขƒ... โ”‚ +โ”‚ โ”‚ +โ”‚ โœ… Node.js v20.10.0 ๆปก่ถณ(้œ€่ฆ โ‰ฅ 18) โ”‚ +โ”‚ โœ… npm v10.2.3 โ”‚ +โ”‚ โœ… git v2.42.0 โ”‚ +โ”‚ โš ๏ธ Claude Code ๆœชๅฎ‰่ฃ… โ”‚ +โ”‚ โ””โ”€ [โ–ถ ไธ€้”ฎๅฎ‰่ฃ…(่ฟ่กŒ npm install -g @anthropic-ai/claude-code)] โ”‚ +โ”‚ โ”‚ +โ”‚ โŒ Xcode CLT ๆœชๆฃ€ๆต‹ๅˆฐ (macOS ไธ“ๅฑž) โ”‚ +โ”‚ โ””โ”€ ็ปˆ็ซฏ่ฟ่กŒ: xcode-select --install โ”‚ +โ”‚ โ””โ”€ [๐Ÿ“‹ ๅคๅˆถๅ‘ฝไปค] โ”‚ +โ”‚ โ”‚ +โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ [่ฏฆ็ป†ๆ—ฅๅฟ— โŒƒ] โ”‚ +โ”‚ โ”‚ +โ”‚ โ—€ ไธŠไธ€ๆญฅ ้‡ๆ–ฐๆฃ€ๆต‹ ไธ‹ไธ€ๆญฅ โ–ถ โ”‚ +โ”‚ (็ฐ่‰ฒ) โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๆญฅ้ชค 3 / 4 ยท ้…็ฝฎไพ›ๅบ”ๅ•† + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Setup ยท ็ฌฌ 3 ๆญฅ / ๅ…ฑ 4 ๆญฅ โœ• ่ทณ่ฟ‡ โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ +โ”‚ โšก ้…็ฝฎ AI ไพ›ๅบ”ๅ•† โ”‚ +โ”‚ โ”‚ +โ”‚ ้€‰ๆ‹ฉ็ฑปๅž‹: โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ โ— Anthropic ๅฎ˜ๆ–น โ—‹ AWS Bedrock โ—‹ Google Vertex โ”‚ โ”‚ +โ”‚ โ”‚ โ—‹ ็ฌฌไธ‰ๆ–นไปฃ็†(่‡ชๅฎšไน‰ endpoint) โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ +โ”‚ API Key โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” ๐Ÿ‘ โ”‚ +โ”‚ โ”‚ sk-ant-xxx ยทยทยทยทยทยท โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ +โ”‚ ้ป˜่ฎคๆจกๅž‹ [claude-opus-4 โ–พ] โ”‚ +โ”‚ โ”‚ +โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ +โ”‚ [๐Ÿ”— ๆต‹่ฏ•่ฟžๆŽฅ] โ”‚ +โ”‚ โœ… ่ฟžๆŽฅๆˆๅŠŸ ยท ๅปถ่ฟŸ 220ms ยท ่ดฆๅทไฝ™้ข $42.18 โ”‚ +โ”‚ โ”‚ +โ”‚ โ—€ ไธŠไธ€ๆญฅ ไธ‹ไธ€ๆญฅ โ–ถ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๆญฅ้ชค 4 / 4 ยท ๅฎŒๆˆ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Setup ยท ็ฌฌ 4 ๆญฅ / ๅ…ฑ 4 ๆญฅ โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ +โ”‚ ๐ŸŽ‰ ่ฎพ็ฝฎๅฎŒๆˆ โ”‚ +โ”‚ โ”‚ +โ”‚ ไฝ ๅทฒๅฐฑ็ปชใ€‚EP Code AI ๆŠŠ Claude ไธŽๅ››ๅคงๅœบๆ™ฏๆ–นๆณ•่ฎบ็ป“ๅˆ, โ”‚ +โ”‚ ๅปบ่ฎฎไปŽ่ฟ™้‡Œๅผ€ๅง‹: โ”‚ +โ”‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ ๐Ÿ†• ๅˆ›ๅปบ็ฌฌไธ€ไธชไผš่ฏ โ”‚ โ”‚ ๐Ÿ“š ็œ‹ 5 ๅˆ†้’Ÿๆ•™็จ‹ โ”‚ โ”‚ +โ”‚ โ”‚ (่ทณๅˆฐไธป่ง†ๅ›พ) โ”‚ โ”‚ (ๆ‰“ๅผ€ๆ–‡ๆกฃ็ซ™) โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ +โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ +โ”‚ ๆ็คบ โ”‚ +โ”‚ โ€ข ็”จ `/` ่งฆๅ‘ๅ‘ฝไปค้ขๆฟ(ๅ†™ PRD / ่ท‘ ADR / ็œ‹ๅบฆ้‡็ญ‰) โ”‚ +โ”‚ โ€ข ็”จ `โŒ˜K` ๅ…จๅฑ€ๆœ็ดขๅކๅฒไผš่ฏ โ”‚ +โ”‚ โ€ข ่ฎพ็ฝฎๅ…ฅๅฃ: ้กถๆ ้ฝฟ่ฝฎ โš™ ๆˆ– `โŒ˜,` โ”‚ +โ”‚ โ”‚ +โ”‚ โ–ถ ่ฟ›ๅ…ฅๅบ”็”จ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๅ…ณ้”ฎไบคไบ’ + +| ๆญฅ้ชค | ่กŒไธบ | +|------|------| +| ไปปๆ„ๆญฅ | ๅณไธŠ `โœ• ่ทณ่ฟ‡ๅผ•ๅฏผ`: ๆ ‡่ฎฐ setup ็Šถๆ€ไธบ"ๆœชๅฎŒๆˆ",ไธ‹ๆฌกๅฏๅŠจไปๆ็คบ | +| ๆญฅ้ชค 2 | ไธ€้”ฎๅฎ‰่ฃ…ๆŒ‰้’ฎๅ†…ๅตŒ Claude Code ๅฎ‰่ฃ…ๅ‘ฝไปค,่พ“ๅ‡บๅฎžๆ—ถๆ—ฅๅฟ—ๅœจๆŠ˜ๅ ๅŒบ | +| ๆญฅ้ชค 2 | "ไธ‹ไธ€ๆญฅ" ๅœจๆœ‰ โŒ ๆ—ถ็ฆ็”จ;ๆœ‰ โš ๏ธ ไฝ†ๆ—  โŒ ๆ—ถๅฏ็ปง็ปญ(่ญฆๅ‘Š toast) | +| ๆญฅ้ชค 3 | API Key ่พ“ๅ…ฅๆก†้ป˜่ฎค้ฎ่”ฝ,๐Ÿ‘ ๅˆ‡ๆ˜พ้š;ๆ”ฏๆŒ็ฒ˜่ดด | +| ๆญฅ้ชค 3 | ๆต‹่ฏ•่ฟžๆŽฅๅ‰ "ไธ‹ไธ€ๆญฅ" ็ฆ็”จ,็กฎไฟ API Key ๆœ‰ๆ•ˆๅŽๆ‰ๆ”พ่กŒ | +| ๆญฅ้ชค 4 | ้€‰ "ๅˆ›ๅปบ็ฌฌไธ€ไธชไผš่ฏ" ่ทณๅˆฐไธป่ง†ๅ›พๅนถ่‡ชๅŠจ + ๆ–ฐไผš่ฏ | + +## ่ทณ่ฟ‡็š„ๅฝฑๅ“ + +- **ๆญฅ้ชค 2 ่ทณ่ฟ‡**: ไธป่ง†ๅ›พ็Šถๆ€ๆ ๆ˜พ็คบ โš ๏ธ ็บข่‰ฒ "็Žฏๅขƒๆœช้…็ฝฎ",็‚นๅ‡ป้‡ๅผ€ๅ‘ๅฏผ +- **ๆญฅ้ชค 3 ่ทณ่ฟ‡**: ไธป่ง†ๅ›พๆ— ๆณ•ๅ‘ๆถˆๆฏ,้กถๆ ไพ›ๅบ”ๅ•†ๆ˜พ็คบ "ๆœช้…็ฝฎ โš ๏ธ",็‚นๅ‡ป่ทณๅˆฐ้…็ฝฎ +- **ๆญฅ้ชค 4 ่ทณ่ฟ‡**: ็›ดๆŽฅ่ฟ›ไธป่ง†ๅ›พ,่กŒไธบไธŽ"่ฟ›ๅ…ฅๅบ”็”จ"็ญ‰ๅŒ diff --git a/docs/design/ui/wireframes/03-settings.md b/docs/design/ui/wireframes/03-settings.md new file mode 100644 index 0000000..4591ddd --- /dev/null +++ b/docs/design/ui/wireframes/03-settings.md @@ -0,0 +1,126 @@ +# Wireframe 03 ยท ่ฎพ็ฝฎ้กต + +> `โŒ˜,` / `Ctrl+,` ๅ”ค่ตทใ€‚Modal ๅฑ…ไธญ,ๅฏๆ‹–ๆ‹ฝ็ช—ๅฃ / ๅ…ณ้—ญใ€‚ + +## ๆ•ดไฝ“็ป“ๆž„ + +4 ไธช tab,ๅทฆไพงๅฏผ่ˆชๆก,ๅณไพงๅ†…ๅฎนๅŒบใ€‚ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ่ฎพ็ฝฎ โœ• โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ— General โ”‚ General ยท ้€š็”จ่ฎพ็ฝฎ โ”‚ +โ”‚ โ—‹ Provider โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ—‹ Shortcuts โ”‚ โ”‚ +โ”‚ โ—‹ Experimental โ”‚ ๅค–่ง‚ โ”‚ +โ”‚ โ”‚ ไธป้ข˜ [ๆทฑ่‰ฒ โ–พ] (ๆต… / ๆทฑ / ่ทŸ้š็ณป็ปŸ) โ”‚ +โ”‚ โ”‚ ๅญ—ๅท [ไธญ โ–พ] (ๅฐ / ไธญ / ๅคง) โ”‚ +โ”‚ โ”‚ ๅญ—ไฝ“ [็ณป็ปŸ้ป˜่ฎค โ–พ] โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ไผš่ฏ โ”‚ +โ”‚ โ”‚ ่‡ชๅŠจๅ‘ฝๅ [โœ“] ่ฎฉ AI ๆ นๆฎ้ฆ–ๆกๆถˆๆฏ็”Ÿๆˆไผš่ฏๅ โ”‚ +โ”‚ โ”‚ ่‡ชๅŠจๅฝ’ๆกฃ [โœ“] 30 ๅคฉๆœชๆดปๅŠจไผš่ฏ่‡ชๅŠจๅฝ’ๆกฃ โ”‚ +โ”‚ โ”‚ ไฟ็•™ๆ—ถ้•ฟ [ๆฐธไน… โ–พ] โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ้€š็Ÿฅ โ”‚ +โ”‚ โ”‚ AI ๅ›žๅคๅฎŒๆˆ [โœ“] ็ณป็ปŸ้€š็Ÿฅ โ”‚ +โ”‚ โ”‚ ้•ฟไปปๅŠกๅฎŒๆˆ [โœ“] ไป…ๅฝ“ๅบ”็”จๅœจๅŽๅฐ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ๆ•ฐๆฎ โ”‚ +โ”‚ โ”‚ ๅฏผๅ‡บไผš่ฏ [๐Ÿ“ฆ ๅฏผๅ‡บๅ…จ้ƒจ .zip] โ”‚ +โ”‚ โ”‚ ๆธ…็ฉบๆ•ฐๆฎ [๐Ÿ—‘ ๆธ…็ฉบๅ…จ้ƒจๆœฌๅœฐๆ•ฐๆฎ] (ๆœ‰ไบŒๆฌก็กฎ่ฎค) โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ ๅ–ๆถˆ ๅบ”็”จ ไฟๅญ˜ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## Tab 2 ยท Provider + +``` +โ”‚ โ—‹ General โ”‚ Provider ยท ไพ›ๅบ”ๅ•†็ฎก็† โ”‚ +โ”‚ โ— Provider โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ๅทฒ้…็ฝฎ็š„ไพ›ๅบ”ๅ•† (2) [+ ๆทปๅŠ ] โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ โ”‚ โ— Anthropic ๅฎ˜ๆ–น (้ป˜่ฎค) โ‹ฎ โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ sk-ant-ยทยทยทยทxxxx ยท ไฝ™้ข $42.18 โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ ้ป˜่ฎคๆจกๅž‹: claude-opus-4 โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ ่ฟžๆŽฅ: โœ… 220ms โ”‚ โ”‚ +โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ โ”‚ โ—‹ AWS Bedrock โ‹ฎ โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ role: arn:aws:iam:... ยท region: us-east-1 โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ ้ป˜่ฎคๆจกๅž‹: anthropic.claude-opus-4-v1 โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ ่ฟžๆŽฅ: โš ๏ธ ไธŠๆฌกๅคฑ่ดฅ (1 ๅฐๆ—ถๅ‰) โ”‚ โ”‚ +โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ‹ฎ ่œๅ•: ็ผ–่พ‘ / ๆต‹่ฏ•่ฟžๆŽฅ / ่ฎพไธบ้ป˜่ฎค / ๅˆ ้™ค โ”‚ +``` + +## Tab 3 ยท Shortcuts + +``` +โ”‚ โ”‚ Shortcuts ยท ๅฟซๆท้”ฎ โ”‚ +โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ๆœ็ดขๅฟซๆท้”ฎ... [_______] โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ไผš่ฏ โ”‚ +โ”‚ โ”‚ ๆ–ฐๅปบไผš่ฏ โŒ˜N [็ผ–่พ‘] โ”‚ +โ”‚ โ”‚ ๅ…ณ้—ญๅฝ“ๅ‰ไผš่ฏ โŒ˜W [็ผ–่พ‘] โ”‚ +โ”‚ โ”‚ ้‡ๅ‘ฝๅๅฝ“ๅ‰ไผš่ฏ โŒ˜R [็ผ–่พ‘] โ”‚ +โ”‚ โ”‚ ๅˆ‡ๆขไธŠไธ€ไธชไผš่ฏ โŒ˜[ [็ผ–่พ‘] โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ๅฏผ่ˆช โ”‚ +โ”‚ โ”‚ ๅ…จๅฑ€ๆœ็ดข โŒ˜K [็ผ–่พ‘] โ”‚ +โ”‚ โ”‚ ่ฎพ็ฝฎ โŒ˜, [็ผ–่พ‘] โ”‚ +โ”‚ โ”‚ ๅˆ‡ๆขไพ›ๅบ”ๅ•† โŒ˜โ‡งP [็ผ–่พ‘] โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ่พ“ๅ…ฅ โ”‚ +โ”‚ โ”‚ ๅ‘ฝไปค้ขๆฟ / (ๅ›บๅฎš,ไธๅฏๆ”น) โ”‚ +โ”‚ โ”‚ ๅ‘้€ๆถˆๆฏ โŒ˜โ†ต [็ผ–่พ‘] โ”‚ +โ”‚ โ”‚ ๆข่กŒ โ‡งโ†ต (ๅ›บๅฎš) โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ [ๆขๅค้ป˜่ฎค] โ”‚ +``` + +## Tab 4 ยท Experimental + +``` +โ”‚ โ”‚ Experimental ยท ๅฎž้ชŒๆ€งๅŠŸ่ƒฝ โš—๏ธ โ”‚ +โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โš ๏ธ ไปฅไธ‹ๅŠŸ่ƒฝไธ็จณๅฎš,ๅฏ็”จๅ‰่ฏท็Ÿฅๆ‚‰้ฃŽ้™ฉ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ [โœ—] AI ้•ฟไธŠไธ‹ๆ–‡ไผ˜ๅŒ– (256k โ†’ 1M tokens) โ”‚ +โ”‚ โ”‚ beta ยท ๅฏ่ƒฝๆ›ดๆ…ขใ€ๆ›ด่ดต โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ [โœ—] ๅคšๆจกๆ€่พ“ๅ…ฅ(ๅ›พ็‰‡ / PDF) โ”‚ +โ”‚ โ”‚ alpha ยท ้ƒจๅˆ†ไพ›ๅบ”ๅ•†ไธๆ”ฏๆŒ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ [โœ“] ๅ‘ฝไปค้ขๆฟๆจก็ณŠๆœ็ดข โ”‚ +โ”‚ โ”‚ beta ยท ๅทฒๅผ€ๅฏ,ๅฆ‚ๆœ‰้—ฎ้ข˜ๅฏๅ…ณ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ [โœ—] ็ฆป็บฟๆจกๅผ(ๆœฌๅœฐๆจกๅž‹) โ”‚ +โ”‚ โ”‚ ๆฆ‚ๅฟต้ชŒ่ฏ ยท ้œ€ 16GB+ ๅ†…ๅญ˜ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ [โœ—] ่ฐƒ่ฏ•้ขๆฟ(F12) โ”‚ +โ”‚ โ”‚ ๅผ€ๅ‘่€…็”จ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ ๆ—ฅๅฟ— โ”‚ +โ”‚ โ”‚ ๆ—ฅๅฟ—็บงๅˆซ [info โ–พ] โ”‚ +โ”‚ โ”‚ [๐Ÿ“ ๆ‰“ๅผ€ๆ—ฅๅฟ—็›ฎๅฝ•] โ”‚ +``` + +## ๅ…ณ้”ฎไบคไบ’ + +- ๅˆ‡ๆข tab ๆ—ถไธไธขๅทฒไฟฎๆ”นๆœชไฟๅญ˜็š„ๅ†…ๅฎน(้กถ้ƒจ banner ๆ็คบ"ๆœ‰ๆœชไฟๅญ˜ๆ›ดๆ”น") +- "ไฟๅญ˜" ๆŒ‰้’ฎๅœจๆœ‰ๆ”นๅŠจๆ—ถ้ซ˜ไบฎ,ๆ— ๆ”นๅŠจๆ—ถ็ฐ่‰ฒ +- "ๅ–ๆถˆ" ๅ…ณ้—ญๅนถไธขๅผƒๆ”นๅŠจ,ๆœ‰ๆ”นๅŠจๆ—ถๅผน็กฎ่ฎคๆก† +- ไปปไฝ•ไผšๅฝฑๅ“่ฟžๆŽฅ็š„ๆ›ดๆ”น(API Keyใ€Endpoint)ไฟๅญ˜ๅŽ่‡ชๅŠจ้‡ๆต‹่ฟžๆŽฅ +- "ๆธ…็ฉบๅ…จ้ƒจๆœฌๅœฐๆ•ฐๆฎ" ไบŒๆฌก็กฎ่ฎค่ฆๆฑ‚่พ“ๅ…ฅ `DELETE` ็กฎ่ฎค diff --git a/docs/design/ui/wireframes/04-slash-command-palette.md b/docs/design/ui/wireframes/04-slash-command-palette.md new file mode 100644 index 0000000..694090b --- /dev/null +++ b/docs/design/ui/wireframes/04-slash-command-palette.md @@ -0,0 +1,109 @@ +# Wireframe 04 ยท ๆ–œๆ ๅ‘ฝไปค้ขๆฟ + +> ่พ“ๅ…ฅๆก†้ฆ–ๅญ—็ฌฆ่พ“ๅ…ฅ `/` ่งฆๅ‘ใ€‚ๆตฎๅฑ‚่ฆ†็›–่พ“ๅ…ฅๆก†ไธŠๆ–น,Spotlight ้ฃŽๆ ผใ€‚ + +## ้ป˜่ฎค็Šถๆ€ + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ / ๆœ็ดขๅ‘ฝไปค... โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ๐Ÿ”ฅ ๆœ€่ฟ‘ไฝฟ็”จ (2) โ”‚ + โ”‚ /prd PRD ๆ ก้ชŒ + ๅฏๆต‹ๆ€งๆ‰“ๅˆ† โ”‚ + โ”‚ /adr index ้‡ๅปบ ADR ็ดขๅผ• โ”‚ + โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ + โ”‚ ๐Ÿ“‹ ๅ…จ้ƒจๅ‘ฝไปค (10) โ”‚ + โ”‚ โ–บ /init ๆŒ‰ๆŽฅๅ…ฅๆจกๅผ่ตท้กน็›ฎ โ”‚ + โ”‚ /adopt --level=N ๆจกๅผ C ๆธ่ฟ›ๅฏ็”จ โ”‚ + โ”‚ /migrate ๆจกๅผ B ๅๅ‘็”Ÿๆˆ API โ”‚ + โ”‚ /check ่ท‘ๅ…จ้ƒจๆ ก้ชŒ โ”‚ + โ”‚ /prd PRD ๆ ก้ชŒ + ๅฏๆต‹ๆ€ง โ”‚ + โ”‚ /adr ADR ็ดขๅผ• โ”‚ + โ”‚ /metrics [--since] ็”Ÿๆˆๅบฆ้‡็œ‹ๆฟ โ”‚ + โ”‚ /linkage ่ทจๅœบๆ™ฏ่”ๅŠจ โ”‚ + โ”‚ /incident ๆ•…้šœๅค„็† โ”‚ + โ”‚ /jira Jira ้›†ๆˆ โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ โ†‘โ†“ ้€‰ๆ‹ฉ โ†ต ๆ‰ง่กŒ esc ๅ–ๆถˆ [โ†’ ๅธฎๅŠฉ] โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๆจก็ณŠๆœ็ดข็Šถๆ€(็”จๆˆท่พ“ๅ…ฅไบ† `/me`) + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ /me โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ๐Ÿ“‹ ๅŒน้… (2) โ”‚ + โ”‚ โ–บ /metrics [--since] ็”Ÿๆˆๅบฆ้‡็œ‹ๆฟ โ”‚ + โ”‚ /migrate ๆจกๅผ B ๅๅ‘็”Ÿๆˆ API โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ โ†‘โ†“ ้€‰ๆ‹ฉ โ†ต ๆ‰ง่กŒ esc ๅ–ๆถˆ โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๅ‚ๆ•ฐ่กฅ้ฝ็Šถๆ€(้€‰ไบ† `/init`,ๅผนๅ‚ๆ•ฐ) + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ /init --name= โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ๆŒ‰ๆŽฅๅ…ฅๆจกๅผ่ตท้กน็›ฎ โ”‚ + โ”‚ โ”‚ + โ”‚ mode (ๅฟ…ๅกซ) โ”‚ + โ”‚ โ—‹ A ยท ็ปฟๅœฐ้กน็›ฎ โ”‚ + โ”‚ โ— B ยท ๅผ€ๅ‘ไธญ่ฟฝๆบฏ โ”‚ + โ”‚ โ—‹ C ยท ่ฟญไปฃไธญๆธ่ฟ› โ”‚ + โ”‚ โ—‹ D ยท ็จณๆ€่ฟ็ปด โ”‚ + โ”‚ โ”‚ + โ”‚ name (ๅฟ…ๅกซ) โ”‚ + โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ + โ”‚ โ”‚ payment-service โ”‚ โ”‚ + โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ + โ”‚ โ”‚ + โ”‚ dir (ๅฏ้€‰,้ป˜่ฎคๅฝ“ๅ‰) โ”‚ + โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ + โ”‚ โ”‚ ./ โ”‚ โ”‚ + โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ + โ”‚ โ”‚ + โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ + โ”‚ ้ข„่งˆๅ‘ฝไปค โ”‚ + โ”‚ $ epcode init --mode=B --name=payment-service โ”‚ + โ”‚ โ”‚ + โ”‚ esc ๅ–ๆถˆ โ—€ ่ฟ”ๅ›ž โœ“ ๆ‰ง่กŒ (โŒ˜โ†ต) โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๆ‰ง่กŒๅŽ่พ“ๅ‡บ็Šถๆ€ + +ๅ‘ฝไปคๆ‰ง่กŒ็ป“ๆžœไปฅ็‰นๆฎŠๆถˆๆฏๅฝขๅผๆ’ๅ…ฅ่Šๅคฉๆต,ๅธฆ"ๆœบๅ™จๆ‰ง่กŒ"ๅ›พๆ ‡: + +``` + โš™ 11:42 ยท /init --mode=B --name=payment-service + โœ… ๅทฒๅˆๅง‹ๅŒ– B ๆจกๅผ้กน็›ฎ: ./payment-service + ๅคๅˆถ 4 ไธชๆ–‡ไปถ + ไธ‹ไธ€ๆญฅ: cd payment-service && cat README.md + [๐Ÿ“‚ ๅœจ Finder ไธญๆ‰“ๅผ€] [๐Ÿ“‹ ๅคๅˆถ่ทฏๅพ„] +``` + +## ๅ…ณ้”ฎไบคไบ’ + +| ่งฆๅ‘ๆกไปถ | ่กŒไธบ | +|---------|------| +| ่พ“ๅ…ฅๆก†ๅ…‰ๆ ‡ๅœจ็ฌฌไธ€ไฝ่พ“ๅ…ฅ `/` | ็ซ‹ๅณๅผน้ขๆฟ,ๆ— ๅปถ่ฟŸ | +| ่พ“ๅ…ฅๆก†ไธญ้—ด่พ“ๅ…ฅ `/` | **ไธ**่งฆๅ‘(้ฟๅ…่ฏฏ่งฆ) | +| ้€‰ไธญๅŽๆŒ‰ โ†ต | ๅฆ‚ๆœ‰ๅฟ…ๅกซๅ‚ๆ•ฐ,่ฟ›ๅ‚ๆ•ฐ่กฅ้ฝ;ๅฆๅˆ™็›ดๆŽฅๆ‰ง่กŒ | +| ๅ‚ๆ•ฐ่กฅ้ฝ็•Œ้ขๆŒ‰ โŒ˜โ†ต | ็›ดๆŽฅๆ‰ง่กŒ(่ทณ่ฟ‡ "โœ“ ๆ‰ง่กŒ" ๆŒ‰้’ฎ) | +| ไปปไฝ•ๆ—ถๅˆปๆŒ‰ esc | ๅ…ณ้ขๆฟ,ๅ…‰ๆ ‡ๅ›žๅˆฐ่พ“ๅ…ฅๆก†,ไฟ็•™ๅทฒ่พ“ๅ…ฅ็š„ `/xxx` ๆ–‡ๆœฌ | +| ๆŒ‰ โ†’ ๆˆ–็‚น "[โ†’ ๅธฎๅŠฉ]" | ๅœจ่Šๅคฉๆตๆ’ๅ…ฅๅ‘ฝไปค็š„ๅฎŒๆ•ด Markdown ๅธฎๅŠฉ | + +## ๅ‘ฝไปคๆฅๆบ + +ๅ‘ฝไปค้ขๆฟ็š„ๆธ…ๅ• = `tools/cli/commands/` ็›ฎๅฝ•ๆ‰ซๆ็ป“ๆžœใ€‚ๆ–ฐๅŠ  CLI ๅญๅ‘ฝไปค่‡ชๅŠจๅ‡บ็Žฐ,ๆ— ้œ€ GUI ๆ”นๅŠจใ€‚ + +ๆฏไธชๅ‘ฝไปค็š„ๅ…ƒๆ•ฐๆฎ(ๆ่ฟฐ / ๅ‚ๆ•ฐๅฎšไน‰)ไปŽๅฏนๅบ” `.js` ๆ–‡ไปถ็š„ JSDoc ๅคด้ƒจๆๅ–ใ€‚ + +## ๅކๅฒ + +- "๐Ÿ”ฅ ๆœ€่ฟ‘ไฝฟ็”จ" ๆŒไน…ๅŒ–ๅˆฐๆœฌๅœฐ,ๆŒ‰ไฝฟ็”จๆฌกๆ•ฐๆŽ’ๅบ,Top 5 +- "๐Ÿ“‹ ๅ…จ้ƒจๅ‘ฝไปค" ๆŒ‰ๅญ—ๆฏ้กบๅบ diff --git a/docs/design/ui/wireframes/05-artifact-panel-expanded.md b/docs/design/ui/wireframes/05-artifact-panel-expanded.md new file mode 100644 index 0000000..b786327 --- /dev/null +++ b/docs/design/ui/wireframes/05-artifact-panel-expanded.md @@ -0,0 +1,88 @@ +# Wireframe 05 ยท Artifact ๅ…จๅฑ่ฏฆๆƒ… + +> ๅœจไธป่ง†ๅ›พๅณๆ ็‚น Artifact โ†’ ๅ…จๅฑๅฑ•ๅผ€ใ€‚ๅฏ็œ‹ๅฎŒๆ•ดๅ†…ๅฎนใ€่ทณ่ฝฌใ€ๅฏผๅ‡บใ€็‰ˆๆœฌๅฏนๆฏ”ใ€‚ + +## ้ป˜่ฎคๅฑ•ๅผ€็Šถๆ€ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ—€ ่ฟ”ๅ›žไผš่ฏ prd-v1.2.md [๐Ÿ“‹ ๅคๅˆถ] [๐Ÿ’พ ๅฏผๅ‡บ] โ”‚ +โ”‚ 132 ่กŒ ยท 2.1KB โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ—€ ๅœจ 6 ไธช Artifact ไธญๅˆ‡ๆข โ–ถ v3 (ๆœ€ๆ–ฐ) โ–พ ๐Ÿ“œ ๅކๅฒ (3) โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ ๐Ÿ—‚ ๅคง็บฒ โ”‚ 1 # PRD - ็ฆป่Œๆต็จ‹ v1.2 โ”‚ +โ”‚ โ”‚ 2 โ”‚ +โ”‚ โ–พ 1. ๆฆ‚่ฟฐ โ”‚ 3 ## 1. ๆฆ‚่ฟฐ โ”‚ +โ”‚ 1.1 ่ƒŒๆ™ฏ โ”‚ 4 โ”‚ +โ”‚ 1.2 ็›ฎๆ ‡ โ”‚ 5 ### 1.1 ่ƒŒๆ™ฏ โ”‚ +โ”‚ โ–พ 2. ็”จๆˆทไธŽๅœบๆ™ฏ โ”‚ 6 ๅ…ฌๅธ็›ฎๅ‰็ฆป่Œๆต็จ‹ๆถ‰ๅŠ 5 ไธช้ƒจ้—จ(HR / ่ดขๅŠก / IT / โ”‚ +โ”‚ 2.1 ่ง’่‰ฒ โ”‚ 7 ไธŠ็บง / ่กŒๆ”ฟ),ๅนณๅ‡ๅค„็†ๆ—ถ้•ฟ 7-10 ๅทฅไฝœๆ—ฅ,ๅ‘˜ๅทฅๅ้ฆˆ โ”‚ +โ”‚ 2.2 ไธปๆต็จ‹ โ”‚ 8 ๆ–ญ็‚นๅคšใ€‚ โ”‚ +โ”‚ โ–พ 3. ๅŠŸ่ƒฝ้œ€ๆฑ‚ โ”‚ 9 โ”‚ +โ”‚ 3.1 ๅŠŸ่ƒฝๆธ…ๅ• โ”‚ 10 ### 1.2 ็›ฎๆ ‡ โ”‚ +โ”‚ 3.2 ้ชŒๆ”ถๆ ‡ๅ‡† โ”‚ 11 - ็ซฏๅˆฐ็ซฏๅค„็†ๆ—ถ้•ฟ โ‰ค 3 ๅทฅไฝœๆ—ฅ โ”‚ +โ”‚ โ–ถ 4. ้žๅŠŸ่ƒฝ้œ€ๆฑ‚ โ”‚ 12 - ๅ…ณ้”ฎๆญฅ้ชค้€ๆ˜Žๅฏ่ฟฝๆบฏ โ”‚ +โ”‚ โ–ถ 5. ๆ•ฐๆฎ่ง„ๅˆ™ โ”‚ 13 - ๅ‘˜ๅทฅ NPS โ‰ฅ 60 โ”‚ +โ”‚ โ–ถ 6. ไบคไบ’่ฎพ่ฎก โ”‚ 14 โ”‚ +โ”‚ โ–ถ 7. ้ฃŽ้™ฉ โ”‚ 15 ## 2. ็”จๆˆทไธŽๅœบๆ™ฏ โ”‚ +โ”‚ โ–ถ 8. ๅ˜ๆ›ดๅކๅฒ โ”‚ 16 โ”‚ +โ”‚ โ”‚ ... โ”‚ +โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ โ”‚ +โ”‚ ๐Ÿ“Š ๅ…ƒๆ•ฐๆฎ โ”‚ โ”‚ +โ”‚ ็”Ÿๆˆ: 11:34 โ”‚ โ”‚ +โ”‚ ไฟฎ่ฎข: 4 ๆฌก โ”‚ โ”‚ +โ”‚ ๆฅๆบ: ไผš่ฏใ€Œ้œ€ๆฑ‚่ฏ„ๅฎกใ€โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ ๐Ÿ“ ่ทณ่ฝฌๅˆฐ็”Ÿๆˆๆ—ถ็š„ๅฏน่ฏ ๐Ÿ“ค ๅ‘้€ๅˆฐ Jira โœจ AI ้‡ๆ–ฐๆถฆ่‰ฒ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ็‰ˆๆœฌๅฏนๆฏ”ๆจกๅผ(็”จๆˆท้€‰ v3 vs v2) + +``` +โ”‚ โ—€ ่ฟ”ๅ›žไผš่ฏ prd-v1.2.md v2 โ†” v3 [โ‡† ๅๅ‘] [ๅˆๅนถ โ–พ] โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ v2 (3 ๅฐๆ—ถๅ‰) โ”‚ v3 (ๆœ€ๆ–ฐ ยท 11 ๅˆ†้’Ÿๅ‰) โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ 1 # PRD โ”‚ 1 # PRD โ”‚ +โ”‚ 2 โ”‚ 2 โ”‚ +โ”‚ - 3 ็›ฎๆ ‡: โ”‚ + 3 ็›ฎๆ ‡(้‡ๅŒ–): โ”‚ +โ”‚ - 4 ๅฟซ้€ŸๅฎŒๆˆ โ”‚ + 4 - ็ซฏๅˆฐ็ซฏๆ—ถ้•ฟ โ‰ค 3 ๅทฅไฝœๆ—ฅ โ”‚ +โ”‚ โ”‚ + 5 - ๅ‘˜ๅทฅ NPS โ‰ฅ 60 โ”‚ +โ”‚ 6 โ”‚ 6 โ”‚ +โ”‚ 7 ## ็”จๆˆท โ”‚ 7 ## ็”จๆˆท โ”‚ +โ”‚ ... โ”‚ ... โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๅ…ณ้”ฎไบคไบ’ + +| ๅ…ƒ็ด  | ่กŒไธบ | +|------|------| +| โ—€ ่ฟ”ๅ›žไผš่ฏ | ๅ…ณ้—ญๅ…จๅฑ,ๅ›žๅˆฐไธป่ง†ๅ›พไธ‰ๆ ๅธƒๅฑ€ | +| ๐Ÿ“‹ ๅคๅˆถ | ๅคๅˆถๅ…จๆ–‡ๅˆฐๅ‰ช่ดดๆฟ | +| ๐Ÿ’พ ๅฏผๅ‡บ | ๅผนๆ ผๅผ้€‰ๆ‹ฉ: `.md`(ๅŽŸๅง‹) / `.pdf`(ๆธฒๆŸ“ๅŽ) / `.html`(ๅตŒๅ…ฅๆ ทๅผ) | +| โ—€โ–ถ ๅˆ‡ๆข Artifact | ๅœจๆœฌไผš่ฏๆ‰€ๆœ‰ Artifact ้—ดๅพช็Žฏๅˆ‡ๆข | +| ็‰ˆๆœฌไธ‹ๆ‹‰ | ้€‰ๅކๅฒ็‰ˆๆœฌ็œ‹,้€‰ "ๅฏนๆฏ” v2 โ†” v3" ่ฟ›ๅ…ฅๅฏนๆฏ”ๆจกๅผ | +| ๅคง็บฒ | ็‚นๅ‡ป่ทณๅˆฐๅฏนๅบ”่กŒ,้ผ ๆ ‡ hover ๆ˜พ็คบ่กŒๅท | +| ๐Ÿ“ ่ทณ่ฝฌๅˆฐ็”Ÿๆˆๆ—ถๅฏน่ฏ | ๅ…ณๅ…จๅฑ + ๆปšๅŠจ่Šๅคฉๅˆฐ็”Ÿๆˆ่ฟ™ไธช artifact ็š„้‚ฃๆก AI ๅ›žๅค | +| ๐Ÿ“ค ๅ‘้€ๅˆฐ Jira | ๅผน Jira ้›†ๆˆๅฏน่ฏๆก†(Project / Type / Summary ้ข„ๅกซ) | +| โœจ AI ้‡ๆ–ฐๆถฆ่‰ฒ | ๅœจ่Šๅคฉ้‡Œๆ’ๅ…ฅ prompt "่ฏทไผ˜ๅŒ–ไปฅไธ‹ Artifact: ..." ๅนถ้™„ๅธฆ | +| ๅˆๅนถ(ๅฏนๆฏ”ๆจกๅผ) | ้€‰ "็”จ v3 ๆ›ฟๆข v2 / ้€‰ๅŒบๅˆๅนถ / ๅˆ›ๅปบๆ–ฐ็‰ˆๆœฌ" | + +## ๅคง็บฒ็”Ÿๆˆ + +- Markdown: ่‡ชๅŠจไปŽ `#`-`####` ๆŠฝๅ– +- JSON / YAML: ๆŠฝ้กถๅฑ‚ keys +- ไปฃ็ : ๆŠฝ function / class / export +- ๅ…ถไป–: ๆ˜พ็คบ "ๆ— ๅคง็บฒ" + +## ๅ…ƒๆ•ฐๆฎ + +| ๅญ—ๆฎต | ๆฅๆบ | +|------|------| +| ็”Ÿๆˆ | AI ็ฌฌไธ€ๆฌก่พ“ๅ‡บ่ฟ™ไธช artifact ็š„ๆ—ถ้—ด | +| ไฟฎ่ฎข | ๅŽ็ปญ AI ๆ”น/็”จๆˆทๆ”น็š„ๆฌกๆ•ฐ | +| ๆฅๆบ | ไผš่ฏๅ + ้“พๆŽฅ(็‚นๅ‡ปๅ…ณๅ…จๅฑ่ทณๅˆฐๅฏน่ฏ) | diff --git a/docs/design/ui/wireframes/06-provider-switcher.md b/docs/design/ui/wireframes/06-provider-switcher.md new file mode 100644 index 0000000..63dcaa6 --- /dev/null +++ b/docs/design/ui/wireframes/06-provider-switcher.md @@ -0,0 +1,94 @@ +# Wireframe 06 ยท ไพ›ๅบ”ๅ•†ๅˆ‡ๆขๆตฎๅฑ‚ + +> ้กถๆ ็‚น `[Anthropic โ–พ]` ๆˆ–ๆŒ‰ `โŒ˜โ‡งP` / `Ctrl+Shift+P` ่งฆๅ‘ใ€‚ + +## ๆตฎๅฑ‚ + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ โšก ๅˆ‡ๆขไพ›ๅบ”ๅ•† โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ๅฝ“ๅ‰ไผš่ฏ โ”‚ + โ”‚ โ— Anthropic ๅฎ˜ๆ–น โ”‚ + โ”‚ opus ยท 156k / 200k tok ๅทฒ็”จ โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ๅฏๅˆ‡ๆขๅˆฐ โ”‚ + โ”‚ โ–บ โ—‹ AWS Bedrock โ”‚ + โ”‚ anthropic.claude-opus-4-v1 โ”‚ + โ”‚ โœ… 220ms โ”‚ + โ”‚ โ”‚ + โ”‚ โ—‹ Google Vertex โ”‚ + โ”‚ claude-opus-4@vertex โ”‚ + โ”‚ โš ๏ธ ๆœชๆต‹่ฟžๆŽฅ โ”‚ + โ”‚ โ”‚ + โ”‚ โ—‹ ็ฌฌไธ‰ๆ–นไปฃ็† โ”‚ + โ”‚ claude-3-opus (proxy.example.com) โ”‚ + โ”‚ โŒ ไธŠๆฌกๅคฑ่ดฅ โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ + โ”‚ โš ๏ธ ๅˆ‡ๆขไผšไธขๅคฑๅฝ“ๅ‰ไผš่ฏ็š„ไธŠไธ‹ๆ–‡ โ”‚ + โ”‚ (ๆ–ฐไพ›ๅบ”ๅ•†ๆ— ๆณ•็œ‹ๅˆฐๅކๅฒๆถˆๆฏ) โ”‚ + โ”‚ โ”‚ + โ”‚ [โœ“] ๅœจๆ–ฐไผš่ฏไธญๅˆ‡ๆข(ๆŽจ่) โ”‚ + โ”‚ [ ] ๅœจๅฝ“ๅ‰ไผš่ฏไธญๅˆ‡ๆข(้ซ˜็บง) โ”‚ + โ”‚ โ”‚ + โ”‚ esc ๅ–ๆถˆ โ†ต ๅˆ‡ๆข โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๅˆ‡ๆข็กฎ่ฎค - ๅœจๅฝ“ๅ‰ไผš่ฏไธญๅˆ‡ๆข + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ โš ๏ธ ๅˆ‡ๆข็กฎ่ฎค โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ โ”‚ + โ”‚ ไฝ ๆญฃๅœจๅˆ‡ๆขไพ›ๅบ”ๅ•†: โ”‚ + โ”‚ Anthropic ๅฎ˜ๆ–น โ†’ AWS Bedrock โ”‚ + โ”‚ โ”‚ + โ”‚ ๅฝฑๅ“: โ”‚ + โ”‚ โ€ข ๆ–ฐไพ›ๅบ”ๅ•†็œ‹ไธๅˆฐๆญคไผš่ฏ็š„ 156k tokens ๅކๅฒ โ”‚ + โ”‚ โ€ข ๅฏ่ƒฝๅฏผ่‡ดๅ›žๅคๅ็ฆปๅŽŸ่ฏ้ข˜ โ”‚ + โ”‚ โ€ข ๅฏ่ƒฝไบง็”Ÿ้ขๅค–่ดน็”จ(้‡ๆ–ฐ่ฏปไธŠไธ‹ๆ–‡) โ”‚ + โ”‚ โ”‚ + โ”‚ ๆŽจ่: ็”จ "ๅœจๆ–ฐไผš่ฏไธญๅˆ‡ๆข" โ”‚ + โ”‚ โ”‚ + โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ + โ”‚ ไป่ฆ็ปง็ปญ? ่พ“ๅ…ฅ "ๅˆ‡ๆข" ็กฎ่ฎค โ”‚ + โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ + โ”‚ โ”‚ โ”‚ โ”‚ + โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ + โ”‚ โ”‚ + โ”‚ ๅ–ๆถˆ ็กฎ่ฎค(็ฐ่‰ฒ,้œ€่พ“ๅ…ฅ) โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๅ…ณ้”ฎไบคไบ’ + +| ๅ…ƒ็ด  | ่กŒไธบ | +|------|------| +| ๅฝ“ๅ‰ไพ›ๅบ”ๅ•†ๆ—็š„ โ— | ไธๅฏ้€‰(ๅทฒ้€‰ไธญ) | +| ็Šถๆ€ๅพฝ็ซ  | ๅฎžๆ—ถๅๆ˜ ไธŠๆฌก่ฟžๆŽฅ็ป“ๆžœใ€‚็‚นๅ‡ปๅพฝ็ซ ้‡ๆต‹่ฟžๆŽฅ | +| ้ป˜่ฎค "ๅœจๆ–ฐไผš่ฏไธญๅˆ‡ๆข" | ๅฎ‰ๅ…จ้€‰้กน,90% ็”จๆˆท็”จ่ฟ™ไธช | +| "ๅœจๅฝ“ๅ‰ไผš่ฏไธญๅˆ‡ๆข" | ่ฟ›ๅ…ฅไบŒๆฌก็กฎ่ฎค,่ฆๆฑ‚่พ“ๅ…ฅ "ๅˆ‡ๆข" ็กฎ่ฎค | +| esc | ๅ…ณๆตฎๅฑ‚,ๆ— ๆ“ไฝœ | +| ๆปš่ฝฎ / โ†‘โ†“ | ๅœจๅฏๅˆ‡ๆขๅˆ—่กจไธญๅฏผ่ˆช | +| โ†ต | ๆŒ‰ๅ‹พ้€‰้กนๆ‰ง่กŒ | + +## ๅˆ‡ๆขๅŽ็š„่ง†่ง‰ๅ้ฆˆ + +- ้กถๆ ไพ›ๅบ”ๅ•†ๅ 0.5s ๆทกๅ…ฅๆทกๅ‡บๆ›ดๆ–ฐ +- ไธญๆ ๆ ‡้ข˜ๆ›ดๆ–ฐไธบๆ–ฐไพ›ๅบ”ๅ•† + ๆจกๅž‹ +- ๅœจ่Šๅคฉๆตๆ’ๅ…ฅ "โš™ 11:45 ยท ๅทฒๅˆ‡ๆขๅˆฐ AWS Bedrock" ็ณป็ปŸๆถˆๆฏ + +## ๆฒกๆœ‰ๅฏๅˆ‡ๆขไพ›ๅบ”ๅ•†ๆ—ถ + +``` + โ”‚ ๅฝ“ๅ‰ไผš่ฏ โ”‚ + โ”‚ โ— Anthropic ๅฎ˜ๆ–น โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ๆ— ๅ…ถไป–ๅฏ็”จไพ›ๅบ”ๅ•† โ”‚ + โ”‚ โ”‚ + โ”‚ [+ ๆทปๅŠ ไพ›ๅบ”ๅ•†] โ†’ ่ทณๅˆฐ่ฎพ็ฝฎ Provider tab โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` diff --git a/docs/design/ui/wireframes/07-search-overlay.md b/docs/design/ui/wireframes/07-search-overlay.md new file mode 100644 index 0000000..594b8d0 --- /dev/null +++ b/docs/design/ui/wireframes/07-search-overlay.md @@ -0,0 +1,90 @@ +# Wireframe 07 ยท ๅ…จๅฑ€ๆœ็ดขๆตฎๅฑ‚ + +> `โŒ˜K` / `Ctrl+K` ่งฆๅ‘ใ€‚Spotlight ้ฃŽๆ ผๅ…จๅฑ€ๆœ็ดขใ€‚ + +## ้ป˜่ฎค็Šถๆ€(ๆœช่พ“ๅ…ฅ) + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ ๐Ÿ” ๆœ็ดขไผš่ฏใ€ๆถˆๆฏใ€Artifact ๆˆ–ๅ‘ฝไปค... โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ๆœ€่ฟ‘่ฎฟ้—ฎ โ”‚ + โ”‚ ๐Ÿ“ ้œ€ๆฑ‚่ฏ„ๅฎก - ็ฆป่Œๆต็จ‹ (ไผš่ฏ ยท 11 ๅˆ†้’Ÿๅ‰) โ”‚ + โ”‚ ๐Ÿ“ Bug-1024 (ไผš่ฏ ยท 3 ๅฐๆ—ถๅ‰) โ”‚ + โ”‚ ๐Ÿ“„ prd-v1.2.md (Artifact ยท 11 ๅˆ†ๅ‰) โ”‚ + โ”‚ ๐Ÿ“ ๅบฆ้‡ๅ‘จๆŠฅ (ไผš่ฏ ยท ๆ˜จๅคฉ) โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ๅธธ็”จๅ‘ฝไปค โ”‚ + โ”‚ โš™ ่ฎพ็ฝฎ โŒ˜, โ”‚ + โ”‚ โš™ ๅˆ‡ๆขไพ›ๅบ”ๅ•† โŒ˜โ‡งP โ”‚ + โ”‚ โš™ ๆ–ฐๅปบไผš่ฏ โŒ˜N โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ โ†‘โ†“ ้€‰ๆ‹ฉ โ†ต ๆ‰“ๅผ€ esc ๅ…ณ้—ญ [็ญ›้€‰ โŒƒ โ†’] โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ่พ“ๅ…ฅๅ…ณ้”ฎ่ฏๅŽ(็”จๆˆท่พ“ๅ…ฅ "PRD") + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ ๐Ÿ” PRD โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ๐Ÿ“ ไผš่ฏ (3) โ”‚ + โ”‚ โ–บ ้œ€ๆฑ‚่ฏ„ๅฎก - ็ฆป่Œๆต็จ‹ (ไปŠๅคฉ 11:32) โ”‚ + โ”‚ ...ๅธฎๆˆ‘ๆŠŠ prd-v1.2.md ๆ‹†ๆˆ user story... โ”‚ + โ”‚ โ”‚ + โ”‚ ไบงๅ“่ฏ„ๅฎก - ๆ”ฏไป˜ไผ˜ๅŒ– (4-15) โ”‚ + โ”‚ ...่ฟ™ไธช PRD ่ฟ˜้œ€่ฆ่กฅๅ……้žๅŠŸ่ƒฝ... โ”‚ + โ”‚ โ”‚ + โ”‚ ๐Ÿ“„ Artifacts (2) โ”‚ + โ”‚ prd-v1.2.md (132 ่กŒ) โ”‚ + โ”‚ # PRD - ็ฆป่Œๆต็จ‹ v1.2 ... โ”‚ + โ”‚ โ”‚ + โ”‚ prd-payment-v0.3.md (89 ่กŒ) โ”‚ + โ”‚ # PRD - ๆ”ฏไป˜ไผ˜ๅŒ– v0.3 ... โ”‚ + โ”‚ โ”‚ + โ”‚ โš™ ๅ‘ฝไปค (1) โ”‚ + โ”‚ /prd PRD ๆ ก้ชŒ + ๅฏๆต‹ๆ€ง โ”‚ + โ”‚ โ”‚ + โ”‚ ๐Ÿ’ฌ ๆถˆๆฏ (8 ๆกๅŒน้…) [ๅฑ•ๅผ€ โ†’] โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ esc ๅ…ณ้—ญ โ†ต ๆ‰“ๅผ€็ฌฌไธ€้กน โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ็ญ›้€‰ๆจกๅผ(็”จๆˆทๆŒ‰ โŒƒโ†’ ๆˆ–็‚น็ญ›้€‰) + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ ๐Ÿ” PRD ็ญ›้€‰: [โœ“ไผš่ฏ โœ“Artifact โœ—ๆถˆๆฏ โœ“ๅ‘ฝไปค] โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ๆ—ถ้—ด โ—ๅ…จ้ƒจ โ—‹ไปŠๅคฉ โ—‹ๆœฌๅ‘จ โ—‹ๆœฌๆœˆ โ—‹่‡ชๅฎšไน‰ โ”‚ + โ”‚ ไพ›ๅบ”ๅ•† [ๅ…จ้ƒจ โ–พ] โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ...(ๆœ็ดข็ป“ๆžœ,ๆŒ‰็ญ›้€‰ๆกไปถ่ฟ‡ๆปค)... โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๅ…ณ้”ฎไบคไบ’ + +| ๅ…ƒ็ด  | ่กŒไธบ | +|------|------| +| ่พ“ๅ…ฅๆก† | ่พ“ๅ…ฅๅณๆœ,300ms ้˜ฒๆŠ–ใ€‚็ฉบๆ—ถๆ˜พ็คบ "ๆœ€่ฟ‘่ฎฟ้—ฎ + ๅธธ็”จๅ‘ฝไปค" | +| ็ฑปๅž‹ๅˆ†็ป„ | ้ป˜่ฎค้กบๅบ ไผš่ฏ โ†’ Artifact โ†’ ๅ‘ฝไปค โ†’ ๆถˆๆฏ;ๆฏ็ป„ๆœ€ๅคš 3-5 ๆก,ๆœ‰ๆ›ดๅคšๆ—ถๆ˜พ็คบ "[ๅฑ•ๅผ€ โ†’]" | +| โ†‘โ†“ | ่ทจ็ป„ๅฏผ่ˆช | +| โ†ต | ๆ‰“ๅผ€้ซ˜ไบฎ้กน | +| โŒƒโ†’ | ่ฟ›/้€€็ญ›้€‰ๆจกๅผ | +| ๆœ็ดขๆถˆๆฏ | ๆ˜พ็คบๆถˆๆฏ็‰‡ๆฎต(ๅ…ณ้”ฎ่ฏ้ซ˜ไบฎ),็‚นๅ‡ป่ทณๅˆฐ่ฏฅๆถˆๆฏไฝ็ฝฎๅนถๆปšๅŠจ | +| esc | ๅ…ณๆตฎๅฑ‚ | +| Cmd+1/2/3/4 | ็›ดๆŽฅ่ทณๅˆฐ็ฌฌ N ้กน | + +## ๆœ็ดข็ฎ—ๆณ• + +- ไผš่ฏ/Artifact ๅ: ๅญไธฒๅŒน้… + ๆจก็ณŠๅŒน้… +- ๆถˆๆฏๅ†…ๅฎน: ๅ…จๆ–‡็ดขๅผ•(SQLite FTS5) +- ๅ‘ฝไปค: ๅ‘ฝไปคๅ + ๆ่ฟฐๆจก็ณŠๅŒน้… + +## ๆ€ง่ƒฝ + +- ๆœฌๅœฐ็ดขๅผ•,้ฆ–ๆฌกๅฏๅŠจๅปบ็ดขๅผ•(ๅŽๅฐไปปๅŠก,UI ไธ้˜ปๅกž) +- ่พ“ๅ…ฅๅˆฐ็ป“ๆžœๅ‡บ็Žฐ < 100ms (10000 ๆกไผš่ฏ่ง„ๆจก) diff --git a/docs/design/ui/wireframes/08-conversation-context-menu.md b/docs/design/ui/wireframes/08-conversation-context-menu.md new file mode 100644 index 0000000..b06b58e --- /dev/null +++ b/docs/design/ui/wireframes/08-conversation-context-menu.md @@ -0,0 +1,129 @@ +# Wireframe 08 ยท ไผš่ฏๅณ้”ฎ่œๅ• + ๆ”ถ่— + ๅˆ†็ป„ + +> ไพง่พนๆ ไผš่ฏๅณ้”ฎ / macOS Ctrl+็‚นๅ‡ป / ้•ฟๆŒ‰(่งฆๆ‘ธๆฟ)่งฆๅ‘ใ€‚ + +## ๅณ้”ฎ่œๅ• + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ โ—‹ Bug-1024 โ‹ฎ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ โ—‹ ้ƒจ็ฝฒ SOP โ”‚ โ†ๅณ้”ฎโ†’ โ”‚ โญ ๅŠ ๅ…ฅๆ”ถ่— โ”‚ + โ”‚ โ”‚ โ”‚ ๐Ÿ“Œ ็ฝฎ้กถ โ”‚ + โ”‚ โ”‚ โ”‚ โœ ้‡ๅ‘ฝๅ โŒ˜R โ”‚ + โ”‚ โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ + โ”‚ โ”‚ โ”‚ ๐Ÿ“‚ ็งปๅˆฐๅˆ†็ป„ โ–บ โ”‚ + โ”‚ โ”‚ โ”‚ โ€ข ๅทฅไฝœ โ”‚ + โ”‚ โ”‚ โ”‚ โ€ข ๅญฆไน  โ”‚ + โ”‚ โ”‚ โ”‚ โ€ข + ๆ–ฐๅปบๅˆ†็ป„... โ”‚ + โ”‚ โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ + โ”‚ โ”‚ โ”‚ ๐Ÿ“‹ ๅคๅˆถ้“พๆŽฅ โ”‚ + โ”‚ โ”‚ โ”‚ ๐Ÿ“ค ๅฏผๅ‡บไผš่ฏ โ”‚ + โ”‚ โ”‚ โ”‚ โ–ธ Markdown โ”‚ + โ”‚ โ”‚ โ”‚ โ–ธ JSON โ”‚ + โ”‚ โ”‚ โ”‚ โ–ธ ไป… Artifacts (.zip) โ”‚ + โ”‚ โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ + โ”‚ โ”‚ โ”‚ ๐Ÿ“Š ๆŸฅ็œ‹็ปŸ่ฎก (token / ๆ—ถ้•ฟ) โ”‚ + โ”‚ โ”‚ โ”‚ ๐Ÿ”„ ้‡็ฝฎไธŠไธ‹ๆ–‡ โ”‚ + โ”‚ โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ + โ”‚ โ”‚ โ”‚ ๐Ÿ—‘ ๅˆ ้™ค โŒ˜โŒซ โ”‚ + โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ้‡ๅ‘ฝๅๅ†…่”็ผ–่พ‘ + +``` + โ”‚ โ–ผ ไปŠๅคฉ (3) โ”‚ + โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ + โ”‚ โ”‚้œ€ๆฑ‚่ฏ„ๅฎก - ็ฆป่Œโ”‚ โ† ่พ“ๅ…ฅๆก†่Žทๅพ—็„ฆ็‚น,่“่‰ฒ่พนๆก† + โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ + โ”‚ โ—‹ Bug-1024 โ”‚ โ†ต ไฟๅญ˜ esc ๅ–ๆถˆ +``` + +## ๆ”ถ่—ไธŽ็ฝฎ้กถ + +ๆ”ถ่—็š„ไผš่ฏๆœ‰็‹ฌ็ซ‹ "โญ ๆ”ถ่—" ๅˆ†็ป„,ไปปไฝ•ๆ—ถๅ€™็ฝฎ้กถ,้กบๅบๆŒ‰ๆ”ถ่—ๆ—ถ้—ดๅ€’ๅบ: + +``` + โ”‚ โ–ผ ๆ”ถ่— โญ (2) โ”‚ + โ”‚ โญ ๆ•…้šœๅค็›˜ - DB ๆ…ข โ”‚ โ† ๆ”ถ่—ๅ›พๆ ‡ + ๅง‹็ปˆๅœจๆœ€ไธŠ + โ”‚ โญ ADR ๆจกๆฟ โ”‚ + โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ + โ”‚ โ–ผ ไปŠๅคฉ (3) โ”‚ + โ”‚ ... โ”‚ +``` + +็ฝฎ้กถ(๐Ÿ“Œ)ๅชๅœจๆ‰€ๅœจๅˆ†็ป„ๅ†…็ฝฎ้กถ,ไธ่ทจๅˆ†็ป„: + +``` + โ”‚ โ–ผ ไปŠๅคฉ (3) โ”‚ + โ”‚ ๐Ÿ“Œ ็ดงๆ€ฅ Bug ๆŽ’ๆŸฅ โ”‚ โ† ็ฝฎ้กถ,ๅœจ"ไปŠๅคฉ"็ป„้ฆ–ไฝ + โ”‚ โ—‹ ้œ€ๆฑ‚่ฏ„ๅฎก โ”‚ + โ”‚ โ—‹ ้ƒจ็ฝฒ SOP โ”‚ +``` + +## ๅˆ†็ป„็ฎก็† + +ๆ–ฐๅปบๅˆ†็ป„ๅผนๅฐ็ช—: + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ ๆ–ฐๅปบๅˆ†็ป„ โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ ๅ็งฐ [____________________]โ”‚ + โ”‚ ้ขœ่‰ฒ โ— โ— โ— โ— โ— โ— โ”‚ + โ”‚ ็บข ๆฉ™ ้ป„ ็ปฟ ่“ ็ดซ โ”‚ + โ”‚ โ”‚ + โ”‚ ๅ–ๆถˆ ๅˆ›ๅปบ โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +ๅˆ†็ป„ๅœจไพง่พนๆ ็š„่ง†่ง‰: + +``` + โ”‚ โ–ผ ๅทฅไฝœ โ— (5) โ”‚ โ† ๅˆ†็ป„่‰ฒ็‚น + โ”‚ โ—‹ ้œ€ๆฑ‚่ฏ„ๅฎก โ”‚ + โ”‚ โ—‹ Bug-1024 โ”‚ + โ”‚ ... โ”‚ + โ”‚ โ–ผ ๅญฆไน  โ— (2) โ”‚ + โ”‚ โ—‹ Rust ๅ…ฅ้—จ โ”‚ +``` + +## ๅคš้€‰(โŒ˜ ็‚นๅ‡ป / Shift ็‚นๅ‡ป) + +``` + โ”‚ โ–ผ ไปŠๅคฉ (3) โ”‚ + โ”‚ โ˜‘ ้œ€ๆฑ‚่ฏ„ๅฎก ๐Ÿ”ต โ”‚ โ† ๅคš้€‰,่“่‰ฒ้ซ˜ไบฎ + โ”‚ โ˜‘ Bug-1024 ๐Ÿ”ต โ”‚ + โ”‚ โ—‹ ้ƒจ็ฝฒ SOP โ”‚ + โ”‚ โ”‚ + โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ + โ”‚ ๐Ÿ“ฆ ๅทฒ้€‰ 2 ้กน [ๆ“ไฝœ โ–พ] โ”‚ โ† ๅบ•้ƒจๆ“ไฝœๆก + โ”‚ โ€ข ็งปๅˆฐๅˆ†็ป„ โ”‚ + โ”‚ โ€ข ๅŠ ๅ…ฅๆ”ถ่— โ”‚ + โ”‚ โ€ข ๆ‰น้‡ๅฏผๅ‡บ โ”‚ + โ”‚ โ€ข ๅˆ ้™ค้€‰ไธญ โ”‚ +``` + +## ๅˆ ้™คไบŒๆฌก็กฎ่ฎค + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ โš ๏ธ ๅˆ ้™คไผš่ฏ โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ โ”‚ + โ”‚ ไผš่ฏใ€Œ้œ€ๆฑ‚่ฏ„ๅฎก - ็ฆป่Œๆต็จ‹ใ€ โ”‚ + โ”‚ ๅ’Œๅฎƒ็š„ 6 ๆกๆถˆๆฏๅฐ†่ขซๅˆ ้™ค โ”‚ + โ”‚ โ”‚ + โ”‚ Artifact ไผšไธ€่ตทๅˆ ้™คๅ—? โ”‚ + โ”‚ โ— ไธ€่ตทๅˆ  (ๆŽจ่) โ”‚ + โ”‚ โ—‹ ไฟ็•™ Artifact (็งปๅˆฐๅ›žๆ”ถ็ซ™) โ”‚ + โ”‚ โ”‚ + โ”‚ ๅ–ๆถˆ ๅˆ ้™ค โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## ๅ…ณ้”ฎไบคไบ’ + +- ๅˆ ้™คๆœ‰ 30 ๅคฉๅ›žๆ”ถ็ซ™(่ฎพ็ฝฎๅฏๅ…ณ) +- ็งปๅˆฐๅˆ†็ป„ๆ”ฏๆŒๆ‹–ๆ‹ฝ +- ้‡ๅ‘ฝๅๆ”ฏๆŒ Tab ่‡ชๅŠจ่กฅๅ…จ(ๅŸบไบŽไผš่ฏๅ†…ๅฎน็”Ÿๆˆ็š„ๅ€™้€‰) diff --git a/docs/design/ui/wireframes/09-empty-states.md b/docs/design/ui/wireframes/09-empty-states.md new file mode 100644 index 0000000..9c04bf6 --- /dev/null +++ b/docs/design/ui/wireframes/09-empty-states.md @@ -0,0 +1,133 @@ +# Wireframe 09 ยท ็ฉบ็Šถๆ€ๅˆ้›† + +> ๅ„ๅœบๆ™ฏไธ‹็š„"ๆ— ๅ†…ๅฎน"ๅฑ•็คบใ€‚ๆฏไธช็ฉบ็Šถๆ€้ƒฝ่ฆ็ป™็”จๆˆท**ไธ‹ไธ€ๆญฅ่กŒๅŠจ**,ไธ่ƒฝๅชๆ˜ฏ็ฉบ็™ฝ้กตใ€‚ + +## 9.1 ้ฆ–ๆฌกไฝฟ็”จ ยท ๆ— ไปปไฝ•ไผš่ฏ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ EP Code AI [ๆ— ไพ›ๅบ”ๅ•† โš ๏ธ] โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ ๐Ÿ” ๆœ็ดข... โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ๐Ÿ‘‹ ๆฌข่ฟŽ โ”‚ +โ”‚ ๆ— ไผš่ฏ โ”‚ โ”‚ +โ”‚ โ”‚ ๅผ€ๅง‹ไฝ ็š„็ฌฌไธ€ไธชไผš่ฏ โ”‚ +โ”‚ โ”‚ Claude ไผšๅœจ่ฟ™้‡Œๅ’Œไฝ ๅไฝœ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ โ”‚ โœจ ๆ–ฐๅปบ็ฌฌไธ€ไธชไผš่ฏ โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ โŒ˜N โ”‚ โ”‚ +โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ๆˆ–่€…: โ”‚ +โ”‚ โ”‚ ๐Ÿ“š ๆŸฅ็œ‹ 5 ๅˆ†้’Ÿๆ•™็จ‹ โ”‚ +โ”‚ โ”‚ ๐Ÿ“‹ ็”จ / ่ฐƒๅ‘ฝไปค (ๆ— ้œ€ไผš่ฏ) โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ + ๆ–ฐไผš่ฏ โŒ˜N โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## 9.2 ๅทฒๆœ‰ไผš่ฏ ยท ๆฒก้€‰ไธญไปปไฝ•ไผš่ฏ + +``` +โ”‚ โ”‚ โ”‚ +โ”‚ โ–ผ ไปŠๅคฉ (3) โ”‚ โ”‚ +โ”‚ โ—‹ ้œ€ๆฑ‚่ฏ„ๅฎก โ”‚ ๐Ÿ“‚ ้€‰ๆ‹ฉไธ€ไธชไผš่ฏ โ”‚ +โ”‚ โ—‹ Bug-1024 โ”‚ โ”‚ +โ”‚ โ—‹ ้ƒจ็ฝฒ SOP โ”‚ ็‚นๅทฆไพงๅˆ—่กจ,ๆˆ–: โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โŒ˜N ๆ–ฐๅปบไผš่ฏ โ”‚ +โ”‚ โ”‚ โŒ˜K ๅ…จๅฑ€ๆœ็ดข โ”‚ +โ”‚ โ”‚ / ๅ‘ฝไปค้ขๆฟ โ”‚ +``` + +## 9.3 ๆ–ฐไผš่ฏ ยท ่ฟ˜ๆฒกๅ‘ไปปไฝ•ๆถˆๆฏ + +``` +โ”‚ โ”‚ ไผš่ฏ: ใ€Œๆœชๅ‘ฝๅไผš่ฏใ€ ๐Ÿ“Œ โ‹ฎ โ”‚ +โ”‚ โ”‚ Anthropic Claude ยท opus โ”‚ +โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โœจ ๆ–ฐไผš่ฏ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ๅ‘ไธ€ๆกๆถˆๆฏๅผ€ๅง‹,ๆˆ–่ฏ•่ฏ•: โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ๐Ÿ’ก ๅธฎๆˆ‘ๆŠŠ่ฟ™ไปฝ PRD ๆ‹†ๆˆ user story โ”‚ +โ”‚ โ”‚ ๐Ÿ’ก review ่ฟ™ๆฎตไปฃ็ ,ๆ‰พ N+1 ๆŸฅ่ฏข โ”‚ +โ”‚ โ”‚ ๐Ÿ’ก ๆŠŠๆ˜จๅคฉ็š„ๆ•…้šœๅค็›˜ๆ•ด็†ๆˆ Jira issue โ”‚ +โ”‚ โ”‚ ๐Ÿ’ก ็ป™ๆˆ‘็”Ÿๆˆๆœฌๅ‘จๅบฆ้‡ๅ‘จๆŠฅ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ (็‚นๅ‡ป prompt ๅก็‰‡็›ดๆŽฅๅ‘้€,ๆˆ–่‡ช็”ฑ่พ“ๅ…ฅ) โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ [/] [๐Ÿ“Ž] [โšก opus] โŒ˜โ†ต โ”‚ +โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ โ”‚ ่พ“ๅ…ฅๆถˆๆฏ... โ”‚ โ”‚ +โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +``` + +> Prompt ๅก็‰‡ๆฅ่‡ชๆœ€่ฟ‘ 7 ๅคฉ็”จๆˆทๆถˆๆฏๆŠฝๅ–็š„ Top 4 ็ฑปๅˆซ + ็ณป็ปŸ้ป˜่ฎคๅปบ่ฎฎ(ไพ›ๅบ”ๅ•†ๆœช่ฟžๆ—ถๅชๆ˜พ้ป˜่ฎค) + +## 9.4 ๆœ็ดขๆ— ็ป“ๆžœ + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ ๐Ÿ” xxxyyyzzz โ”‚ + โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค + โ”‚ โ”‚ + โ”‚ ๐Ÿ˜ถ ๆฒกๆ‰พๅˆฐๅŒน้…็š„ๅ†…ๅฎน โ”‚ + โ”‚ โ”‚ + โ”‚ ่ฏ•่ฏ•: โ”‚ + โ”‚ โ€ข ๅ‡ๅฐ‘ๅ…ณ้”ฎ่ฏ้•ฟๅบฆ โ”‚ + โ”‚ โ€ข ๅˆ‡ๆขๆœ็ดข็ฑปๅž‹(ๅฝ“ๅ‰ๅชๆœ "ไผš่ฏ") โ”‚ + โ”‚ โ€ข ็”จๆจก็ณŠๆœ็ดข: ่พ“ๅ…ฅ fuz/ โ”‚ + โ”‚ โ”‚ + โ”‚ ๆˆ–่€…: โ”‚ + โ”‚ โœจ ็”จ่ฟ™ไธชๆŸฅ่ฏขๆ–ฐๅปบไธ€ไธชไผš่ฏ โ†’ "xxxyyyzzz" โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## 9.5 Artifact ้ขๆฟ ยท ๆ—  Artifact + +> ่ฟ™็งๆƒ…ๅ†ตไธ‹้ขๆฟ**ไธๆ˜พ็คบ**(ๆ•ดไธชๅณๆ ๅฎฝๅบฆๅ˜ 0,ไธญๆ  flex ๆ’‘ๆปก)ใ€‚ +> ้กถๆ ๅณไพงๅ‡บ็Žฐ "๐Ÿ“ฆ Artifacts (0)" ็ฐ่‰ฒๆŒ‰้’ฎ,็‚นๅผ€ๆ‰‹ๅŠจๅฑ•ๅผ€ใ€‚ + +## 9.6 ็ฝ‘็ปœๆ–ญๅผ€ / API ๅคฑ่ดฅ + +``` +โ”‚ โ”‚ ไผš่ฏ: ใ€Œ้œ€ๆฑ‚่ฏ„ๅฎกใ€ ๐Ÿ“Œ โ‹ฎ โ”‚ +โ”‚ โ”‚ Anthropic Claude ยท opus ยท โš ๏ธ ่ฟžๆŽฅๅคฑ่ดฅ โ”‚ +โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ ...ๅކๅฒๆถˆๆฏๆญฃๅธธๆ˜พ็คบ... โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โŒ 12:01 ๅ‘้€ๅคฑ่ดฅ: ็ฝ‘็ปœ่ถ…ๆ—ถ(10s) โ”‚ +โ”‚ โ”‚ [๐Ÿ”„ ้‡่ฏ•] [๐Ÿ“‹ ๅคๅˆถๆถˆๆฏ] [โš™ ๆฃ€ๆŸฅไพ›ๅบ”ๅ•†] โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ +โ”‚ โ”‚ โš ๏ธ ็ฝ‘็ปœๅผ‚ๅธธ,ๆถˆๆฏๅทฒๆš‚ๅญ˜ใ€‚ๆขๅคๅŽๅฐ†่‡ชๅŠจ้‡ๅ‘ โ”‚ +``` + +## 9.7 ไพ›ๅบ”ๅ•†ๆœช้…็ฝฎ + +``` +โ”‚ โ”‚ โš ๏ธ ๆœช้…็ฝฎไพ›ๅบ”ๅ•† โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ EP Code AI ้œ€่ฆ AI ไพ›ๅบ”ๅ•†ๆ‰่ƒฝๅทฅไฝœ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ โ”‚ ๐Ÿ”ง ็ซ‹ๅณ้…็ฝฎไพ›ๅบ”ๅ•† โ”‚ โ”‚ ๐Ÿ“š ๆŸฅ็œ‹ๆ”ฏๆŒ็š„ไพ›ๅบ”ๅ•† โ”‚ โ”‚ +โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ๅฝ“ๅ‰ๅช่ƒฝ็”จๆœฌๅœฐๅ‘ฝไปค(`/check` `/adr` `/metrics` ็ญ‰) โ”‚ +``` + +## ๅ…ณ้”ฎๅŽŸๅˆ™ + +| โŒ ไธ่ฆ | โœ… ่ฆ | +|--------|------| +| ๅชๆ˜พ็คบ "ๆš‚ๆ— ๆ•ฐๆฎ" | ๆ˜พ็คบ**ไธบไป€ไนˆๆฒกๆœ‰ + ไธ‹ไธ€ๆญฅๅšไป€ไนˆ** | +| ็”จๅคงๅ›พๆ ‡ๅ ๆปกๅฑ | ้€‚ๅบฆๅ›พๆ ‡ + ๆ˜Ž็กฎ CTA | +| ๆŠŠ็ฉบ็Šถๆ€ๅšๆˆ่ฅ้”€้กต | ไฟๆŒ็ฎ€ๆด,1-2 ไธชๆ ธๅฟƒ CTA + 1-2 ไธชๅค‡้€‰่ทฏๅพ„ | diff --git a/docs/design/ui/wireframes/10-env-status-bar.md b/docs/design/ui/wireframes/10-env-status-bar.md new file mode 100644 index 0000000..63910ee --- /dev/null +++ b/docs/design/ui/wireframes/10-env-status-bar.md @@ -0,0 +1,100 @@ +# Wireframe 10 ยท ๆŒไน…ๅŒ–็Žฏๅขƒๅฅๅบท็Šถๆ€ๆ  + +> ๆฐธ่ฟœๅœจไธป่ง†ๅ›พๆœ€ๅบ•้ƒจ 24px ้ซ˜ๅบฆใ€‚ไธ€็œผ่ƒฝ็œ‹ๅ‡บ็Žฏๅขƒๅฅๅบท + ็ฝ‘็ปœ็Šถๆ€ใ€‚ + +## ๅฅๅบท็Šถๆ€(ๅ…จ็ปฟ) + +``` +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โœ… ็Žฏๅขƒๆญฃๅธธ ยท Node v20 / Claude Code v1.2.3 โ— Anthropic ยท 240ms โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ†‘ โ†‘ + ๅทฆๅŠ ยท ็Žฏๅขƒไฟกๆฏ ๅณๅŠ ยท ็ฝ‘็ปœ/ไพ›ๅบ”ๅ•† +``` + +## ๅผ‚ๅธธ็Šถๆ€(็ŽฏๅขƒๆŸ้กนๅคฑ่ดฅ) + +``` +โ”‚ โš ๏ธ Claude Code ็ผบๅคฑ [โ–ถ ไฟฎๅค] โ— Anthropic ยท 240ms โ”‚ + โ†‘ ้ป„่‰ฒ้ซ˜ไบฎ โ†‘ ็ฝ‘็ปœไปๆญฃๅธธ +``` + +## ไธฅ้‡ๅผ‚ๅธธ(ๅ…จ็บข) + +``` +โ”‚ โŒ ็ŽฏๅขƒๆŸๅ [โ–ถ ไฟฎๅค] โ— ๆ–ญ็ฝ‘ [๐Ÿ”„ ้‡่ฏ•] โ”‚ + โ†‘ ็บข่‰ฒ่ƒŒๆ™ฏ โ†‘ ็บข่‰ฒ +``` + +## ๅŠ ่ฝฝไธญ็Šถๆ€ + +``` +โ”‚ โณ ๆฃ€ๆŸฅ็Žฏๅขƒไธญ... โณ ๆต‹่ฟžๆŽฅไธญ... โ”‚ +``` + +## hover ๅฑ•ๅผ€่ฏฆๆƒ… + +้ผ ๆ ‡ hover ๅœจๅทฆๅŠ,ๅผน tooltip ๆ˜พ็คบๅฎŒๆ•ดๅˆ—่กจ: + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ ็Žฏๅขƒๆฃ€ๆŸฅ โ”‚ + โ”‚ โœ… Node.js v20.10.0 โ”‚ + โ”‚ โœ… npm v10.2.3 โ”‚ + โ”‚ โœ… git v2.42.0 โ”‚ + โ”‚ โœ… Claude Code v1.2.3 โ”‚ + โ”‚ ไธŠๆฌกๆฃ€ๆŸฅ: 1 ๅˆ†้’Ÿๅ‰ โ”‚ + โ”‚ [โ–ถ ้‡ๆ–ฐๆฃ€ๆŸฅ] โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ†‘ +โ”‚ โœ… ็Žฏๅขƒๆญฃๅธธ ยท ... +``` + +hover ๅœจๅณๅŠ,ๅผน่ฟžๆŽฅ่ฏฆๆƒ…: + +``` + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ Anthropic ๅฎ˜ๆ–น โ”‚ + โ”‚ ็Šถๆ€: โœ… ๆญฃๅธธ โ”‚ + โ”‚ ๅปถ่ฟŸ: 240ms (10 ๆฌกๅนณๅ‡) โ”‚ + โ”‚ ๆœฌๆœˆ็”จ้‡: 2.3M tokens ยท $42 โ”‚ + โ”‚ [โ–ถ ๆต‹่ฟžๆŽฅ] [โš™ ๅˆ‡ๆข] โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ†‘ + โ— Anthropic ยท 240ms โ”‚ +``` + +## ็‚นๅ‡ป่กŒไธบ + +| ็‚นๅ‡ปๅŒบๅŸŸ | ่กŒไธบ | +|---------|------| +| ๅทฆๅŠ (็Žฏๅขƒ) | ๅผ‚ๅธธๆ—ถๅผนๆจกๆ€ไฟฎๅคๅฏน่ฏๆก†;ๆญฃๅธธๆ—ถๆ‰“ๅผ€"็Žฏๅขƒๆฃ€ๆŸฅ"้กต | +| `[โ–ถ ไฟฎๅค]` ๆŒ‰้’ฎ | ็›ดๆŽฅๅผ€ๅง‹ไธ€้”ฎไฟฎๅค(่ตฐ wizard ๆญฅ้ชค 2 ็š„้€ป่พ‘) | +| ๅณๅŠ (ไพ›ๅบ”ๅ•†) | ๅผนไพ›ๅบ”ๅ•†ๅˆ‡ๆขๆตฎๅฑ‚(wireframe-06) | +| `[๐Ÿ”„ ้‡่ฏ•]` | ็ซ‹ๅณ้‡ๆต‹่ฟžๆŽฅ | + +## ่ง†่ง‰่ง„่Œƒ + +- **้ซ˜ๅบฆ**: 24px(ๅ›บๅฎš) +- **ๅทฆๅณๅ†…่พน่ท**: 16px +- **่ƒŒๆ™ฏ**: ้ป˜่ฎคไธŽ็ช—ๅฃ่ƒŒๆ™ฏๅŒ;ๅผ‚ๅธธๆ—ถๅ˜ `Warning` / `Error` ๆต…่‰ฒ่ƒŒๆ™ฏ +- **ๅญ—ๅท**: 12px +- **ๅ›พๆ ‡**: ็”จ emoji,่ทจๅนณๅฐไธ€่‡ด + +## ไธๆ˜พ็คบ็Šถๆ€ๆ ็š„ๅœบๆ™ฏ + +- ๅ…จๅฑ Artifact ่ฏฆๆƒ…(wireframe-05) ๆ—ถ้š่— +- ่ฎพ็ฝฎ้กต(wireframe-03) ๆ—ถ้š่— +- ้ฆ–ๆฌกๅ‘ๅฏผ(wireframe-02) ๆ—ถ้š่— + +## ้€š็Ÿฅ้™็บง + +ๅฆ‚ๆžœ็ณป็ปŸ้€š็Ÿฅ(macOS Notification Center / Windows Toast / Linux D-Bus)่ขซ็ฆ: +- ไธฅ้‡้”™่ฏฏไปŽ้™้ป˜ๅ‡็บงไธบๅบ•้ƒจ banner(็Šถๆ€ๆ ไธŠๆ–นๆ’ๅ…ฅ,ๅฏๅ…ณ้—ญ) + +``` +โ”‚ โš ๏ธ Claude Code ่ฟ›็จ‹ๅดฉๆบƒ,ๆญฃๅœจ้‡ๅฏ... [่ฏฆๆƒ…] [โœ•] โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โŒ ็ŽฏๅขƒๆŸๅ [โ–ถ ไฟฎๅค] โ— ๆ–ญ็ฝ‘ [๐Ÿ”„ ้‡่ฏ•] โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +```