Güvenlik​

  • Timeslider: "Return to pad" artık farklı kökenli (cross-origin) bir referrer'ı takip etmiyor (GHSA-35rj-7vrx-29wq). Düğme, son / karakterinden önceki karakter p olduğunda document.referrer adresine gidiyordu; bu nedenle https://attacker/p/login adresinden /p/<pad>/timeslider?embed=1 adresine verilen bir bağlantı, kullanıcı düğmeye tıkladığında onu saldırganın sitesine geri gönderiyordu. Referrer artık yalnızca aynı origin'deki bir pad sayfasıysa takip ediliyor; aksi halde düğme pad'e dönüyor. sun1024 tarafından bildirildi.
  • Dışa aktarma: Revizyona bağlı .etherpad dışa aktarımları artık yalnızca o revizyona kadarki sohbeti içeriyor. /p/<pad>/<rev>/export/etherpad adresini dışa aktarmak, o revizyondan sonra gönderilen mesajlar dahil pad'in tüm sohbet geçmişini gönderiyordu. temantih tarafından bildirildi.

Güvenlik​

  • Eklentiler: Bağımlılık adları artık kurulumun yanı sıra kaldırma sırasında da doğrulanıyor. Önceden kaldırma yolu, ham package.json bağımlılık anahtarını rmSync/unlinkSync'e geçiriyordu; bu nedenle zzz/../../.. gibi adlandırılmış bir bağımlılık bildiren bir eklenti, yönetici onu kaldırdığında eklenti klasörünün dışındaki bir dizini silebiliyordu. Artık tüm kurulum ve kaldırma yolları, eklenti dizininden çıkan adları reddeden tek bir yardımcı üzerinden bağımlılık yollarını çözümlüyor. Bunun istismarı için bir yöneticinin kötü amaçlı eklentiyi kurup ardından kaldırması gerekiyor.

Yeni Özellikler​

  • Pad saklama: N gündür kimsenin düzenlemediği pad'leri silen yeni bir padRetention ayarı eklendi. Bakımsız ep_delete_after_delay eklentisinin yerini alıyor; HTML arşiv kopyaları veya mezar taşı (tombstone) pad'leri yok. Varsayılan olarak kapalı ve etkinleştirildiğinde dryRun false yapılana kadar yalnızca "would delete pad <id>" günlüğe yazıyor. Periyodik bir tarama her pad'in son düzenleme zamanını pad'leri önbelleğe yüklemeden doğrudan veritabanından okuyor; süresi geçmiş bir pad, birisi onu açtığında da eski içerik göstermek yerine siliniyor. Silme, deletePad API'siyle aynı yolu kullanıyor. Seçenekler: deleteAfterDays, warnBeforeDays, sweepIntervalHours, excludeGroupPads ve excludePattern.
  • Ayarlar: Silme yetkilerini genişletmeden silme belirteci (token) penceresini gizleme. Yeni suppressPadDeletionTokenModal ayarı (kapsayıcı imajında SUPPRESS_PAD_DELETION_TOKEN_MODAL), tek seferlik "Pad silme belirtecinizi kaydedin" penceresinin görünmesini engelliyor. Şimdiye kadar bunu gizlemenin tek yolu, pad'i herhangi bir düzenleyicinin silmesine de izin veren allowPadDeletionByAllUsers: true idi. Belirteç hâlâ veriliyor ve çalışıyor; oluşturucu olmayanlar hâlâ silemiyor.

Hata Düzeltmeleri​

  • Performans: Yazı tipleri artık küçültülmüş CSS'e gömülmüyor. Pad stil sayfası her editör ve simge yazı tipini base64 olarak gömüyordu; pad.css yaklaşık 1,7 MB'tı ve her ziyaretçi pad görüntülenmeden önce hepsini indiriyordu. Yazı tipleri artık ayrı ve yalnızca kullanıldıklarında getiriliyor; pad.css yaklaşık 61 KB.
  • Araç çubuğu: Araç çubuğundan açılan bir açılır pencere odağı koruyor. Editör her araç çubuğu komutundan sonra odağı geri alıyordu; bu yüzden güncel Firefox'ta Escape ayarlar veya kullanıcılar açılır penceresini kapatmıyor ve ad yazmak ad alanına ulaşmıyordu.
  • Colibris: Karanlık mod renkleri her yerde uygulanıyor. Açık --text-color ve --bg-color değerleri, geçmiş başlığı gibi editör dışındaki öğelerde karanlık olanları geçersiz kılabiliyordu.
  • Oturum aktarımı: Başarısız istekler başarısızlık olarak raporlanıyor. Oturum aktarım uç noktasından gelen hatalar başarı sayılıyordu. Artık yerelleştirilmiş bir hata gösteriliyor ve yeniden deneme hatayı temizliyor.
  • Paylaşım iletişim kutusu: "Read only" artık "Use read-only link". Onay kutusu hangi bağlantıyı ve gömme kodunu kopyaladığınızı değiştiriyor; pad'i hiçbir zaman kilitlemiyordu. Yeni etiket ve erişilebilir bir açıklama bunu belirtiyor.
  • Docker: --build-arg PnpmVersion yeniden dikkate alınıyor.

