# Değişiklik Günlüğü (Changelog)

Bu projenin sürüm geçmişi. Biçim [Keep a Changelog](https://keepachangelog.com/tr/),
sürümleme [Semantic Versioning](https://semver.org/lang/tr/) (BÜYÜK.KÜÇÜK.YAMA).

## [1.4.3] — pump_hunter kayıp-mekaniği sertleştirmeleri + bütçe-tavanı UX

### Değişti
- **pump_hunter kayıp-mekaniği** (configurable, conservative default; kâr garanti edilmez,
  DRY_RUN'da doğrulanmalı — dinamik evren backtest'le sadık doğrulanamaz):
  - **Kâr-kilidi:** pozisyon +%2.5 kâra geçince stop, zirvenin %1.5 altına çekilir (yalnız
    yükseltir) → hızlı pump→dump kazancı geri vermez. (`ph_lock_profit_pct`/`ph_locked_trail_pct`)
  - **Climax/blowoff veto:** tek 5m mumda ≥%15 fırlamış exhaustion mumu alınmaz. (`ph_max_bar_ext_pct`)
  - **Likidite tabanı:** `ph_min_qv` 300k→1M (ince/slippage'lı coinleri eler).
- **Bütçe-tavanı hatası bağlama duyarlı:** tek bot çalışırken artık "aynı hesaptaki başka bir
  botu durdur" demez (başka bot yoksa kafa karıştırıcıydı); sadece "bütçeyi bakiyenin altına indir" der.
- Sürüm 1.4.2 → 1.4.3.

## [1.4.2] — Güvenlik sertleştirmeleri (tedarik zinciri, kripto, panel, site backend)

Çok-ajanlı güvenlik denetiminin bulgularına yönelik sertleştirmeler. Davranış geriye-uyumlu.

### Eklendi
- **Sürüm imzalama (tedarik zinciri):** release artefaktları OFFLINE RSA-4096 ile imzalanır;
  `scripts/update.sh` ve `install.sh` indirilen paketi extract + `docker compose --build`'den
  ÖNCE sha256 + imza ile doğrular (fail-closed). brimoza.com/CDN/DNS ele geçirilse bile imzasız
  paket çalıştırılamaz. `download` URL'si https + brimoza.com ile sınırlanır.
- **Opsiyonel `BRIMOZA_LIVE_GATE_ENV_ONLY`:** etkinken LIVE gerçek-para kapısı yalnızca sunucu
  ortam değişkeninden açılır (panelden 403) — çalınan panel oturumu tek başına gerçek-para işlemi
  başlatamaz. Varsayılan kapalı.

### Değişti / Güvenlik
- **At-rest şifreleme:** API anahtarları salt'lı PBKDF2 (`enc:v2`) ile şifrelenir; eski `enc:v1`
  blob'ları çözülmeye devam eder (lazy migration).
- **Env-parola hash'leri:** panel ve site-admin yolları salt'lı PBKDF2 kabul eder; eski 64-hane
  sha256 geriye-uyumlu çalışır. `deploy_site_api.sh` artık PBKDF2 hash üretir.
- **Panel:** güvenlik başlıkları (CSP `frame-ancestors`/`object-src`/`base-uri`, X-Frame-Options,
  nosniff, HSTS) + cookie-auth state-değiştiren isteklerde Origin (CSRF) doğrulaması. Exception
  mesajları artık istemciye sızdırılmaz (sunucuda loglanır).
- **site_api (internete açık):** ziyaretçi IP'si anahtarlı HMAC-SHA256 ile saklanır; `/api/track`
  + `/api/lead` için global yazma tavanı + retention pruning (lead'ler korunur).
- Installer env-önek uyumu: öneksiz `PANEL_PASSWORD`/`SECRET_KEY` → `BRIMOZA_*` eşlenir.
- Sürüm 1.4.1 → 1.4.2.

## [1.4.1] — Yerelleştirme tamamlama + bot UX + tek-satır kurulum

### Eklendi
- **Tek-satır kurulum:** `curl -fsSL https://brimoza.com/install.sh | bash` — Docker'ı
  (yoksa apt ile) kurar, en son paketi indirir, `.env` üretir, başlatır.
- **i18n motoru — HTML+%s desenleri:** "Nakit: <b>%s</b> · Açık pozisyon: <b>%s</b> ..."
  gibi HTML+dinamik satırlar artık çevriliyor (attribute-tırnak toleranslı eşleştirme).
- Backend UI string'leri (analysis/strategy etiket+not'ları), JS-birleştirilmiş metinler
  ve bütçe/lisans uyarıları çevrildi (en/es/de/ar/pt). Telegram bildirimleri seçilen dilde.
- **Bot UX:** açık pozisyonu olan bot durdurulurken uyarı; açık pozisyonlu bot yeniden
  başlatılırken bütçe-tavanı kontrolü atlanır (bütçe zaten pozisyonlara bağlı).

### Değişti
- Sürüm 1.4.0 → 1.4.1.

## [1.4.0] — Tam yerelleştirme + panel marka & UX

### Eklendi
- **Statik metin i18n (innerHTML eşleştirme):** `i18n.js` artık `<b>/<br>/<code>`'lu
  not/açıklama elemanlarını (Ayarlar notları, strateji/risk açıklamaları, analiz/backtest
  notları) bütün olarak çevirir. Backend toast hataları da i18n'e eklendi. (en/es/de/ar/pt)
- **Telegram bildirimleri seçilen dilde:** sunucu-tarafı çeviri (`coinbot/notify_i18n.py`);
  panel dili `BRIMOZA_NOTIFY_LANG`'a kaydedilir, bildirimler o dilde gönderilir (fail-soft).
- **Panel markası:** jenerik ◆ yerine Brimoza "Ascending B" markı + favicon (tüm ekranlar + login).
- **Custom confirm modal** (`ui.js`): native `confirm()` yerine temalı + çevrilebilir modal.

### Değişti
- Sürüm 1.3.0 → 1.4.0.

## [1.3.0] — English-facing (internationalization)

The product is now English-first for international sale; Turkish remains a selectable UI language.

### Changed
- **URL routes are now English:** `/ayarlar`→`/settings`, `/raporlar`→`/reports`,
  `/analiz`→`/analysis` (page routes; APIs were already English).
- **Settings UI i18n:** the new License and Update panels' strings are now translatable
  (en/es/de/ar/pt added to `i18n.js`); dynamic JS rewritten to single translatable text nodes.
- **Docs in English:** `README.md` translated; `KURULUM.md` → **`SETUP.md`** (English);
  install/update/build script references updated.
- **Code comments + docstrings translated to English** across `coinbot/`, `webapp/`,
  `scripts/` and `tests/` — runtime/i18n-source string literals preserved byte-for-byte.
- Version 1.2.0 → 1.3.0.

## [1.2.0] — Panel içi güncelleme kontrolü

Panel artık yeni sürümleri kendi tespit eder ve tek komutla güncellemeye yönlendirir.

### Eklendi
- **Sürüm kontrolü:** Panel `brimoza.com/version.json`'ı (env `BRIMOZA_VERSION_URL`
  ile override edilebilir) sorar; yeni sürüm varsa Ayarlar → Güncelleme'de
  "Yeni sürüm: vX.Y.Z" rozeti + changelog + komut gösterir (`coinbot/updater.py`,
  `GET /api/update-check`). Ağ hatasında fail-soft (paneli bloklamaz).
- **Tek-komut güncelleyici:** `scripts/update.sh` en son sürümü indirir, derler ve
  yeniden başlatır; `.env`, `state/`, `logs/` ve compose dosyaları korunur, eski kod
  `.brimoza-backup-<sürüm>.tgz` olarak yedeklenir. (Kapsayıcı kendini güncellemez —
  Docker socket gerektirir, güvenlik tavizi olur.)
- Dockerfile artık `VERSION` dosyasını imaja kopyalar (uygulama kendi sürümünü bilir).

### Değişti
- Sürüm 1.1.0 → 1.2.0.

## [1.1.0] — Lisanslama, 1-sunucu & marka

Ürünün ticari satışa hazır hâle geldiği sürüm: deneme/lisans motoru, tek-sunucu
aktivasyonu ve Brimoza marka kimliği.

### Eklendi
- **Lisans + 7 gün deneme:** Lisans yokken tam özellikli 7 günlük deneme; süre
  dolunca botlar başlatılamaz (`expired` kilidi). `basic` = en fazla 3 aktif bot,
  `pro` = sınırsız. Gumroad License API ile doğrulama (`coinbot/license.py`).
- **1 anahtar = 1 sunucu:** İlk aktivasyonda Gumroad `increment_uses_count` ile
  kuruluma bağlanır; anahtar başka sunucuda etkinse (`uses>1`) reddedilir
  (`seat_taken`). Taşımak için satıcı use sayacını sıfırlar (support@brimoza.com).
- **Ayarlar'da lisans paneli:** Anahtar girişi + durum (deneme gün sayısı / Basic /
  Pro / başka-sunucuda / süre-doldu) + etkinleştirme. `/api/settings` lisans
  durumunu döndürür ve anahtar girildiğinde aktivasyonu tetikler.
- **Marka kimliği:** Brimoza "Ascending B" logosu/markı, favicon seti, app ikonu,
  og:image ve Gumroad pazarlama görselleri (kapak + thumbnail).

### Değişti
- Sürüm 1.0.1 → 1.1.0.

## [1.0.1] — Güvenlik & doğruluk sertleştirmeleri

Çok-boyutlu denetimde bulunan, gerçek-para kaybına yol açabilecek doğrulanmış
açıkların ve dağıtım güvenliği eksiklerinin kapatıldığı yama sürümü.

### Düzeltildi
- **Oversell (kritik):** OCO sonrası "flatten", hesabın TÜM serbest base bakiyesini
  satıyordu; artık yalnızca o pozisyonun OCO'da dolmamış kalanını satar
  (`min(kalan, serbest)`). Aynı hesapta birden çok bot/manuel coin varken başkasının
  pozisyonunu likide etme riski giderildi.
- **Hayalet pozisyon (kritik):** Sıfır-dolumlu (executedQty=0, ör. EXPIRED) market
  alımında qty=0/entry=0 korumasız, asla kapanmayan pozisyon açılabiliyordu; artık
  böyle dolumda hiç pozisyon açılmaz.
- **Askıda bağlantı:** Binance Client'ına HTTP timeout (varsayılan 10 sn,
  `BRIMOZA_HTTP_TIMEOUT` ile ayarlanır) eklendi — donan bir istek bot thread'ini
  (ve manuel kapatmayı) artık süresiz bloklayamaz.
