Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
Tailscale: Taildrop üzerinden dosya gönderme ve alma desteği eklendi. Tailscale node'larının Network sekmesine yeni bir "Files" bölümü eklendi. Gelen dosyalar boyut ve gönderen bilgisiyle gösteriliyor; Save ile Downloads klasörüne kaydedilip inbox'tan kaldırılabiliyor, Delete ile silinebiliyor. Devam eden transferlerde progress ve Cancel seçenekleri gösteriliyor.
Dosya kabul eden online device'ların üç nokta menüsüne "Send file…" seçeneği ve transfer progress ekranı eklendi. Taildrop tailnet üzerinde kapalıysa bu durum Files bölümünde belirtiliyor.
"Save to Downloads automatically" etkinleştirildiğinde gelen dosyalar pencere kapalı olsa bile doğrudan Downloads klasörüne kaydediliyor. macOS'ta ayrıca notification gösteriliyor. Bu ayar yalnızca ilgili bilgisayara ait ve backup'lara dahil edilmiyor.
Her Tailscale node kendi state directory'sinde ayrı bir Taildrop inbox tutuyor. taildrop_directory, yalnızca node tarafından ayrıca belirtilmemişse ayarlanıyor.
Taildrop artık tüm Tailscale node'larında varsayılan olarak kapalı. Node settings içerisindeki "Allow Taildrop" seçeneğiyle etkinleştirilebiliyor.
Davranış değişikliği: Core daha önce herhangi bir Tailscale node'unda gelen dosyaları sessizce kabul ediyordu. Core 1.14.4-lx.30-rc.2 veya üzeri sürümlerde "Allow Taildrop" etkin değilse gelen dosyalar reddediliyor.
Taildrop; launcher'ın core ile gRPC üzerinden iletişim kurduğu macOS daemon, 64-bit Windows service ve remote machine'lerde destekleniyor. Linux classic ve 32-bit Windows desteklenmiyor.
Tailscale: LxBox ile bilgisayar arasında clipboard text ve link gönderme desteği eklendi. Device menüsündeki "Send text…" seçeneği mevcut clipboard içeriğiyle açılıyor. "Send to clipboard" metni hedef device'ın clipboard'ına gönderirken "Open on…" tek bir HTTP(S) link'ini hedef cihazda açıyor.
Device bazında "Accept clipboard" ve "Accept links" izinleri eklendi. İkisi de varsayılan olarak kapalı ve backup'lara dahil edilmiyor.
İki dakikadan eski, gerekli izne sahip olmayan device'lardan gelen veya türü tanınmayan command'lar otomatik olarak reddediliyor.
"Save to Downloads automatically" kapalı olduğunda alınan dosyalar için de artık notification gösteriliyor.
Aynı metni bir saniye içerisinde art arda iki kez kopyalayarak telefona göndermek için "Send double copy here" özelliği eklendi. macOS'ta Cmd+C, Windows'ta Ctrl+C iki kez kullanıldığında clipboard içeriği seçilen device'a gönderiliyor.
Password manager'lardan kopyalanan password'lar double-copy özelliğiyle hiçbir zaman gönderilmiyor. macOS'ta ConcealedType, Windows'ta ExcludeClipboardContentFromMonitorProcessing kullanılıyor. Özellik Linux'ta desteklenmiyor.
DNS: Template DNS server'ları artık silinebiliyor. Template server'lar listeye bir kez ekleniyor ve sonrasında liste tamamen kullanıcı tarafından yönetilebiliyor. Silinen template server'lar restart veya Configurator yeniden açıldıktan sonra geri gelmiyor.
"Add from template" tüm catalog'u açıyor. Daha önce silinmiş bir server template'in varsayılan ayarlarıyla geri getirilebiliyor. Listede zaten bulunan server ise mevcut ayarlarıyla yeni bir tag kullanılarak kullanıcıya ait ayrı bir kopya olarak ekleniyor.
"Add all defaults" ile silinen tüm varsayılan DNS server'lar geri getirilebiliyor.
Final DNS, default domain resolver, DNS rule, rule DNS option, DNS group, başka bir server'ın domain resolver'ı veya preset tarafından kullanılan DNS server'lar silinemiyor. Tooltip hangi bileşenin server'ı kullandığını gösteriyor. required server'lar da silinemiyor.
Mevcut yapılandırmalardaki DNS server'lar güncelleme sonrasında korunuyor.
Backup dosyalarına source device'ın template catalog'u (dns.template_catalog) ve tam DNS server listesi eklendi.
Backup import edildiğinde source device'da silinmiş bir template DNS server burada da kaldırılıyor. Ancak mevcut yapılandırmada hâlen kullanılıyorsa server korunuyor ve backup_dns_entry_kept hangi bileşenin kullandığını belirtiyor.
Burada bulunmayan bir server'a işaret eden Final DNS veya default resolver, template'in varsayılan değerine sıfırlanıyor. Import edilen DNS group içerisindeki server'ların hiçbiri mevcut değilse group devre dışı olarak ekleniyor.
Template catalog içermeyen eski backup'lar önceki yöntemle birleştiriliyor ve mevcut DNS server'lar kaldırılmıyor.
Rules: DNS sorgularını sabit IP adresiyle yanıtlamak için "Fixed IP" desteği eklendi. Rule window içerisindeki DNS sekmesinde Default (DNS Final), Dedicated server veya Fixed IP seçilebiliyor.
Fixed IP alanına satır başına bir IPv4 veya IPv6 address girilebiliyor. Rule ile eşleşen domain'ler bu address'leri doğrudan core'dan alıyor ve ilgili IP'lere giden traffic aynı rule action'ını takip ediyor.
Linux: Yeni "TUN auto redirect" seçeneği eklendi. TCP traffic, system stack'in local forwarder'ı yerine nftables/iptables rule'larıyla core'a yönlendiriliyor. Böylece firewalld gibi host firewall'ların VPN'i engellemesi önleniyor.
TUN auto redirect bu bilgisayarda varsayılan olarak açık, remote machine'lerde kapalı. Yalnızca Linux'ta auto-route etkin olduğunda uygulanıyor.
Settings: Wizard → Settings bölümüne üç yeni core tunnel seçeneği eklendi.
"Tunnel MTU alignment" (lx.mtu_align): Clamp, fill veya off seçeneklerini sunuyor. Varsayılan değer clamp.
"QUIC sniff decoy" (lx.quic_sniff_decoy): MASQUE, Hysteria2 ve TUIC bağlantılarındaki ilk QUIC packet'ın önüne QUIC olmayan bir byte ekleyerek sniff edilen SNI üzerinden destination rewrite yapan relay'lerin bağlantıya müdahale etmesini önlüyor. Detour üzerinden taşınan connection'larda, direct connection'larda, tüm connection'larda veya tamamen kapalı olarak ayarlanabiliyor.
"MASQUE idle timeout" (lx.masque.idle_timeout): Varsayılan olarak kapalı. Idle durumdaki WARP tunnel'ını kapatıp ihtiyaç olduğunda yeniden açıyor. Node üzerinde ayrıca belirlenmiş bir değer varsa node'un değeri öncelikli oluyor. Sürüm Güncellemeleri
v2.3.9 sonrasında yayınlanan bir patch release. Core sing-box-lx 1.14.3-lx.18 ve contract 1.1.119 değişmedi.
Yeni
Tailscale node → Network: Device list artık server list ile aynı görünüme sahip. Compact row yapısında üst satırda name ve IPv4, altında OS, role ve IPv6, üçüncü satırda ise device’a nasıl ulaşıldığı gösteriliyor:
direct <addressort> için yeşil bolt,
relay <region> / peer relay için turuncu cloud,
Online olup henüz communication kurulmamış device için no traffic yet — Tailscale tunnel’ı ilk packet geldiğinde açar,
Offline device için last seen … ago.
Bu satırın üzerine gelindiğinde path’in ne anlama geldiği açıklanıyor. İkiden fazla address’e sahip device’larda +N expander gösteriliyor ve ⋯ menu içindeki Copy address seçeneği tüm address’leri sunuyor. Diagnostics → Tailnet bölümündeki device’lar da aynı row yapısını kullanıyor.
Network tab artık live olarak güncelleniyor. Tab açıkken her 3 saniyede bir core’dan current status isteniyor (GetTailscaleStatus, Diagnostics ile aynı şekilde). Böylece gösterilen path, bir sonraki tailnet event’e kadar boş veya stale kalabilen son streamed snapshot yerine core’un o anda gördüğü durumu yansıtıyor. Bu request’i desteklemeyen eski core’larda tab önceki gibi stream’e fallback yapıyor.
macOS install script: Network’e erişmeden önce sistemin macOS olup olmadığını kontrol ediyor ve macOS dışındaki sistemlerde çalışmayı reddediyor. Böylece daha sonra missing tool nedeniyle oluşan belirsiz failure’ların önüne geçiliyor.
v2.3.8 sonrasında gelen bir patch release. Core sing-box-lx 1.14.3-lx.18 sürümüne yükseltildi (önceki: 1.14.3-lx.14), contract ise 1.1.119 oldu (önceki: 1.1.116).
Yeni
Remote machine’ler: subscription’lar machine üzerinde otomatik güncel kalabiliyor. Machine Edit window’una yeni bir Auto-deploy subscription updates checkbox’ı eklendi (default kapalı). Launcher’ın hourly auto-update cycle’ında ilgili machine’in subscription’ları refresh ediliyor, config yeniden build edilip machine’e gönderiliyor. Böylece provider node address’lerini değiştirdiğinde machine, biri Deploy’e basana kadar dead node’larda kalmıyor. Auto-deploy yalnızca değişiklik subscription kaynaklıysa çalışıyor: refresh öncesi built config, machine’de çalışan config ile aynı olmalı ve refresh sonrası farklılaşmalı. Ayrıca machine quiet durumda olmalı; core son-good config ile başlamış olmalı, interrupted apply bulunmamalı ve core required version’dan eski olmamalı. Bunun dışındaki durumlarda manual Deploy gerekir; orange dot ve ⓘ içindeki reason gösterilir. Yeni Auto-deploy ve Last auto-deploy satırları eklendi. Her sonuç system notification olarak gösteriliyor. Launcher açık olmalı; deploy machine core’unu kısa süreli restart ediyor ve yalnızca node’lar gerçekten değiştiğinde çalışıyor. SPEC 164.
Remote machine’ler: config gerçekten machine üzerinde mi? Machine row artık bunu doğrudan gösteriyor. Deploy üzerindeki orange dot (önceki adı “Deploy config”), burada saved config ile machine’de çalışan config’in farklı olduğunu gösteriyor. Kontrol, built config.json sha256 değeri ile daemon active SHA karşılaştırılarak her 5 saniyelik poll’da yapılıyor. Configure üzerindeki red dot, son deploy’un başlayamadığını ve core’un last-good config’e rollback yaptığını gösteriyor. ⓘ window ayrıca local built-config sha256 değerini machine’in active ve last-good hash’leriyle birlikte gösteriyor.
Service window: daemon’ı local ve tüm machine’lerde çalışır tutma runbook’u. Machine row’da ⓘ yanına yeni ⚙ button eklendi; bu bilgisayar için de Servers → ⚙ → Local üzerinden açılabiliyor. Tek window dört section içeriyor:
Not running: status → restart → log → last working config ile bir kez boot → reinstall.
Core: running ve required version karşılaştırması. Linux machine için machine’in kendi platformuna uygun core ~/Downloads içine indiriliyor, SHA256SUMS ile doğrulanıyor, SSH üzerinden stream ediliyor (scp, OpenWrt’ta çalışmadığı için kullanılmıyor), yeni binary ile kontrol ediliyor, backup alınıyor, swap yapılıyor, restart ediliyor ve gerekirse rollback uygulanıyor.
Pairing: machine üzerinde invite oluşturma, paste edip Pair etme, trusted user’ları görme ve revoke etme.
Reference: daemon’ın bildirdiği binary, service, state dir, daemon.json, last-good ve log path’leri gösteriliyor; daemon bildirmediyse default olarak işaretleniyor. daemon.json key’leri ve live log window da burada.
Tüm command’lar machine’in kendi path’lerini kullanıyor. ⧉ ile copy ediliyor, ▶ ile Terminal ssh <target> '…' command’ıyla açılıyor. Window doğrudan attention gerektiren section’da açılıyor ve daemon yanıt vermeye başladığında header otomatik green oluyor. Core eskiyse machine row’da ⚙ üzerinde yellow dot ve ⚠ Core lx.11 is older than required (lx.14) benzeri line gösteriliyor. Upstream base farklıysa full version karşılaştırılıyor; ör. 1.14.0-lx.30 vs 1.14.3-lx.15. Daemon yanıt vermiyorsa red dot ve ✖ … line gösteriliyor. Eski core’a Deploy artık önce warning veriyor: How to update / Deploy anyway, ayrıca Don't ask again for this version seçeneği bulunuyor. Machine Edit window’una SSH field eklendi (root@<host> default). Init system (procd/systemd) Service header’dan seçiliyor. Local tarafta Status/Install tab’ları bu aynı view’a dönüştürüldü ve Uninstall eklendi. Service artık launcher’dan restart edilebiliyor. SPEC 161.
Service window: daemon kendi kendini update edebiliyor ve launcher’a hangi platformda çalıştığını bildiriyor. /admin/commands destekleyen core’larda (SPEC 127–129 sonrası sing-box-lx, lx.15’ten itibaren) Service header’a Daemon command row eklendi. daemon.json içindeki named command’lardan (update, check-update, restart vb.) biri seçiliyor, command text ve last outcome gösteriliyor, Run ile çalıştırılıyor ve log izleniyor. update, machine üzerinde sing-box lxd update çalıştırıyor: download, checksum, swap, restart ve yeni core başlamazsa rollback. Window restart süresince bekliyor ve Updated lx.15 → lx.16, Already up to date veya rolled back sonucu gösteriyor. Launcher command’a hiçbir argument/body göndermiyor. Key yoksa row not available gösteriyor ve yeni Suggested commands section, daemon.json içine yapıştırılabilecek hazır "commands": {…} fragment veriyor.
Daemon passport artık machine platformunu (linux/arm64, release asset suffix) ve init system’i (procd, systemd vb.) taşıyor. Machine record buna göre düzeltiliyor; örneğin elle yanlış seçilmiş amd64, arm64 olarak düzeltilebiliyor. Download core doğru asset’i indiriyor ve daemon init system’i bildiriyorsa init selector kaldırılıyor. Eski tab’lar header altında bir Troubleshooting accordion’a dönüştürüldü; aynı anda tek section açık ve diagnosis hangi section’ı seçtiyse o açılıyor (✖ Not running — connection refused, ⚠ Core — lx.15 is older than required lx.16). Healthy daemon’da window kısa kalıyor ve tüm section’lar folded durumda. Unknown suffix içeren version (1.14.3-lx.15-test128) artık yanlış biçimde “older than required” denmek yerine “cannot compare” olarak gösteriliyor. SPEC 162.
DNS tab: “Never serve stale answers for node hostnames” seçeneği eklendi ve default açık. Default domain resolver altında bulunuyor. Açık olduğunda core, node hostname için cached answer TTL süresi dolunca optimistic cache’teki stale address’i kullanmak yerine yeniden resolve ediyor. Böylece address döndüren provider node’ları eski address artık çalışmadığında da erişilebilir kalıyor. Config artık route.default_domain_resolver alanını object olarak yazıyor: {"server": "<resolver>", "disable_optimistic_cache": true}. Box kapalıysa field false. Resolver seçimi değişmedi. Setting backup’larla taşınıyor (dns_resolver_no_stale, contract 1.1.119). Bu ayar default resolver üzerinden core’un resolve ettiği tüm hostname’leri etkiliyor: node server’ları ve diğer outbound target’lar dahil. App’lerden gelen DNS query’lerini etkilemiyor; onlar mevcut Serve stale answers setting’ini kullanmaya devam ediyor.
Edit Rule: preset’in kendi tanımı. Preset edit window’a Form ve JSON yanında üçüncü bir Preset tab eklendi. Wizard template’te nasıl yazıldıysa preset entry burada birebir, read-only olarak gösteriliyor (for_each_node, vars, #if / #tpl body’leri, dns_servers). JSON tab mevcut value’larla preset’in ürettiği output’u göstermeye devam ediyor.
macOS install script: Core download artık launcher download gibi progress bar gösteriyor; önceden sessiz çalışıyordu.
Düzeltmeler
Remote node’lar artık Local tab’da görünmüyor. Local tab açıkken bir machine Deploy edildiğinde veya remote machine core’u restart edildiğinde, machine node list’i yanlışlıkla Local list’e düşüp core stopped altında kalabiliyordu. Artık her tab yalnızca kendi state ve widget’larını güncelliyor. Stopped local core da Remote tab’daki bağlı machine’in node list’ini artık temizlemiyor.
v2.3.7 sonrasında yayımlanan bir patch release. Core sing-box-lx 1.14.3-lx.14 sürümüne güncellendi (önceden 1.14.2-lx.12), contract ise 1.1.116 oldu (önceden 1.1.114).
Düzeltildi
XHTTP path artık ?query kısmını koruyor. Path değeri /?proxyip=… olan bir VLESS/XHTTP node, link veya Xray JSON üzerinden import edildiğinde daha önce ? sonrasındaki bölüm kayboluyordu. Bu nedenle edgetunnel gibi Cloudflare Worker relay’leri proxyip değerini alamıyordu. Path artık Xray’de olduğu gibi yazıldığı biçimde korunuyor; bundled core (SPEC 119) sondaki bölümü request query olarak server’a gönderiyor. Shared link’lerde ?, path= içinde encode ediliyor. Yalnızca bu query tail bakımından farklı olan node’lar artık duplicate olarak merge edilmiyor. Daha önce import edilmiş subscription node’ları bir sonraki update’te düzeltmeyi otomatik alıyor; pasted link ile eklenmiş node’ların yeniden eklenmesi gerekiyor. WebSocket ?ed=N davranışı değişmedi. Contract 1.1.115.
rules section içermeyen backup import’ları artık routing rule’ları silmiyor. Daha önce yalnızca bir node veya bir folder içeren partial LX Backup file, rules key’i bulunmasa bile mevcut rules[] listesini sessizce boşaltabiliyordu ve response’ta applied.rules: 0 görünüyordu. Artık rules key’i bulunmayan file mevcut rule’lara dokunmuyor. rules key’i varsa, empty list olsa bile, yine mevcut rule’ları replace ediyor. Import report ayrıca kaç rule’un kaldırıldığını backup_rules_replaced ile gösteriyor. Tek bir node eklemek için backup file yerine POST /state/servers kullanılmalı. Contract 1.1.116.
Yeni
Debug API artık state’i Configurator ile aynı şekilde düzenleyebiliyor. Yeni single-entry endpoint’ler eklendi:
GET/POST/DELETE /state/servers
POST/DELETE /state/rules
POST/DELETE /state/dns/servers
POST/DELETE /state/dns/rules
Bunların /remote/machines/{id}/state/* altında remote karşılıkları da bulunuyor.
Server endpoint’leri link, .conf, vpn:// veya sing-box JSON üzerinden node ekleyebiliyor; node silindiğinde ona ait reference’lar da temizleniyor. Her değişiklikten sonra local config.json yeniden oluşturuluyor ve config_rebuilt bilgisi dönüyor.
PATCH /state/dns artık hem servers hem de rules alanlarını zorunlu tutuyor. Empty list bilinçli olarak ilgili listeyi temizliyor; yalnızca tek liste göndererek diğerini yanlışlıkla silmek artık mümkün değil.
API’ye yapılan her POST, PATCH, PUT ve DELETE request launcher log’a tek satır olarak yazılıyor: method, path, status ve response’un başlangıcı. Request body hiçbir zaman loglanmıyor.
Aynı configuration için Configurator window açıksa, API üzerinden state değişikliği yapıldığında artık burada prompt gösteriliyor: saved settings reload edilebilir veya window’daki mevcut copy korunabilir. Böylece Configurator’ın bir sonraki Save işleminde API değişikliğini sessizce overwrite etmesi engelleniyor. SPEC 160.
Bu sürüm yukarıdaki XHTTP path düzeltmesi için gerekli. Core artık ?… tail bölümünü request query olarak gönderiyor (SPEC 119). Eski core bunu path’in içine yapıştırıyordu; örneğin /x?ed=2048 → /x%3Fed=2048, bu da 404 ile sonuçlanabiliyordu.
Core’daki diğer yenilikler:
lx.mtu_align eklendi; varsayılan değer clamp. detour veya chain üzerinden IP tunnel kullanan node’larda mtu / initial_packet_size değerlerini ayarlıyor. Örneğin WARP üzerinden IPv6 server’a bağlanan hysteria2 senaryosunda kullanılabiliyor.
MASQUE outer QUIC artık daha büyük initial packet ile başlıyor.
vhttp: auto, tek bir h3 failure sonrasında artık h2’ye kalıcı olarak takılı kalmıyor.
lx.13 ile AmneziaWG QUIC decoy her handshake için yeniden oluşturuluyor.
ib=chrome ve ib=firefox, gerçek browser QUIC ClientHello gönderiyor.
Daemon stub’larında değişiklik yok (SYNC_REV → tag commit d7f11807).
v2.3.6 sonrasında yayımlanan bir patch release. Core sing-box-lx 1.14.2-lx.12 değişmedi, contract 1.1.114 değişmedi.
Düzeltildi
Wizard → Rules: Çok sayıda rule-set URL içeren bir SRS rule artık yavaş connection’da download sırasında başarısız olmuyor. Önceden bir rule içindeki file’lar sırayla indiriliyor ve tüm grup sabit 90 saniyelik ortak timeout kullanıyordu. Bu yüzden 8+ URL içeren rule’lar sürekli aynı file’da başarısız oluyor, her retry ise en baştan başlıyordu. Timeout artık file sayısına göre artıyor: file başına 60 saniye, minimum 90 saniye. Error dialog ayrıca listede ilk URL’yi değil, gerçekten başarısız olan URL’yi gösteriyor.
Wizard → Rules: Drag-and-drop reorder, edit veya delete sonrasında list artık scroll position’ını koruyor; eskiden listenin en üstüne dönüyordu.
v2.3.4 sonrasında yayımlanan bir yama sürümü. Core sing-box-lx 1.14.2-lx.11 olarak değişmeden kaldı, contract ise 1.1.107’den 1.1.108’e yükseltildi.
Öne Çıkanlar
macOS kurulum betiği 0.5: Core artık data klasörüne (~/Library/Application Support/singbox-launcher/bin) kuruluyor; v2.3+ sürümleri ilk olarak buraya bakıyor. Önceden bu klasördeki eski bir core, bundle içine yeni yerleştirilen core’un önüne geçebiliyordu. 2.3 öncesi bir kurulumdan yükseltme yapılırken eski core artık taşınmıyor. Betik sonunda TUN (sistem genelinde VPN) için root sahipli core kopyasını tek bir sudo komutuyla oluşturmayı teklif ediyor veya daha sonra çalıştırılacak komutu gösteriyor. Daemon servisi kuruluysa lxd --service=install çalıştırılıyor. Hem curl | bash hem de sudo bash ile çalışıyor.
Boş bir data klasörüyle ilk açılışta gösterilen tek seferlik bildirim artık “Welcome” mesajı olarak gösteriliyor. Mesaj data klasörünün konumunu belirtiyor ve yalnızca önceki bir sürümden kalan subscription’lar eksikse LX Backup’tan geri yükleme yapılmasını öneriyor. Böylece temiz kurulumlarda gösterilen endişe verici “No previous data found” mesajı kaldırıldı.
Düzeltmeler
sudo bash altında kurulum betiği launcher verilerini root kullanıcısının home dizinine yerleştiriyordu. Artık kurulumu başlatan kullanıcı (SUDO_USER) için kurulum yapılıyor ve data klasörünün sahipliği de bu kullanıcıya veriliyor.
Sistem saati ciddi şekilde geride olan bir Mac’te indirme başarısız olduğunda daha önce “the version may not exist” mesajı gösteriliyordu. Betik artık curl: (60) hatasını tanıyor, Mac’in mevcut saatini gösteriyor ve düzeltmek için kullanılacak komutu belirtiyor: sudo sntp -sS time.apple.com. Ağ hataları (curl 6/7/28/35) da artık doğru şekilde ağ hatası olarak belirtiliyor.
Teknik / Dahili
Contract 1.1.108: Güncelliğini yitirmiş registry metinleri düzeltildi; naive emit notu, Tailscale referansları ve build-tag ifadeleri, fork’un option struct’ları yeniden kontrol edildikten sonra body.core değerinin 1.14.2-lx.11 olarak güncellenmesi ve MASQUE idle_timeout semantiği bunlara dahil. Tailscale için “core unsupported” uyarısı artık sürüm yerine with_tailscale build tag’ini belirtiyor. Yalnızca metin değişiklikleri yapıldı; davranış değişmedi ve corpus aynı kaldı.
Node’lar artık kendi yönlendirme ve DNS girdilerini (“node sections”) taşımıyor. Yapıştırılan bir config veya node belgesi artık yalnızca node’u oluşturuyor; içindeki dns/route girdileri korunmuyor ve JSON sekmesi bunu belirtiyor. Mevcut node section’lar yükleme sırasında kaldırılıyor; bunları içeren bir yedek içe aktarıldığında uyarı gösteriliyor. Tailscale node’ları tailnet route ve MagicDNS ayarlarını yeni “Tailscale networks” şablon preset’inden alıyor. Bu preset, subscription node’ları dahil tüm Tailscale node’larına hizmet ediyor ve mevcut kullanıcılar için bir kez otomatik olarak etkinleşiyor. Bir node, kendi formundaki “Skip presets” seçeneğiyle bundan hariç tutulabiliyor. Rules ve DNS sekmelerinde preset satırı hizmet verdiği node’ları listeliyor; DNS sunucuları da DNS server listesinde görünüyor. Preset’in JSON sekmesi bu node’ların her biri için girdilerini gösteriyor, eşleşen node yoksa “No matching nodes.” yazıyor.
exit_node bulunmayan Tailscale node’ları artık Servers sekmesinde görünür durumda. Core çalışırken grup listesinin sonuna NETWORKS adlı bir öğe ekleniyor ve bu node’lar burada gösteriliyor. Bu özellik hem Local panelinde hem de bağlı makinenin Remote panelinde çalışıyor; Remote taraftaki node ve durum bilgileri o makinenin kendi core’undan geliyor. Her satırda gecikme yerine node durumu gösteriliyor: starting, running, sign-in needed veya stopped. Bir satıra tıklamak node penceresini açıyor. Burada node seçimi, gecikme testi, sıralama veya filtreleme bulunmuyor ve config değiştirilmiyor.
Tailscale node penceresine yeni Network sekmesi eklendi. macOS ve diğer daemon kurulumlarında, ayrıca bağlı bir Remote makinede kullanılabiliyor. Sekmede durum, ağ adı, Sign in ve onaylı Log out, bu cihaz, exit node ve ağdaki cihazlar gösteriliyor; cihazlar için Ping kontrolü de yapılabiliyor ve gecikme, direct/relay ile region bilgileri gösteriliyor. Bir exit node seçildiğinde node’a dokunulmadan anında değiştirilir. Seçim node içindeki değerden farklıysa uyarı gösterilir ve Save choice seçimi kendi node’unuzdaki exit_node alanına yazar ve config’i yeniden oluşturur. Remote makinede seçim o makinenin kendi node’una yazılır ve Configure penceresindeki Save işlemi gibi config yeniden oluşturulur; config Deploy config ile makineye gönderilir. Subscription node’larında Save choice yoktur. Local panelinden açıldığında sekme yerel core’u gösterir ve komutlar, bir Remote makine bağlı olsa bile yerel core’a gider. Details sekmesindeki eski Tailscale bölümü buraya taşındı; cihaz başına trafik bilgisi artık gösterilmiyor.
Çalışan bir exit node’u olmayan Tailscale node’u artık gecikme yerine “no exit” gösteriyor ve penceresi Network sekmesindeki cihazları kontrol etmenizi söylüyor. Aynı davranış Remote panelinde de geçerli.
Tag alanı boş bırakılarak eklenen bir Tailscale node’u artık LxBox’taki gibi tailscale adıyla oluşturuluyor. Elle yazdığınız tag olduğu gibi korunuyor; mevcut node’ların tag’leri değişmiyor.
DNS sekmesine DNS önbelleği ayarları eklendi: “DNS cache size” varsayılan olarak 4000 yanıt tutuyor ve 1024–65535 arasında ayarlanabiliyor; “Serve stale answers” önbellekteki yanıtı anında döndürüp arka planda yeniliyor; “Keep DNS cache after restart” ise yeniden başlatma sonrasında önbelleği koruyor. İki anahtar da varsayılan olarak açık, böylece yeniden başlatma sonrasında bir siteye yapılan ilk istek artık tünel üzerinden DNS yanıtını beklemiyor.
DNS sekmesine “Clear DNS cache” düğmesi eklendi. Core çalışırken bağlantıyı yeniden başlatmadan, cache.db içinde tutulanlar dahil önbelleğe alınmış DNS yanıtlarını siliyor. Core kapalıysa önbelleğin yalnızca core çalışırken temizlenebileceği belirtiliyor.
sing-box JSON biçiminde yazılmış OpenVPN endpoint’leri (openvpn-client) artık kabul ediliyor. Bunlar kendi node’unuz olarak, başka node’larla birlikte bir belge içinde veya bir subscription’dan gelebiliyor. Node, alan kontrolü ve uyarı olmadan yazıldığı haliyle endpoints[] içine ekleniyor. Form bulunmuyor ve .ovpn içe aktarma desteği yok. with_openvpn olmadan derlenmiş bir core kullanılıyorsa node, uyarıyla birlikte config dışında bırakılıyor.
Node’lar ve abonelikler
Elle sing-box JSON olarak yazdığınız bir node, ister kendi sunucunuz ister bir klasör üyesi olsun, artık core’a yazıldığı haliyle gönderiliyor. Uygulama normalde onu düzeltecek tüm kuralları yine listeliyor ancak bunlar “the app changed nothing” olarak işaretleniyor. Yalnızca ihlal edildiğinde tüm config’in başlamasını engelleyen kurallar uygulanmaya devam ediyor. Subscription node’ları ise eskisi gibi düzeltiliyor; buna sing-box JSON subscription’ları için AmneziaWG MTU sınırı da dahil.
Share link veya WireGuard config üzerinden gelen kendi sunucunuzun ya da klasör üyesinin JSON’unu düzenlemek artık onu elle yazılmış bir node’a dönüştürüyor. JSON, linkin yerini alıyor ve uygulama bunu yapmadan önce onay istiyor. JSON sekmesi artık node dizilerini de kabul ediyor ve yalnızca ilk node’u tutuyor; birden fazla varsa geri kalanların saklanmayacağını belirtiyor. Aynı mesaj node belgelerinde de kullanılıyor. Birden fazla node içeren node belgesi de kabul ediliyor; service outbound veya group olmayan ilk node tutuluyor ve sekme geri kalanların korunmadığını bildiriyor.
Bir subscription aynı sunucuyu farklı adlarla, farklı ülkeler veya hatta markalar altında defalarca listeleyebiliyor. Uygulama zaten her gerçek sunucu için tek node tutuyordu; artık bu node tekrar sayısını ve kullanılan adları bir not olarak gösteriyor. Böylece hiçbir şeyin kaybolmadığı açıkça görülüyor; örneğin 114 girdilik bir subscription’ın yalnızca 5 farklı sunucu içermesi gibi.
Balancer içeren Xray subscription’larında havuzdaki her sunucu artık remarks tag biçiminde adlandırılıyor. Yinelenen adlarda kayıt numarası ekleniyor, böylece sunucular artık grubun adını paylaşmıyor. Grup yalnızca balancer’ın selector alanının seçtiği sunucuları içeriyor; diğerleri ayrı node olarak kalıyor.
Şablon kuralları
Koşulsuz yazılmış bir preset kuralı, örneğin yalnızca {"action": "sniff"} içeren bir kural veya test kuralı, artık config’e yazıldığı haliyle ekleniyor. Build summary içinde bunun tüm trafiğe veya tüm DNS sorgularına uygulanacağına dair uyarı gösteriliyor. Önceden bu tür kurallar tamamen dışarıda bırakılıyordu. Ancak bağlı olduğu preset rule set kapalı olduğu veya referans verdiği bir ayar boş olduğu için koşullarını kaybeden bir kural yine dışarıda bırakılıyor; böylece bu kural tüm trafiği kendi outbound’una göndermiyor.
Henüz indirilmemiş bir rule set’e bağlı kural artık build summary içinde uyarıyla birlikte config dışında bırakılıyor. Önceden yalnızca eksik rule set referansı kaldırılıyor, kuralın geri kalanı korunuyordu. Bu nedenle “Russian blocked resources” ve “Games” preset’leri tüm TCP ve UDP trafiğini kendi outbound’larına gönderiyor, altlarındaki kurallar ve final outbound hiçbir zaman eşleşmiyordu. Kendi DNS kuralınız eksik bir rule set kullanıyorsa tüm DNS sorgularını kendi sunucusuna gönderiyordu. Bu durum ilk açılışta rule set’ler henüz indirilmeden önce, başarısız indirme veya temizlenen önbellek sonrasında ve gerekli dosyaları olmayan Remote makinelerde yaşanabiliyordu. Bir kural en az bir kullanılabilir rule set’i koruyorsa, mevcut olanlarla config içinde kalmaya devam ediyor.
logical türündeki preset kuralları artık parça parça kontrol ediliyor. İç kurallardan biri, ilgili ayar boş olduğu ya da rule set kapalı veya henüz indirilmemiş olduğu için koşullarını kaybederse tüm kural uyarıyla birlikte dışarıda bırakılıyor. Önceden böyle bir or kuralı tüm trafiği kendi outbound’una gönderebiliyordu.
Yalnızca bir rule set tarafından referans verilen...
Windows, launcher yönetici olarak çalıştırıldığında: başarısız bir izin kontrolü artık VPN’i devre dışı bırakmıyor. Sistem klasörü C:\ProgramData herkes için yazma izni verdiğinde çekirdek, “core log …\sing-box-lxd\logs\classic.log: C:\ProgramData: … is granted 0xd0040, must not be writable by a non-administrative account” hatasıyla başlatılmayı reddediyordu. Launcher artık çekirdek günlüğü için yalnızca C:\ProgramData\sing-box-lxd klasörünü ve içindeki logs klasörünü kontrol ediyor; bu, çekirdeğin kendi kontrol biçimiyle aynı.
Yükseltilmiş yetkilerle başlatma sırasındaki izin kontrolleri artık işlemi engellemek yerine uyarı gösteriyor. Korunan çekirdek kopyası veya günlük klasörü kontrolden geçemezse iletişim kutusu izinleri anlaşılır ifadelerle gösteriyor, riski açıklıyor, sorunu düzeltecek bir komut sunuyor (sorun bizim klasörümüzün üstündeki bir klasördeyse icacls komutu) ve Yine de çalıştır seçeneğini sunuyor. Launcher kapatılana kadar Yine de çalıştır seçeneği, launcher’ın kendi çekirdeğini başlatıyor ve/veya çekirdek çıktısını launcher’ın kendi günlüğüne yazıyor.