Diğer Değişiklikler​

  • translatewiki.net'ten yerelleştirme güncellemeleri.
  • express 5.3.0, ejs 7.0.1, nodemailer 10.1.1, surrealdb 2.1.1, mssql 12.7.9 ve ueberdb2 6.1.18 dahil bağımlılık güncellemeleri.

Güvenlik​

  • 3.3.8 bir güvenlik sürümüdür. Yerleşik OIDC provider'ı API istemcileriyle birlikte kullanan örneklerde HTTP API yetki yükseltme açığını kapatır (GHSA-38vj-95q4-gwvx).
  • HTTP API: client_credentials token'ları artık imzalı bir grant işaretçisi ile tanımlanıyor (GHSA-38vj-95q4-gwvx). API, bir bearer JWT'nin OAuth2 client_credentials grant'inden gelip gelmediğini sub claim'inin yapılandırılmış bir client_id'ye eşit olup olmadığına bakarak belirliyordu ve client_credentials token'ları admin === true claim kontrolünü atlıyordu. Bu nedenle hesap adı yapılandırılmış bir client ID ile çakışan admin olmayan bir kullanıcı, sıradan bir giriş token'ı ile HTTP API'ye yönetici erişimi elde edebiliyordu. Bu, GHSA-qfmh-fph3-mw8q'nun bir varyantıdır. Provider artık client_credentials erişim token'larına etherpad_grant: "client_credentials" işaretçisini imzalıyor ve extraParams bunu geçersiz kılamıyor. API, sub değerini client ID'lerle karşılaştırmak yerine bu işaretçiye güveniyor. Yükseltme notu: Yükseltmeden önce verilen client_credentials token'ları işaretçiyi taşımaz ve yeniden verilene kadar 401 ile reddedilir. Bu token'ların ömrü kısadır. Yves Soete (Blacksight LLC) tarafından bildirildi.

Hata Düzeltmeleri​

  • OIDC: Sayısal ve boolean admin parolaları yeniden çalışıyor. Ayar yükleyici ortam değişkeni değerlerini dönüştürdüğü için ADMIN_PASSWORD=123456 (örneğin settings.json.docker üzerinden) sayı olarak geliyordu. 3.3.6 giriş kontrolü (GHSA-62cj-9j72-mfrh) yalnızca string parolaları kabul ettiğinden bu yöneticiler giriş yapamaz hale gelmişti. Sonlu sayılar ve boolean değerler artık string olarak karşılaştırılıyor. Eksik, boş, NaN ve skaler olmayan değerler hâlâ reddediliyor.
  • Ayarlar: Dropdown'lar prefers-reduced-motion altında açılıyor. Reduced motion etkinken ayarlar popup'ı transform: scale(1) değerini koruyordu. Bu, popup'ı dropdown listesi için kapsayıcı blok haline getiriyor, yazı tipi ve dil listelerinin görünüm alanı dışında oluşturulmasına neden oluyordu. Popup artık transform: none kullanıyor.

Güvenlik​

  • Renderer bileşeninde attribute-pool değerlerinin class belirteçlerini sahte olarak oluşturması engellendi. linestylefilter artık başlangıç ve liste satırı öznitelik değerlerini boşluklarla ayrılmış class dizisine doğrudan eklemiyor. start yalnızca tam sayı olduğunda, list ise yalnızca düz liste türünde olduğunda işleniyor. domline artık tag: belirteçleri için yalnızca harf, rakam ve kısa çizgilerden oluşan yalın bir öğe adını kabul ediyor. Bu değişiklik, eklentilerin sağladığı class dizelerini de kapsıyor.

