BRAMPP → Değişiklikler
DeğişikliklerSürüm sürüm ne değişti
Güncellemenin değip değmeyeceğine karar verenler için yazıldı. Düzeltmeler neyin bozuk olduğunu söylüyor, "çeşitli iyileştirmeler" demiyor — bir hata size bir öğleden sonraya mal olduysa gittiğini bilmeyi hak edersiniz.
2.05
Veritabanı araçları yazma işlerini gerçekten yapabiliyor — ama bir satır güncellemekle bir tabloyu düşürmek artık aynı izne bağlı değil. Yanında, alan adı işlemlerinde makineyi tutarsız bırakan dört yol.
Eklendi
- Şema keşfi:
db_tablesvedb_describe. Tablolar satır sayısı ve boyutla, sütunlar tip, anahtar ve varsayılanlarıyla listeleniyor. Bir yapay zekâ istemcisinin en sık ihtiyaç duyduğu iki işlem artık ham SQL yazmayı gerektirmiyor — ve sorgu yazmadan önce sütun adlarını doğrulamak, uydurmanın yerini alıyor. - SQL yazma üç kademeye ayrıldı. Okuma serbest;
INSERT/UPDATE/REPLACEiçinallow_write;DELETE/DROP/TRUNCATE/ALTER/CREATEiçin ayrıcaallow_destructive. Bir satır güncellemek ile bir tabloyu düşürmek aynı istek değil ve aynı anahtara bağlanamaz.
Düzeltildi
allow_writeaçıldığında hiçbir denetim kalmıyordu. Çoklu ifade reddi bile yalnızca salt-okunur daldaydı, yaniallow_writeile"DROP DATABASE a; DROP DATABASE b"çalışıyordu. Artık çoklu ifade her kademede reddediliyor ve SQL hiçbir bayrakla dosya sistemine ulaşamıyor — bir veritabanına yazma izni, diski okuma izni değildir.- Silinen bir alan adının vhost'u geri yazılabiliyordu. Kayıt denetimi yazımın etrafındaydı, içinde değil; aradaki
configtestbeklemesinde silme baştan sona koşabiliyordu. Sonuç, artık var olmayan bir sertifikayı gösteren öksüz bir vhost:configtestkalıcı olarak düşer ve Apache hiç başlamaz — makinedeki bütün siteler birden gider. Üstelik hata logu bastırıldığı için sessizce. - Alan adı oluşturulurken kayıt en sonda yazılıyordu. Site klasörü, sertifika, vhost ve
/etc/hostsgirişi hazırken kayıt yoktu;/etc/hostsyönetici parolası isteyip süresiz beklediğinden bu pencere dakikalar sürebiliyordu. Orada çıkılırsa geriye hiçbir arayüzde görünmeyen, hiçbir şeyin toplamadığı dosyalar kalıyordu. - Yedekten geri yükleme, canlı bir paylaşımın altından vhost'u çekiyordu. Tünel ayakta kalıp
Hostbaşlığını artık var olmayan bir bloğa taşıyor ve istek varsayılan siteye düşüyordu — localhost kökü, phpMyAdmin ve Adminer dâhil. Çalışan bir arka plan uygulaması da kaydı gittiği için bir daha hiç durdurulamıyordu. Artık silmeden önce canlılığa bakılıyor. Ayrıcalocalhost.confyanlışlıkla öksüz sayılabiliyordu. nginx.confkorumasız yazılıyordu. Yedek başarısız olsa bile yazım devam ediyor,nginx -tyapılmıyor ve geri dönüş bulunmuyordu. Dahası budama en eskiden başlayarak sildiğinden, kullanıcının BRAMPP öncesinginx.conf'u altı rutin işlemden sonra kayboluyordu. En eski yedek artık kalıcı.
Değişti
- Teşhis paneli kaydı olmayan vhost dosyalarını bildiriyor — ve bilerek silmiyor. Aynı dizinde elle eklenmiş yapılandırmalar da duruyor; "kaydı yok" ile "çöp" aynı şey değil.
- MCP izin sınırı test altına alındı. 25 aracın alanı ve yazma gereksinimi elle yazılıyordu ve hiçbir doğrulaması yoktu; bir bayrağı ters çevirmek yıkıcı bir aracı salt-okunur bir izinde sessizce kullanılabilir kılardı.
2.04
BRAMPP, tasarlandığı makinede kurulamıyordu. Bu sürüm kurulum sihirbazını baştan sona gözden geçiriyor.
Düzeltildi
- Temiz bir Mac'te kurulum hiç tamamlanamıyordu.
brew install httpdextra/httpd-ssl.confdosyasını verir ama onun gösterdiğiserver.crtsertifikasını VERMEZ. BRAMPP "dosya var" diye SSL include'ını açıyor,configtestSSLCertificateFile: file does not existile düşüyor, yazılanlar geri alınıyor, Apache grubu tamamlanmıyor — ve o grup zorunlu olduğu için "Tamamla" düğmesi hiç etkinleşmiyordu. Artık dosyanın var olması değil, gösterdiği her sertifikanın diskte olması aranıyor; BRAMPP kendi SSL dosyasını mkcert sertifikalarıyla yazana kadar include kapalı kalıyor. - Sihirbazda kurulum donuyordu ve konsol boş kalıyordu. Paketler PTY'siz çalıştırıldığından brew'un sorduğu onay sorusu konsola HİÇ ulaşmıyordu (brew istem satırını yeni satırla bitirmez, tampon eksik parçayı tutar). Kullanıcı donmuş bir ekran, ilerlemeyen bir çubuk ve iptal düğmesi olmayan bir pencere görüyordu. Kurulum artık uygulamanın diğer sekmelerindeki akıştan geçiyor: canlı çıktı, indirme yüzdesi, cevaplanabilir istem çubuğu ve otomatik onay geri sayımı.
- mkcert "isteğe bağlı" deniyordu ama atlanamıyordu. Paket zorunlu işaretli olduğu için paket adımı geçilemiyor, localhost kurulumu da mkcert olmadan hiç ilerlemiyordu. CA kurulumunda takılan kullanıcı (kayıp
rootCA-key.pem, anahtarlık reddi) ne sihirbazı bitirebiliyor ne de çalışan bir HTTP ortamına geçebiliyordu. Artık mkcert yoksa localhost HTTP olarak kuruluyor ve SSL sonradan eklenebiliyor. - Sihirbazın ikinci
httpd.confyazıcısı korumasızdı. Yedek yok,configtestyok, geri alma yok — üstelik yazdığı şey dosyadaki her PHP handler bloğunu (vhost'lara ait olanlar dâhil) yeniden düzenliyor. Elle kurulmuş bir yapılandırmada geri dönüşü yoktu. Artık yedek → yaz → doğrula → geçmezse geri al. - Homebrew kurulu değilken paket kurmak anlaşılmaz bir
command not foundhatası veriyordu; artık eksik olanın Homebrew olduğu söyleniyor. - Durum tazelemesi PHP-FPM yapılandırmasını yeniden yazıyordu. Açılışta, çalışan sürecin altından
www.conf9000'den 908X'e çevriliyor ve hiçbir şey yeniden başlatılmıyordu: dosya bir portu, süreç başkasını söylüyor, vhost'lar dosyadakine yönlendiriyor — bütün PHP siteleri 502. Elle brew php kurmuş kullanıcı için bu "BRAMPP'ı kurdum, çalışan PHP'm bozuldu" demekti. Okuma artık yazmıyor; düzeltme yeniden başlatmayla birlikte yapılıyor. - Açık paylaşım kapatılamadığında vhost yine de siliniyordu — devre dışı bırakma ve yeniden adlandırmada. Herkese açık adres yayında kalıp varsayılan siteyi (phpMyAdmin ve Adminer dâhil) sunmaya başlıyordu. Üç çağrı yerinin üçü de artık korumalı.
2.03
pgAdmin4 desteği kaldırıldı, ve alan adı silmenin arkada bıraktıkları toplandı.
Kaldırıldı
- pgAdmin4 artık kurulmuyor ve yönetilmiyor. Homebrew pgAdmin4'ü formula olmaktan çıkarıp cask'a taşımıştı; BRAMPP hâlâ eski formula yolunu sınadığı için "kurulu değil" diyor, dolayısıyla Kaldır düğmesi de hiç görünmüyordu — kendi yazdığı yapılandırma dosyası arayüzden temizlenemez hâldeydi. Bir masaüstü uygulamasının kurulumunu üstlenmek BRAMPP'ın işi değil; PostgreSQL yönetimi için Adminer duruyor (tek dosya, hem MySQL hem PostgreSQL) ve o hep çalışıyordu. PostgreSQL'in kendisine dokunulmadı. Güncelleyince pgAdmin4 kendiliğinden kaldırılmaz — dilerseniz
brew uninstall --cask pgadmin4ile kaldırabilirsiniz.
Düzeltildi
- Alan adı silinirken açık paylaşım kapatılamazsa artık silme yapılmıyor. Eskiden paylaşımı durdurma denemesinin sonucu atılıyor ve koşulsuz "kapatıldı" yazılıyordu. Tünel gerçekten ölmediyse kayıt ve vhost yine de siliniyor, herkese açık adres yayında kalmaya devam ediyor ama artık varsayılan siteyi gösteriyordu — üstelik tünel alan adına bağlı olduğu için arayüzden durdurulamıyordu.
- Silme, alan adının log dosyalarını bırakıyordu. Her silinen alan adı arkasında iki-dört dosya kalıyordu. Artık dört yol birden temizleniyor: nginx alan adlarına bir de Apache companion vhost'u yazılıyor, ve sunucu tercihi sonradan değiştiyse eski sunucunun dosyaları da diskte duruyordu.
- Tünel log ve pid dosyaları alan adı silindikten sonra da kalıyordu.
- /etc/hosts satırı kaldırılamazsa artık uyarı düşüyor. Kayıt zaten silinmiş olduğundan o satırı bir daha hiçbir akış aramıyor ve sessizce kalıcı oluyordu.
- Silme onayı ne olduğunu söylüyor. Yalnızca "geri alınamaz" diyordu; site klasörünüzün ve içindekilerin kaldığını söylemiyordu.
2.02
Güncelleme denetiminin kendisi bozuktu — hem menüden hem Ayarlar'dan. Tıklıyordunuz, hiçbir şey olmuyordu, hiçbir yerde de hata çıkmıyordu. Bu sürüm onu düzeltiyor ve bir daha aynı biçimde bozulamaması için sınırı testlere yazıyor.
Düzeltildi
- "Güncellemeleri Denetle" menü öğesi gerçekten hiçbir şey yapmıyordu. Öğe menüde duruyor, tıklanıyor, karşılığında tek bir satır bile düşmüyordu. Sebebi menüdeki iki grubun aynı yeri hedeflemesiydi: biri uygulama menüsünü baştan kuruyor, diğeri artık var olmayan o gruba "sonra" ekleniyordu. Bu tanımlı bir şey değil — öğe çiziliyor ama eylemi hiç bağlanmıyor. Ne derleme ne çalışma zamanı tek bir uyarı veriyordu.
- Altında ikinci bir arıza vardı: Ayarlar'daki düğme de sessizdi. İki giriş de aynı iç bildirimi gönderiyordu ve o bildirimi hiç kimse dinlemiyordu. Yani menü düzeltilse bile hiçbir şey olmayacaktı. Denetim artık aradan bir şey geçmeden doğrudan çağrılıyor.
- Güncelleme pencereleri ana pencerenin arkasına düşüyordu. Denetimi başlatıyor, sonra hiçbir şey olmamış gibi bakıyordunuz — pencere açılmıştı, sadece görünmüyordu. Artık üstte kalıyor.
- Ayarlar'daki "Denetleniyor…" yazısı sonucu beklemiyordu, sabit bir süre sayıyordu: yavaş bağlantıda denetim bitmeden siliniyor, hızlı bağlantıda bitmiş bir denetim için boşuna duruyordu. Artık gerçek sonucu bekliyor.
Değişti
- Güncelleme denetimi tek bir yerden yapılıyor: Ayarlar → Güncellemeler. Uygulama menüsündeki öğe kaldırıldı. Aynı işin iki kapısı olması, birinde düzeltilen bir davranışın diğerinde eski kalmasıyla biterdi.
- Denetim artık size bir yanıt veriyor. Tıkladığınız anda "denetleniyor" penceresi açılıyor; sonuç gelince aynı pencere yeşil onaya dönüp güncel olduğunuzu söylüyor. Önceden yeni sürüm yoksa hiçbir şey görünmüyordu — bu da menü öğesini bozuk gösteriyordu.
2.01
Denetim birikiminin son on maddesi ve 2.0'da güncellemenin kendi bıraktığı bir iz. Ağırlık yine aynı yerde: uygulama, yapmadığı bir şeyi yaptığını söylüyordu.
Düzeltildi
- Güncelleme, disk kalıbını bağlı bırakıyordu. 2.0'a geçtikten sonra her açılışta konsola
volume is read onlyhatası düşüyordu: uygulama çıkarken kalıbı ayırma işi hiç çalışmıyor, bir sonraki açılış onu silmeye çalışıyordu. Ayırma artık çıkıştan önce yapılıyor; takas betiği de emniyet olarak kalanları süpürüyor. - Kaldırma, silemediği dosyaları sildim diye bildiriyordu — MariaDB'de bu, veri dizini diskte dururken silindiğini sanmanız demekti. Ayrıca veri dizini, sunucunun durduğu doğrulanmadan siliniyordu.
- Kurulum ekranı, iptal edilmiş bir işlem için yeşil onay gösteriyordu; sonuç, log gövdesindeki herhangi bir onay işaretinden çıkarılıyordu.
- İki kurulum aynı anda başlayabiliyordu ve ikincisi birincisini yanıtlanamayan bir isteme mahkûm ediyordu.
- Çok havuzlu bir
www.conf'ta PHP-FPM hiç başlamıyordu — her havuzunlistensatırı aynı porta çevriliyordu. - Sihirbaz paylaşılan Apache yapılandırmasını geri alınamaz biçimde yazıyordu. Artık yedek alınıyor,
configtestçalıştırılıyor ve geçmezse yedekten dönülüyor.httpd-ssl.confde üzerine yazılmadan önce yedekleniyor. - MariaDB "root parolasız mı" yoklaması yanlış şeyi ölçüyordu: makinede bir yerden (ör.
~/.my.cnf) parola bulunduğunda da başarılı sayıyordu. - Veritabanı ayar panelinde tek bir alanı değiştirmek, dokunulmamış dört ayarı da sıfırlıyordu. BRAMPP'ın dosyası kullanıcınınkinden sonra okunduğu için yazdığı her satır onunkini eziyordu.
- Sertifika güven denetimi her koşulda "geçti" diyordu; sistemdeki tüm sertifikaları sayıyor, aradığı kökü hiç aramıyordu. Sertifika süresi de hiç denetlenmiyordu.
- mkcert kurulumu takılan kullanıcı sihirbazı hiç bitiremiyordu — HTTPS isteğe bağlı, grup da öyle işaretlendi.
- Apache, Nginx'in portuna oturabiliyordu — ikisi aynı anda çalışamıyordu. BRAMPP'ın şeması Apache 80/443, Nginx 8080/8443; ikisinin birlikte çalışabilmesi bu ayrıma dayanıyor. Ama Homebrew'un stok
httpd-ssl.conf'uListen 8443ile geliyor ve sihirbaz onu "kullanıcının seçimi" sayıp koruyordu. Sonuç: iki servis de 8443'e bağlanmaya çalışıyor, ikinci başlayanAddress already in useile düşüyor — ekranda görünen tek şey "Nginx başlamıyor" oluyor, sebebi Apache'de olduğu hâlde. Yazılacak port artık çakışmayı denetliyor; gerçekten kullanıcı seçimi olan bir port (ör. 9443) korunuyor. Teşhis paneli de çakışmayı ayrı bir bulgu olarak bildiriyor. - phpMyAdmin ve pgAdmin bağlantıları standart olmayan HTTPS portunda çalışmıyordu.
2.0
On dokuz düzeltme daha. Bu turun ağırlığı kaldırma ve kurulum akışlarında: uygulama sildiğini sandığınız şeyi silmemiş, kurduğunu sandığınız şeyi kurmamış olabiliyordu.
Eklendi
- Homebrew paketleri kendi sekmesinde, tek tek seçilip güncellenebiliyor.
brew outdatedmakinedeki her formülü sayar; burada elli paket ediyor vehttpdilephp,cocoapodsilejadxarasında kayboluyordu. Üçe ayrılıyor: BRAMPP'ın yönettikleri, onların bağımlılıkları, dokunmadığı geri kalanı. Çalışan bir servis yükseltilirse yeniden başlatılıyor — yükseltme ikiliyi değiştirir ama çalışan süreç eskisini tutmaya devam eder. - Elle güncelleme denetimi anında yanıt veriyor. Pencere tıklamayla birlikte açılıyor ve sonucu aynı pencerede gösteriyor. Açılıştaki denetim sessiz kalmaya devam ediyor.
Düzeltildi
- Kaldırma, silemediği dosyaları sildim diye bildiriyordu. Başarısız silme sessizce geçiliyor, betik yine "başarıyla kaldırıldı" diyordu — MariaDB'de bu, veri dizini diskte dururken silindiğini sanmanız demekti.
- Veri dizini, sunucunun durduğu doğrulanmadan siliniyordu. Çalışan bir sunucunun altından dosya çekmek geriye tutarsız bir dizin bırakır. Artık port on saniye yoklanıyor ve hâlâ dinleniyorsa hiçbir şey silinmiyor.
- Kurulum ekranı, olmayan başarıyı bildiriyordu. Sonuç, log gövdesindeki herhangi bir onay işaretinden çıkarılıyordu: açıkça iptal edilmiş bir PostgreSQL yapılandırması yeşil onay alıyordu.
- İki kurulum aynı anda başlayabiliyordu ve ikincisi birincinin üstüne yazıp onu yanıtlanamayan bir isteme mahkûm ediyordu.
- Profilleyiciyi kapatmak işe yaramıyordu — PHP-FPM yeniden başlatılmadığı için çalışan havuz profil kipinde kalıyor, cachegrind dosyaları birikmeye devam ediyordu.
- Tek "Kaydet" tıklaması, değişen ayar sayısı kadar eşzamanlı servis yeniden başlatması tetikliyordu; kilidi kaçıran biri PHP-FPM'i durmuş bırakabiliyordu.
- Sertifika süresi hiç denetlenmiyordu. Süresi dolmuş bir sertifika diskte durduğu için yenilenmiyor, tarayıcı hata verirken uygulama sertifikayı "var" sayıyordu.
- Teşhis panelinin sertifika güven denetimi her koşulda "geçti" diyordu — sistemdeki tüm sertifikaları sayıyor, aradığı kökü hiç aramıyordu.
- php.ini panelinde tanımsız direktif için varsayılan değer, dosyadaki değermiş gibi gösteriliyordu; PHP sürümü değişince de öncekinin değerleri kalıyordu.
- php.ini'de kayıtlı bir uzantı "devre dışı" görünüyor, açılınca ikinci kez kaydediliyor ve PHP onu iki kez yüklüyordu.
1.9
On sekiz düzeltme. Çoğu aynı sınıftan: uygulama bir şeyin olduğunu bildiriyor, oysa olmamış — ya da olan bir şeyi hiç söylemiyor.
Düzeltildi
- Menü çubuğu simgesi kapalıyken pencereyi kapatmak uygulamayı erişilemez bırakıyordu. Pencere yok, Dock ikonu yok, menü çubuğu öğesi yok, ⌘Tab listesinde de yok — geri dönmenin tek yolu uygulamayı yeniden başlatmaktı.
- Dock menüsündeki "Servisleri Durdur ve Kapat" Node/Python/.NET uygulamalarını arkada bırakıyordu. Bu süreçler
nohupile başlatıldığından BRAMPP kapansa da yaşıyor ve bir sonraki açılışta "port kullanımda" olarak geri geliyorlardı. - Silinen alan adının vhost'u geri yazılabiliyordu. Silme yolunda dört bekleme noktası var ve biri yönetici parolası isteyebiliyor; o süre boyunca uçuştaki bir düzenleme görevi vhost'u geri yazıyordu.
- Paylaşımı durdurma, durduramadığında da "adres artık ölü" diyordu. Süreç sinyalleri atlattığında site internete açık kalmaya devam ediyor, asistan ise kullanıcıya kapandığını söylüyordu.
- Uygulama logunda 5 MB sonrası kayboluyordu. Log döndürme dosyaya yeni bir kimlik veriyor, uygulama ise eskisine yazmaya devam ediyordu: pencere o koşu boyunca bir daha satır göstermiyordu.
- Tek bir bozuk bayt tüm log geçmişini gizliyordu — pencere güncellenmiyor, log susmuş gibi görünüyordu.
- Aynı log satırları iki kez görünüyordu.
- Devre dışı bırakılmış alan adı, web sunucusu ayaktayken yeşil "çalışıyor" noktası gösteriyordu — oysa vhost'u silinmiş, site sunulmuyordu.
- Veritabanı geri yükleme MySQL'de satırları ikiye katlayabiliyordu. Kullanıcı denemesi başarısız olunca döküm baştan bir kez daha uygulanıyor, ilk denemedeki eklemeler geri alınmadığı için tekrar işleniyordu.
- Diskteki log geçmişinin yalnızca iki günü aranıyordu, yedi gün saklandığı hâlde: "dört gün önce ne oldu" sorusu sessizce boş dönüyordu.
/etc/hostsnewline ile bitmiyorsa yeni alan adı son satıra yapışıyordu — hem yeni ad çözülmüyor hem de yapıştığı satır bozuluyordu.- Apache yapılandırması zaten bozukken, yeni yazılan companion dosyaları da siliniyordu — silmek sorunu çözmüyor, yalnızca çalışan tek şeyi de götürüyordu.
- MCP portu başka bir süreçteyken konsola her tazelemede "MCP sunucusu durduruldu" satırı düşüyordu.
- İki BRAMPP kopyası aynı log dosyasına yazınca satırlar birbirini eziyordu.
- Yürütücü yolunda boşluk varsa süreç bilgisinde sütunlar kayıyordu — komut adının parçası CPU değeri olarak görünüyordu.
- ⌘N pencere gizliyken görünmeyen bir pencere kuyruğa alıyordu.
- Paylaşımı durdurma, alan adını küçük harfe indirmiyordu; büyük harfle açılan bir paylaşım küçük harfle kapatılamıyordu.
- Yardım metni iki aracı yanlış izin alanında gösteriyordu.
1.8
Güncelleme artık uygulamanın içinde bitiyor: bir düğme, uygulama kapanıyor, yeni sürümle açılıyor. Kalıbı açıp sürüklemek gerekmiyor — ve yönetici parolası hiçbir koşulda istenmiyor.
Eklendi
- "Güncelle ve yeniden başlat". Yeni sürüm, uygulama çalışırken hedefin yanına kopyalanıyor; çıkıştan sonra geriye aynı birimdeki iki yeniden adlandırma kalıyor, yani uygulamanın var olmadığı pencere saniyeler değil milisaniyeler sürüyor. Eski paket silinmiyor, yana alınıyor: yeni sürüm açılıp ayakta kaldığında siliniyor, açılmazsa geri konuyor. Homebrew servisleriniz durdurulmuyor — uygulamayı güncelliyorsunuz, geliştirme ortamınızı kapatmıyorsunuz. Hedef klasöre yazılamıyorsa düğme hiç gösterilmiyor ve eski yol birincil eylem olarak kalıyor; "BRAMPP kendini güncellemek için parolanı istiyor" alışkanlığı, bir saldırganın isteyeceği tam o alışkanlıktır.
- Teşhis panelinde "Yapılandırmayı onar" — yalnızca onarılacak bir şey varken görünüyor. phpMyAdmin/Adminer yapılandırmasındaki eski
Aliassırasını düzeltiyor: dosyayı.brampp.bakolarak yedekliyor,configtestçalıştırıyor ve geçmezse yedekten geri alıyor.
Değişti
- Paylaşım adresi daha erken geliyor. Bekleme, sistem çözümleyicisini 45 saniye boyunca yokluyordu. Canlı bir tünelde ölçüldü:
dig @1.1.1.1adı 0,02 saniyede çözdü, aynı anda sistem çözümleyicisi aynı adı hiç çözemedi. Yalnızcadig'e bakmak yanlış olurdu — tarayıcıgetaddrinfokullanır ve kenar cevabına "hazır" demek, açılamayacak bir bağlantı vermek olur. İkisi birlikte çalışıyor:digyalnızca adın kenarda var olduğunu saptıyor, saptadığı anda sistem çözümleyicisine 45 değil 6 saniye tanınıyor ve adres, zaten var olan uyarısıyla veriliyor.
Düzeltildi
- Güncelleme penceresi ana pencerenin arkasında açılıyordu — uygulama etkinleştirilirken AppKit kendi ana penceresini öne getiriyor, az önce öne alınmış bildirim onun altında kalıyordu. Yani pencere açılıyor ama kullanıcı görmüyordu.
1.7
Dört düzeltme, dördü de aynı sınıftan: uygulama size bir şeyin olduğunu söylüyor, oysa olmamış. En ciddisi paylaşımda — sildiğiniz sitenin herkese açık adresi ölmüyor, başka bir siteyi yayınlamaya başlıyordu.
Düzeltildi
- Paylaşımdaki bir alan adını silmek, yeniden adlandırmak ya da devre dışı bırakmak tüneli açık bırakıyordu — ve adres başka bir siteyi yayınlamaya başlıyordu. Tünel
127.0.0.1'e bağlanıp alan adınıHostbaşlığında taşıdığı için, vhost silinince istek hiçbir sunucu bloğuyla eşleşmiyor ve varsayılan vhost'a düşüyordu. Sonuç: rastgele birtrycloudflare.comadresi, kapattığınızı sandığınız hâlde~/Sites/localhostkökünüzü —/phpmyadminve/adminerdahil — internete açıyordu. İstek loopback'ten geldiği için Apache'ninRequire localkısıtı da devreye girmiyordu. Yeniden adlandırmada daha da kötüydü: tünel kaydı eski adla saklandığından arayüzdeki rozet "kapalı" görünüyor, çalışan tüneli durdurmanın hiçbir yolu kalmıyordu. Artık vhost'a dokunan üç yolun üçü de önce paylaşımı kapatıyor ve konsola neden kapatıldığını yazıyor. - Asistan üzerinden veritabanı geri yükleme, tamamen başarısız bir işi "aktarıldı" diye bildiriyordu. PostgreSQL yolunda
ON_ERROR_STOPverilmediği için psql, dökümdeki her ifade hata verse bile sıfırla bitiyordu; hata metni de yutuluyordu. Aynı iş arayüzde yıllardır doğru yapılıyordu —MCPyolu geride kalmıştı. Artık--single-transactionile birlikte: yarıda kalan bir geri yükleme tamamen geri alınıyor, yeniden deneme yarım veritabanının üstüne yazmıyor. - Uygulama logunu "Temizle" ile boşaltmak, o koşu boyunca logu tamamen kaybettiriyordu. Dosya siliniyordu, oysa sarmalayıcının yönlendirmesi süreç başlarken bir kez kurulur: silinen dosyanın yerine yenisi doğmuyor, uygulama görünmez bir dosyaya yazmaya devam ediyordu. Log penceresi kalıcı olarak boş kalıyor, tek çare uygulamayı yeniden başlatmaktı. Artık dosya silinmiyor, içi boşaltılıyor.
- Devre dışı bırakılan bir PHP uzantısı "kurulu değil" görünüyor ve arayüzden geri açılamıyordu. Kurulu olup olmadığı yalnızca
php -mçıktısından çıkarılıyordu; devre dışı bırakma uzantıyı o listeden düşürdüğü için satır kurulmamış sayılıyor, onay kutusunun yerine "Kur" düğmesi geliyordu. Ona basınca da PEAR kaydı hâlâ durduğu için kurulum "zaten kurulu" hatasıyla düşüyordu — uzantıyı Finder'da elle yeniden adlandırmadan geri açmak mümkün değildi.
1.6
Uygulama artık kendi güncellemesini buluyor ve açmadan önce doğruluyor. Ama yükseltmenin asıl nedeni paylaşımlar: ikinci bir BRAMPP kopyası ya da bir test koşusu canlı tünelleri öldürebiliyordu, ölmüş bir tünel ise arayüzde canlı görünmeye devam ediyordu. 1.5'in içeriği de bu pakette.
Düzeltildi
- Birim testleri çalıştırmak — ya da yalnızca ikinci bir BRAMPP kopyasının açık olması — canlı Cloudflare tünellerini öldürüyordu. Tünellerin pid ve log dosyaları siliniyor, MCP portu çalışan kopyanın üstüne bağlanmaya çalışılıyor, Homebrew servisleri başlatılıyor ve "son çalışan servisler" listesi üzerine yazılıyordu. BRAMPP'ın tuttuğu makine düzeyindeki durum makineye aittir, bir sürece değil: ona artık yalnızca birincil kopya dokunuyor (
Core/ProcessRole.swift). Konsol satırları da hangi sürecin yazdığını taşıyor — kurulu uygulama, Xcode derlemesi, test ana uygulaması ve önizlemeler aynı dosyaya eklediği için bunu görmek bu kadar zordu. - cloudflared'i ölmüş bir paylaşım canlı bildirilmeye devam ediyordu. Servisler satırı yeşil kalıyor, MCP
list_sharesaracı adresi vermeyi sürdürüyor, Cloudflare ise Error 1033 döndürüyordu. Tüneller artık zaten dönen tazeleme döngüsünde gerçekle karşılaştırılıyor. - İkinci bir BRAMPP kopyasını kapatmak, birincinin canlı tünellerini öldürüyordu. Kapanan süreç artık yalnızca kendi başlattığı tünelleri durduruyor.
- "Paylaşımı durdur", site herkese açık kalırken başarı bildiriyordu. SIGKILL'e yükseltme yoktu ve bekleme, cloudflared'in 30 saniyelik kapanma payına karşı 0,4 saniyeydi.
- Veritabanı geri yükleme, başarısız olduğunda başarılı raporluyordu. Betik
if psql …; then exit 0; fiyazıp ardındanrc=$?okuyordu — POSIX'te koşulu başarısız olan veelse'i bulunmayan birif0 ile biter, yani hata kodu hiçbir zaman görülmüyordu. Hem PostgreSQL hem MariaDB tarafında. - MariaDB, PostgreSQL ya da Python'u kaldırmak yalnızca "paket ve yapılandırma dosyaları silinecek" diyordu — betik ise veri dizinini siliyordu: her veritabanınızı, ya da site-packages ağacının tamamını. Onay artık somut yolları adıyla sayıyor, yapılandırmayı veriden ayırıyor, neyin gittiğini söylüyor ve servis adının yazılmasını istiyor.
- Üretilen phpMyAdmin ve Adminer Apache yapılandırmaları
apachectl configtest'te AH00671 uyarısı veriyordu: ikiAliasyönergesi ters sıradaydı, bu yüzden ikincisi hiçbir zaman eşleşemiyordu. - Üç konsol satırı metin yerine ham çeviri anahtarını yazıyordu.
Eklendi
- Açılışta güncelleme bildirimi — kurulu sürüm, yeni sürüm, sürüm notları kaydırılabilir bir liste olarak, ve o sürümü atlama ya da sonra hatırlatma seçeneği.
- Ayarlar'da kendine ait bir Güncellemeler sekmesi: kanal, şimdi denetle, otomatik denetim, otomatik indirme ve bir güncelleme bulunduğunda ne yapılacağı.
- İndirilen dosya, hiçbir şey açılmadan önce doğrulanıyor: güncelleme manifestinde yayınlanan sağlama, dosyanın gerçekten beklenen yayın varlığından geldiği (yönlendirmelerin ardından yeniden denetlenerek), kod imzası, Team Identifier'ın çalışan uygulamanınkiyle aynı olduğu ve Gatekeeper'ın noter onayı kararı. Herhangi biri geçmezse indirilen dosya siliniyor. BRAMPP kendini asla değiştirmiyor — doğrulanan disk kalıbı size veriliyor.
- Manifestteki
blockedVersionsveminimumOSalanları dikkate alınıyor, böylece sorunlu çıkan bir sürüm onu zaten çalıştıran kişileri uyarabiliyor. - Servisler'deki cloudflared satırında, açık bütün paylaşımları tek seferde durduran bir düğme — bunu zaten yapan menü çubuğu komutunun yanına.
Değişti
- Güncelleme denetimi sürümü ve sağlamayı yayınlanan manifestten, sürüm notlarını ise yalnızca GitHub'dan okuyor — dosyayı sunan makine, ona kefil olan makine değil. Manifest geride kaldığında denetim GitHub'a düşüyor ve doğrulanamayacak bir indirme yerine sürüm sayfasını öneriyor.
- Yayın betiği o manifesti kendisi yayınlıyor, gerçek sağlamayla ve yalnızca noter onayından gerçekten geçmiş bir yapı için.
- Kullanılmayan proje çatısı algılayıcısı kaldırıldı.
1.5
Etiketlendi ama paketlenmedi: bu numara için DMG yayınlanmadı, içeriği 1.6 ile geldi. Etiketin yine de bir anlamı var — v1.4 etiketi bir 1.4 üretmiyor.
Değişti
- Release derlemeleri
-Oyerine-Osizeile yapılıyor. Uçtan uca bir Release derlemesi 35 dakikadan 46 saniyeye indi. Aynı modülde ölçüldü:-O1615 saniye,-Osize54 saniye — üstelik nesne daha küçük, 13,3 MB'a karşı 12,5. - Ayarlar, bir izin değişikliğinin istemcinin yeniden bağlanmasını gerektirdiğini söylüyor. MCP bölümü etkin araçları canlı sayıyor; paylaşım iznini yazmaya çıkarınca hemen "23 araç etkin" yazıyor, bağlı istemci ise bağlanırken aldığı 20 araçla çalışmayı sürdürüyordu. Sunucu durumsuz HTTP;
listChangedbildirimini taşıyacak bir kanal yok veinitializede sahip olmadığı bu yeteneği iddia etmiyor. brampp.ymlproje bildirimi kaldırıldı. Alan adının ayarlarının depoyla birlikte seyahat etmesi için yazılmıştı; istenmedi. Kullanılmadan bırakmak yerine sökülmesinin nedeni aynı kural: kimsenin okumadığı bir dosyayı yazan menü öğesi, hiç olmayandan kötüdür.
Düzeltildi
v1.4etiketinden derlemek, kendine 1.3 diyen bir uygulama üretiyordu.MARKETING_VERSIONorada 1.3'te kalmıştı ve yayınlanan ikili kendi numarasını commit'lenmemiş bir komut satırı geçersiz kılmasından almıştı. Numara artık proje dosyasında, bir derlemenin bulabileceği yerde duruyor.
1.4
Paylaşmanın iki gerçek sorunu — adresin siz açarken henüz çözülmemiş olması ve her istekte ödenen ad çözümlemesi — ve proje klasöründe zaten yaptığınız işler için satır içi kısayollar.
Eklendi
- Servisler asistandan da kurulabiliyor —
install_service, yalnızca BRAMPP'ın kendi kataloğuyla sınırlı; katalog dışı formül adı reddediliyor. - Alan adı satırında proje eylemleri: klasörü kurulu bir düzenleyicide açma, orada terminal açma,
composerya danpmçalıştırma. Hiçbiri geçerli değilse görünmüyor —composer.jsonyoksa composer girdisi de yok, npm betikleripackage.json'dan okunuyor. Tıklandığında hata veren bir menü öğesi, hiç olmayandan kötüdür. Düzenleyiciler komutlarıyla değil.apppaketleriyle aranıyor; gayet normal bir kurulum CLI'ıPATH'in dışında bırakabiliyor. - Mailpit, cloudflared'in aksine gerçek bir daemon olduğu için düzgün bir brew servisi olarak katıldı.
127.0.0.1:1025'e gönderilen posta makineden çıkmıyor; çalışırken kutuyu açan bir düğme var. - Ortam tanılama paneli. Port sahipliği, yapılandırma sözdizimi ve mkcert güven deposu denetimleri artık bir şey bozulduktan sonra log satırı olarak değil, Servisler sekmesinden istendiğinde birlikte çalışıyor. Portla ilgili bulgu, "kullanımda" demek yerine portu tutan süreci adı ve PID'iyle söylüyor — hangisi olduğu ne yapacağınıza karar veriyor.
brampp.yml— bir alan adının ayarlarını proje klasöründe taşıyan taşınabilir dosya; depoyu başka bir Mac'e klonlamak ortamı aynı biçimde kuruyordu. Yanında, projede ne bulduğunu adıyla söyleyen çatı algılama. (İkisi de 1.5 ve 1.6'da kaldırıldı.)- Üç platform için statik güncelleme manifestleri yayınlandı. Yayını olmayanlar
nullsürüm taşıyor, böylece bir istemci "hiç yayın yok" ile "denetleyemedim"i birbirinden ayırt edebiliyor.
Değişti
- Paylaşılan site artık her istekte ad çözümlemesi ödemiyor. Tünel alan adını hedefliyordu;
.localuzantısında bu Multicast DNS'e gidiyor ve hosts dosyasına düşmeden önce beş saniye zaman aşımına uğruyor — gerçek bir sitede ölçüldü: adla 5,01 sn, doğrudan adresle 0,012 sn. Artık127.0.0.1'e bağlanıyor, alan adını hemHostbaşlığında hem TLS sunucu adında taşıyor; böylece vhost ve sertifika yine eşleşiyor. Yalnızca başlık gönderilirse sunucu 421 döner. - Adres, çözülene kadar size verilmiyor. cloudflared'in logunda göründüğü an bildiriliyordu, oysa DNS kaydı henüz makineye görünür değildi; o anda açmak ERR_NAME_NOT_RESOLVED veriyordu. Artık tarayıcının izlediği yolla,
getaddrinfoile çözülene kadar bekleniyor.digyanlış denetimdi: doğrudanresolv.conf'taki sunucuya sorar ve sistem çözümleyicisi hâlâ başarısızken başarılı olabilir. Taze bir tünel adında ölçüldü: Google DNS altı denemenin birini yanıtladı, Cloudflare'in kendi çözümleyicisi altısını da. Süre dolarsa adres yine veriliyor, konsola nedeni yazılarak.
Düzeltildi
- cloudflared,
/opt/homebrew/bin'de dururken "kurulu değil" görünüyordu. Çalışma zamanı servislerinde kurulum algılaması kategoriye göre dallanıyor ve cloudflared'le birlikte eklenen paylaşım kategorisinildöndüren varsayılan dala düşüyordu — diskte ne olursa olsun kurulu bildirilemezdi. - Apache'nin gerçek bir uyarısı "sorun yok" diye raporlanıyordu. Apache uyarıları modüle göre etiketliyor —
[alias:warn]— ve "warning" sözcüğü hiç geçmiyor; yalnızca o sözcüğe bakan denetim bu makinedeki gerçek bir uyarıyı göremedi.
1.3
Çalışan bir siteyi tek tıkla, geçici ve herkese açık bir adresle paylaşma; ve "on dakika önce ne oldu" sorusunu yanıtlayabilen bir konsol.
Eklendi
- Çalışan siteyi geçici, herkese açık bir adresle paylaşma. Tek tıkla Cloudflare Quick Tunnel açılıyor ve
https://…trycloudflare.combağlantısı veriyor — müşteriye göstermek ya da siteyi telefondan açmak için. Cloudflare hesabı gerekmiyor. Hiçbir tünel diske yazılmıyor, kendiliğinden başlamıyor ve BRAMPP kapanınca hepsi kapanıyor. - Düz bir port da paylaşılabiliyor — henüz BRAMPP alan adı olmayan,
:5173'te çalışan bir geliştirme sunucusu gibi. Veritabanı ve önbellek portları reddediliyor: Quick Tunnel yalnızca HTTP taşır ve bu servisler burada çoğunlukla parolasız durur. - Yeniden başlatmayı atlatan konsol logu. Satırlar
~/Library/Application Support/BRAMPP/logsaltında günlük dosyalara yazılıyor ve bir hafta sonra siliniyor. Bellekteki tampon 300 satır tutuyor ve tek birbrew installonu süpürebiliyordu; "on dakika önce ne oldu" sorusu bu yüzden yanıtsızdı. - Redis için canlı durum — çalışma süresi, bağlı istemciler, zirveye karşı bellek, toplam komut, isabet oranı ve her veritabanındaki anahtar sayısı, doğrudan
INFOçıktısından. - Paylaşım için üç MCP aracı, varsayılanı erişim yok olan beşinci bir izin alanının arkasında — böyle olan tek alan, çünkü bu araçlar siteyi açık internete koyuyor.
read_logsüzgeçleri: düzey, metin ve zamana göre; ayrıca canlı tampon yerine diskteki dosyayı okuyabiliyor.- PHP profilleyici paneli, Xdebug'ın profil kipini yönetiyor: ayarlar sizin yerinize yazılıyor, cachegrind çıktıları tek klasörde toplanıp listeleniyor. Siz istemedikçe yalnızca
XDEBUG_TRIGGERtaşıyan istekler ölçülüyor, çünkü her şeyi profillemek dakikalar içinde diski dolduruyor. - cloudflared Servisler'de görünüyor — brew servisi olarak değil çalışma zamanı olarak, çünkü daemon'u yok ve yalnızca bir paylaşım açıkken yaşıyor. Satırı, şu anda hangi sitelerin herkese açık olduğunu listeliyor.
Değişti
- Örnekler artık
.localyerine.testöneriyor..local, RFC 6762 ile Multicast DNS'e ayrılmış ve macOS'ta çözümlemeyi geciktirebiliyor. Yerel HTTPS rehberimiz bunu bir süredir söylüyordu ama uygulama hâlâ.localdağıtıyordu. Mevcut alan adları çalışmaya devam ediyor — doğrulama zaten uzantıya bakmıyordu. - Log pencereleri artık akıtıyor, yoklamıyor. Eskiden beş saniyede bir
tailçalıştırıyor, kabuk süreci doğuruyor ve birkaç yeni satır için dosyayı baştan okuyordu. Dosya izleyici yalnızca eklenen kısmı okuyor ve gözetmen uygulamayı yeniden başlattığında logun yeniden yaratılmasına dayanıyor. - Alan adı satırı, sitenin internete açık olup olmadığını kendisi söylüyor — yayındayken yeşil anten, değilken üzeri çizili kırmızısı. Paylaşım penceresi ayrıca Kapat düğmesi kazandı: eskiden pencereden çıkmanın tek yolu tüneli öldürmekti, oysa yaygın durum adresin ayakta kalmasını istemek.
Düzeltildi
- Sekiz uyarı, arayüz dili ne olursa olsun Türkçe çıkıyordu — geçersiz alan adı, sistem adı, yinelenen ad, eksik .NET SDK ve sağlık kontrolünün dört sonucu. Çeviri kataloğuna hiç uğramayan Swift metinleriydi.
- Arkası çalışmayan bir siteyi paylaşmak, arkasında hiçbir şey olmayan canlı bir adres üretiyordu. Ziyaretçi 502 görüyor, bağlantıyı gönderen ancak sonradan öğreniyordu. Artık alan adı etkin değilse, web sunucusu kapalıysa ya da Node.js/Python/.NET uygulaması dinlemiyorsa paylaşım reddediliyor.
1.2
Developer ID sertifikasıyla imzalandı ve Apple tarafından noter onayından geçti; bilet hem uygulamaya hem DMG'ye zımbalandı, böylece çevrimdışıyken de doğrulanıyor.
Eklendi
- MCP üzerinden veritabanı yedekleme ve geri yükleme —
db_exportvedb_import. MariaDB/MySQL içinmysqldump --single-transaction --routines --triggerskullanılıyor; InnoDB tablolarını kilitlemeyen tutarlı bir anlık görüntü. Başarısız bir döküm yarım dosyasını siliyor, çünkü bozuk yedek hiç yedek olmamasından kötüdür. - Sürüm denetimi — Ayarlar, istendiğinde GitHub'a son sürümü soruyor. Kendini asla güncellemiyor, indirme tarayıcınızda kalıyor.
- İkinci bir beceri dosyası,
brampp_mysql: veritabanı araçları ve güvenlik kuralları.
Düzeltildi
- Nginx hiçbir zaman "çalışıyor" görünmüyordu. Ana süreci kendi başlığını
nginx: master process …olarak değiştiriyor, bu yüzdenpgrep -x nginxdenetimi hiçbir zaman eşleşemiyordu. Yeni eklenen bir alan adının görünmesi için durdur-başlat gerekmesinin sebebi de buydu. - Kurulum sonsuza kadar bekleyebiliyordu. Homebrew'un onay istemi satır başı karakteriyle bitiyor ve tamponu boşaltan kod istemi de onunla birlikte atıyordu — geri sayım, çoktan attığı bir şeyi bekliyordu.
- "Ana Pencereyi Aç" menü çubuğundan çalışmıyordu, çünkü panel tıklama anında etkin pencere durumunu tutuyor ve ancak eylem döndükten sonra bırakıyor.
- Web sunucusu bağımlılık zincirine katıldı. Apache ya da Nginx arkasındaki bir ASP.NET Core, Node veya Python uygulamasını başlatmak artık o sunucuyu da başlatıyor; kurulu olmayan bağımlılık sessizce atlanmak yerine bildiriliyor.
1.1 — ilk genel sürüm
Servis denetimi, gerçek HTTPS'li yerel alan adları, veritabanı araçları ve MCP sunucusu; makinede zaten duran Homebrew servislerinin üzerinde tek bir yerel uygulamada.
- Apache, Nginx, PHP-FPM 8.1–8.5, MariaDB, PostgreSQL ve Redis; naif bir süreç eşleşmesiyle değil, port sahipliği denetimiyle başlatılıp durduruluyor.
- PHP, Node.js, Python, ASP.NET Core ve statik siteler için yerel alan adları — vhost, hosts kaydı, site klasörü, başlangıç projesi ve sertifika tek adımda.
mkcertile otomatik HTTPS; yerel sertifika otoritesi sistem güven deposuna kuruluyor.- Yalnızca loopback'e bağlı, öntanımlı kapalı, alan bazlı izinli gömülü MCP sunucusu.