- **Kaba-kuvvet kilidi atlatması:** Login kilidi `X-Forwarded-For` ile atlatılabiliyordu;
  artık XFF'e yalnızca `BRIMOZA_TRUST_PROXY=1` iken güvenilir + IP'den bağımsız
  global başarısız-deneme tavanı (`BRIMOZA_LOGIN_GLOBAL_MAX_ATTEMPTS`, vars. 50)
  eklendi. Dockerfile `--forwarded-allow-ips` varsayılanı `*` yerine `127.0.0.1`
  (`FORWARDED_ALLOW_IPS` ile genişletilebilir).
- **Açık ağ bağlama:** Kolay-kurulum (SQLite) paneli artık varsayılan olarak yalnız
  `127.0.0.1`'e bağlanır (`compose.sqlite.yml`); bilinçli açmak için `BIND_HOST=0.0.0.0`.
  Gerçek-para paneli düz HTTP'de tüm internete açılmaz.
- **Bütçe-tavanı (oversell koruması):** Aynı hesapta LIVE/TESTNET bot başlatılırken
  çalışan botların serbest nakdi + yeni bütçe gerçek quote bakiyesini aşıyorsa başlatma
  REDDEDİLİR; botlar artık aynı parayı "var" sanıp birbirinin nakdini kapamaz.