Önemli Hata Düzeltmeleri​

  • Kimlik doğrulamada boş parola artık her iki giriş yolunda da reddediliyor. settings.users içinde "password": "" olarak yapılandırılmış hesapların boş parola gönderen herkes tarafından doğrulanması engellendi.
  • Yönetici arayüzündeki eklenti kataloğunun kullanımdan kaldırılmış veya bilinen şekilde bozuk eklentileri sunması engellendi.
  • Kullanımdan kaldırılmış veya mevcut sürümle çalışmadığı bilinen eklentiler artık katalogdan filtreleniyor.
  • Eski bir sayfa bu eklentilerden birini yüklemeye çalıştığında yönetici arayüzünün kurulumu reddetmesi sağlandı.
  • Bu durumdaki önceden yüklenmiş bir eklentinin Installed plugins listesinde kullanımdan kaldırılmış olarak işaretlenmesi sağlandı.
  • npm kullanım dışı bırakma sorgusu 12 saat boyunca önbelleğe alınıyor ve kayıt defterine ulaşılamadığında tüm kataloğun listelenmesine izin veriliyor.

Güvenlik​

  • Parolası olmayan hesaplarda OIDC üzerinden etkileşimli oturum açma engellendi. Gömülü OpenID Connect sağlayıcısı, gönderilen parolayı String(user.password) ile karşılaştırdığı için password özelliği bulunmayan settings.users hesaplarında "undefined", "password": null olan hesaplarda ise "null" metni parola olarak kabul edilebiliyordu. Bu değer gönderildiğinde hesapta oturum açılabiliyor ve admin yetkisini taşıyan bir token oluşturulabiliyordu; varsayılan authenticationMethod: "sso" yapılandırmasında HTTP API de bu token'ı kabul ediyordu. ADMIN_PASSWORD ayarlanmadığında container imajının password değerini null bırakması ve ep_hash_auth girdilerinin password yerine hash kullanması nedeniyle parolasız hesaplar pratikte oluşabiliyordu. Kimlik bilgisi kontrolü artık verifyInteractiveLogin() içinde gerçekleştiriliyor ve eksik parolaları metne dönüştürmek yerine gerçek bir string parolası olmayan hesapları reddediyor. Yalnızca hash içeren girdiler de authenticate hook'u üzerinden kimlik doğruladıkları ve bu yol söz konusu hook'u kullanmadığı için reddediliyor.

