beast-agent 2.33.0 → 2.33.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/package.json +1 -1
- package/src/renderer/index.html +29 -3
- package/src/renderer/renderer.js +84 -1
- package/src/renderer/style.css +29 -0
package/package.json
CHANGED
package/src/renderer/index.html
CHANGED
|
@@ -150,6 +150,7 @@
|
|
|
150
150
|
<span id="finTerm" title="">MT5</span>
|
|
151
151
|
<span class="file-spacer"></span>
|
|
152
152
|
<button id="finReconnect" title="MT5'e yeniden bağlan">⟳</button>
|
|
153
|
+
<button id="finSettings" title="Görünüm ayarları — bölümleri göster/gizle">⚙</button>
|
|
153
154
|
</div>
|
|
154
155
|
<div id="finBody">
|
|
155
156
|
<div class="fin-card">
|
|
@@ -190,7 +191,7 @@
|
|
|
190
191
|
</div>
|
|
191
192
|
<div id="finTraderStatus">Kapalı</div>
|
|
192
193
|
</div>
|
|
193
|
-
<div class="fin-card">
|
|
194
|
+
<div class="fin-card" id="finRiskCard" hidden>
|
|
194
195
|
<div class="fin-card-title">RİSK OTOMASYONU <span id="finWatchDot" class="fin-dot off" title="Koruma döngüsü"></span><span id="finWatchInfo" class="fin-hint"></span></div>
|
|
195
196
|
<div class="fin-field fin-check">
|
|
196
197
|
<label title="5 saniyelik döngü: +R'da SL'yi başabaşa çeker, trailing uygular, kısmi TP alır — ajan turunu beklemez">
|
|
@@ -231,7 +232,7 @@
|
|
|
231
232
|
</div>
|
|
232
233
|
<div id="finAlertList" class="fin-alerts"><div class="fin-empty">Aktif fiyat alarmı yok</div></div>
|
|
233
234
|
</div>
|
|
234
|
-
<div class="fin-card">
|
|
235
|
+
<div class="fin-card" id="finPerfCard" hidden>
|
|
235
236
|
<div class="fin-card-title">PERFORMANS <span id="finStatsInfo" class="fin-hint"></span><span class="file-spacer"></span><button id="finReportBtn" title="Haftalık rapor üret — istatistik + işlem günlüğü + ajan değerlendirmesi">📄 Rapor</button></div>
|
|
236
237
|
<div id="finEquity" class="fin-equity"></div>
|
|
237
238
|
<div class="fin-grid">
|
|
@@ -258,7 +259,7 @@
|
|
|
258
259
|
</div>
|
|
259
260
|
<div id="finSymList"><div class="fin-empty">—</div></div>
|
|
260
261
|
</div>
|
|
261
|
-
<div class="fin-card fin-grow">
|
|
262
|
+
<div class="fin-card fin-grow" id="finFlowCard" hidden>
|
|
262
263
|
<div class="fin-card-title">AKIŞ</div>
|
|
263
264
|
<div id="finLog"></div>
|
|
264
265
|
</div>
|
|
@@ -754,6 +755,31 @@
|
|
|
754
755
|
</div>
|
|
755
756
|
</div>
|
|
756
757
|
|
|
758
|
+
<div id="finSettingsOverlay" class="mini-overlay" hidden>
|
|
759
|
+
<div class="mini-dialog fin-settings-dialog">
|
|
760
|
+
<div class="mini-head">
|
|
761
|
+
<span class="mini-title">FINANCE GÖRÜNÜM AYARLARI</span>
|
|
762
|
+
<button class="mini-close" id="finSettingsClose" title="Kapat">×</button>
|
|
763
|
+
</div>
|
|
764
|
+
<div class="mini-body">
|
|
765
|
+
<div class="fin-set-hint">Varsayılan olarak üç bölüm de gizlidir — açmak tamamen isteğe bağlıdır. Seçim bilgisayarda hatırlanır. Risk otomasyonu gizliyken AKTİF OLMAZ.</div>
|
|
766
|
+
<label class="fin-set-row" title="BE + trailing + kısmi TP koruması, günlük limitler, fiyat alarmları bölümü">
|
|
767
|
+
<input id="finShowRisk" type="checkbox" />
|
|
768
|
+
<span class="fsr-main"><b>RİSK OTOMASYONU</b><i>BE + trailing + kısmi TP, günlük limitler, alarmlar</i></span>
|
|
769
|
+
</label>
|
|
770
|
+
<label class="fin-set-row" title="Equity grafiği + günlük/haftalık istatistikler + haftalık rapor bölümü">
|
|
771
|
+
<input id="finShowPerf" type="checkbox" />
|
|
772
|
+
<span class="fsr-main"><b>PERFORMANS</b><i>Equity grafiği, istatistikler, haftalık rapor</i></span>
|
|
773
|
+
</label>
|
|
774
|
+
<label class="fin-set-row" title="Ajan/MT5 işlem günlüğü akışı bölümü">
|
|
775
|
+
<input id="finShowFlow" type="checkbox" />
|
|
776
|
+
<span class="fsr-main"><b>AKIŞ</b><i>Ajan ve MT5 olay günlüğü</i></span>
|
|
777
|
+
</label>
|
|
778
|
+
<div class="fin-set-note">RİSK OTOMASYONU gizliyken koruma döngüsü (watchdog) kapatılır; tekrar gösterdiğinde ilgili kutucuktan açabilirsin.</div>
|
|
779
|
+
</div>
|
|
780
|
+
</div>
|
|
781
|
+
</div>
|
|
782
|
+
|
|
757
783
|
<div id="cronOverlay" class="mini-overlay" hidden>
|
|
758
784
|
<div class="mini-dialog">
|
|
759
785
|
<div class="mini-head">
|
package/src/renderer/renderer.js
CHANGED
|
@@ -165,6 +165,15 @@ const els = {
|
|
|
165
165
|
finDot: $('#finDot'),
|
|
166
166
|
finTerm: $('#finTerm'),
|
|
167
167
|
finReconnect: $('#finReconnect'),
|
|
168
|
+
finSettings: $('#finSettings'),
|
|
169
|
+
finSettingsOverlay: $('#finSettingsOverlay'),
|
|
170
|
+
finSettingsClose: $('#finSettingsClose'),
|
|
171
|
+
finShowRisk: $('#finShowRisk'),
|
|
172
|
+
finShowPerf: $('#finShowPerf'),
|
|
173
|
+
finShowFlow: $('#finShowFlow'),
|
|
174
|
+
finRiskCard: $('#finRiskCard'),
|
|
175
|
+
finPerfCard: $('#finPerfCard'),
|
|
176
|
+
finFlowCard: $('#finFlowCard'),
|
|
168
177
|
finBalance: $('#finBalance'),
|
|
169
178
|
finEquity: $('#finEquity'),
|
|
170
179
|
finProfit: $('#finProfit'),
|
|
@@ -9391,7 +9400,7 @@ function finDayKey(ms) {
|
|
|
9391
9400
|
function finRenderAutomation(cfg, watch) {
|
|
9392
9401
|
if (!cfg) return;
|
|
9393
9402
|
const ae = document.activeElement;
|
|
9394
|
-
if (els.finWatchdogCb) els.finWatchdogCb.checked = cfg.watchdog !== false;
|
|
9403
|
+
if (els.finWatchdogCb) els.finWatchdogCb.checked = finView.risk && cfg.watchdog !== false;
|
|
9395
9404
|
const setNum = (el, v) => {
|
|
9396
9405
|
if (el && ae !== el) el.value = v;
|
|
9397
9406
|
};
|
|
@@ -9533,6 +9542,8 @@ async function finSnapshot() {
|
|
|
9533
9542
|
finRenderRoles(r.cfg);
|
|
9534
9543
|
finRenderTrader(r.trader, r.cfg);
|
|
9535
9544
|
finRenderAutomation(r.cfg, r.watch);
|
|
9545
|
+
/* GİZLİ RİSK OTOMASYONU AKTİF OLAMAZ: sunucu hâlâ açık diyorsa kapat */
|
|
9546
|
+
if (!finView.risk && r.cfg && r.cfg.watchdog !== false) finSaveCfg({ watchdog: false });
|
|
9536
9547
|
finRenderStats(r.stats, r.equity, r.account && r.account.currency ? r.account.currency : '');
|
|
9537
9548
|
finRenderAlerts(r.alerts);
|
|
9538
9549
|
}
|
|
@@ -9630,6 +9641,78 @@ function finSaveCfg(patch) {
|
|
|
9630
9641
|
beast.financeSettings(patch).then(() => { finWatchDirty = false; }).catch(() => { finWatchDirty = false; });
|
|
9631
9642
|
}, 400);
|
|
9632
9643
|
}
|
|
9644
|
+
|
|
9645
|
+
/* ---------- GÖRÜNÜM AYARLARI (isteğe bağlı bölümler) ----------
|
|
9646
|
+
RİSK OTOMASYONU + PERFORMANS + AKIŞ varsayılan GİZLİ; açmak isteğe bağlı.
|
|
9647
|
+
Seçim localStorage'da hatırlanır. Risk otomasyonu gizliyken watchdog
|
|
9648
|
+
AKTİF OLMAZ — kart yeniden gösterilince kutucuktan açılabilir. */
|
|
9649
|
+
const finViewKey = 'beast.financeView';
|
|
9650
|
+
const finView = { risk: false, perf: false, flow: false };
|
|
9651
|
+
try {
|
|
9652
|
+
const v = JSON.parse(localStorage.getItem(finViewKey) || 'null');
|
|
9653
|
+
if (v && typeof v === 'object') {
|
|
9654
|
+
finView.risk = v.risk === true;
|
|
9655
|
+
finView.perf = v.perf === true;
|
|
9656
|
+
finView.flow = v.flow === true;
|
|
9657
|
+
}
|
|
9658
|
+
} catch {}
|
|
9659
|
+
|
|
9660
|
+
function finViewPaint() {
|
|
9661
|
+
if (els.finRiskCard) els.finRiskCard.hidden = !finView.risk;
|
|
9662
|
+
if (els.finPerfCard) els.finPerfCard.hidden = !finView.perf;
|
|
9663
|
+
if (els.finFlowCard) els.finFlowCard.hidden = !finView.flow;
|
|
9664
|
+
if (els.finShowRisk) els.finShowRisk.checked = finView.risk;
|
|
9665
|
+
if (els.finShowPerf) els.finShowPerf.checked = finView.perf;
|
|
9666
|
+
if (els.finShowFlow) els.finShowFlow.checked = finView.flow;
|
|
9667
|
+
const row = (cb) => cb && cb.closest('.fin-set-row');
|
|
9668
|
+
const r1 = row(els.finShowRisk); if (r1) r1.classList.toggle('on', finView.risk);
|
|
9669
|
+
const r2 = row(els.finShowPerf); if (r2) r2.classList.toggle('on', finView.perf);
|
|
9670
|
+
const r3 = row(els.finShowFlow); if (r3) r3.classList.toggle('on', finView.flow);
|
|
9671
|
+
}
|
|
9672
|
+
|
|
9673
|
+
function finViewApply() {
|
|
9674
|
+
finViewPaint();
|
|
9675
|
+
/* gizli risk otomasyonu aktif kalmaz */
|
|
9676
|
+
if (!finView.risk && els.finWatchdogCb) els.finWatchdogCb.checked = false;
|
|
9677
|
+
try { localStorage.setItem(finViewKey, JSON.stringify(finView)); } catch {}
|
|
9678
|
+
if (!finView.risk) finSaveCfg({ watchdog: false });
|
|
9679
|
+
}
|
|
9680
|
+
|
|
9681
|
+
function finSettingsOpen() {
|
|
9682
|
+
if (els.finSettingsOverlay) els.finSettingsOverlay.hidden = false;
|
|
9683
|
+
}
|
|
9684
|
+
function finSettingsCloseModal() {
|
|
9685
|
+
if (els.finSettingsOverlay) els.finSettingsOverlay.hidden = true;
|
|
9686
|
+
}
|
|
9687
|
+
|
|
9688
|
+
function finViewToggle(key, on) {
|
|
9689
|
+
finView[key] = !!on;
|
|
9690
|
+
finViewApply();
|
|
9691
|
+
if (key === 'risk') {
|
|
9692
|
+
toast(on
|
|
9693
|
+
? 'RİSK OTOMASYONU gösteriliyor — aktif etmek için karttaki kutucuğu işaretle'
|
|
9694
|
+
: 'RİSK OTOMASYONU gizlendi ve kapatıldı');
|
|
9695
|
+
} else {
|
|
9696
|
+
toast((key === 'perf' ? 'PERFORMANS' : 'AKIŞ') + (on ? ' bölümü gösteriliyor' : ' bölümü gizlendi'));
|
|
9697
|
+
}
|
|
9698
|
+
if (financeModeOn()) finSnapshot();
|
|
9699
|
+
}
|
|
9700
|
+
|
|
9701
|
+
if (els.finSettings) els.finSettings.addEventListener('click', finSettingsOpen);
|
|
9702
|
+
if (els.finSettingsClose) els.finSettingsClose.addEventListener('click', finSettingsCloseModal);
|
|
9703
|
+
if (els.finSettingsOverlay) {
|
|
9704
|
+
els.finSettingsOverlay.addEventListener('click', (e) => {
|
|
9705
|
+
if (e.target === els.finSettingsOverlay) finSettingsCloseModal();
|
|
9706
|
+
});
|
|
9707
|
+
els.finSettingsOverlay.addEventListener('keydown', (e) => {
|
|
9708
|
+
if (e.key === 'Escape') { e.stopPropagation(); finSettingsCloseModal(); }
|
|
9709
|
+
});
|
|
9710
|
+
}
|
|
9711
|
+
if (els.finShowRisk) els.finShowRisk.addEventListener('change', () => finViewToggle('risk', els.finShowRisk.checked));
|
|
9712
|
+
if (els.finShowPerf) els.finShowPerf.addEventListener('change', () => finViewToggle('perf', els.finShowPerf.checked));
|
|
9713
|
+
if (els.finShowFlow) els.finShowFlow.addEventListener('change', () => finViewToggle('flow', els.finShowFlow.checked));
|
|
9714
|
+
finViewApply();
|
|
9715
|
+
|
|
9633
9716
|
if (els.finInterval) els.finInterval.addEventListener('change', () => {
|
|
9634
9717
|
const v = Math.max(30, Math.min(3600, Math.round(Number(els.finInterval.value) || 120)));
|
|
9635
9718
|
els.finInterval.value = v;
|
package/src/renderer/style.css
CHANGED
|
@@ -5202,3 +5202,32 @@ body.finance-mode #composerWrap { margin-right: var(--finW, 400px); }
|
|
|
5202
5202
|
.fin-skill-chip:hover { border-color: var(--accent); }
|
|
5203
5203
|
.fin-skill-chip.on { border-color: var(--accent); color: var(--accent); background: var(--accent-dim); }
|
|
5204
5204
|
.fin-skill-chip input { flex: none; width: auto; margin: 0; }
|
|
5205
|
+
|
|
5206
|
+
/* FINANCE GÖRÜNÜM AYARLARI modalı (başlıktaki ⚙) — isteğe bağlı bölümler */
|
|
5207
|
+
.fin-card[hidden] { display: none; }
|
|
5208
|
+
.fin-settings-dialog { width: min(440px, 90vw); height: auto; max-height: min(560px, 84vh); }
|
|
5209
|
+
.fin-set-hint {
|
|
5210
|
+
font-size: 11px;
|
|
5211
|
+
color: var(--muted);
|
|
5212
|
+
line-height: 1.45;
|
|
5213
|
+
margin-bottom: 10px;
|
|
5214
|
+
}
|
|
5215
|
+
.fin-set-row {
|
|
5216
|
+
display: flex;
|
|
5217
|
+
align-items: flex-start;
|
|
5218
|
+
gap: 9px;
|
|
5219
|
+
background: var(--panel);
|
|
5220
|
+
border: 1px solid var(--border);
|
|
5221
|
+
border-radius: 9px;
|
|
5222
|
+
padding: 9px 10px;
|
|
5223
|
+
margin-bottom: 6px;
|
|
5224
|
+
cursor: pointer;
|
|
5225
|
+
user-select: none;
|
|
5226
|
+
}
|
|
5227
|
+
.fin-set-row:hover { border-color: var(--accent); }
|
|
5228
|
+
.fin-set-row.on { border-color: var(--accent); background: var(--accent-dim); }
|
|
5229
|
+
.fin-set-row input { flex: none; width: auto; margin: 2px 0 0; accent-color: var(--accent); }
|
|
5230
|
+
.fin-set-row .fsr-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
|
|
5231
|
+
.fin-set-row .fsr-main b { font-size: 12px; color: var(--text); letter-spacing: 0.4px; }
|
|
5232
|
+
.fin-set-row .fsr-main i { font-style: normal; font-size: 10.5px; color: var(--muted); }
|
|
5233
|
+
.fin-set-note { margin-top: 8px; font-size: 10.5px; color: var(--muted); line-height: 1.4; }
|