- **Hayalet-düşürme koruması:** Bütçe (sub-ledger) modunda, paylaşılan hesapta serbest
  base ~0 görünse bile (başka botun OCO'su kilitlemiş olabilir) gerçek pozisyon artık
  yanlışlıkla defterden düşürülmez.
- **Sır şifreleme fail-closed:** `secret_box`, `BRIMOZA_SECRET_KEY` yokken API
  anahtarlarını DÜZ saklamayı artık REDDEDER (RuntimeError + arayüzde net hata); bilinçli
  yerel-geliştirme için `BRIMOZA_ALLOW_PLAINTEXT_SECRETS=1`. LIVE anahtarları sessizce
  plaintext'e yazılmaz.
- **Borsa dayanıklılığı:** İdempotent okumalar (fiyat/mum/bakiye/OCO durumu) 429/418 ve
  ağ hatalarında üstel backoff + jitter ile (Retry-After'a saygılı) yeniden denenir; ağ
  hataları artık `BinanceAPIException` dışında da `ExchangeError`'a sarılır. Market emirleri
  `newClientOrderId` taşır ve ağ kopmasında `get_order` ile doğrulanır (çifte-emir/çifte-satış
  koruması).

### Belgeler
- **README** gerçek ürüne (çoklu-bot web paneli, 6 strateji, 5 ekran, kolay SQLite kurulum)
  göre yeniden yazıldı; eski tek-bot/PostgreSQL-önce ve silinmiş dosya (index.html, manager.py)
  referansları temizlendi.

## [1.0.0] — İlk sürüm

İlk ticari sürüm. Binance SPOT (kaldıraçsız) çoklu-bot otomasyon paneli.

### Eklendi
- **Çoklu-bot sistemi:** aynı anda farklı ayarlarla birden çok bot; her bot kendi
  thread'inde, kendi izole bütçesinde (sub-ledger) ve kendi geçmişiyle çalışır.
- **6 strateji tipi:** `trend` (boğa kırılım), `mean_reversion` (range/yatay),
  `oversold_bounce` (aşırı-satım sıçraması), `dca` (trend-pullback: yükselende dip al),
  `pump_hunter` (dinamik küçük-cap pump avcısı), `scalper` (gün içi al-sat, sabit %-kâr).
- **Web paneli (5 ekran):** Genel Durum (toplulaştırılmış özet + BTC rejimi), Çoklu-Bot
  Dashboard (zengin metrikli liste + bot detayı), Coin Analiz (büyük alım/satış, sessiz
  birikim, erken pump, uyanan coinler, geçmiş pump'lar), Backtest, Ayarlar.
- **Risk yönetimi:** ATR stop/take + sabit %-take-profit, zorunlu sert taban-stop,
  trailing stop, time-stop (rotasyon), günlük zarar devre kesici, per-pozisyon tavanı.
- **Bot detayı:** açık pozisyonlar + manuel kapatma (Sat / Tümünü Sat), sinyal önizleme
  (TARA), günlük performans dağılımı (Sharpe, max drawdown, profit factor, equity grafiği).
- **Backtest ekranı:** stratejiyi geçmiş veride test et; sembol seçici + metrikler + grafik.
- **Telegram bildirimleri:** işlem aç/kapa, hata, devre kesici; chat ID otomatik bulma.
- **Ayarlar ekranı:** Telegram + global Binance (LIVE/TESTNET) anahtarları + LIVE onay
  kapısı — hepsi DB'de şifreli saklanır, arayüzde geri gösterilmez.
- **Güvenlik:** üç modlu çalışma (DRY_RUN/TESTNET/LIVE), katmanlı LIVE kilidi, fail-closed
  panel kimlik doğrulama (parola/token), API anahtarları secret_box ile şifreli.
- **Kolay kurulum (SQLite):** tek konteyner, ayrı veritabanı sunucusu yok;
  `scripts/install.sh` tek komutla parola + şifreleme anahtarı üretir ve başlatır.
- **Deploy seçenekleri:** SQLite (`compose.sqlite.yml`, kolay) veya PostgreSQL
  (`docker-compose.yml`, ölçek için).

### Notlar
- Strateji parametreleri kâr için garanti edilmemiştir; başlangıç değerleridir.
- Varsayılan mod güvenli `dry_run` (kâğıt). LIVE için Binance anahtarı + LIVE onayı gerekir.

[1.0.0]: #