Hata Düzeltmeleri​

  • LibreOffice kullanılmadan gerçekleştirilen PDF dışa aktarma işlemlerinde font-family ayarlarının dikkate alınması sağlandı. Yerleşik PDF yolu daha önce yalnızca pdfkit'in Helvetica ve Courier yazı tiplerini kullanıyor ve font-family ayarlarını yok sayıyordu. Yazı tipi aileleri artık kategoriye göre PDF standart yazı tipleriyle eşleştiriliyor: sans-serif Helvetica, serif Times ve monospace Courier kullanıyor. Kalın ve italik varyantlar, bildirim sırası ve !important da dikkate alınıyor. Standart olmayan yazı tipleri yeni exportPdfFonts ayarı üzerinden TTF/OTF dosyalarıyla tanımlanabiliyor; herhangi bir yazı tipi paketle birlikte sunulmuyor. Hata durumlarında dışa aktarma başarısız olmak yerine uyarı veriliyor. Pad içeriğinden gelen yazı tipi ailelerinin adları normalleştirilip izin listesiyle eşleştiriliyor ve hiçbir zaman dosya yolu olarak kullanılmıyor.
  • Windows PowerShell 5.1 altında yükleyicinin Node sürümü kontrolünün başarısız olması düzeltildi. PowerShell 5.1, programa argüman aktarırken çift tırnakları kaldırdığı için Node'a hatalı bir ifade iletiliyor, boş sonuç 0 olarak yorumlanıyor ve tüm Node sürümleri eski kabul ediliyordu. Sürüm artık node --version çıktısının PowerShell içinde ayrıştırılmasıyla belirleniyor. Ayrıştırılamayan sonuçlarda sürümün eski olduğu belirtilmek yerine ayrıştırma hatası bildiriliyor. Windows CI işi artık hem PowerShell 7 hem de Windows PowerShell 5.1 altında çalışıyor.
  • Yönetici ayar formundaki alanların escape dizilerini doğru şekilde işlemesi sağlandı. Tek satırlı alanlardaki düz metinlerde bulunan yeni satırlar tarayıcı tarafından kaldırılıyor ve kaydetme sırasında değerler ikinci kez escape ediliyordu. Ortam değişkeni varsayılanları da görüntülendikten sonra yeniden escape ediliyordu. Alanlar artık değerleri escape edilmiş biçimde gösteriyor ve kaydetmeden önce decode ediyor. Tamamlanmamış bir escape dizisi kaydedilmiyor; alan geçersiz olarak işaretleniyor ve odak kaybedildiğinde son kaydedilen değere geri dönüyor.
  • Oturum aktarımı sırasında tercihlerin korunması ve çerezlerin iki kez kodlanmaması sağlandı. Aktarım daha önce yalnızca prefsHttp çerezini işliyordu ancak HTTPS altında tercihler prefs içinde saklandığından hiçbir şey gönderilmiyordu. Ayrıca çerez hâlâ yüzde kodlanmış halde gönderilip res.cookie() tarafından tekrar kodlanıyordu. Sunucu artık tercihleri isteğin kendi çerezlerinden okuyarak her iki adı da kabul ediyor, yalnızca JSON nesnelerini kabul ediyor ve req.secure değerine göre prefs veya prefsHttp çerezini tek kez kodlayarak yazıyor. Aktarılacak veri olmadığında çerez yazılmadığından hedefteki mevcut tercihler artık silinmiyor. Author-token işleme davranışı değişmedi.
  • Oturum aktarımı iletişim kutusundaki açıklamalar gerçek davranışı yansıtacak şekilde düzeltildi. İşlem bir oturum bağlantısı yerine yalnızca bir kez ve beş dakika boyunca geçerli olan, Receive session sekmesine yapıştırılan bir kod kopyalıyor. Aktarılan veriler oturum açma oturumu değil, yazar kimliği ve tercihlerdir.
  • Silinen pad'lerin Recent pads listesinden kaldırılması sağlandı. Daha önce silinen bir pad listede kalıyor ve açıldığında aynı adla yeni, boş bir pad oluşturuluyordu. Sunucu silme işlemini bildirdiğinde istemci artık ilgili pad'i listeden kaldırıyor. Eski sürümlerde URL kodlamalı olarak kaydedilmiş adlar da eşleştiriliyor. HTTP API veya yönetici arayüzü üzerinden silinen pad'ler, ilgili pad'i açık tutmayan tarayıcıların listesinde kalmaya devam edebilir.
  • Ekran okuyucuların pad içinde satır satır hareket edebilmesi sağlandı. Düz satırlara artık role="paragraph" atanıyor. Liste öğeleri ve başlıklar gibi zaten anlamsal blok öğeleri içeren satırlar kendi doğal semantiklerini koruyor. Öğenin kendisi değiştirilmediğinden div.ace-line hedefleyen eklenti seçicileri etkilenmiyor.
  • Eklentilerin settings.ep_<plugin> yapılandırma bloklarına require() üzerinden yeniden erişebilmesi sağlandı. CJS uyumluluk katmanı daha önce erişim özelliklerini ayarlar tamamen yüklenmeden oluşturduğu için daha sonra eklenen ep_* blokları require() yolunda görünmüyordu ve eklentiler varsayılan ayarlarına dönüyordu. ep_hash_auth kullanıldığında bunun sonucunda hash_dir /var/etherpad/users değerine dönüyor, hash aramaları başarısız oluyor ve yönetici oturumu 401 hatasıyla sonuçlanıyordu. Uyumluluk katmanı artık her ayar yüklemesinden sonra yeniden çalıştırılıyor.

