beast-agent 1.5.1 → 1.5.2
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/package.json +1 -1
- package/src/main.js +16 -38
- package/src/renderer/index.html +0 -1
- package/src/renderer/renderer.js +2 -24
- package/src/renderer/style.css +13 -2
package/package.json
CHANGED
package/src/main.js
CHANGED
|
@@ -2993,37 +2993,17 @@ function browserWidthFor(w) {
|
|
|
2993
2993
|
return Math.max(380, Math.min(800, Math.floor(w * 0.46)));
|
|
2994
2994
|
}
|
|
2995
2995
|
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
return
|
|
2996
|
+
/* emit'lerdeki genişlik HEP gösterilen genişlik olmalı (telefon modunda 430) —
|
|
2997
|
+
yoksa yüklenme bitince dock eski genişliğine döner, daralan solda boşluk bırakır */
|
|
2998
|
+
function browserW() {
|
|
2999
|
+
try { return win.getContentSize()[0]; } catch { return 0; }
|
|
3000
3000
|
}
|
|
3001
3001
|
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
if (!browser.phone) {
|
|
3008
|
-
wc.disableDeviceEmulation();
|
|
3009
|
-
return;
|
|
3010
|
-
}
|
|
3011
|
-
let w = 800;
|
|
3012
|
-
let h = 900;
|
|
3013
|
-
try { [w, h] = win.getContentSize(); } catch {}
|
|
3014
|
-
const viewW = browserShownWidth(w);
|
|
3015
|
-
const viewH = Math.max(240, h - BROWSER_TOOLBAR_H - 8);
|
|
3016
|
-
const PW = 390;
|
|
3017
|
-
const PH = 844;
|
|
3018
|
-
const scale = Math.max(0.3, Math.min(1, (viewW - 20) / PW, (viewH - 12) / PH));
|
|
3019
|
-
wc.enableDeviceEmulation({
|
|
3020
|
-
screenPosition: 'mobile',
|
|
3021
|
-
screenOrientation: { type: 'portraitPrimary', angle: 0 },
|
|
3022
|
-
viewSize: { width: PW, height: PH },
|
|
3023
|
-
deviceScaleFactor: 2,
|
|
3024
|
-
scale,
|
|
3025
|
-
});
|
|
3026
|
-
} catch {}
|
|
3002
|
+
function browserShownWidth(w) {
|
|
3003
|
+
const avail = Math.max(320, w - 320);
|
|
3004
|
+
/* TELEFON MODU: dock KENDİSİ daralır (~430px) — sayfa mobil düzenle
|
|
3005
|
+
kenarlara tam oturur; kapatınca kullanıcı genişliği geri gelir */
|
|
3006
|
+
return browser.phone ? Math.min(430, avail) : Math.min(browser.width, avail);
|
|
3027
3007
|
}
|
|
3028
3008
|
|
|
3029
3009
|
function layoutBrowser() {
|
|
@@ -3048,7 +3028,6 @@ function layoutBrowser() {
|
|
|
3048
3028
|
try {
|
|
3049
3029
|
view.setBounds({ x: Math.max(0, w - shownWidth), y: BROWSER_TOOLBAR_H, width: shownWidth, height: Math.max(0, h - BROWSER_TOOLBAR_H) });
|
|
3050
3030
|
view.setVisible(browser.open && browser.visible);
|
|
3051
|
-
if (browser.phone) applyPhoneEmulation(); // pencere boyutlanınca telefon ölçeği tazelensin
|
|
3052
3031
|
} catch {}
|
|
3053
3032
|
}
|
|
3054
3033
|
|
|
@@ -3085,7 +3064,7 @@ function ensureBrowser() {
|
|
|
3085
3064
|
// Tarayıcı kapalıyken olayların UI'ı geri açmamasını garantile
|
|
3086
3065
|
const notify = (extra) => {
|
|
3087
3066
|
if (browser.open && win && !win.isDestroyed()) {
|
|
3088
|
-
browserEmit({ open: true, width:
|
|
3067
|
+
browserEmit({ open: true, width: browserShownWidth(browserW()), ...extra });
|
|
3089
3068
|
}
|
|
3090
3069
|
};
|
|
3091
3070
|
wc.on('did-navigate', (_e, url) => notify({ url, loading: false }));
|
|
@@ -3101,7 +3080,6 @@ function ensureBrowser() {
|
|
|
3101
3080
|
browser.view = null;
|
|
3102
3081
|
});
|
|
3103
3082
|
browser.view = view;
|
|
3104
|
-
if (browser.phone) applyPhoneEmulation(); // tarayıcı telefon modunda doğarsa emülasyonu uygula
|
|
3105
3083
|
return view;
|
|
3106
3084
|
}
|
|
3107
3085
|
|
|
@@ -3146,7 +3124,7 @@ function setBrowserOpen(v, forceVisible) {
|
|
|
3146
3124
|
layoutBrowser();
|
|
3147
3125
|
let url = '';
|
|
3148
3126
|
try { url = browser.view.webContents.getURL(); } catch {}
|
|
3149
|
-
browserEmit({ open: true, width:
|
|
3127
|
+
browserEmit({ open: true, width: browserShownWidth(browserW()), url });
|
|
3150
3128
|
}
|
|
3151
3129
|
|
|
3152
3130
|
/* --- Paralel ajan trafik düzeni: ajanlar aynı saniyede sorgu atınca Google
|
|
@@ -3210,7 +3188,7 @@ async function browserNavigateNow(raw, signal, ctx) {
|
|
|
3210
3188
|
let title = '';
|
|
3211
3189
|
let finalUrl = url;
|
|
3212
3190
|
try { title = wc.getTitle(); finalUrl = wc.getURL() || url; } catch {}
|
|
3213
|
-
browserEmit({ open: true, width:
|
|
3191
|
+
browserEmit({ open: true, width: browserShownWidth(browserW()), url: finalUrl });
|
|
3214
3192
|
flushBrowserStorage(); // oturum çerezleri diske — ani kapanışta kaybolmasın
|
|
3215
3193
|
/* açılışta snapshot da göm — model ayrı snapshot çağırmadan ref'lere başlar */
|
|
3216
3194
|
let snap = null;
|
|
@@ -5389,7 +5367,7 @@ ipcMain.handle('browser:shown:set', (_e, v) => {
|
|
|
5389
5367
|
if (browser.open) {
|
|
5390
5368
|
browser.visible = !!v;
|
|
5391
5369
|
layoutBrowser();
|
|
5392
|
-
browserEmit({ open: true, width:
|
|
5370
|
+
browserEmit({ open: true, width: browserShownWidth(browserW()) });
|
|
5393
5371
|
}
|
|
5394
5372
|
return { shown: !!v };
|
|
5395
5373
|
});
|
|
@@ -5446,7 +5424,7 @@ function setBrowserPhone(on) {
|
|
|
5446
5424
|
if (url && /^https?:/i.test(url)) wc.loadURL(url).catch(() => {});
|
|
5447
5425
|
}
|
|
5448
5426
|
} catch {}
|
|
5449
|
-
|
|
5427
|
+
/* dock daralır/genişler — layout + renderer --bw tazelenir */
|
|
5450
5428
|
if (browser.open && win && !win.isDestroyed()) {
|
|
5451
5429
|
layoutBrowser();
|
|
5452
5430
|
const [w] = win.getContentSize();
|
|
@@ -6213,7 +6191,7 @@ ipcMain.handle('ide:previewFile', async (_e, rel) => {
|
|
|
6213
6191
|
const url = base + '/' + relPath;
|
|
6214
6192
|
setBrowserOpen(true, true);
|
|
6215
6193
|
browser.view.webContents.loadURL(url).catch(() => {});
|
|
6216
|
-
browserEmit({ open: true, width:
|
|
6194
|
+
browserEmit({ open: true, width: browserShownWidth(browserW()), url });
|
|
6217
6195
|
return { ok: true, url };
|
|
6218
6196
|
} catch (e) {
|
|
6219
6197
|
return { ok: false, error: String((e && e.message) || e) };
|
|
@@ -6251,7 +6229,7 @@ ipcMain.handle('ide:preview', async () => {
|
|
|
6251
6229
|
url = base + '/';
|
|
6252
6230
|
}
|
|
6253
6231
|
browser.view.webContents.loadURL(url).catch(() => {});
|
|
6254
|
-
browserEmit({ open: true, width:
|
|
6232
|
+
browserEmit({ open: true, width: browserShownWidth(browserW()), url });
|
|
6255
6233
|
if (!bcLastServerUrl) bcTellServe(url.replace(/\/$/, ''));
|
|
6256
6234
|
return { ok: true, url };
|
|
6257
6235
|
} catch (e) {
|
package/src/renderer/index.html
CHANGED
|
@@ -374,7 +374,6 @@
|
|
|
374
374
|
<button id="bbReload" title="Yenile" data-i18n-title="tip_bb_reload">↻</button>
|
|
375
375
|
<input id="bbUrl" placeholder="adres yaz veya ara…" autocomplete="off" spellcheck="false" data-i18n-ph="bb_ph" />
|
|
376
376
|
<button id="bbPhone" title="Telefon modu — mobil versiyon / web versiyonu" data-i18n-title="tip_bb_phone"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="7" y="2" width="10" height="20" rx="2.5"/><line x1="11" y1="18" x2="13" y2="18"/></svg></button>
|
|
377
|
-
<button id="bbShot" title="Ekran görüntüsünü sohbete ekle" data-i18n-title="tip_bb_shot">▣</button>
|
|
378
377
|
<button id="bbOpenExt" title="Tarayıcıda aç" data-i18n-title="tip_bb_open">↗</button>
|
|
379
378
|
<button id="bbClose" title="Kapat" data-i18n-title="btn_close">×</button>
|
|
380
379
|
</div>
|
package/src/renderer/renderer.js
CHANGED
|
@@ -56,7 +56,6 @@ const els = {
|
|
|
56
56
|
bbReload: $('#bbReload'),
|
|
57
57
|
bbUrl: $('#bbUrl'),
|
|
58
58
|
bbOpenExt: $('#bbOpenExt'),
|
|
59
|
-
bbShot: $('#bbShot'),
|
|
60
59
|
bbClose: $('#bbClose'),
|
|
61
60
|
bbResize: $('#bbResize'),
|
|
62
61
|
bbPhone: $('#bbPhone'),
|
|
@@ -5326,28 +5325,6 @@ async function init() {
|
|
|
5326
5325
|
const u = els.bbUrl.value.trim();
|
|
5327
5326
|
if (/^https?:\/\//i.test(u)) beast.openExternal(u);
|
|
5328
5327
|
});
|
|
5329
|
-
els.bbShot.addEventListener('click', async () => {
|
|
5330
|
-
try {
|
|
5331
|
-
setStatus('ekran görüntüsü alınıyor…');
|
|
5332
|
-
const r = await beast.browserScreenshot();
|
|
5333
|
-
setStatus('');
|
|
5334
|
-
if (r && r.ok) {
|
|
5335
|
-
pending.push({
|
|
5336
|
-
type: 'image',
|
|
5337
|
-
name: 'screenshot-' + new Date().toISOString().slice(11, 19).replace(/:/g, '') + '.jpg',
|
|
5338
|
-
dataUrl: r.image,
|
|
5339
|
-
});
|
|
5340
|
-
renderChips();
|
|
5341
|
-
scrollDown();
|
|
5342
|
-
toast('Görüntü eklendi — mesajına iliştirilecek');
|
|
5343
|
-
} else {
|
|
5344
|
-
toast((r && r.error) || 'Ekran görüntüsü alınamadı');
|
|
5345
|
-
}
|
|
5346
|
-
} catch (e) {
|
|
5347
|
-
setStatus('');
|
|
5348
|
-
toast(String((e && e.message) || e));
|
|
5349
|
-
}
|
|
5350
|
-
});
|
|
5351
5328
|
els.bbUrl.addEventListener('keydown', (e) => {
|
|
5352
5329
|
if (e.key === 'Enter') {
|
|
5353
5330
|
const v = els.bbUrl.value.trim();
|
|
@@ -6753,7 +6730,8 @@ async function renderTasksPanel() {
|
|
|
6753
6730
|
const undoMap = new Map((r.undo || []).map((u) => [u.id, u.files]));
|
|
6754
6731
|
let html =
|
|
6755
6732
|
'<div class="tsk-head"><span>G\u00D6REVLER</span>' +
|
|
6756
|
-
'<button id="tskUndoLast" ' + (r.lastTodoId ? '' : 'disabled') +
|
|
6733
|
+
'<button id="tskUndoLast" class="tsk-undo-last" ' + (r.lastTodoId ? '' : 'disabled') +
|
|
6734
|
+
' title="Son g\u00F6revi geri al">\u21B6</button>' +
|
|
6757
6735
|
'<button id="tskClose" title="Kapat">\u00D7</button></div>';
|
|
6758
6736
|
if (!(r.todos || []).length) {
|
|
6759
6737
|
html += '<div class="tsk-empty">g\u00F6rev listesi yok</div>';
|
package/src/renderer/style.css
CHANGED
|
@@ -2500,11 +2500,14 @@ body.ide-mode #bcPanel { display: flex; }
|
|
|
2500
2500
|
.bc-todoitem.done { color: var(--muted); }
|
|
2501
2501
|
.bc-todoitem.done .bc-todocheck { color: var(--ok, var(--accent)); }
|
|
2502
2502
|
.bc-todoitem.done .bc-todotext { text-decoration: line-through; }
|
|
2503
|
+
#filePanelTitle { display: none; } /* başlık kaldırıldı — başlıkta yalnız ikonlar */
|
|
2504
|
+
#filePanel .file-spacer { display: none; }
|
|
2503
2505
|
#filePanelHead {
|
|
2504
2506
|
display: flex;
|
|
2505
2507
|
align-items: center;
|
|
2508
|
+
justify-content: space-evenly;
|
|
2506
2509
|
gap: 6px;
|
|
2507
|
-
padding: 10px
|
|
2510
|
+
padding: 10px 6px;
|
|
2508
2511
|
border-bottom: 1px solid var(--border);
|
|
2509
2512
|
}
|
|
2510
2513
|
#filePanelTitle { font-size: 11px; letter-spacing: 2px; color: var(--muted); font-weight: 800; }
|
|
@@ -2521,7 +2524,7 @@ body.ide-mode #bcPanel { display: flex; }
|
|
|
2521
2524
|
}
|
|
2522
2525
|
#filePanelHead button:hover { color: var(--text); background: var(--panel2); }
|
|
2523
2526
|
#filePreview { border-color: var(--accent); color: var(--accent); font-weight: 700; }
|
|
2524
|
-
#filePanelPath {
|
|
2527
|
+
#filePanelPath {
|
|
2525
2528
|
font-family: var(--mono, monospace);
|
|
2526
2529
|
font-size: 10px;
|
|
2527
2530
|
color: var(--muted);
|
|
@@ -2572,6 +2575,14 @@ body.ide-mode #bcPanel { display: flex; }
|
|
|
2572
2575
|
}
|
|
2573
2576
|
.tsk-head button:hover { color: var(--text); border-color: var(--accent); }
|
|
2574
2577
|
.tsk-head button[disabled] { opacity: 0.35; cursor: default; }
|
|
2578
|
+
/* başlıktaki tek ikonluk geri-al butonu — görev ikonuyla aynı boyda */
|
|
2579
|
+
.tsk-head .tsk-undo-last {
|
|
2580
|
+
color: var(--accent);
|
|
2581
|
+
border-color: var(--accent);
|
|
2582
|
+
padding: 2px 7px;
|
|
2583
|
+
font-size: 12px;
|
|
2584
|
+
}
|
|
2585
|
+
.tsk-head .tsk-undo-last:hover { color: var(--err); border-color: var(--err); }
|
|
2575
2586
|
.tsk-row {
|
|
2576
2587
|
display: flex;
|
|
2577
2588
|
align-items: center;
|