@atezer/figma-mcp-bridge 1.6.5 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/README.md +53 -20
- package/dist/core/plugin-bridge-server.d.ts +4 -0
- package/dist/core/plugin-bridge-server.d.ts.map +1 -1
- package/dist/core/plugin-bridge-server.js +36 -1
- package/dist/core/plugin-bridge-server.js.map +1 -1
- package/dist/local-plugin-only.js +1 -1
- package/dist/local.js +1 -1
- package/f-mcp-plugin/code.js +3 -3
- package/f-mcp-plugin/ui.html +315 -14
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -12,6 +12,28 @@ Bu dosya [Keep a Changelog](https://keepachangelog.com/tr/1.1.0/) bicimine uygun
|
|
|
12
12
|
|
|
13
13
|
Bu changelog'a ekleme oncesi surumlerin tam ayrintilari icin `git log` kullanilabilir.
|
|
14
14
|
|
|
15
|
+
## [1.7.0] - 2026-04-04 (guncelleme)
|
|
16
|
+
|
|
17
|
+
### Claude Code Destegi ve Test Raporu (YENi)
|
|
18
|
+
|
|
19
|
+
- **README: Claude Code kurulum bolumu eklendi.** `.mcp.json` dosyasi ile NPX tabanli config. `~/.claude/settings.json`'in MCP icin calismadigina dair uyari notu.
|
|
20
|
+
- **`.mcp.json` guncellendi:** Cursor'a ozel bash script yerine evrensel NPX config (hem Claude Code hem Cursor ile uyumlu).
|
|
21
|
+
- **`docs/TEST_REPORT.md` (YENi):** 46 aracin tamami test edildi (40 PASS, 4 beklenen Figma kisiti, 2 guvenlik nedeniyle SKIP). Free/Pro/Org/Enterprise plan bazli yetenek matrisi. Adim adim test rehberi.
|
|
22
|
+
|
|
23
|
+
## [1.7.0] - 2026-04-03
|
|
24
|
+
|
|
25
|
+
### Coklu Port + Otomatik AI Araci Tespiti (YENi)
|
|
26
|
+
|
|
27
|
+
- **Plugin coklu port baglantisi:** 5454-5470 arasini periyodik tarar (10s), bulunan tum bridge'lere sessizce baglanir.
|
|
28
|
+
- **AI araci otomatik tespiti:** Bridge parent process'ten (Claude, Cursor, Claude Code, Windsurf) veya `FIGMA_MCP_CLIENT_NAME` env var'dan otomatik tespit. Welcome mesajinda `clientName` gonderilir.
|
|
29
|
+
- **Port gecis UI:** ◀▶ ok tuslariyla bagli portlar arasi gecis. Status bar'da "Ready" + aktif port etiketi.
|
|
30
|
+
- **(i) info paneli:** Tiklaninca bagli portlar listesi acilir (● aktif ○ digerleri).
|
|
31
|
+
- **"Otomatik tara" butonu kaldirildi:** Coklu port bunu otomatik yapar.
|
|
32
|
+
- **SVG/PNG export duzeltmesi:** `batchExportNodes` handler + result case eklendi (timeout sorunu cozuldu).
|
|
33
|
+
- **Token disabled:** Token girildikten sonra input + sure secici disabled (sadece sil + yeniden ekle).
|
|
34
|
+
- **Responsive layout:** Icerik tasma onlendi, sabit genislik sadece yukseklik dinamik.
|
|
35
|
+
- **Plugin max height:** 420→700 (icerik kesilmez).
|
|
36
|
+
|
|
15
37
|
## [1.6.3] - 2026-04-03
|
|
16
38
|
|
|
17
39
|
### Dokumantasyon temizligi
|
package/README.md
CHANGED
|
@@ -22,22 +22,32 @@ Her şey **bilgisayarınızda** kalır. Tasarım verileriniz internete gönderil
|
|
|
22
22
|
- **Figma API token tüketmez\*** — Varsayılan olarak plugin üzerinden çalışır, Figma API kotanızı kullanmaz
|
|
23
23
|
- **Veri güvenliği** — Tasarım verisi sadece kendi bilgisayarınızda kalır (Zero Trust)
|
|
24
24
|
- **Çoklu dosya** — Aynı anda birden fazla Figma/FigJam dosyası ile çalışabilirsiniz
|
|
25
|
-
- **Çoklu AI aracı** — Claude ve
|
|
25
|
+
- **Çoklu AI aracı** — Claude, Cursor ve Claude Code aynı anda (otomatik port tarama, elle değiştirmeye gerek yok)
|
|
26
26
|
- **SVG/PNG export** — Vektörel veya bitmap, toplu export (1-50 node)
|
|
27
27
|
- **REST API desteği** — İsteğe bağlı token ile yorum okuma, versiyon geçmişi, görsel export
|
|
28
28
|
- **Figma Desktop + Tarayıcı** — Her ikisinde de çalışır
|
|
29
29
|
|
|
30
30
|
> \* **REST API isteğe bağlıdır.** Temel araçlar (okuma, yazma, export, variable) token olmadan plugin üzerinden çalışır. Yorum okuma, versiyon geçmişi gibi ek özellikler için Figma API token'ı ekleyebilirsiniz — plugin'deki Advanced panelinden girin, kalan API limitinizi plugin üzerinde takip edin.
|
|
31
31
|
|
|
32
|
-
## Hızlı başlangıç
|
|
32
|
+
## Hızlı başlangıç
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
> 💡 **En kolay yol:** AI aracınıza (Claude, Cursor) şunu söyleyin:
|
|
35
|
+
> *"https://github.com/atezer/FMCP — gerekli kurulumları yap ve Figma'ya bağlan"*
|
|
36
|
+
> AI bu sayfayı okur, kurulumu yapar, sizi bağlar. Aşağıdaki adımlar elle yapmak isteyenler için.
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
### 1. Node.js kurun (bir kerelik)
|
|
39
|
+
|
|
40
|
+
F-MCP Bridge'in çalışması için bilgisayarınızda Node.js olması gerekiyor. Zaten kuruluysa bu adımı atlayın.
|
|
41
|
+
|
|
42
|
+
**Kurulu mu kontrol edin:** Terminal açıp `node -v` yazın. Versiyon görüyorsanız kurulu demektir.
|
|
43
|
+
|
|
44
|
+
**Kurulu değilse:** [nodejs.org](https://nodejs.org) → **LTS** butonuna tıklayın → indirin → kurun. Sadece "İleri"ye tıklayarak kurulum tamamlanır.
|
|
37
45
|
|
|
38
46
|
### 2. AI aracınıza config ekleyin
|
|
39
47
|
|
|
40
|
-
|
|
48
|
+
Aşağıdaki JSON bloğunu AI aracınızın config dosyasına ekleyin. Bu, AI aracına "Figma ile nasıl konuşacağını" öğretir.
|
|
49
|
+
|
|
50
|
+
**Cursor** — Proje klasörünüzde `.cursor/mcp.json` dosyası oluşturun (yoksa yeni dosya açın):
|
|
41
51
|
|
|
42
52
|
```json
|
|
43
53
|
{
|
|
@@ -50,7 +60,7 @@ Her şey **bilgisayarınızda** kalır. Tasarım verileriniz internete gönderil
|
|
|
50
60
|
}
|
|
51
61
|
```
|
|
52
62
|
|
|
53
|
-
**Claude Desktop** — Config
|
|
63
|
+
**Claude Desktop** — Settings → Developer → Edit Config tıklayın (veya macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` açın):
|
|
54
64
|
|
|
55
65
|
```json
|
|
56
66
|
{
|
|
@@ -63,14 +73,32 @@ Her şey **bilgisayarınızda** kalır. Tasarım verileriniz internete gönderil
|
|
|
63
73
|
}
|
|
64
74
|
```
|
|
65
75
|
|
|
76
|
+
**Claude Code** — Proje klasörünüzde `.mcp.json` dosyası oluşturun (yoksa yeni dosya açın):
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"mcpServers": {
|
|
81
|
+
"figma-mcp-bridge": {
|
|
82
|
+
"command": "npx",
|
|
83
|
+
"args": ["-y", "@atezer/figma-mcp-bridge@latest", "figma-mcp-bridge-plugin"]
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
> **Claude Code kullanıcıları için önemli:** Config dosyası `.mcp.json` olmalıdır (proje kökünde). `~/.claude/settings.json` dosyası MCP sunucuları için **çalışmaz** — o dosya sadece izinler (permissions) içindir.
|
|
90
|
+
|
|
66
91
|
### 3. Figma'da plugin'i açın
|
|
67
92
|
|
|
68
|
-
1. Cursor veya Claude Desktop'ı yeniden başlatın
|
|
69
|
-
2. Figma'yı açın →
|
|
70
|
-
3.
|
|
71
|
-
4.
|
|
93
|
+
1. **Cursor veya Claude Desktop'ı yeniden başlatın** (config'i okuması için)
|
|
94
|
+
2. **Figma'yı açın** → herhangi bir dosyayı açın
|
|
95
|
+
3. **Plugins** menüsünden **F-MCP ATezer Bridge** seçin
|
|
96
|
+
4. Plugin'de yeşil **"Ready"** yazısını görene kadar bekleyin
|
|
97
|
+
5. AI aracınızdan Figma'ya komut verebilirsiniz!
|
|
72
98
|
|
|
73
99
|
> **Plugin'i ilk kez mi yüklüyorsunuz?** Figma → Plugins → Development → Import plugin from manifest → Bu repodaki `f-mcp-plugin/manifest.json` dosyasını seçin.
|
|
100
|
+
>
|
|
101
|
+
> **Kurumsal kullanım:** Plugin'i organizasyonunuzda private plugin olarak yayınlarsanız herkes Plugins menüsünden tek tıkla erişir — tek tek yüklemeye gerek kalmaz.
|
|
74
102
|
|
|
75
103
|
## 46 araçla neler yapabilirsiniz?
|
|
76
104
|
|
|
@@ -117,19 +145,23 @@ Her şey **bilgisayarınızda** kalır. Tasarım verileriniz internete gönderil
|
|
|
117
145
|
|
|
118
146
|
Tam araç listesi: [TOOLS_FULL_LIST.md](docs/TOOLS_FULL_LIST.md) | Detaylı referans: [TOOLS.md](docs/TOOLS.md)
|
|
119
147
|
|
|
120
|
-
## Claude + Cursor aynı anda kullanma
|
|
121
|
-
|
|
122
|
-
Her iki araç da varsayılan 5454 portunu kullanır. İlk açılan portu alır, ikincisi için:
|
|
148
|
+
## Claude + Cursor aynı anda kullanma (v1.7.0+)
|
|
123
149
|
|
|
124
|
-
|
|
125
|
-
2. Figma plugin'de portu **5456** yapın
|
|
126
|
-
3. Her iki araç aynı anda bağımsız çalışır
|
|
150
|
+
Plugin tüm portları (5454-5470) **otomatik tarar** ve bulunan bridge'lere sessizce bağlanır. Elle port değiştirmenize gerek yok.
|
|
127
151
|
|
|
128
|
-
|
|
152
|
+
**Nasıl çalışır:**
|
|
153
|
+
1. Claude Desktop, Cursor veya Claude Code'u açın — her biri kendi portunda bridge başlatır
|
|
154
|
+
2. Figma'da plugin'i açın — otomatik olarak tüm bridge'leri bulur ve bağlanır
|
|
155
|
+
3. Plugin'de **(i)** ikonuna tıklayın — bağlı araçları görün
|
|
156
|
+
4. **◀ ▶** ok tuşlarıyla araçlar arasında geçiş yapın
|
|
129
157
|
|
|
130
|
-
```json
|
|
131
|
-
"env": { "FIGMA_PLUGIN_BRIDGE_PORT": "5455" }
|
|
132
158
|
```
|
|
159
|
+
● 5454 (Claude) ← aktif
|
|
160
|
+
○ 5455 (Cursor)
|
|
161
|
+
○ 5457 (Claude Code)
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
AI aracı adı otomatik tespit edilir — config'e bir şey eklemenize gerek yok.
|
|
133
165
|
|
|
134
166
|
## Çoklu dosya desteği
|
|
135
167
|
|
|
@@ -165,7 +197,7 @@ Detaylı sorun giderme: [TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md)
|
|
|
165
197
|
|
|
166
198
|
| Bilgi | Kaynak |
|
|
167
199
|
|-------|--------|
|
|
168
|
-
| Güncel sürüm | **1.
|
|
200
|
+
| Güncel sürüm | **1.7.0** ([package.json](package.json)) |
|
|
169
201
|
| Değişiklik geçmişi | [CHANGELOG.md](CHANGELOG.md) |
|
|
170
202
|
| GitHub sürümleri | [Releases](https://github.com/atezer/FMCP/releases) |
|
|
171
203
|
| npm paketi | [@atezer/figma-mcp-bridge](https://www.npmjs.com/package/@atezer/figma-mcp-bridge) |
|
|
@@ -189,6 +221,7 @@ Detaylı sorun giderme: [TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md)
|
|
|
189
221
|
| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | Teknik mimari |
|
|
190
222
|
| [USE_CASES.md](docs/USE_CASES.md) | Örnek kullanım senaryoları |
|
|
191
223
|
| [SECURITY_AUDIT.md](docs/SECURITY_AUDIT.md) | Güvenlik denetimi |
|
|
224
|
+
| [TEST_REPORT.md](docs/TEST_REPORT.md) | 46 araç test raporu ve plan bazlı yetenek matrisi |
|
|
192
225
|
|
|
193
226
|
## Güvenlik ve gizlilik
|
|
194
227
|
|
|
@@ -56,11 +56,15 @@ export declare class PluginBridgeServer {
|
|
|
56
56
|
private clientIdCounter;
|
|
57
57
|
/** Figma REST API token (in-memory only, never written to disk). */
|
|
58
58
|
private figmaRestToken;
|
|
59
|
+
/** AI client name detected from parent process (Claude, Cursor, etc.) */
|
|
60
|
+
private readonly clientName;
|
|
59
61
|
/** User/config preferred port (before clamp and fallback). */
|
|
60
62
|
private readonly preferredPort;
|
|
61
63
|
constructor(port: number, options?: {
|
|
62
64
|
auditLogPath?: string;
|
|
63
65
|
});
|
|
66
|
+
/** Detect AI client name by env vars and process tree. */
|
|
67
|
+
private detectClientName;
|
|
64
68
|
private port;
|
|
65
69
|
/** Last error message when bridge could not bind (port conflict, etc.) */
|
|
66
70
|
private startError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-bridge-server.d.ts","sourceRoot":"","sources":["../../src/core/plugin-bridge-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-bridge-server.d.ts","sourceRoot":"","sources":["../../src/core/plugin-bridge-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { WebSocketServer } from "ws";
|
|
14
14
|
import { createServer, get as httpGet } from "http";
|
|
15
|
+
import { execSync } from "child_process";
|
|
15
16
|
import { logger } from "./logger.js";
|
|
16
17
|
import { auditTool, auditPlugin } from "./audit-log.js";
|
|
17
18
|
const HEARTBEAT_INTERVAL_MS = 3000;
|
|
@@ -37,6 +38,39 @@ export class PluginBridgeServer {
|
|
|
37
38
|
this.preferredPort = clamped;
|
|
38
39
|
this.port = clamped;
|
|
39
40
|
this.auditLogPath = options?.auditLogPath;
|
|
41
|
+
this.clientName = this.detectClientName();
|
|
42
|
+
}
|
|
43
|
+
/** Detect AI client name by env vars and process tree. */
|
|
44
|
+
detectClientName() {
|
|
45
|
+
// 1. Explicit env var (highest priority)
|
|
46
|
+
if (process.env.FIGMA_MCP_CLIENT_NAME)
|
|
47
|
+
return process.env.FIGMA_MCP_CLIENT_NAME;
|
|
48
|
+
// 2. Claude Code env detection
|
|
49
|
+
if (process.env.CLAUDECODE === "1")
|
|
50
|
+
return "Claude Code";
|
|
51
|
+
// 3. Cursor env detection
|
|
52
|
+
if (process.env.CURSOR_TRACE_ID || process.env.VSCODE_PID) {
|
|
53
|
+
if (process.env.CURSOR_TRACE_ID)
|
|
54
|
+
return "Cursor";
|
|
55
|
+
}
|
|
56
|
+
// 4. Walk up process tree (max 5 levels)
|
|
57
|
+
try {
|
|
58
|
+
let pid = process.ppid;
|
|
59
|
+
for (let i = 0; i < 5 && pid > 1; i++) {
|
|
60
|
+
const line = execSync(`ps -p ${pid} -o ppid=,comm=`, { timeout: 1000 }).toString().trim();
|
|
61
|
+
const comm = line.replace(/^\s*\d+\s+/, "");
|
|
62
|
+
const ppidMatch = line.match(/^\s*(\d+)/);
|
|
63
|
+
if (/[Cc]ursor/i.test(comm))
|
|
64
|
+
return "Cursor";
|
|
65
|
+
if (/[Cc]laude/i.test(comm))
|
|
66
|
+
return "Claude";
|
|
67
|
+
if (/[Ww]indsurf/i.test(comm))
|
|
68
|
+
return "Windsurf";
|
|
69
|
+
pid = ppidMatch ? parseInt(ppidMatch[1], 10) : 0;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch { /* ignore */ }
|
|
73
|
+
return "MCP";
|
|
40
74
|
}
|
|
41
75
|
start() {
|
|
42
76
|
if (this.wss) {
|
|
@@ -247,10 +281,11 @@ export class PluginBridgeServer {
|
|
|
247
281
|
logger.info({ clientId, fileKey: incomingFileKey, fileName: incomingFileName }, "Plugin bridge: client registered (fileKey=%s, fileName=%s)", incomingFileKey, incomingFileName);
|
|
248
282
|
ws.send(JSON.stringify({
|
|
249
283
|
type: "welcome",
|
|
250
|
-
bridgeVersion: "1.
|
|
284
|
+
bridgeVersion: "1.7.0",
|
|
251
285
|
port: this.port,
|
|
252
286
|
clientId,
|
|
253
287
|
multiClient: true,
|
|
288
|
+
clientName: this.clientName,
|
|
254
289
|
}));
|
|
255
290
|
return;
|
|
256
291
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-bridge-server.js","sourceRoot":"","sources":["../../src/core/plugin-bridge-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin-bridge-server.js","sourceRoot":"","sources":["../../src/core/plugin-bridge-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,7 +89,7 @@ export async function main() {
|
|
|
89
89
|
bridge.start();
|
|
90
90
|
const server = new McpServer({
|
|
91
91
|
name: "F-MCP ATezer Bridge (Plugin-only)",
|
|
92
|
-
version: "1.
|
|
92
|
+
version: "1.7.0",
|
|
93
93
|
});
|
|
94
94
|
// ---- figma_list_connected_files (multi-client discovery) ----
|
|
95
95
|
server.registerTool("figma_list_connected_files", {
|
package/dist/local.js
CHANGED
package/f-mcp-plugin/code.js
CHANGED
|
@@ -20,7 +20,7 @@ console.error = function() { _pushLog('error', arguments); _origError.apply(cons
|
|
|
20
20
|
console.log('🌉 [F-MCP ATezer Bridge] Plugin loaded and ready');
|
|
21
21
|
|
|
22
22
|
// Start compact; UI asks for dynamic resize based on content.
|
|
23
|
-
figma.showUI(__html__, { width:
|
|
23
|
+
figma.showUI(__html__, { width: 200, height: 96, visible: true, themeColors: true });
|
|
24
24
|
|
|
25
25
|
// Send file identity to UI so it can include it in the WebSocket handshake
|
|
26
26
|
figma.ui.postMessage({
|
|
@@ -219,8 +219,8 @@ figma.ui.onmessage = async (msg) => {
|
|
|
219
219
|
try {
|
|
220
220
|
var requestedWidth = Number(msg.width);
|
|
221
221
|
var requestedHeight = Number(msg.height);
|
|
222
|
-
var width = Math.max(
|
|
223
|
-
var height = Math.max(72, Math.min(
|
|
222
|
+
var width = Math.max(200, Math.min(520, Math.round(isNaN(requestedWidth) ? 200 : requestedWidth)));
|
|
223
|
+
var height = Math.max(72, Math.min(700, Math.round(isNaN(requestedHeight) ? 96 : requestedHeight)));
|
|
224
224
|
figma.ui.resize(width, height);
|
|
225
225
|
} catch (error) {
|
|
226
226
|
console.warn('🌉 [F-MCP ATezer Bridge] UI resize failed:', error && error.message ? error.message : String(error));
|
package/f-mcp-plugin/ui.html
CHANGED
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
html, body {
|
|
13
|
-
width:
|
|
13
|
+
width: 100%;
|
|
14
14
|
height: auto;
|
|
15
|
-
overflow: hidden;
|
|
15
|
+
overflow-x: hidden;
|
|
16
|
+
overflow-y: auto;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
body {
|
|
@@ -20,7 +21,8 @@
|
|
|
20
21
|
font-size: 11px;
|
|
21
22
|
background: var(--figma-color-bg, #2c2c2c);
|
|
22
23
|
color: var(--figma-color-text, rgba(255, 255, 255, 0.9));
|
|
23
|
-
width:
|
|
24
|
+
width: 100%;
|
|
25
|
+
max-width: 100%;
|
|
24
26
|
height: auto;
|
|
25
27
|
padding: 8px;
|
|
26
28
|
user-select: none;
|
|
@@ -30,11 +32,9 @@
|
|
|
30
32
|
display: flex;
|
|
31
33
|
flex-direction: column;
|
|
32
34
|
gap: 8px;
|
|
33
|
-
width:
|
|
34
|
-
max-width: 100%;
|
|
35
|
+
width: 100%;
|
|
35
36
|
min-height: 0;
|
|
36
37
|
overflow: visible;
|
|
37
|
-
padding-right: 2px;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
.bridge-status {
|
|
@@ -202,8 +202,12 @@
|
|
|
202
202
|
<div class="status-text">
|
|
203
203
|
<span class="label">MCP</span>
|
|
204
204
|
<span class="state" id="status-state">connecting</span>
|
|
205
|
+
<span id="status-info-btn" onclick="var p=document.getElementById('connections-panel');if(p){p.style.display=p.style.display==='block'?'none':'block';requestUiResize();}" style="display:none;cursor:pointer;margin-left:4px;font-size:9px;width:13px;height:13px;border-radius:50%;border:1px solid rgba(255,255,255,0.25);color:rgba(255,255,255,0.4);text-align:center;line-height:13px;user-select:none;">i</span>
|
|
205
206
|
</div>
|
|
206
207
|
</div>
|
|
208
|
+
<div id="connections-panel" style="display:none;padding:6px 10px;background:rgba(255,255,255,0.04);border-radius:5px;font-size:9px;color:rgba(255,255,255,0.4);line-height:1.6;">
|
|
209
|
+
<div id="connections-panel-list">—</div>
|
|
210
|
+
</div>
|
|
207
211
|
<div class="advanced-wrap">
|
|
208
212
|
<button id="advanced-toggle" class="advanced-toggle" type="button">Advanced</button>
|
|
209
213
|
<span id="advanced-state" class="advanced-state">auto port</span>
|
|
@@ -217,11 +221,15 @@
|
|
|
217
221
|
<label for="mcp-port">Port</label>
|
|
218
222
|
<input type="number" id="mcp-port" min="5454" max="5470" value="5454" aria-label="MCP bridge port (auto fallback 5454-5470)" title="Elle değiştirirseniz tek porta kilitlenir; Otomatik tara veya Advanced'ı kapatın." />
|
|
219
223
|
</div>
|
|
220
|
-
<
|
|
224
|
+
<div id="port-switcher" style="display:flex;align-items:center;gap:4px;margin-top:4px;">
|
|
225
|
+
<button type="button" id="port-prev" onclick="switchActivePort(-1)" style="font-size:10px;padding:1px 5px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.1);border-radius:3px;color:rgba(255,255,255,0.5);cursor:pointer;">◀</button>
|
|
226
|
+
<span id="port-label" style="font-size:10px;color:rgba(255,255,255,0.4);flex:1;text-align:center;">—</span>
|
|
227
|
+
<button type="button" id="port-next" onclick="switchActivePort(1)" style="font-size:10px;padding:1px 5px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.1);border-radius:3px;color:rgba(255,255,255,0.5);cursor:pointer;">▶</button>
|
|
228
|
+
</div>
|
|
221
229
|
<div class="api-token-section" style="margin-top:8px;border-top:1px solid rgba(255,255,255,0.08);padding-top:8px;">
|
|
222
230
|
<div style="display:flex;align-items:center;gap:6px;">
|
|
223
231
|
<label for="figma-token" style="font-size:11px;color:rgba(255,255,255,0.5);white-space:nowrap;">API Token</label>
|
|
224
|
-
<input type="password" id="figma-token" placeholder="figd_..." style="flex:1;font-size:11px;padding:3px 6px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.1);border-radius:4px;color:#fff;outline:none;" aria-label="Figma REST API token" />
|
|
232
|
+
<input type="password" id="figma-token" placeholder="figd_..." style="flex:1;min-width:0;font-size:11px;padding:3px 6px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.1);border-radius:4px;color:#fff;outline:none;" aria-label="Figma REST API token" />
|
|
225
233
|
<select id="token-expiry" style="font-size:10px;padding:2px 3px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.1);border-radius:3px;color:rgba(255,255,255,0.6);outline:none;" title="Token süresi (Figma'da seçtiğiniz süre)">
|
|
226
234
|
<option value="90">90g</option>
|
|
227
235
|
<option value="30">30g</option>
|
|
@@ -278,9 +286,11 @@
|
|
|
278
286
|
function updateStatus(state, isActive, isError) {
|
|
279
287
|
const dot = document.getElementById('status-dot');
|
|
280
288
|
const stateText = document.getElementById('status-state');
|
|
289
|
+
const infoBtn = document.getElementById('status-info-btn');
|
|
281
290
|
|
|
282
291
|
dot.className = 'status-indicator ' + (isError ? 'error' : (isActive ? 'active' : 'loading'));
|
|
283
292
|
stateText.textContent = state;
|
|
293
|
+
if (infoBtn) infoBtn.style.display = isActive ? 'inline-block' : 'none';
|
|
284
294
|
requestUiResize();
|
|
285
295
|
}
|
|
286
296
|
|
|
@@ -295,7 +305,7 @@
|
|
|
295
305
|
var bodyStyle = window.getComputedStyle(document.body);
|
|
296
306
|
var padX = (parseFloat(bodyStyle.paddingLeft) || 0) + (parseFloat(bodyStyle.paddingRight) || 0);
|
|
297
307
|
var padY = (parseFloat(bodyStyle.paddingTop) || 0) + (parseFloat(bodyStyle.paddingBottom) || 0);
|
|
298
|
-
var width = Math.
|
|
308
|
+
var width = Math.min(300, Math.max(200, Math.ceil(root.scrollWidth + padX + 6)));
|
|
299
309
|
var height = Math.ceil(Math.max(root.scrollHeight, rect.height) + padY + 6);
|
|
300
310
|
parent.postMessage({ pluginMessage: { type: 'RESIZE_UI', width: width, height: height } }, '*');
|
|
301
311
|
});
|
|
@@ -595,6 +605,18 @@
|
|
|
595
605
|
.catch(function(err) { return { success: false, error: err.message || String(err) }; });
|
|
596
606
|
};
|
|
597
607
|
|
|
608
|
+
// Batch export nodes as SVG/PNG/JPG/PDF with base64
|
|
609
|
+
window.batchExportNodes = (nodeIds, format, scale, svgOutlineText, svgIncludeId, svgSimplifyStroke) => {
|
|
610
|
+
return window.sendPluginCommand('BATCH_EXPORT_NODES', {
|
|
611
|
+
nodeIds: nodeIds,
|
|
612
|
+
format: format || 'PNG',
|
|
613
|
+
scale: scale || 2,
|
|
614
|
+
svgOutlineText: svgOutlineText,
|
|
615
|
+
svgIncludeId: svgIncludeId,
|
|
616
|
+
svgSimplifyStroke: svgSimplifyStroke
|
|
617
|
+
}, 60000).then(function(r) { return r && r.data ? r.data : r; });
|
|
618
|
+
};
|
|
619
|
+
|
|
598
620
|
// Set component instance properties (TEXT, BOOLEAN, INSTANCE_SWAP, VARIANT)
|
|
599
621
|
// This is the correct way to update component instances vs direct text node editing
|
|
600
622
|
window.setInstanceProperties = (nodeId, properties) => {
|
|
@@ -652,6 +674,10 @@
|
|
|
652
674
|
} else {
|
|
653
675
|
updateTokenUI(true, null, expiresAt);
|
|
654
676
|
window.__pendingRestoreToken = msg.token;
|
|
677
|
+
// Restored token — disable input
|
|
678
|
+
if (tokenEl) { tokenEl.disabled = true; tokenEl.style.opacity = '0.5'; }
|
|
679
|
+
var expSel2 = document.getElementById('token-expiry');
|
|
680
|
+
if (expSel2) { expSel2.disabled = true; expSel2.style.opacity = '0.5'; }
|
|
655
681
|
}
|
|
656
682
|
console.log('[F-MCP] Token restored from clientStorage' + (isExpired ? ' (EXPIRED)' : '') + (expiresAt ? ' expires: ' + new Date(expiresAt).toLocaleDateString() : ''));
|
|
657
683
|
}
|
|
@@ -669,9 +695,10 @@
|
|
|
669
695
|
window.__figmaVariablesData = msg.data;
|
|
670
696
|
window.__figmaVariablesReady = true;
|
|
671
697
|
if (mcpConnectedPort) {
|
|
672
|
-
|
|
698
|
+
var _cn = mcpConnections.get(mcpConnectedPort);
|
|
699
|
+
updateStatus('Ready', true, false);
|
|
673
700
|
} else {
|
|
674
|
-
updateStatus('
|
|
701
|
+
updateStatus('Ready', true, false);
|
|
675
702
|
}
|
|
676
703
|
console.log('[F-MCP ATezer Bridge] Active - ' + (msg.data.variables?.length || 0) + ' vars');
|
|
677
704
|
break;
|
|
@@ -790,6 +817,9 @@
|
|
|
790
817
|
case 'CAPTURE_SCREENSHOT_RESULT':
|
|
791
818
|
handleResult('CAPTURE_SCREENSHOT', 'image');
|
|
792
819
|
break;
|
|
820
|
+
case 'BATCH_EXPORT_NODES_RESULT':
|
|
821
|
+
handleResult('BATCH_EXPORT_NODES', null);
|
|
822
|
+
break;
|
|
793
823
|
case 'SET_INSTANCE_PROPERTIES_RESULT':
|
|
794
824
|
handleResult('SET_INSTANCE_PROPERTIES', 'instance');
|
|
795
825
|
break;
|
|
@@ -899,6 +929,11 @@
|
|
|
899
929
|
var candidatePorts = [];
|
|
900
930
|
var candidatePortIndex = 0;
|
|
901
931
|
|
|
932
|
+
// Multi-port connection tracking (Adım 2: tanım, henüz kullanılmaz)
|
|
933
|
+
// ConnectionState: { ws, port, clientName, status, handshakeTimer, keepaliveTimer }
|
|
934
|
+
var mcpConnections = new Map();
|
|
935
|
+
var mcpActivePort = null;
|
|
936
|
+
|
|
902
937
|
/** Port alanı elle değiştirilince manualPortLocked=true olur; bu kilit 5454–5470 taramasını durdurur. */
|
|
903
938
|
function unlockAutoPortScan() {
|
|
904
939
|
manualPortLocked = false;
|
|
@@ -1032,6 +1067,11 @@
|
|
|
1032
1067
|
mcpBridgeWs.send(JSON.stringify({ type: 'setToken', token: token }));
|
|
1033
1068
|
}
|
|
1034
1069
|
updateTokenUI(true, null, expiresAt);
|
|
1070
|
+
// Token girildi — input ve süre seçici disabled
|
|
1071
|
+
el.disabled = true;
|
|
1072
|
+
el.style.opacity = '0.5';
|
|
1073
|
+
var expSel = document.getElementById('token-expiry');
|
|
1074
|
+
if (expSel) { expSel.disabled = true; expSel.style.opacity = '0.5'; }
|
|
1035
1075
|
} else {
|
|
1036
1076
|
updateTokenUI(false, null, 0);
|
|
1037
1077
|
}
|
|
@@ -1039,7 +1079,9 @@
|
|
|
1039
1079
|
}
|
|
1040
1080
|
if (clearBtn) {
|
|
1041
1081
|
clearBtn.addEventListener('click', function() {
|
|
1042
|
-
if (el) el.value = '';
|
|
1082
|
+
if (el) { el.value = ''; el.disabled = false; el.style.opacity = '1'; }
|
|
1083
|
+
var expSel = document.getElementById('token-expiry');
|
|
1084
|
+
if (expSel) { expSel.disabled = false; expSel.style.opacity = '1'; }
|
|
1043
1085
|
__tokenExpiresAt = 0;
|
|
1044
1086
|
// Delete from Figma clientStorage
|
|
1045
1087
|
parent.postMessage({ pluginMessage: { type: 'DELETE_TOKEN' } }, '*');
|
|
@@ -1249,8 +1291,8 @@
|
|
|
1249
1291
|
candidatePorts = [mcpConnectedPort];
|
|
1250
1292
|
candidatePortIndex = 0;
|
|
1251
1293
|
}
|
|
1252
|
-
console.log('[F-MCP ATezer Bridge] Handshake OK — bridge v' + (msg.bridgeVersion || '?') + ' on port ' + mcpConnectedPort);
|
|
1253
|
-
updateStatus('
|
|
1294
|
+
console.log('[F-MCP ATezer Bridge] Handshake OK — bridge v' + (msg.bridgeVersion || '?') + ' on port ' + mcpConnectedPort + ' (' + (msg.clientName || 'MCP') + ')');
|
|
1295
|
+
updateStatus('Ready', true, false);
|
|
1254
1296
|
// Resend restored token to bridge after handshake
|
|
1255
1297
|
if (window.__pendingRestoreToken && currentWs && currentWs.readyState === 1) {
|
|
1256
1298
|
currentWs.send(JSON.stringify({ type: 'setToken', token: window.__pendingRestoreToken }));
|
|
@@ -1261,6 +1303,19 @@
|
|
|
1261
1303
|
if (!window.__pendingRestoreToken && tokenInput && tokenInput.value && currentWs && currentWs.readyState === 1) {
|
|
1262
1304
|
currentWs.send(JSON.stringify({ type: 'setToken', token: tokenInput.value.trim() }));
|
|
1263
1305
|
}
|
|
1306
|
+
// Adım 3: Bağlantıyı connections Map'e kaydet (gözlemci, hiçbir fonksiyon okumaz)
|
|
1307
|
+
mcpConnections.set(mcpConnectedPort, {
|
|
1308
|
+
ws: currentWs,
|
|
1309
|
+
port: mcpConnectedPort,
|
|
1310
|
+
clientName: msg.clientName || 'MCP',
|
|
1311
|
+
status: 'ready'
|
|
1312
|
+
});
|
|
1313
|
+
mcpActivePort = mcpConnectedPort;
|
|
1314
|
+
// Adım 4: Ana bağlantı hazır — diğer portları da tara (ilk + periyodik)
|
|
1315
|
+
setTimeout(function() { if (typeof scanOtherPorts === 'function') scanOtherPorts(); }, 500);
|
|
1316
|
+
if (!extraPortScanTimer) {
|
|
1317
|
+
extraPortScanTimer = setInterval(function() { if (typeof scanOtherPorts === 'function') scanOtherPorts(); }, 10000);
|
|
1318
|
+
}
|
|
1264
1319
|
return;
|
|
1265
1320
|
}
|
|
1266
1321
|
if (msg.type === 'tokenStatus') {
|
|
@@ -1391,6 +1446,9 @@
|
|
|
1391
1446
|
if (method === 'captureScreenshot') {
|
|
1392
1447
|
return window.captureScreenshot(params.nodeId, params.options);
|
|
1393
1448
|
}
|
|
1449
|
+
if (method === 'batchExportNodes') {
|
|
1450
|
+
return window.batchExportNodes(params.nodeIds, params.format, params.scale, params.svgOutlineText, params.svgIncludeId, params.svgSimplifyStroke);
|
|
1451
|
+
}
|
|
1394
1452
|
if (method === 'setInstanceProperties') {
|
|
1395
1453
|
return window.setInstanceProperties(params.nodeId, params.properties);
|
|
1396
1454
|
}
|
|
@@ -1441,6 +1499,8 @@
|
|
|
1441
1499
|
};
|
|
1442
1500
|
mcpBridgeWs.onclose = function() {
|
|
1443
1501
|
stopKeepAlive();
|
|
1502
|
+
// Adım 3: Bağlantıyı Map'ten sil
|
|
1503
|
+
if (mcpConnectedPort) mcpConnections.delete(mcpConnectedPort);
|
|
1444
1504
|
if (mcpBridgeWs !== currentWs) return;
|
|
1445
1505
|
mcpBridgeWs = null;
|
|
1446
1506
|
mcpConnecting = false;
|
|
@@ -1464,6 +1524,247 @@
|
|
|
1464
1524
|
}
|
|
1465
1525
|
}
|
|
1466
1526
|
|
|
1527
|
+
// ---- Adım 4: Ek portlara bağlantı (mevcut connectMcpBridge DEĞİŞMEZ) ----
|
|
1528
|
+
|
|
1529
|
+
var extraPortScanTimer = null;
|
|
1530
|
+
|
|
1531
|
+
/**
|
|
1532
|
+
* Ek porta bağlan — connectMcpBridge'in basitleştirilmiş kopyası.
|
|
1533
|
+
* Kendi ws/closure/timer'ına sahip. Mevcut mcpBridgeWs'e DOKUNMAZ.
|
|
1534
|
+
* Başarısız olursa sessizce kapanır (retry yok).
|
|
1535
|
+
*/
|
|
1536
|
+
function connectToExtraPort(port, host) {
|
|
1537
|
+
if (mcpConnections.has(port)) return; // zaten bağlı
|
|
1538
|
+
if (port === mcpConnectedPort) return; // ana bağlantı bunu yönetiyor
|
|
1539
|
+
var url = 'ws://' + (host || getMcpBridgeHost()) + ':' + port;
|
|
1540
|
+
var handshakeOk = false;
|
|
1541
|
+
var handshakeTimer = null;
|
|
1542
|
+
var keepaliveTimer = null;
|
|
1543
|
+
try {
|
|
1544
|
+
var ws = new WebSocket(url);
|
|
1545
|
+
|
|
1546
|
+
ws.onopen = function() {
|
|
1547
|
+
ws.send(JSON.stringify({
|
|
1548
|
+
type: 'ready',
|
|
1549
|
+
fileKey: window.__figmaFileKey || null,
|
|
1550
|
+
fileName: window.__figmaFileName || null
|
|
1551
|
+
}));
|
|
1552
|
+
handshakeTimer = setTimeout(function() {
|
|
1553
|
+
if (!handshakeOk) { try { ws.close(); } catch(e) {} }
|
|
1554
|
+
}, 3000);
|
|
1555
|
+
};
|
|
1556
|
+
|
|
1557
|
+
ws.onmessage = function(event) {
|
|
1558
|
+
try {
|
|
1559
|
+
var msg = JSON.parse(event.data);
|
|
1560
|
+
|
|
1561
|
+
if (msg.type === 'welcome') {
|
|
1562
|
+
handshakeOk = true;
|
|
1563
|
+
if (handshakeTimer) { clearTimeout(handshakeTimer); handshakeTimer = null; }
|
|
1564
|
+
var connPort = msg.port || port;
|
|
1565
|
+
mcpConnections.set(connPort, {
|
|
1566
|
+
ws: ws,
|
|
1567
|
+
port: connPort,
|
|
1568
|
+
clientName: msg.clientName || 'MCP',
|
|
1569
|
+
status: 'ready'
|
|
1570
|
+
});
|
|
1571
|
+
// Token gönder (per-connection)
|
|
1572
|
+
var tokenInput = document.getElementById('figma-token');
|
|
1573
|
+
if (tokenInput && tokenInput.value && ws.readyState === 1) {
|
|
1574
|
+
ws.send(JSON.stringify({ type: 'setToken', token: tokenInput.value.trim() }));
|
|
1575
|
+
}
|
|
1576
|
+
// Keepalive başlat
|
|
1577
|
+
keepaliveTimer = setInterval(function() {
|
|
1578
|
+
if (ws.readyState === 1) {
|
|
1579
|
+
try { ws.send(JSON.stringify({ type: 'keepalive' })); } catch(e) {}
|
|
1580
|
+
}
|
|
1581
|
+
}, 5000);
|
|
1582
|
+
console.log('[F-MCP] Extra port connected: ' + connPort + ' (' + (msg.clientName || 'MCP') + ')');
|
|
1583
|
+
return;
|
|
1584
|
+
}
|
|
1585
|
+
|
|
1586
|
+
if (msg.type === 'ping') {
|
|
1587
|
+
if (ws.readyState === 1) {
|
|
1588
|
+
try { ws.send(JSON.stringify({ type: 'pong' })); } catch(e) {}
|
|
1589
|
+
}
|
|
1590
|
+
return;
|
|
1591
|
+
}
|
|
1592
|
+
|
|
1593
|
+
if (msg.type === 'tokenStatus') return; // UI güncelleme sadece ana bağlantıda
|
|
1594
|
+
|
|
1595
|
+
// Request handler — wsRef olarak BU bağlantının ws'ini kullan
|
|
1596
|
+
if (!msg.id || !msg.method) return;
|
|
1597
|
+
var id = msg.id;
|
|
1598
|
+
var method = msg.method;
|
|
1599
|
+
var params = msg.params || {};
|
|
1600
|
+
// run() fonksiyonu ana onmessage ile AYNI — window.* fonksiyonlarını çağırır
|
|
1601
|
+
var run = function() {
|
|
1602
|
+
if (method === 'getVariablesFromPluginUI') return window.refreshVariables().then(function(r) { if (r && r.success === false) return r; if (!window.__figmaVariablesData) return { success: false, error: 'Variables not loaded' }; return { success: true, variables: window.__figmaVariablesData.variables, variableCollections: window.__figmaVariablesData.variableCollections }; });
|
|
1603
|
+
if (method === 'getComponentFromPluginUI' || method === 'getComponentByNodeId') return window.requestComponentData(params.nodeId).then(function(d) { return { success: true, component: d }; });
|
|
1604
|
+
if (method === 'getVariables') { if (!window.__figmaVariablesReady || !window.__figmaVariablesData) return { success: false, error: 'Variables not loaded' }; return { success: true, timestamp: Date.now(), variables: window.__figmaVariablesData.variables, variableCollections: window.__figmaVariablesData.variableCollections }; }
|
|
1605
|
+
if (method === 'executeCodeViaUI') return window.executeCode(params.code, params.timeout);
|
|
1606
|
+
if (method === 'updateVariable') return window.updateVariable(params.variableId, params.modeId, params.value);
|
|
1607
|
+
if (method === 'createVariable') return window.createVariable(params.name, params.collectionId, params.resolvedType, params.options);
|
|
1608
|
+
if (method === 'createVariableCollection') return window.createVariableCollection(params.name, params.options);
|
|
1609
|
+
if (method === 'deleteVariable') return window.deleteVariable(params.variableId);
|
|
1610
|
+
if (method === 'deleteVariableCollection') return window.deleteVariableCollection(params.collectionId);
|
|
1611
|
+
if (method === 'renameVariable') return window.renameVariable(params.variableId, params.newName);
|
|
1612
|
+
if (method === 'addMode') return window.addMode(params.collectionId, params.modeName);
|
|
1613
|
+
if (method === 'renameMode') return window.renameMode(params.collectionId, params.modeId, params.newName);
|
|
1614
|
+
if (method === 'refreshVariables') return window.refreshVariables();
|
|
1615
|
+
if (method === 'getLocalComponents') return window.getLocalComponents(params.currentPageOnly, params.limit);
|
|
1616
|
+
if (method === 'searchLibraryAssets') return window.searchLibraryAssets(params.query, params.assetTypes, params.limit, params.currentPageOnly);
|
|
1617
|
+
if (method === 'instantiateComponent') return window.instantiateComponent(params.componentKey, params.options);
|
|
1618
|
+
if (method === 'setNodeDescription') return window.setNodeDescription(params.nodeId, params.description, params.descriptionMarkdown);
|
|
1619
|
+
if (method === 'captureScreenshot') return window.captureScreenshot(params.nodeId, params.options);
|
|
1620
|
+
if (method === 'batchExportNodes') return window.batchExportNodes(params.nodeIds, params.format, params.scale, params.svgOutlineText, params.svgIncludeId, params.svgSimplifyStroke);
|
|
1621
|
+
if (method === 'setInstanceProperties') return window.setInstanceProperties(params.nodeId, params.properties);
|
|
1622
|
+
if (method === 'getDocumentStructure') return window.getDocumentStructure(params.depth, params.verbosity, params.includeLayout, params.includeVisual, params.includeTypography, params.includeCodeReady, params.outputHint);
|
|
1623
|
+
if (method === 'getNodeContext') return window.getNodeContext(params.nodeId, params.depth, params.verbosity, params.includeLayout, params.includeVisual, params.includeTypography, params.includeCodeReady, params.outputHint);
|
|
1624
|
+
if (method === 'getLocalStyles') return window.getLocalStyles(params.verbosity);
|
|
1625
|
+
if (method === 'getConsoleLogs') return window.getConsoleLogs(params.limit);
|
|
1626
|
+
if (method === 'clearConsole') return window.clearConsole();
|
|
1627
|
+
if (method === 'batchCreateVariables') return window.batchCreateVariables(params.items);
|
|
1628
|
+
if (method === 'batchUpdateVariables') return window.batchUpdateVariables(params.items);
|
|
1629
|
+
if (method === 'setupDesignTokens') return window.setupDesignTokens(params);
|
|
1630
|
+
if (method === 'arrangeComponentSet') return window.arrangeComponentSet(params.nodeIds);
|
|
1631
|
+
if (method === 'addComponentProperty') return window.addComponentProperty(params.nodeId, params.propertyName, params.type, params.defaultValue, params.options);
|
|
1632
|
+
if (method === 'editComponentProperty') return window.editComponentProperty(params.nodeId, params.propertyName, params.newValue);
|
|
1633
|
+
if (method === 'deleteComponentProperty') return window.deleteComponentProperty(params.nodeId, params.propertyName);
|
|
1634
|
+
if (method === 'resizeNode') return window.resizeNode(params.nodeId, params.width, params.height, params.withConstraints);
|
|
1635
|
+
if (method === 'moveNode') return window.moveNode(params.nodeId, params.x, params.y);
|
|
1636
|
+
if (method === 'setNodeFills') return window.setNodeFills(params.nodeId, params.fills);
|
|
1637
|
+
if (method === 'setNodeStrokes') return window.setNodeStrokes(params.nodeId, params.strokes, params.strokeWeight);
|
|
1638
|
+
if (method === 'setNodeOpacity') return window.setNodeOpacity(params.nodeId, params.opacity);
|
|
1639
|
+
if (method === 'setNodeCornerRadius') return window.setNodeCornerRadius(params.nodeId, params.radius);
|
|
1640
|
+
if (method === 'cloneNode') return window.cloneNode(params.nodeId);
|
|
1641
|
+
if (method === 'deleteNode') return window.deleteNode(params.nodeId);
|
|
1642
|
+
if (method === 'renameNode') return window.renameNode(params.nodeId, params.newName);
|
|
1643
|
+
if (method === 'setTextContent') return window.setTextContent(params.nodeId, params.text, params.options);
|
|
1644
|
+
if (method === 'createChildNode') return window.createChildNode(params.parentId, params.nodeType, params.properties);
|
|
1645
|
+
return { success: false, error: 'Unknown method: ' + method };
|
|
1646
|
+
};
|
|
1647
|
+
// wsRef = BU bağlantının ws'i (closure ile güvenli)
|
|
1648
|
+
var wsRef = ws;
|
|
1649
|
+
Promise.resolve(run()).then(function(result) {
|
|
1650
|
+
if (wsRef && wsRef.readyState === 1) {
|
|
1651
|
+
try { wsRef.send(JSON.stringify({ id: id, result: result })); } catch (_) {}
|
|
1652
|
+
}
|
|
1653
|
+
}).catch(function(err) {
|
|
1654
|
+
if (wsRef && wsRef.readyState === 1) {
|
|
1655
|
+
try { wsRef.send(JSON.stringify({ id: id, error: err.message || String(err) })); } catch (_) {}
|
|
1656
|
+
}
|
|
1657
|
+
});
|
|
1658
|
+
} catch (e) {
|
|
1659
|
+
if (ws && ws.readyState === 1 && msg && msg.id) {
|
|
1660
|
+
try { ws.send(JSON.stringify({ id: msg.id, error: e.message || String(e) })); } catch (_) {}
|
|
1661
|
+
}
|
|
1662
|
+
}
|
|
1663
|
+
};
|
|
1664
|
+
|
|
1665
|
+
ws.onclose = function() {
|
|
1666
|
+
if (keepaliveTimer) { clearInterval(keepaliveTimer); keepaliveTimer = null; }
|
|
1667
|
+
if (handshakeTimer) { clearTimeout(handshakeTimer); handshakeTimer = null; }
|
|
1668
|
+
mcpConnections.delete(port);
|
|
1669
|
+
console.log('[F-MCP] Extra port disconnected: ' + port);
|
|
1670
|
+
};
|
|
1671
|
+
|
|
1672
|
+
ws.onerror = function() {
|
|
1673
|
+
// Sessiz — ek port bulunamadı, normal durum
|
|
1674
|
+
};
|
|
1675
|
+
|
|
1676
|
+
// 1.5s içinde bağlanamazsa kapat
|
|
1677
|
+
setTimeout(function() {
|
|
1678
|
+
if (ws.readyState === 0) { try { ws.close(); } catch(e) {} }
|
|
1679
|
+
}, 1500);
|
|
1680
|
+
} catch (e) {
|
|
1681
|
+
// Bağlantı hatası — sessiz
|
|
1682
|
+
}
|
|
1683
|
+
}
|
|
1684
|
+
|
|
1685
|
+
/**
|
|
1686
|
+
* Diğer portları tara — ana bağlantı başarılı olduktan sonra çağrılır.
|
|
1687
|
+
* Mevcut bağlantı dışındaki portlara connectToExtraPort ile bağlanır.
|
|
1688
|
+
*/
|
|
1689
|
+
function scanOtherPorts() {
|
|
1690
|
+
var host = getMcpBridgeHost();
|
|
1691
|
+
for (var p = MCP_PORT_MIN; p <= MCP_PORT_MAX; p++) {
|
|
1692
|
+
if (p !== mcpConnectedPort && !mcpConnections.has(p)) {
|
|
1693
|
+
connectToExtraPort(p, host);
|
|
1694
|
+
}
|
|
1695
|
+
}
|
|
1696
|
+
// Port label güncelle (tarama sonrası)
|
|
1697
|
+
setTimeout(updatePortLabel, 2000);
|
|
1698
|
+
}
|
|
1699
|
+
|
|
1700
|
+
/**
|
|
1701
|
+
* Bağlı portlar arasında geçiş — ◀▶ butonları ile.
|
|
1702
|
+
* mcpBridgeWs aktif porta çevrilir (mevcut fonksiyonlar uyumlu kalır).
|
|
1703
|
+
*/
|
|
1704
|
+
function switchActivePort(direction) {
|
|
1705
|
+
var ports = [];
|
|
1706
|
+
mcpConnections.forEach(function(conn, port) {
|
|
1707
|
+
if (conn.status === 'ready' && conn.ws && conn.ws.readyState === 1) {
|
|
1708
|
+
ports.push({ port: port, clientName: conn.clientName });
|
|
1709
|
+
}
|
|
1710
|
+
});
|
|
1711
|
+
if (ports.length <= 1) return;
|
|
1712
|
+
ports.sort(function(a, b) { return a.port - b.port; });
|
|
1713
|
+
var currentIdx = -1;
|
|
1714
|
+
for (var i = 0; i < ports.length; i++) {
|
|
1715
|
+
if (ports[i].port === mcpActivePort) { currentIdx = i; break; }
|
|
1716
|
+
}
|
|
1717
|
+
var nextIdx = (currentIdx + direction + ports.length) % ports.length;
|
|
1718
|
+
mcpActivePort = ports[nextIdx].port;
|
|
1719
|
+
// Geriye uyumluluk: mcpBridgeWs aktif bağlantıya çevir
|
|
1720
|
+
var activeConn = mcpConnections.get(mcpActivePort);
|
|
1721
|
+
if (activeConn && activeConn.ws) {
|
|
1722
|
+
mcpBridgeWs = activeConn.ws;
|
|
1723
|
+
mcpConnectedPort = mcpActivePort;
|
|
1724
|
+
}
|
|
1725
|
+
updatePortLabel();
|
|
1726
|
+
updateStatus('Ready', true, false);
|
|
1727
|
+
}
|
|
1728
|
+
|
|
1729
|
+
/**
|
|
1730
|
+
* Port label güncelle — bağlı port sayısı ve aktif port bilgisi.
|
|
1731
|
+
*/
|
|
1732
|
+
function updatePortLabel() {
|
|
1733
|
+
var label = document.getElementById('port-label');
|
|
1734
|
+
if (!label) return;
|
|
1735
|
+
var ports = [];
|
|
1736
|
+
mcpConnections.forEach(function(conn, port) {
|
|
1737
|
+
if (conn.status === 'ready' && conn.ws && conn.ws.readyState === 1) {
|
|
1738
|
+
ports.push({ port: port, clientName: conn.clientName });
|
|
1739
|
+
}
|
|
1740
|
+
});
|
|
1741
|
+
if (ports.length === 0) {
|
|
1742
|
+
label.textContent = '—';
|
|
1743
|
+
label.style.color = 'rgba(255,255,255,0.3)';
|
|
1744
|
+
} else if (ports.length === 1) {
|
|
1745
|
+
label.textContent = ports[0].port + ' (' + ports[0].clientName + ')';
|
|
1746
|
+
label.style.color = 'rgba(78,205,196,0.8)';
|
|
1747
|
+
} else {
|
|
1748
|
+
var active = ports.find(function(p) { return p.port === mcpActivePort; });
|
|
1749
|
+
var name = active ? active.clientName : ports[0].clientName;
|
|
1750
|
+
label.textContent = (mcpActivePort || ports[0].port) + ' (' + name + ')';
|
|
1751
|
+
label.style.color = 'rgba(78,205,196,0.8)';
|
|
1752
|
+
}
|
|
1753
|
+
// Bağlı portlar listesini info panelinde güncelle
|
|
1754
|
+
var portsList = document.getElementById('connections-panel-list');
|
|
1755
|
+
if (portsList) {
|
|
1756
|
+
if (ports.length === 0) {
|
|
1757
|
+
portsList.innerHTML = '<div>—</div>';
|
|
1758
|
+
} else {
|
|
1759
|
+
portsList.innerHTML = ports.map(function(p) {
|
|
1760
|
+
var isActive = p.port === mcpActivePort;
|
|
1761
|
+
return '<div>' + (isActive ? '● ' : '○ ') + p.port + ' (' + p.clientName + ')' + (isActive ? ' ← aktif' : '') + '</div>';
|
|
1762
|
+
}).join('');
|
|
1763
|
+
}
|
|
1764
|
+
}
|
|
1765
|
+
requestUiResize();
|
|
1766
|
+
}
|
|
1767
|
+
|
|
1467
1768
|
if (typeof document !== 'undefined' && document.addEventListener) {
|
|
1468
1769
|
document.addEventListener('visibilitychange', function() {
|
|
1469
1770
|
if (!document.hidden && (!mcpBridgeWs || mcpBridgeWs.readyState > 1)) {
|
package/package.json
CHANGED