Hata Düzeltmeleri​

  • 3.3.5, 3.3.4 sürümünü takip eden bir hata düzeltme sürümüdür. pnpm 12'nin kurulu olduğu temiz kurulumlarda başlangıçta oluşan çökme sorunu düzeltildi ve yerleşik güncelleyicinin Windows'ta çalışması sağlandı.
  • pnpm 12 kullanılan temiz kurulumların başlangıçta çökmesine neden olan sorun düzeltildi. İlk açılışta var/installed_plugins.json dosyası bulunmadığında Etherpad, node_modules içinde bulunan eklentileri taşımak için pnpm ls komutunu --no-production parametresiyle çalıştırıyordu. pnpm 12 bu parametrenin adını --no-prod olarak değiştirdiği ve eski adı kabul etmediği için sunucu herhangi bir porta bağlanmadan önce "Error occurred while starting Etherpad" hatasıyla kapanıyordu. Komut artık pnpm 10 ve 11'in de desteklediği --no-prod parametresini kullanıyor. Mevcut kurulumlar bu sorundan etkilenmedi. Depo, sürüm araçları, Docker imajı ve Snap paketi de pnpm 12'ye geçirildi.
  • Güncelleyicinin Windows'ta çalışması için pnpm, cross-spawn üzerinden başlatılacak şekilde değiştirildi. Windows'ta pnpm bir .cmd shim dosyası olduğundan standart child_process.spawn tarafından çalıştırılamıyor ve yerleşik güncelleme işlemleri başarısız oluyordu.

Güvenlik​

  • createDiffHTML API çıktısındaki kalıcı XSS açığı kapatıldı.
  • HTML diff dışa aktarımında yazar kimlikleri ve renkleri güvenli hâle getirildi. getHTMLFromAtext, yazar renklerini bir <style> bloğunun içine; yazar kimliklerini ise hem CSS seçicisinde hem de <span class> özniteliğinde herhangi bir kaçış işlemi uygulamadan yerleştiriyordu. Varsayılan olarak anonim kullanıcılar dahil olmak üzere .etherpad dosyası içe aktarabilen herkes, özel hazırlanmış bir colorId veya yazar kimliği yerleştirebiliyor ve createDiffHTML çıktısının bunu görüntüleyen entegrasyonlara betik taşımasına neden olabiliyordu. Dışa aktarma artık yalnızca #rgb/#rrggbb biçimindeki renkleri üretiyor ve yazar sınıf adlarını [A-Za-z0-9_-] karakterleriyle sınırlandırıyor. Ek güvenlik önlemi olarak .etherpad içe aktarma işlemi, hatalı biçimlendirilmiş bir colorId değerini canlı socket doğrulamasıyla uyumlu şekilde palet rengiyle değiştiriyor. Arka uç regresyon testleri de eklendi.

Hata Düzeltmeleri​

  • movePad artık pad'in silme belirtecini yeni kimliğe taşıyor. movePad, copy() ve remove() işlemlerinin birleşimi olarak uygulanıyordu ancak Pad.copy(), yalnızca pad:<id>, :revs:N ve :chat:N kayıtlarını kopyalıyor; pad:<id>:deletionToken kaydını kopyalamıyordu. remove() işlemi de kaynak pad'in belirtecini siliyordu. Bu nedenle yeniden adlandırılan pad hiçbir silme belirtecine sahip olmuyordu: oluşturucuya kaydetmesi söylenen belirteç artık hiçbir şeyi silemiyor, kopya aynı revision-0 yazarını koruduğu için kullanıcının sonraki ziyareti createDeletionTokenIfAbsent() işlevini tetikleyerek ikinci kez "pad silme belirtecinizi kaydedin" penceresini gösteriyordu. Belirteç kaydı artık taşıma işlemi kapsamında hedefe aktarılıyor; böylece kaydedilen belirteç çalışmaya devam ediyor ve pencere yeniden görünmüyor. Mevcut bir hedef zorla üzerine yazıldığında, hedef pad'in kendi belirteci de içeriğiyle birlikte siliniyor. copyPad bilinçli olarak değiştirilmedi; iki pad'in aynı gizli anahtarı paylaşması, biri için kaydedilmiş bir belirtecin diğerini silebilmesine yol açardı.

Güvenlik​

  • Kimlik doğrulaması gerektirmeden sunucudaki dosyaların okunmasına izin veren kritik bir güvenlik açığı kapatıldı.
  • OpenID Connect çerezleri, CORS yapılandırması ve oturum güvenliği güçlendirildi.
  • Farklı pad'ler arasında yetkisiz veri yazılmasına yol açabilen açıklar giderildi.
  • Pad kopyalama ve taşıma işlemlerinde kayıtların bozulmasına neden olabilen kimlik doğrulama sorunu düzeltildi.

İyileştirmeler​

  • Sunucu derleme sistemi TypeScript 7 tabanlı tsgo derleyicisine geçirildi.
  • Docker ortamındaki plugin_packages bağlama noktası yazılabilir hâle getirildi.

Hata Düzeltmeleri​

  • Art arda gelen uzun ve satıra yayılan metinlerde Page Up ve Page Down tuşlarının çalışmayı durdurması düzeltildi.

Güvenlik​

  • Force/core bağımlılığı 2.8.0 veya üzeri sürüme yükseltildi. Gelen baggage başlıklarında W3C boyut sınırlarının uygulanmaması nedeniyle sınırsız bellek tahsisine izin veren güvenlik açığı giderildi.
  • Açık Dependabot güvenlik uyarıları çözüldü. form-data, ws, esbuild, basic-ftp, tar, js-yaml, qs, ip-address ve core bağımlılıkları güvenlik düzeltmeleri içeren sürümlere güncellendi.
  • Salt okunur bağlantılar üzerinden belirteçsiz pad silme işlemi engellendi. Salt okunur kullanıcılar artık belirteçsiz silme yetkisi alamıyor. Geçerli bir kurtarma belirteci ise oturum türünden bağımsız olarak kullanılabiliyor.

Yeni Özellikler​

  • Pad silme işlemlerinde kalıcı kimlik kullanan oluşturucular için kurtarma belirteci gösterimi kaldırıldı ve silme işlemi yeniden düzenlendi.
  • Belirteç gerekmeyen durumlarda kurtarma belirteciyle ilgili tüm arayüz öğelerini gizleyen yeni canDeleteWithoutToken istemci değişkeni eklendi.
  • allowPadDeletionByAllUsers etkin olduğunda API.createPad artık deletionToken alanında null döndürüyor.
  • Çevrimdışı ve izole ağ kurulumları için güncelleme denetimi, eklenti kataloğu ve güncelleyici ayarlarını ortam değişkenleriyle yönetme desteği eklendi.
  • Güncellemeler ve gizlilik ayarları için yeni dokümantasyon bölümü eklendi.

Hata Düzeltmeleri​

  • Pad genel ayarları devre dışı bırakıldığında belirteçsiz Sil düğmesinin erişilemez hale gelmesine neden olan sorun düzeltildi.
  • 3.3.x sürümlerinde kaybolan kayıtlı revizyon işaretçileri geçmiş modunda yeniden gösterilmeye başlandı.
  • Kaydedilen revizyonlar artık açık geçmiş görünümünde gerçek zamanlı olarak güncelleniyor.
  • Revizyon 0'a kaydedilen tek bir revizyonun görüntülenmemesi sorunu düzeltildi.
  • İçe aktarma iletişim kutusundaki güncel olmayan dönüştürücü bilgilendirme mesajı düzeltildi.
  • PadManager artık erişilemeyen "." ve ".." pad kimliklerini reddediyor.
  • Eski "." ve ".." pad kayıtlarının yönetici tarafından silinebilmesi sağlandı.
  • migrateDB, importSqlFile ve migrateDirtyDBtoRealDB komut satırı araçları ueberdb2'nin Promise tabanlı API'siyle uyumlu hale getirildi.
  • Veritabanı geçiş işlemlerinden sonra süreçlerin takılı kalmasına neden olan sorun giderildi.
  • Veritabanı bağlantılarının başarı ve hata durumlarında düzgün kapatılması sağlandı.
  • İlerleme günlüğünde görülen tanımsız uzunluk sorunu düzeltildi.
  • Kurulum smoke testinin saatlerce takılı kalmasına neden olan CI sorunu giderildi.
  • Paketlenmiş önyükleme testlerinin Pull Request aşamasında çalıştırılması sağlandı.
  • Çalışmayan ep_etherpad npm yayımlama adımı varsayılan olarak devre dışı bırakıldı.
  • Eski Timeslider testleri Playwright'a taşındı ve kullanılmayan testler kaldırıldı.

İyileştirmeler​

  • ueberdb2 bağımlılığı 6.1.13 sürümüne sabitlendi ve paketlenmiş kurulumlarda sunucunun erken kapanmasına neden olan hata giderildi.
  • nodemailer, mongodb, pg, undici, oidc-provider, pdfkit, semver ve react-switch gibi bağımlılıklar güncellendi.
  • Node.js, esbuild, eslint, Playwright, Vitest ve actions/checkout dahil çeşitli geliştirme ve derleme bağımlılıkları güncellendi.
Sürüm: 3.3.1