Değişiklik günlüğü
GitHubHer önemli değişiklik, sürüm sürüm. Aynı dosya depoda yer alır ve 19 dilin tümüne çevrilmiştir.
[1.207.2] — 2026-08-16
Düzeltildi — yapay zekâ planları ve kariyer yönlendirme profilleri artık ham kod dökümü olarak görünmüyor.
Düzeltildi
- Bazı modeller tüm yanıtı bir
markdown …kod çitine sarar. Bu olduğunda gelişim planı ve yönlendirme profili, başlıklı ve listeli bir belge yerine tek aralıklı kod bloğu olarak görünüyordu. Saran çit artık kaldırılıyor — yalnızca tüm yanıtı sardığında ve dil açıkçamarkdown/mdolduğunda, böylece gerçek birpython/js/dilsiz ``` kod yanıtı olduğu gibi kalır.
Notlar
- Ortak LLM temizleme adımında (
cleanLlmMarkdown) tek seferde ele alındı, böylece tüm yapay zekâ rotaları yararlanır ve sarılmış yanıtın içindeki kod blokları korunur.tests/llm-output.test.mjs(+3). Takım: 2621.
[1.207.1] — 2026-08-16
Düzeltildi — açılış sayfası küçük telefonlarda artık yana taşmıyor.
Düzeltildi
- Dar bir telefonda hero bölümü — başlık, giriş satırı ve kurulum terminali — sağ kenardan kırpılabiliyordu; çünkü uzun bir kurulum komutu ve düzen sütunları ekrana göre küçülmüyordu. Artık her genişliğe sığıyorlar; kurulum komutu kendi terminal kutusunun içinde kayıyor.
Notlar
- Ayrıca, bir kaynağın geçici 404’ü yüzünden başarısız olabilen kararsız bir E2E duman testi sağlamlaştırıldı: artık komşu testler gibi zararsız ağ gürültüsünü (favicon / bağlantı / başarısız kaynak) yok sayıyor, gerçek betik hatalarını yakalamayı sürdürüyor. Uygulama davranışı değişmedi. Takım: 2618.
[1.207.0] — 2026-08-15
Eklendi — bir başvurunun sonucunu doğrudan takip tablosundan kaydedin.
Eklendi
- Her takip satırına bir Sonuç işlemi geldi: ne olduğunu seçin (reddedildi, teklif alındı, işe alındı, teklif reddedildi, yanıt yok, mülakata geçti), isteğe bağlı bir not ekleyin, ortaya çıkan durumu önizleyin ve kaydedin. Kaydetmek gönderilen CV ve ön yazı dosyalarını arşivler ve takip tablosunu kanonik duruma senkronlar — elle düzenleme yerine tek, belirlenimci bir işlem.
Notlar
- Yeni
POST /api/outcome, sonuç CLI’sini aktarır:dryRun:truesalt-okunur bir önizlemedir (satırı eşler, ortaya çıkan durumu bildirir, hiçbir şey yazmaz); gerçek çağrı kaydeder. Yazma güvenliği: sonuç türü bilinen kümeyle sınırlanır ve her metin alanı çağrıdan önce kontrol karakteri içerirse reddedilir (dizi argümanları, spawn — kabuk yok).tests/outcome-route.test.mjs. Takım: 2618.
[1.206.0] — 2026-08-15
Belgeler — uygulama içi yardım kılavuzu artık en yeni beş özelliği 17 dilin tamamında kapsıyor.
Eklendi
- Yerleşik yardım kılavuzu — ve ona dayanarak yanıt veren «Yardıma sor» asistanı — artık yakın zamanda eklenen beş özelliği belgeliyor: Kurulum doktoru (Ayarlar — CV ve profilinizi eksikler ve kalan örnek veriler için denetler), ATS panolarını keşfet (Portallar — bir şirketin kariyer panosunu otomatik bulur), «hâlâ açık mı?» denetimi (Takip — ilanın hâlâ açık olup olmadığı), «önceki CV’yi yeniden kullan?» ipucu (CV Stüdyo — daha önce uyarlanmış bir CV yeni ilana uyduğunda bildirir) ve Beceri günlüğü (Analitik — öz değerlendirme puanlarını kaydet). Beş yeni alt bölüm, 17 dilin tamamına çevrildi.
Notlar
- Kılavuz yapısı 31 H2 / 118 H3’e büyür, her dilde parite güvence altında. Başvuru belgeleri güncellendi:
docs/architecture/API.mdbu özelliklerin beş rotasını belgeliyor veCLAUDE.mdiledocs/sdd/CONVENTIONS.mdiçindeki rota/sürüm sayaçları güncel (36 rota modülü). Takım: 2610.
[1.205.0] — 2026-08-15
Eklendi — sınav/değerlendirme sonuçlarını kaydeden bir Beceri günlüğü.
Eklendi
- Yeni bir Beceri günlüğü (Analitik → Beceri günlüğü) bir öz değerlendirmeyi kaydetmenizi sağlar — şirket, platform, beceri, puan % ve isteğe bağlı bir not —
data/assessments.tsv’ye eklenir; geçmiş kayıtlar (en yeni önce) listelenir. Sıfır token, belirlenimci; dosya biçimini üst projenin CLI’si yönetir.
Notlar
- Yeni
GET /api/assessments(assessment-log.mjs’nin varsayılan JSON listesini aktarır; yumuşak başarısızlık{available:false}) +POST /api/assessments(açık yazma: alanlarassessment-log.mjs add’e dizi argümanları olarak geçirilir). Yazma güvenliği: kontrol karakteri içeren her metin alanı reddedilir (TAB bir sütunu bozar, yeni satır bir satır enjekte eder) → yazmadan önce 400; puan/eşik 0–100 ile sınırlı, uzunluklar sınırlı.tests/assessments-route.test.mjs. Takım: 2610.
[1.204.0] — 2026-08-15
Eklendi — Ayarlar’da eksik ya da örnek veri kalıntılı CV/profili işaretleyen bir “Kurulum doktoru” paneli.
Eklendi
- Ayarlar → Kurulum doktoru artık
cv.mdveconfig/profile.ymldosyanızı sıfır token ile denetler ve engelleyici sorunları (eksik dosya/alan) ve uyarıları (kalan örnek/yer tutucu veriler, sabit kodlanmış metrikler) listeler — böylece eksik bir kurulumu, taramalarınızı ve uyarlamalarınızı zayıflatmadan yakalarsınız. Salt okunur; tek tıkla yeniden çalıştırılır.
Notlar
- Yeni salt okunur
GET /api/cv-sync-check, üst projenincv-sync-check.mjs’sini aktarır; bu betik metin + bir çıkış kodu yazar (--jsonyok); rota, kararlıERROR:/WARN:satırlarını hafifçe{ok, errors[], warnings[]}olarak ayrıştırır — başarıyı çıkış kodu değil, başlık belirler. Bağımsız kurulumlarda{available:false}ile yumuşak başarısızlık.tests/cv-sync-check-route.test.mjs. Takım: 2602.
[1.203.0] — 2026-08-15
Eklendi — CV Studio’da “önceki bir CV’yi yeniden kullan?” ipucu.
Eklendi
- CV Studio’da kayıtlı bir ilanı açtığınızda, uygulama artık onu diğer kayıtlı ilanlarınızla karşılaştırır (belirlenimci sözcük örtüşmesi, sıfır token) ve en yakınının o uyarlanmış CV’yi yeniden kullanmaya, düzeltmelerle yeniden kullanmaya yetip yetmediğini ya da yeni bir tane uyarlamanız gerektiğini söyler — böylece zaten hedeflediğiniz bir rol için sıfırdan başlamazsınız.
Notlar
- Yeni salt okunur
GET /api/jds/:name/reuse, üst projeninjd-similarity.mjs’sini (Jaccard örtüşmesi + kıdem koruması; JSON{decision, score, reason}) her önceki ilan için bir kez aktarır (fan-out 25 ile sınırlı, en iyisi kazanır); betik veya önceki ilanlar yoksa{available:false}ile yumuşak başarısızlık.tests/jd-similarity-reuse-route.test.mjs. Takım: 2594.
[1.202.0] — 2026-08-15
Eklendi — bir şirketin ATS iş panosunu #/portals’tan keşfedin ve izlemeye başlayın.
Eklendi
- #/portals’ta bir şirket adı yazın; uygulama Greenhouse, Ashby ve Lever’i genel panosu için yoklar — sıfır LLM, tarayıcı yok — ve mevcut olup şu anda ≥1 ilan listeleyen panoları gösterir. Tek tık, seçilen panoyu tarayıcınızın izlediği şirketlere ekler. Yoklama salt okunurdur;
portals.yml’ye yazma yalnızca Ekle’ye tıklayınca olur.
Notlar
- Yeni
server/lib/discover-ats.mjs(sabit ana makine, karakter kümesi doğrulanmış slug’ı DNS sabitlisafeGetile yoklar, istek başına ≤12 yoklama) +POST /api/portals/discover(salt okunur) vePOST /api/portals/track(açık yazma:withFileLock+ metin ekleme + yeniden ayrıştırma koruması + atomik yeniden adlandırma; yalnızca bilinen ATS ana makineleri, idempotent). Tarayıcının adaptör kaydını yeniden kullanır. i18n ×17.tests/discover-ats-resolver.test.mjs+tests/discover-ats-route.test.mjs. Takım: 2588.
[1.201.0] — 2026-08-15
Düzeltildi — yerelleştirilmiş veya değişken sütun başlıkları olan bir izleyici artık boş görünmüyor.
Düzeltildi
data/applications.mddosyanız İngilizce olmayan veya değişken başlıklar kullanıyorsa — İspanyolcaempresa/puesto/estado/fecha/enlaceya daposition/stage/link— izleyici bunları yanlış anahtarlarla okuyup Şirket / Rol / Durum / Tarih / Bağlantı sütunlarını boş gösteriyordu. Artık bu başlıklar kanonik alan adlarına katlanıyor ve izleyici doğru görünüyor. Tamamen İngilizce bir izleyici eskisi gibi işlenir.
Notlar
parseApplications(server/lib/parsers.mjs) içinde yeniHEADER_ALIASEStablosu + bir normalleştirme katlaması; bilinmeyen veya zaten kanonik başlıklar değişmeden geçer.tests/tracker-header-aliases.test.mjs. Takım: 2563.
[1.200.0] — 2026-08-15
Eklendi — takip listenizde ATS barındırmalı ilanlar için tek tıkla “hâlâ açık mı?” kontrolü.
Eklendi
- #/tracker üzerinde, URL’si Greenhouse / Lever / Ashby / Workday / SmartRecruiters ilanı olan bir başvuru artık “Hâlâ açık mı?” düğmesi gösteriyor. Tek tık, ATS’nin kendi genel JSON’unu sorgular — sıfır token, tarayıcı yok — ve Açık / Süresi dolmuş / Bilinmiyor gösterir; böylece her birini açmadan ölü ilanları fark edersiniz. Tasarımı gereği ihtiyatlı: yalnızca kesin 404/410 Süresi dolmuş sayılır; belirsiz olan Bilinmiyor kalır (asla yanlış Süresi dolmuş).
Notlar
- Yeni
server/lib/liveness-core.mjs+liveness-api.mjsve salt okunurGET /api/liveness?url=(yazma yok, LLM yok). SSRF güvenli: URLisValidJobUrl’den geçer, ardından ATS API’sine yalnızca DNS sabitlisafeGetile sabit host ve karakter kümesi doğrulanmış yol parçalarıyla erişilir.tests/liveness-core.test.mjs+tests/liveness-route.test.mjs. Takım: 2557.
[1.199.0] — 2026-08-15
Düzeltildi — geniş tablolar artık kırpılmak yerine yatay kayıyor.
Düzeltildi
- Scan sayfasında (ve diğer tüm tablolarda — İzleyici, İstatistikler, Kullanım, Panel) pencereden geniş bir tablo kaydırma çubuğu olmadan kırpılıyor ve en sağdaki sütunlara erişilemiyordu. Geniş tablolar artık gerektiğinde yatay kaydırma çubuğu gösteriyor, böylece her sütun her genişlikte erişilebilir kalıyor.
Notlar
public/css/components.cssiçindeki.table-wrap,overflow: hiddenyerineoverflow-x: autooldu (mevcut.reports-scrollkabıyla aynı); yuvarlatılmış kenarlık korunur.tests/table-wrap-scroll.test.mjs. Takım: 2540.
[1.198.0] — 2026-08-15
Eklendi — tarama yeniden denemeleri artık üstel geri çekilme, jitter kullanıyor ve hız sınırlayıcının Retry-After başlığına uyuyor.
Eklendi
- Bir iş ilanı panosu tarama sırasında kısa süreliğine hız sınırladığında veya hata verdiğinde (HTTP 429 / 5xx), yeniden deneme artık sabit kısa bir gecikme yerine üstel geri çekilme + jitter ile bekliyor — meşgul bir pano aynı tempoda tekrar tekrar dövülmüyor ve eşzamanlı yeniden denemeler yeniden aynı anda çarpışmıyor. Panonun gönderdiği
Retry-Afterdikkate alınıyor (ancak sınırlandırılmış, böylece düşmanca birRetry-After: 86400tüm taramayı durduramıyor). Kalıcı hatalar (404, reddedilen yönlendirmeler) hâlâ hemen başarısız oluyor — değişiklik yok.
Notlar
server/lib/http-json.mjsiçinde yeniparseRetryAfterMs()ve safcomputeRetryDelayMs();fetchJsonartık ok olmayan bir yanıtta.retryAfteryakalıyor vefetchJsonWithRetryisteğe bağlı birmaxDelayMs(varsayılan 8000) alıyor.tests/http-json.test.mjs(+9). Takım: 2536.
[1.197.0] — 2026-08-14
Eklendi — bir Getro VC iş ilan panosunu yalnızca careers_url ile takip edin; koleksiyon id’si kendiliğinden çözülür.
Eklendi
- Takip edilen bir Getro panosu (b2venture, Earlybird, Point Nine, …) artık elle bulunan sayısal bir
getro_collectiongerektirmiyor. Panonun kendicareers_urldeğerini verin; id, ilk taramada o sayfadan kendiliğinden çözülür — SSRF’ye karşı güvenli tek bir GET, sayısalnetwork.iddeğerini sayfanın gömülü verisinden doğrudan okur. Açık birgetro_collectionyine önceliklidir ve getirmeyi tümüyle atlar.
Notlar
server/lib/sources/getro.mjsiçinde yenihttpsCareersUrl(),extractCollectionId()ve asenkronresolveCollectionId(); pano sayfası DNS’e sabitlenmiş, boyutu sınırlısafeGetile getirilir ve çözülen id,assertGetroUrltarafından hâlâapi.getro.comana bilgisayarına sabitlenir. Adaptör artık id olmadan bile httpscareers_urltaşıyan birprovider: getrogirdisiyle eşleşir.tests/sources-getro.test.mjs(+8). Takım: 2527.
[1.196.0] — 2026-08-14
Düzeltildi (güvenlik) — Workday adaptörü bir api uç noktasını alt dize değil, ana bilgisayar adıyla doğrular.
Düzeltildi
portals.yml’deki bir Workdayapi:değeri artık yalnızca ana bilgisayar adımyworkdayjobs.com(veya.myworkdayjobs.comalt alan adı) olduğunda kabul edilir. Eski kontrol bir alt dize eşleşmesiydi, bu yüzden dizeyi yalnızca içeren herhangi bir URL — örn.https://example.com/?x=myworkdayjobs.com— geçiyor ve uç nokta olarak kullanılabiliyordu. Gerçek Workday uç noktaları etkilenmez. (CodeQL tarafından bildirildi, #443.)
Notlar
- Yeni
isWorkdayApi()URL’yi ayrıştırır ve ana bilgisayarı kontrol eder (server/lib/portals/adapters/workday.mjs).tests/workday-adapter-endpoint.test.mjs(+1). Takım: 2522.
[1.195.0] — 2026-08-14
Performans (tarayıcı) — yeniden yayın tespiti büyük tarama geçmişlerinde hızlı kalıyor.
Performans
- Yinelenen ilan tespiti büyük bir
scan-history.tsv’de artık O(N²)’ye düşmüyor. Şirket bazında başlık gruplaması, her çift için tam birroleFuzzyMatchödeyen iç içe bir döngüydü; artık bir ters dizin — satırları tek geçişte tam başlığa göre kovalara ayır, sonra yalnızca ayırt edici (temel olmayan) bir belirteci paylaşan FARKLI kovalar arasında bulanık eşleştirme yap. Çıktı aynı — aynı yeniden yayın kümeleri — eski algoritmaya karşı 200+ rastgele geçmişte diferansiyel testle kanıtlandı.
Notlar
server/lib/detect-reposts.mjsiçindegroupRowsByTitle(diferansiyel test için dışa aktarıldı).tests/detect-reposts-grouping.test.mjs(+2). Takım: 2521.
[1.194.0] — 2026-08-14
Düzeltildi (tarayıcı) — tek segmentli URL’ye sahip Workday kariyer sayfaları artık doğru taranıyor.
Düzeltildi
- Workday adaptörü artık yolu tek segment olan kariyer URL’lerini ayrıştırıyor — örn.
https://parsons.wd5.myworkdayjobs.com/Search,.../KBR_Careers,.../Careers. Önceden siteExternal’e düşüyor, adaptör yanlış CXS uç noktasına gidiyor ve bir sonda sağlıklı görünüp hiçbir şey döndürmeyebiliyordu. Artık yolun ilk boş olmayan segmentini site olarak alıyor (en-USgibi bir dil önekini atarak); belgelenen/en-US/Externaldurumu değişmedi. (#255’te bildirildi.)
Notlar
server/lib/portals/adapters/workday.mjsiçinde yapısal yol ayrıştırma.tests/workday-adapter-endpoint.test.mjs(+7). Takım: 2519.
[1.193.0] — 2026-08-14
Eklendi (istatistikler) — hatırlatmaya değer mülakatları öne çıkaran bir “Mülakat sonrası sessizlik” sekmesi.
Eklendi
#/statsiçinde bir Mülakat sonrası sessizlik sekmesi: bir nezaket penceresini (varsayılan 30 gün) aşarak sessizleşen mülakatlar, aktif mülakatlarını ve takip panonu birleştirir — her birinin ne kadar süredir sessiz olduğu, son mülakat tarihi ve nedeniyle. Nazik bir hatırlatma/kapatma listesi; yalnızca öneri, asla bir ret iddiası değil. Token yok.
Notlar
- Yeni
GET /api/stats/rejection-latencyrotası (fail-soft{available:false}).tests/stats-rejection-latency-route.test.mjs(+2). +10 i18n anahtarı ×17;#/statshelp-hint 7→8 sekme. Takım: 2510.
[1.192.0] — 2026-08-14
Eklendi (cv-studio) — hiç sahip olmadığın sayıları yakalayan bir “CV’nizin gerçeklerini denetleyin” kapısı.
Eklendi
#/cv-studioiçinde bir CV’nizin gerçeklerini denetleyin kartı: uyarlanmış bir CV veya ön yazı yapıştırın ve öne sürülen her metriği ve olguyu gerçek CV, profil ve two-pager’ınızla karşılaştırın. pass / warn / block kararının yanı sıra tam olarak uydurma metrikleri, desteksiz olguları ve yasak / uyarı ifadelerini alırsınız. LLM yok; hiçbir şey yazılmaz.
Notlar
- Yeni
POST /api/cv-studio/verify-factsrotası: metni tek kullanımlık geçici bir dosyaya yazar veverify-cv-facts.mjs’yi çalıştırır; betik block’ta 1 ile çıksa bile JSON kararına güvenir.tests/cv-studio-verify-facts-route.test.mjs(+4). +15 i18n anahtarı ×17. Takım: 2508.
[1.191.0] — 2026-08-14
Eklendi (istatistikler) — önce öğrenilecek becerileri sıralayan bir “Sırada ne öğrenmeli” sekmesi.
Eklendi
#/statsiçinde bir Sırada ne öğrenmeli sekmesi: tüm takip panosu genelinde beceri boşluğu özeti — düşük uyumu en sık batıran eksik beceriler, ağırlıklı (her raporda 5−uyum puanı) ve Critical / High / Medium kademeli — ayrıca CV/profilinin zaten kapsadıkları. Salt okunur, yalnızca öneri, token yok.
Notlar
- Yeni
GET /api/stats/upskillrotası (veri azken{ error }alanı; betik yokken{available:false}).tests/stats-upskill-route.test.mjs(+3). +15 i18n anahtarı ×17. Takım: 2504.
[1.190.0] — 2026-08-14
Eklendi (takip panosu) — hangi şirketlerin sana gerçekten yanıt verdiğini gösteren bir “Şirket geçmişi” paneli.
Eklendi
#/trackerüzerinde bir Şirket geçmişi kartı: bir şirket seç ve salt okunur kanıt al — sana ne kadar yanıt verdiği (sana karşı sessiz / karışık / daha önce yanıt verdi) ve aynı ilanın tekrar tekrar yayınlanıp yayınlanmadığı — takip panonu, takip mesajlarını ve tarama geçmişini birleştirerek. Token yok; tarayıcı hiç çağrılmaz.
Notlar
- Yeni
GET /api/stats/company-history[?company=]rotası (fail-soft{available:false}).tests/stats-company-history-route.test.mjs(+3). +18 i18n anahtarı ×17. Takım: 2501.
[1.189.0] — 2026-08-14
Düzeltildi (tarayıcı) — Roma rakamıyla yazılan kıdem seviyeleri artık Latin olmayan başlıklarda da sayılıyor.
Düzeltildi
skip_tiersarkasındaki kademe sınıflandırıcısı artık herhangi bir yazı sisteminde rol kelimesinden sonra gelen Roma rakamı seviye ekini (I / II / III / IV / V) okuyor — “Инженер III”, “エンジニア I”, “Ingénieur IV” — yalnızca ASCII kelimelerden sonra değil. Önceden Latin olmayan bir kelimeden sonraki seviye rakamı yok sayılıyor ve ilan mid’e düşüyordu, bu yüzdenskip_tiers: [senior]veya[entry]onları atlıyordu.
Notlar
server/lib/classify-tier.mjsiçinde yazı sisteminden bağımsız lookbehind; ölü yinelenenSr.eşleştiricisi kaldırıldı.tests/classify-tier.test.mjs(+1). Takım: 2498.
[1.188.0] — 2026-08-14
Düzeltildi (UI) — birincil eylem düğmeleri artık sayfa alt başlığına yapışık durmuyor.
Düzeltildi
- Haftalık mülakat özeti, Yatırım alan şirketler, Portallar, Kariyer planı ve Kariyer yönlendirmesi sayfalarındaki birincil eylem/kontrol satırı artık uygun bir üst kenar boşluğuna sahip; böylece düğme alt başlığa yaslanmak yerine altında nefes alıyor.
Notlar
- Regresyon koruması
tests/lead-row-top-margin.test.mjs(+5). Takım: 2497.
[1.187.0] — 2026-08-14
Düzeltildi (tarayıcı) — skip_tiers ayarı yeniden çalışıyor: kıdeme göre atlamak istediğiniz ilanlar eleniyor.
Düzeltildi
portals.yml’deki birskip_tiers:listesi (ör.skip_tiers: [intern, entry]) artık taramada dikkate alınıyor. Her ilanın başlığı bir kıdem düzeyine (intern / entry / mid / senior) sınıflandırılır ve düzeyi listenizdeyse elenir. Önceden tarama başlık / konum / içerik / güven filtrelerini çalıştırıyor ama düzey filtresi yoktu, bu yüzdenskip_tierssessizce yok sayılıyordu. Düzey sözcüğü olmayan başlıklar mid’e düşer (böyleceskip_tiers: [mid]sıradan ilanların çoğunu da eler) ve sınıflandırıcı EN SOLDAKİ düzey sözcüğünü okur.
Notlar
- Yeni saf modül
server/lib/classify-tier.mjs(classifyTier+buildTierFilter), EN ve RU tarayıcılarının filtre zincirlerine bağlandı.tests/classify-tier.test.mjs(+7). Takım: 2492.
[1.186.0] — 2026-08-14
Eklendi (CV Studio) — bir “Beceri açığı” paneli: bir işin gerekli becerilerinden hangilerini CV’niz adlandırıyor, ima ediyor veya eksik.
Eklendi
- CV Studio’da yeni bir Beceri açığı paneli. Kayıtlı bir iş tanımı seçin; her gerekli beceriyi CV’nizde adlandırılan, CV’nizde ima edilen veya eksik olarak ayırır — LLM’siz kelime karşılaştırması, hiçbir şey yazılmaz. İlanda net bir gereksinim bölümü yoksa düşük güven notu görünür.
Notlar
- Yeni
GET /api/jds/:name/skill-gap(iş adı, argüman olmadan önce yol-temizlemesinden geçirilir vejds/altında doğrulanır; betik yoksa{available:false}’e yumuşak geri dönüş). +13 i18n anahtarı ×17. Testler:tests/jds-skill-gap-route.test.mjs(+4, yol geçişi reddi dahil). Takım: 2485.
[1.185.0] — 2026-08-14
Eklendi (istatistik) — “Huni ve hız” sekmesi: huniniz piyasayla nasıl kıyaslanıyor ve aşamalar arasında ne kadar hızlı ilerliyorsunuz.
Eklendi
- İstatistik’teki yeni Huni ve hız sekmesi, piyasa kıyaslama aralıklarının yanında yanıt ve mülakat oranlarınızı (küçük örneklem ve seçim yanlılığı uyarılarıyla), tipik ilk yanıt penceresini aşan süregelen başvuruların bir bekleme listesini ve aşama başına medyan günü (Başvuruldu → Yanıtlandı → Mülakat → Teklif) gösterir — yavaş satırlar medyanları saptırmasın diye sağdan sansürlenir. Salt okunur ve sıfır token; yalnızca kendi takipçinizi okur.
Notlar
- Yeni
GET /api/stats/funnel(betik yoksa{available:false}’e yumuşak geri dönüş). +18 i18n anahtarı ×17. Testler:tests/stats-funnel-route.test.mjs(+2). Takım: 2481.
[1.184.0] — 2026-08-14
Düzeltildi (arayüz) — Panodaki hızlı işlem kutucukları artık düzgün bir ızgarada hizalanıyor.
Düzeltildi
- Panoda (Komuta Merkezi) 3 kutucukluk bir grup 4 kutucukluktan daha geniş görünüyor, bu da bölümlerin sağ kenarını düzensiz bırakıyordu. Artık her grup eşit genişlikte sütunlar kullanıyor (geniş ekranda 4, pencere daraldıkça 3 / 2 / 1’e iniyor), böylece tüm kutucuklar aynı boyutta ve sağ kenarları hizalı.
Notlar
- Yalnızca CSS (
.qa-grid:auto-fillyerine sabitrepeat(N, minmax(0,1fr))).tests/dashboard-grid-align.test.mjsile korunuyor (+2). Takım: 2479.
[1.183.0] — 2026-08-14
Eklendi (tarayıcı) — daha akıllı yinelenen tespiti: takip bağlantısıyla yeniden yayımlanan aynı ilan artık iki kez görünmüyor.
Eklendi
- Tarayıcı artık bir ilanı kanonik URL anahtarıyla tanıyor; böylece takip parametresiyle (
?utm_…,gclid, …),httpyerinehttps, ya da sondaki eğik çizgi /#parçaile yeniden yayımlanan aynı ilan, olduğu tek ilan olarak ele alınır — tarama sonuçlarında veya pipeline’da yinelenen satır yok ve zaten gördüğünüz bir ilana boşa değerlendirme yok. Gerçekten farklı ilanlar (gh_jidgibi korunan işlevsel bir id) hâlâ ayrı sayılır.
Notlar
- Yeni
server/lib/url-key.mjs, her iki tarayıcının dedup’ına ve pipeline yazıcısına bağlandı. Bilerek az normalleştirir — iki farklı ilanı asla birleştirmez. Testler:tests/url-key.test.mjs(+5),tests/parsers.test.mjs(+1). Takım: 2477 (+6).
[1.182.0] — 2026-08-14
Düzeltildi (tarayıcı) — maaş aralıkları artık her dilde aynı görünüyor.
Düzeltildi
- Tarama ve takipçi satırlarındaki maaş rakamları, İngilizce olmayan arayüzlere çevrilmeden sızan İngilizce “from” / “up to” sözcükleri yerine yerelden bağımsız ≥ ve ≤ sembollerini kullanıyor (ör.
≥ 120000 EUR,≤ 90000). Tek yönlü aralık bildiren tüm panolara uygulanır (Getro, Remotli, Manfred, Agentic Jobs, JustJoin, Jobicy); çift yönlü aralıklar (100000–150000 USD) zaten nötrdü.
Notlar
- Yalnızca görüntüleme — istemci maaş filtresi ön eke bakmadan sayıları ayrıştırır, filtreleme değişmez. Takım: 2471.
[1.181.0] — 2026-08-14
Eklendi (tarayıcı) — Getro iş panoları artık maaş, tüm konumları ve uzaktan ilanları gösteriyor.
Eklendi
- Getro tarayıcısı (fonların yetenek ağı panoları) artık her ilanda bir maaş (yıllık aralık + para birimi) gösteriyor, yalnızca ilkini değil tüm konumları listeliyor ve uzaktan ilanları etiketliyor. Taramanızdaki ve takipçinizdeki bir Getro ilanı artık diğer panolarla aynı maaş + konum ayrıntısını taşıyor.
Notlar
- Yalnızca tarayıcı; yeni bağımlılık yok, rota / CSP / SSRF değişikliği yok. Testler:
tests/sources-getro.test.mjs(+5). Takım: 2470 (+5).
[1.180.0] — 2026-08-14
Düzeltildi (ORTA, raporlar) — #/reports listesi artık bir tablo ve bir Machine Summary yer tutucusunun gizlediği gerçek bir puan geri kazanıldı.
Düzeltildi
#/reportslistesi 4 kartlık bir ızgara değil, bir tablodur (Rapor · Tarih · Meşruiyet · Puan). Uzun bir “Puan algılanmadı” çipi başlık sütununu neredeyse sıfıra sıkıştırıyor, ardından kart başlığındakioverflow-wrap: anywhererapor adını harf harf bölüyordu. Artık her alanın kendi sütunu var, ad hücresi sözcüklerden bölünür ve dar ekranda tablo yatay kayar (yeni.reports-scrollkonteyneri). Yeni i18n anahtarırep.colReport×17.- Gövdedeki gerçek bir puan (
**Итоговый балл:** 1.8 / 5) artık bir Machine Summary yer tutucusu (score: —) tarafından gizlenmiyor.## Machine Summarybloğu sayısal olmayan veya aralık dışı bir puan taşıdığında, ayrıştırılmış puan yuvasını dolduruyor ve kalın değer-biçimi yedeğini engelliyordu; böylece gövdede gerçek birX / 5olmasına rağmen rapor “Puan algılanmadı” gösteriyordu.parseReportHeaderartık kullanılabilir bir sayı kalmadığında gövdenin değer-biçimini geri kazanır (adım 4.5).
Notlar
- Yalnızca istemci + ayrıştırıcı; rota / CSP / SSRF / üst yazma değişikliği yok. Testler:
tests/reports-table.test.mjs(+5),tests/report-header-locale.test.mjs(+2). Takım: 2465 (+7).
[1.179.0] — 2026-08-13
Değiştirildi (LOW, tarayıcı) — 20 yinelenen HTML varlık çözücüsü ortak modülde birleştirildi (parite devamı, worklist’i kapatır).
Değiştirildi
- 20 kazıma tarama kaynağının her biri kendi
decodeEntities/decodeXmlEntities’ini (+ birfromCodePointyardımcısı) taşıyordu — sürüklenmiş kopyalar (üçüRangeErrorfırlatabiliyordu, v1.172.0’de düzeltildi; diğerleri NUL/C0’a izin veriyor veyaa2;’yi yanlış ayrıştırıyordu). Artık hepsi tekserver/lib/html-entities.mjs’ten (XML 1.0 Char güvenli çözücü) geçiyor ve ~237 satır yineleme kaldırıldı. 8 RSS tarzı kaynak çözümü kazandı (önceden yalnızca 5 varlık); cryptocurrencyjobs’un kasıtlı çift çözümü bir takma adla korundu.hhkendi çözücüsünü tutuyor (—/–’yi işler, ortak 6’nın dışında). Yeni bir nöbetçi test, herhangi bir kaynak yerel çözücü yeniden oluşturursa başarısız olur.
Notlar
- Davranışı koruyan yeniden düzenleme; rota / CSP / SSRF / üst yazma değişikliği yok. Testler:
tests/decoder-consolidation.test.mjs(+2). Takım: 2458 (+2).
[1.178.0] — 2026-08-13
Düzeltildi (LOW, üst parite) — iki eski sabit üst projeye uyacak şekilde güncellendi (PARENT-SYNC GAP #4 + #5).
Düzeltildi
- Tarayıcı User-Agent (GAP #4) —
BROWSER_LIKE_USER_AGENT(workable/workday/oraclecloud/a16z/eightfold tarafından WAF/bot geçitlerini aşmak için gönderilir) Chrome 131’den 151’e yükseltildi, üst projeninuser-agent.mjs’iyle uyumlu; eski bir sürüm daha sık engellenir. BirChrome major ≥ 151testiyle korunuyor. - Tracker durumları FALLBACK (GAP #5) —
states.mjs’deki son çareFALLBACK(yalnızca canlıtemplates/states.ymlokunamadığında kullanılır — taze klon / CI izole kök) üst projenin Türkçe durum takma adlarını (#2615) kazandı: değerlendirildi, başvuruldu, yanıt verildi, mülakat, teklif, reddedildi, iptal edildi, uygun değil, kabul edildi/işe alındı. Üretimde canlı dosya bunları zaten sağlıyordu.
Notlar
- Yalnızca iki sabit; rota / CSP / SSRF / üst yazma değişikliği yok. Testler:
tests/http-json.test.mjs(+1) +tests/states.test.mjs(+1). Takım: 2456 (+2).
[1.177.0] — 2026-08-13
Düzeltildi (MEDIUM, tarayıcı) — arama API’sini oturum çerezleriyle koruyan kiracılarda csod (Cornerstone) 0 iş döndürüyordu (parent #2769, PARENT-SYNC GAP #1).
Düzeltildi
- Bazı Cornerstone kiracıları kariyer sitesi açılış sayfasında oturum çerezleri ayarlar ve bu çerezler anonim bearer belirteciyle birlikte geri gelmezse arama API’sine
401 CSOD Unauthorizedyanıtı verir.sources/csod.mjsartık açılışı yeni birfetchResponseyardımcısıyla okur,Set-Cookiedeğerlerinden birCookiebaşlığı kurar (cookieHeaderFrom— yalnızca ad=değer, jar semantiği) ve arama POST’unda yeniden gönderir. Yalnızca aynı köken (host sabitlenmiş +redirect:'error'), böylece oturum çerezleri asla üçüncü tarafa ulaşamaz; çerez ayarlamayan bir kiracı eskisi gibi davranır.
Notlar
- Yeni
server/lib/http-json.mjs::fetchResponse(eklemeli; mevcut kaynaklar etkilenmez). Rota / CSP / SSRF / üst yazma değişikliği yok. Testler:tests/sources-parity-v1118a.test.mjs(+1). Takım: 2454 (+1).
[1.176.0] — 2026-08-13
Düzeltildi (MEDIUM, raporlar) — RU tablosunun listelemediği kalın bir etiket altındaki puan hâlâ “Score not detected” gösteriyordu (FIND-5).
Düzeltildi
- İki RU raporu puanı
**Итоговый балл:** 1.8 / 5/**Скор:** 1.8 / 5olarak yazıyordu —REPORT_LABELS.ru’nun saymadığı kalın etiketler (yalnızca “Оценка”/“Балл” bilir), bu yüzden puan ayrıştırılmadan kalıyordu. Eş anlamlı listesini büyütmek yerine,parseReportHeaderartık değer biçimine düşüyor: herhangi bir kalın etiket altında /5 ölçütüne göre bir kesir. Dilden bağımsızdır, bir başlığa bağışıktır (**yok,/5değeri yok) ve5/5/2026gibi bir tarihi reddeder (paydaya negatif ileri bakış).
Notlar
- Yalnızca sunucu ayrıştırıcı; rota / CSP / SSRF / üst yazma değişikliği yok. Testler:
tests/report-header-locale.test.mjs(+2). Takım: 2453 (+2).
[1.175.0] — 2026-08-13
Düzeltildi (LOW, sağlamlaştırma) — FIND-3 SEO açıklaması için bir regresyon nöbetçisi + null’a dayanıklı meşruiyet temizliği (AI-review takibi).
Düzeltildi
- SEO açıklaması parite nöbetçisi — her dilin
meta.descalanındaki sabit kodlu “~55”i kayıt defterinden türetilen{adapters}yer tutucusuyla değiştiren v1.174.0 düzeltmesinin testi yoktu, bu yüzden bir sonraki dil düzenlemesinde sessizce geri dönebiliyordu. Yeni, CI’dan yalıtılmıştests/site-meta-desc-parity.test.mjs, 17site/src/i18n/*.jsondosyasından biri yer tutucuyu kaybederse veya bir sayıyı yeniden sabit kodlarsa ya daLanding.astroonu üç açıklama meta’sına yerleştirmeyi bırakırsa başarısız olur. - Null’a dayanıklı meşruiyet temizliği —
stripEmphasisboş girdi için “undefined” dizesi yerine''döndürür (alanlar dize olarak başlatılır, yani derinlemesine savunma).
Notlar
- Test + ayrıştırıcıda tek satırlık bir nöbetçi; rota / CSP / SSRF / üst yazma değişikliği yok. Testler:
tests/site-meta-desc-parity.test.mjs(+3). Takım: 2451 (+3).
[1.174.0] — 2026-08-13
Düzeltildi (HIGH, raporlar) — yerelleştirilmiş raporlar “Score not detected” gösteriyordu; SEO açıklaması eskimişti.
Düzeltildi
- Puan ayrıştırma (FIND-1) — H1’i puan etiketi sözcüğünü içeren İngilizce olmayan bir rapor (
# Оценка вакансии: <başlık>) artık o başlığı puan sanmıyor.parseReportHeaderşimdi yerelleştirilmiş kalın etikete (**Оценка:** 1.5 / 5) sabitleniyor, başlık satırlarını atlıyor ve etiketin iki noktaya bitişik olmasını istiyor — böylece “Score not detected” gösteren RU raporları gerçek puanını gösteriyor. - Meşruiyet rozeti (FIND-2) — değerden Markdown vurgusu temizleniyor, rozet “** High Confidence” yerine “High Confidence” gösteriyor.
- Puan taşması — sonuna durum metni eklenmiş bir puan satırı (“1.8, Status: Evaluated, …”) yalnızca puana sıkıştırılıyor;
.score-pillbir kaydırma-yok/taşma sınırı kazanıyor ve başlık sütunu daralabiliyor, böylece renkli rozet kart kenarından hiç taşmıyor. - SEO açıklaması (FIND-3) — cvstart.org’un meta / OG / Twitter açıklamaları (17 dilin tümü) “Scan ~55 job boards” değerini sabit kodluyordu, oysa gövde gerçek kayıt defterini sayıyordu (“~75”). Açıklama artık kayıt defterinden türetilen sayıyı yerleştiriyor, böylece bir daha kaymıyor.
Notlar
- Sunucu ayrıştırıcı + istemci render/CSS + site i18n; rota / CSP / SSRF / üst yazma değişikliği yok. Testler:
tests/report-header-locale.test.mjs(+4). Takım: 2448 (+4).
[1.173.0] — 2026-08-13
Eklendi (LOW, yapılandırma) — Hermes, algılanan yapay zeka CLI listesine katıldı (career-ops paritesi).
Eklendi
#/config→ “Yapay Zeka CLI Araçları” sekmesi artık üst projenin yeni desteklediği aracı çalışma zamanı Hermes’i (Nous Research, ikilihermes) algılıyor.server/lib/routes/cli-detect.mjsiçindeki sabit izin listesi 10’dan 11 araca çıkıyor; algılama salt okunur bir PATH taraması olarak kalıyor (hiçbir ikili asla çalıştırılmaz).
Notlar
- i18n / rota / CSP / SSRF / üst yazma değişikliği yok; liste sabittir, asla girdi değildir. Takım: 2444 (cli-detect kanaryası 10 → 11 güncellendi).
[1.172.0] — 2026-08-13
Düzeltildi (MEDIUM, tarayıcı) — bozuk bir HTML varlığı bir tarama kaynağını çökertebiliyordu (career-ops #2150 paritesi).
Düzeltildi
oraclecloud,gemvedassaultkaynakları, sayısal HTML varlıklarınıString.fromCodePointöncesinde yalnızca zayıf birNumber.isFinitedenetimiyle çözüyordu —0x10FFFFüzerindeki bir başvuru (ör. bozuk veya kötü niyetli bir akıştan�) yakalanmayan birRangeErrorfırlatıp o kaynağın tüm ayrıştırmasını iptal ediyordu. Ortak bir modülserver/lib/html-entities.mjs(üst projenin_html-entities.mjsdosyasını yansıtır) artık sayısal başvuruları XML 1.0 §2.2 Char kümesiyle sınırlar; böyleceString.fromCodePointasla fırlatamaz ve onaltılık ile ondalığı ayrı eşleştirdiği içina2;artık yanlış ayrıştırılmaz. Üç kaynak bunu içe aktarır.
Notlar
- Geçerli akışlar için davranış değişmez; JS / i18n / rota / CSP / SSRF / üst yazma değişikliği yok. Kaynaklardaki kalan ~20 çözücü kopyasının birleştirilmesi
qa/PARENT-SYNC-WORKLIST-v1.26.0.mdiçinde izleniyor. - Testler:
tests/html-entities.test.mjs(+7). Takım: 2444 (+7).
[1.171.0] — 2026-08-13
Değiştirildi (DÜŞÜK, tasarım sistemi) — yazı ölçeği + z-index katman belirteçleri (D-4, ilk adım). Boyutlar ve katmanlama bileşen başına düz değerdi.
Değiştirildi
- z-index katmanları —
--z-*belirteçleri (--z-topbar…--z-skiplink) eklendi ve her z-index düz değeri taşındı. Değerler korundu, katmanlama aynı; yeni bir kanarya yeni sihirli sayıları yasaklıyor. - Yazı ölçeği —
--font-size-*rampası (xs 11…2xl 28, taban = Inter 15px); bileşenlerin zaten kullandığı çekirdek boyutlar taşındı (görsel değişiklik yok). Rampa dışı değerler kademeli taşınır (docs/UX-ROADMAP.md).
Notlar
- Yalnızca CSS belirteci; davranış/JS/i18n/rota/CSP/SSRF/yazma değişikliği yok. Piksel değişikliği yok.
tests/design-tokens-scale.test.mjs(+3). Takım: 2437 (+3).
[1.170.0] — 2026-08-13
Eklendi (DÜŞÜK) — uzun yapay zekâ oluşturmalarında dürüst ETA ipuçları (P4-ETA). Ağır oluşturmalar (kariyer planı ~40 sn, yönlendirme / pazar / networking ~30 sn, two-pager ~20 sn) süre hissi olmadan yalnızca “Oluşturuluyor…” gösteriyordu.
Eklendi
- Her uzun oluşturma düğmesinin yanında artık sönük bir
⏱ ~Nsnipucu var (#/autoETA’sı gibi). Paylaşılan.eta-hintstili + iki genel anahtar (common.eta~{n}s,common.etaTitle).
Notlar
- Yalnızca istemci; rota/CSP/SSRF/yazma değişikliği yok. +2 i18n anahtarı ×17 (anlık görüntü 1219 → 1221).
tests/generation-eta-hint.test.mjs(+2). Takım: 2434 (+2).
[1.169.0] — 2026-08-13
Eklendi (DÜŞÜK) — satır içi PDF önizleme (D-5). GET /api/output/pdfs/:name, Content-Disposition: attachment dayatıyordu; bu yüzden #/cv’deki “Aç” bağlantısı bile göstermek yerine indiriyordu.
Eklendi
?inline=1, AYNI temizlenmiş dosyayıContent-Disposition: inlineile sunar; tarayıcı yeni sekmede 👁 Önizleme olarak işler. Varsayılan (parametresiz) hâlâ indirmedir. Yeni rota yok; aynı ad korumaları.#/cvPDF listesindeki ilk düğme artık 👁 Önizleme (İndir’in yanında).cv.openPdf“Aç” → “Önizleme” ×17.
Notlar
- CSP/SSRF değişikliği yok — aynı
sanitizePathName. Mevcut bir i18n anahtarı ×17 yeniden yazıldı (anlık görüntü 1219).tests/output-pdfs.test.mjs(+3). Takım: 2432 (+3).
[1.168.0] — 2026-08-13
Düzeltildi (DÜŞÜK, a11y) — onay kutusu satırları artık WCAG 2.5.8’in 24×24 minimumunu karşılıyor (D-2). #/scan, #/config, #/evaluate ve #/cv-studio üzerindeki onay kutusu/radyo etiketleri ~22 px’lik bir bantta duruyordu.
Düzeltildi
- Kapsamı sınırlı
label:has(> input[type="checkbox"/"radio"]) { min-height: 24px }kuralı ≥24 px’lik bir bant garanti eder. Yalnızcamin-height— etiketler zaten flex, hiçbir şey kaymaz;.apply-checklist(32 px) zaten uyumluydu.
Notlar
- Yalnızca CSS; davranış/JS/i18n/rota/CSP/SSRF/yazma değişikliği yok.
tests/checkbox-target-size.test.mjs(+1). Takım: 2429 (+1).
[1.167.0] — 2026-08-13
Düzeltildi (DÜŞÜK, tasarım sistemi) — yükseltilmiş yüzeyler artık ince çizgilerden ayrışıyor (D-3). --panel-2 / --surface-elev1 tokenları, ince çizgiler --line / --border ile aynı --slate değerine çözümleniyordu, görsel ayrım yoktu.
Düzeltildi
- Temaya duyarlı özel bir token
--elev(açık#eef1f6/ koyu#1e232e, her iki temada--slate’ten farklı) artık yükseltilmiş yüzeyleri destekliyor; ince çizgiler--slate’te kalıyor. Kalan bulgular (D-2, D-4, D-5, P4-ETA)docs/UX-ROADMAP.md’de backlog.
Notlar
- Yalnızca CSS token; davranış/JS/i18n/rota/CSP/SSRF/yazma değişikliği yok.
tests/elevation-token.test.mjs(+2). Takım: 2428 (+2).
[1.166.0] — 2026-08-13
Düzeltildi (DÜŞÜK) — rubrik terminolojisi artık kanonik belgeleri yansıtıyor. career-ops.org/docs “beş boyut artı bütünsel bir genel puan” diye tanımlıyor, ancak web-ui, cvstart.org ve wiki hepsi “altı boyutlu rubrik” diyordu (5 + 1 = 6, ama sözcükler uyuşmuyordu).
Düzeltildi
- Belgelerin ifadesi — “beş boyut artı bütünsel bir genel puan” — README ×17, cvstart.org sitesi ×17, yardım kılavuzu ×17,
docs/career-ops-canonical.mdve wiki (Home ×17 + Features) genelinde tutarlı biçimde benimsendi.
Notlar
- Yalnızca belge/pazarlama; kod/i18n anahtarı/rota/CSP/SSRF/yazma değişikliği yok.
tests/rubric-terminology.test.mjs(+2). Takım: 2426 (+2).
[1.165.0] — 2026-08-13
Düzeltildi (DÜŞÜK) — “Two-pager” terimi artık her dil içinde tutarlı. Arapçada kenar çubuğu Latin “Two-pager” gösterirken <h1> tamamen yerelleştirilmişti — aksi halde aynalanmış RTL gezinmesindeki tek Latin dizesi.
Düzeltildi
- Karar uygulandı: dil başına
nav.twoPagervetwoPager.titleterimde uyuşur (ikisi de Latin ya da ikisi de yerelleştirilmiş). Yalnızca Arapça ayrıktı; gezinme etiketi artık yerelleştirildi (“الصفحتان”). Yeni bir kanarya, bir dil onları tekrar ayırırsa başarısız olur.
Notlar
- Yalnızca metin; rota/CSP/SSRF/yazma değişikliği yok. Bir i18n değeri değişti (ar); yeni anahtar yok (anlık görüntü 1219).
tests/two-pager-term-consistency.test.mjs(+2). Takım: 2424 (+2).
[1.164.0] — 2026-08-13
Düzeltildi (DÜŞÜK) — üst çubuk arama yer tutucusu artık hiçbir dilde taşmıyor. “Find a company, role or URL…” arama çubuğu küçüldüğünde kırpılıyordu; “…or URL” yarısı asla görünmüyordu.
Düzeltildi
top.search(×17) artık kısa “Ara veya URL yapıştır” (her dilde ≤24 karakter), dar bir çubukta bile sığar ve URL ipucunu korur.index.htmlyedeği eşleşir;aria-labeltam ayrıntıyı korur.
Notlar
- Yalnızca metin; rota/CSP/SSRF/yazma değişikliği yok. Mevcut bir i18n anahtarı ×17 yeniden yazıldı (yeni yok; anlık görüntü 1219).
tests/search-placeholder-fit.test.mjs(+2). Takım: 2422 (+2).
[1.163.0] — 2026-08-13
Düzeltildi (DÜŞÜK) — uygulama içi “Belgelere sor” asistanı artık bir raporu PDF olarak dışa aktarmayı kapsıyor. #/reports/:slug’da çalışan bir 📄 Generate PDF düğmesi olmasına rağmen kılavuzun bunu kapsamadığını söylüyordu.
Düzeltildi
- 17 yardım paketinin tamamında §10 Raporlar altına “Bir raporu PDF olarak dışa aktarma” H3’ü eklendi (düğme nerede, dosya
output/*.pdf’e yazılır, Playwright gerekir, göndermeden önce gözden geçir). Asistan getirimi artık Raporlar bölümünü gösteriyor.
Notlar
- Yalnızca belge/yardım; kod/rota/CSP/SSRF/yazma değişikliği yok. Yardım eşiği 112 → 113 H3 (31 H2 değişmedi).
tests/help-reports-pdf-section.test.mjs(+2). Takım: 2420 (+2).
[1.162.0] — 2026-08-13
Düzeltildi (ORTA) — yardım “?” artık ≥24×24 işaretçi hedefi (WCAG 2.5.8). .help-hint her başlıkta padding:0 ile 18×18 px, minimumun altındaydı.
Düzeltildi
.help-hintkutusu artık 24×24 (ölçülebilir hedef), görünen halka 18px kalıyor — ortalanmış bir::beforeile çizilir, böylece glif ve<h1>taban çizgisi değişmez. Hover/etkin/odak durumları halkayı izler; kenar boşluğu 6→3px ile boşluk korunur.
Notlar
- Yalnızca CSS; JS/i18n/rota/CSP/SSRF/yazma değişikliği yok.
tests/help-hint-target-size.test.mjs(+2). Takım: 2418 (+2).
[1.161.0] — 2026-08-13
Düzeltildi (ORTA) — #/reports boşluk yerine “Puan algılanmadı” çipi gösteriyor. v1.159.0 dil-duyarlı ayrıştırıcıdan sonra bile puanı ayrıştırılamayan bir rapor boş alan gösteriyordu — başarısızlıktan ayırt edilemez.
Düzeltildi
- Puan hücresi artık dallanıyor: puan varsa → ton hapı; yoksa → sönük
.score-mutedçipi (“Puan algılanmadı”, ×17) ve “Raporu aç…” ipucu. Kart klavyeyle kullanılabilirrole="link"olarak kalır ve tarih gösterilir. - Mevcut nötr belirteci yeniden kullanır; yeni renk yok.
Notlar
- Yalnızca istemci; rota/CSP/SSRF/yazma değişikliği yok. +2 i18n anahtarı ×17 (anlık görüntü 1217 → 1219). Takım: 2416 (+3).
[1.160.0] — 2026-08-13
Düzeltildi (YÜKSEK) — sağlayıcı metni artık 7 sağlayıcı vaadiyle çelişmiyor. #/config, canlı değerlendirmenin “Anthropic veya Gemini anahtarını kullandığını” ve OpenAI anahtarının “web arayüzü tarafından kullanılmadığını” söylüyordu; panoda “Anthropic-first scoring” yazıyordu — 7 sağlayıcı zincirinden (v1.157.0) beri yanlış.
Düzeltildi
config.providerModelNote(×17): artık ⚡ canlı değerlendirmenin yedi anahtarından (Anthropic · Gemini · OpenAI · Qwen · OpenRouter · GitHub Models · Hermes) herhangi biriyle başsız çalıştığını, otomatik sıralı ve yedekli olduğunu belirtiyor. Yanlış OpenAI cümlesi kaldırıldı.dash.quick.evaluateSub(×17): sağlayıcıdan bağımsız (“0–5 uygunluk puanı”).Keys: N / 5→N / 7.
Notlar
- Yalnızca metin; rota/CSP/SSRF/yazma değişikliği yok. Yeni i18n anahtarı yok (anlık görüntü 1217). Takım: 2413 (+3).
[1.159.0] — 2026-08-13
Düzeltildi (YÜKSEK) — rapor meta verileri artık dile bağlı değil. İngilizce dışında bir dilde üretilen raporlar #/reports üzerinde boş bir meta veri şeridi gösteriyordu, çünkü parseReportHeader yalnızca İngilizce kalın etiketleri tanıyordu.
Düzeltildi
parseReportHeaderartık dilden bağımsız## Machine SummaryYAML bloğunu ayrıştırıyor (score:/legitimacy:/date:—auto-pipeline’ın zaten okuduğu kaynak): İngilizce etiketler → Machine Summary → yerelleştirilmiş etiketler (REPORT_LABELS, 17 dil). İngilizce raporlar bayt bayt aynı kalır.- Toleranslı sayı ayrıştırma (
1.5/5,1,5/5,1.5 из 5,4.5 out of 5); gövdede tarih yoksa dosya mtime’ına düşer.
Notlar
- Yalnızca okuma/ayrıştırma; rota, CSP, SSRF veya üst yazma değişikliği yok. Yeni i18n anahtarı yok. Takım: 2410 (+8).
[1.158.0] — 2026-08-12
Düzeltildi — iki kozmetik görüntüleme hatası (sekme başlığına sızan bir «?» ve açılış sayfasında yanlış sağlayıcı sayısı). Yalnızca görüntüleme; davranış, güvenlik veya veri akışı değişikliği yok.
Düzeltildi
- HelpHint’in «?» işareti artık
document.title’a sızmıyor. Yönlendirici sekme başlığını hamh1.textContent’ten türetiyordu, bu yüzden sekme «Vacancy search» yerine «Vacancy search?» gösteriyordu.router.js::focusNewViewartık başlığı klonluyor,.help-hint’i kaldırıyor ve sonra metni okuyor; görünen «?» dokunulmadan kalıyor. - cvstart.org «7» yerine «17 AI providers» gösteriyordu.
Features.astro’dakisub()yardımcısı, kart bazlı değiştirmeden önce tüm{n}değerlerini dil sayısıyla (17) yeniden yazıyordu; artık{n}kart bazında çözülüyor (sağlayıcılar → 7, diller → 17).
Notlar
- Sunucu, rota, CSP, SSRF veya i18n anahtarı değişikliği yok;
facts.jsonbiçimi değişmedi. Takım: 2402 test (+1).
[1.157.0] — 2026-08-12
Düzeltildi — canlı değerlendirmeler artık yalnızca Anthropic/Gemini değil, YAPILANDIRILMIŞ herhangi bir sağlayıcıyla çalışıyor. Yalnızca OPENROUTER_API_KEY ayarlı bir kullanıcı yanlışlıkla manuel moda zorlanıyordu.
Düzeltildi
- Kök neden: anahtarsız bir
LLM_PROVIDERsabiti (ör.init’ten gelenLLM_PROVIDER=claude) çıkmaza giriyordu; artık yapılandırılmış sağlayıcılar arasında auto sırasına geri düşüyor (selectActiveProvider+ her iki dağıtım kaskadında). - İstemci kapılaması (
#/deep+ mode-page görünümleri) artık eski Anthropic/Gemini yoklaması yerinewindow.ProviderStatus(/api/status/providers, yedisi) kullanıyor; yeniden yazılmış metinler (deep/eval × 17) + panodaki «Canlı değerlendirmeler» rozeti +config.llmProviderHint.
Notlar
- Güvenlik değişikliği yok. Takım: 2401 test (+5).
[1.156.0] — 2026-08-12
Refactor — scan.js’i boyut sınırının altına bölmek (P-16) + bir CodeQL düzeltmesi. scan.js 906 satırdı; davranışı koruyan iki fabrika çıkarılarak 648’e indirildi. P-15/P-16 görünüm-bölme çiftini tamamlar.
Değiştirildi
- Yeni
scan/runner.js(tarama yürütme motoru) vescan/filters.js(filtre durum makinesi)ctx/refstorbalarıyla;scan.jsikisini bağlar.
Düzeltildi
- CodeQL
js/useless-assignment-to-local(#428)config/tab-controller.js:let n = i;→let n;.
Notlar
- Saf refactor, davranış değişikliği yok; kaynağı okuyan 4 test yeniden yönlendirildi. İki büyük görünüm de artık 800’ün altında (P-15/P-16 tamam). Takım: 2396 test.
[1.155.0] — 2026-08-12
Refactor — config.js’i boyut sınırının altına bölmek (P-15). config.js 1030 satırdı (800 sınırının üstünde); davranışı koruyan iki modül çıkarılarak 783’e indirildi.
Değiştirildi
- Yeni
config/field-specs.js(alan verisi + model listeleri) veconfig/tab-controller.js(sekme çubuğu fabrikası);config.jsbunlara başvurur, render mantığı değişmez.
Notlar
- Saf refactor, davranış değişikliği yok; kaynağı okuyan 6 test yeniden yönlendirildi.
scan.js(906) olduğu gibi bırakıldı (zaten kısmen bölünmüş; çekirdek temiz bir mekanik bölme için fazla bağlı). Takım: 2396 test.
[1.154.0] — 2026-08-12
Yeni kılavuz — “Tüm yığını bulutta çalıştır.” career-ops’un kendine ait bir bulut/sunucu anlatısı yok, biz de ekledik: üst career-ops hattını, bu career-ops-ui görüntüleyiciyi ve yapay zekâ motorunu (Claude Code üzerinden Claude aboneliği, yerel Hermes, veya API anahtarları) küçük ve her zaman açık bir sunucuya koymak için adım adım tarif. 17 dilde Yardım §31, bir README bölümü ve bir wiki sayfası olarak gelir.
Eklendi
- Yardım §31 “Tüm yığını bulutta çalıştır” (× 17) — üç parça, hazırlama + kurulum, motor seçimi, güvenli yayınlama (HTTPS ters proxy + kimlik doğrulama + CSP/SSRF/XSS/sır-yok değişmezleri). Yardım paketi 31 H2 / 112 H3’e büyür.
- README — “Tüm yığını bulutta çalıştır” bölümü (× 17) + wiki’de Cloud-Deployment sayfası.
Notlar
- Yalnız docs — rota, sunucu veya istemci değişikliği yok; yeni i18n anahtarı yok. 4 yardım testi 31 H2 / 112 H3 sözleşmesine geçer. Takım: 2396 test (değişmedi).
[1.153.0] — 2026-08-12
Jobvite tarayıcısı herkese açık XML akışına taşındı (ebeveyn senkronu). Ebeveyn, Jobvite JSON API’sini emekliye ayırdı (artık sıfır iş döndürüyor); web-ui’nin source’u aynı ölü uç noktayı kullanıyordu, bu yüzden izlenen her Jobvite şirketi sessizce boş taranıyordu. Ebeveyn düzeltmesini (#2623) taşır: source artık companyEId ile anahtarlanan herkese açık kiracı-başına XML akışını okur.
Düzeltildi
- Source, emekli JSON API’sini çağırıp sıfır iş döndürüyordu; artık
https://app.jobvite.com/CompanyJobs/Xml.aspx?c={companyEId}çağırıp XML<result><job>…ayrıştırıyor (CDATA + varlıklar,detail-url,apply-url’den önce).
Değiştirildi
companyEIdçözümü: (1) portaldakicompany_eid:, (2) açık birapi:’ninc=parametresi, (3) pano sayfası keşfi.fetchText(http-json.mjs) non-ok hatasına.location/.retryAfterekler (salt okunur, geriye dönük uyumlu).
Notlar
- Güvenlik — iki host (
jobs.jobvite.com,app.jobvite.com) her istekten önceassertJobviteUrlile sabitlenir: yalnız https, katı izin listesi, hiçbir yönlendirme izlenmez.companyEIdyalnızca bir?c=değeridir; source sayısı değişmez. - Takım: 2396 test (+4).
[1.152.0] — 2026-08-12
Hermes sağlayıcısı — kablolama tamamlandı + doküman güncellemesi. v1.151.0 Hermes entegrasyonunun kod incelemesi iki gerçek boşluk ve dört tamlık maddesi buldu; hepsi burada düzeltildi ve uygulamanın tüm LLM sağlayıcı listesi tüm doküman yüzeylerinde ve 17 dilde tam yediye çıkarıldı.
Düzeltildi
#/configHermes’i zorlayamıyordu —LLM_PROVIDERaçılır listesi yalnızca altı sağlayıcı listeliyordu, bu yüzdenHERMES_API_KEYayarlanabiliyor ama Hermes UI’dan zorlanamıyordu. Artıkhermes8. seçenek ve yeni bir eşlik testi açılır listeninLLM_PROVIDERS’tan tekrar sapmasını engelliyor.- Kısa kendi barındırılan anahtarlar sessizce reddediliyordu —
isUsableKey’in 20 karakter tabanı bulut anahtarlarına göreydi;hasHermesKeyartık gevşetilmiş 8 karakter tabanı kullanıyor (Hermes dokümanının örneği 19 karakter).
Değiştirildi
- Sağlayıcı listesi README (× 17), uygulama içi yardım (× 17),
config.llmProviderHintsözlüğü (× 17) vedocs/sdd’de tam yediye normalleştirildi;hermesChatUrlyolsuz bir ana bilgisayarı tamamlıyor; manuel yedek metni Hermes’i anıyor.
Notlar
- Güvenlik değişmedi — yeni rota veya SSRF/CSP değişikliği yok; health/doctor bir
HERMES_API_KEYsatırı kazanıyor. - Takım: 2392 test (+2).
[1.151.0] — 2026-08-12
Hermes artık bağlı bir LLM sağlayıcısı (Phase 5) — Phase 5 kapsam çalışması, Nous Research’ün Hermes’inin OpenAI uyumlu bir API Server (hermes gateway → POST /v1/chat/completions) içerdiğini doğruladı; böylece career-ops-ui canlı değerlendirmeleri artık tıpkı OpenAI/Qwen gibi yerel bir Hermes üzerinden çalıştırıyor. Uygulama ayarları’nda HERMES_API_KEY ayarlayın; auto sırasına katılır (en son). Yol haritasının son açık maddesini kapatır — Phase 5, Shape A.
Eklendi
- Hermes LLM sağlayıcısı (Shape A) — paylaşılan
runOpenAICompatibleistemcisi üzerinderunHermes(server/lib/openai.mjs), her iki kaskatta (llm-dispatch.mjs+routes/llm.mjs), auto sırasının sonunda +LLM_PROVIDER=hermessabiti,/api/status/providersvellm-pricing.mjs. Yapılandırılabilir yerel bir base URL’ye (varsayılanhttp://127.0.0.1:8642/v1) Bearer kimlik doğrulamasıyla ulaşır — bu, kullanıcı tarafından verilen bir iş URL’si değil, YAPILANDIRILMIŞ bir sağlayıcı uç noktasıdır (OpenRouter/Qwen gibi), dolayısıyla SSRF korumasına dokunmaz. #/configalanları —HERMES_API_KEY(gizli) +HERMES_BASE_URL+HERMES_MODEL(varsayılanhermes-agent), 6 yeni i18n anahtarı × 17 dil (anlık görüntü 1208 → 1214).
Değişti
- Kapsam çalışması çözüldü:
docs/integrations/HERMES.md, uygulama içi yardım §30 (× 17), README tanıtımı (× 14),hermes-bridgeskill’i ve yol haritası “planlandı / henüz bağlanmadı”dan bağlandı (Shape A)’ya geçiyor. Shape B (özel bir ajan çalışma zamanı relay’i) gerekmedi.
Notlar
- Güvenlik: sağlayıcı fetch’i yapılandırılmış bir uç noktadır, diğer OpenAI uyumlu sağlayıcılarla aynı kategoride — yeni SSRF yüzeyi yok, CSP/sanitizer değişikliği yok.
HERMES_API_KEYbirSECRET_KEY’dir (asla gösterilmez). - Testler (CI-izole, sahte taşıma):
tests/hermes-provider.test.mjs(+5); v1.146.0’ın “Hermes dalı yok” kanaryası, BAĞLI olduğunu doğrulamak için tersine çevrildi; sağlayıcı yüzey testleri 7 sağlayıcı sırasına güncellendi. - Takım: 2390 test (+5).
[1.150.0] — 2026-08-12
Tutarlı boş durumlar (Phase 4 rötuşu) — her “henüz bir şey yok” paneli artık bazı görünümlerin görünümü sihirli bir 40px ile satır içi yeniden tanımlaması yerine, tek bir paylaşılan .empty stiliyle çiziliyor. Küçük bir görsel tutarlılık düzeltmesi; #/activity, #/cv-studio, #/stats ve #/usage boş durumları artık diğerlerinin tümüyle eşleşiyor (belirteçlenmiş 48px dolgu + kesikli kenarlık).
Değişti
#/activity,#/cv-studio,#/stats,#/usageboş panellerdeki satır içistyle: { padding: '40px', textAlign: 'center', color: 'var(--foggy)' }ifadesini kaldırdı — üç özellik de zaten paylaşılan.emptysınıfı tarafından sağlanıyor (--space-7= 48px, ortalanmış, soluk, kesikli kenarlık). Böylece bu dördü diğer ~25.emptypaneliyle birebir aynı çiziliyor.- Görünüme özgü meşru geçersiz kılmalar (
#/dashboardwidth:100%,#/pipelineborder:none) el değmeden kaldı — yalnızca tamamen gereksiz yeniden tanımlamalar çıkarıldı.
Notlar
- Yalnızca istemci CSS kullanımı temizliği — rota, sunucu, i18n anahtarı veya CSS kuralı değişikliği yok (
.emptysınıfının kendisi değişmedi); sözlük anlık görüntüsü 1208. Tarayıcıda doğrulandı (#/usageboş paneli 48px dolgu + kesikli kenarlık hesaplıyor, 0 konsol hatası). - Yeni kanarya testi
tests/empty-state-consistency.test.mjs,.empty’yi tek doğruluk kaynağı olarak korur. Phase 5 (Hermes sağlayıcısı) engelli kalmaya devam ediyor. - Takım: 2385 test (+2:
tests/empty-state-consistency.test.mjs).
[1.149.0] — 2026-08-12
Portallar Ayarlara taşındı (Phase 4) — #/portals artık Sourcing altında değil, Uygulama ayarları yanındaki Setup gezinme grubunda. v1.144.0’dan beri bu bir ayar yüzeyi (takip edilen şirketleri aç/kapat + bir ATS sağlık yoklaması), bir sourcing eylemi değil — dolayısıyla ait olduğu yer burası. Yalnızca gezinme değişikliği; sayfa ve rotası değişmedi.
Değişti
#/portalsgezinme öğesi → Setup grubu (public/index.htmliçinde), Uygulama ayarları’nın hemen ardına yerleştirildi. Sourcing grubundan çıkarıldı (grup Scan / Pipeline / Auto-pipeline / Finanse edilen şirketleri korur).#/portalsrotası, görünümü venav.portalsetiketi değişmedi — yalnızca kenar çubuğundaki konum değişti.
Notlar
- Yalnızca gezinme biçimlendirmesi — rota, görünüm, i18n anahtarı veya sunucu değişikliği yok. Tarayıcıda doğrulandı (0 konsol hatası);
tests/portals-nav-placement.test.mjsile korunuyor. - Takım: 2383 test (+2:
tests/portals-nav-placement.test.mjs).
[1.148.0] — 2026-08-12
Daha derli toplu tarama filtreleri (Phase 4) — filtre paneli artık düzenli bir ızgara — #/scan filtre paneli, değişken genişlikte katı kutulardan oluşan dağınık bir flex-wrap’ten duyarlı bir ızgaraya geçti ve Uygula / Sıfırla eylemleri artık kendi ayrı, sağa hizalı satırında yer alıyor. Aynı filtreler, aynı davranış — sadece daha okunaklı. Bir tasarım rötuşu (parent-sync yok).
Değişti
#/scanfiltre paneli → duyarlı ızgara —.scan-filtersartıkrepeat(auto-fill, minmax(180px, 1fr))sütunları ve eşit boşluklarladisplay: grid, böylece 11 etiketli filtre her genişlikte dağınık bir satıra sarmak yerine düzenli sütunlara hizalanır.- Uygula / Sıfırla eylemleri kendi satırında tüm ızgarayı kaplar, ince bir çizgiyle ayrılır ve sağa hizalanır.
scan.js’deki eski gizli etiket hilesi + iç flex sarmalayıcı kaldırıldı.
Notlar
- Yalnızca CSS + küçük bir DOM temizliği — her filtre id’si (
#scan-filter-*,#scan-apply) veSR.render()bağlantısı değişmedi, dolayısıyla Playwright akışı el değmeden kaldı. Yeni i18n anahtarı yok. - Tarayıcıda doğrulandı (0 konsol hatası);
tests/scan-filters-grid.test.mjsile korunuyor. - Takım: 2381 test (+3:
tests/scan-filters-grid.test.mjs).
[1.147.0] — 2026-08-12
Hermes & Telegram — uygulama içi yardım bölümü + cvstart.org yüzeyi (Phase 5b, bölüm 2) — Hermes belge çalışmasının ikinci ve son parçası: nasıl yapılır artık uygulamanın kendi yardım kılavuzunun içinde, 17 dilin tümünde yaşıyor ve uygulama içi belge asistanı Hermes sorularını buradan yanıtlıyor. Hâlâ yalnızca belge — Hermes LLM sağlayıcı yolu planlandı / henüz bağlanmadı durumunda kalıyor (Phase 5).
Eklendi
- Uygulama içi yardım §30 “Hermes & Telegram” × 17 dil — yeni bir kılavuz bölümü (Hermes nedir + iki entegrasyon biçimi; bir bulut sunucusunda çalıştırma; Hermes üzerinden Telegram + “NEYİN açığa çıkarılmaması gerektiği” kuralı),
#/helpüzerinden erişilebilir.docs-assistant/DocsFabgrounding’i bunu otomatik alır çünkü ikisi dedocs/help/<lang>.mdokur. - cvstart.org — Hermes kılavuzuna bir bağlantı, GitHub’daki belgeye yönlendirir.
Değişti
- Yardım paketi eşiği 29 → 30 H2 / 105 → 108 H3 yükseltildi (
canonical-docs-coverage,help-ui,help-ru-config-section); §30 üç H3 ekler.
Notlar
- Hâlâ hiçbir şey Hermes’i çağırmıyor. Yeni kanarya testi
tests/help-hermes-section.test.mjs, her dilin §30’u dilden bağımsız çıpalarıyla (docs/integrations/HERMES.md,hermes-bridge,#/help,127.0.0.1, Telegram) içerdiğini doğrular. Sağlayıcı, Phase 5 API sözleşmesine kadar engelli kalır. - Bu, Phase 5b’nin belge + skill çıktısını kapatır; sağlayıcı entegrasyonu (Phase 5) ayrı, engellenmiş bir madde olarak kalır.
- Takım: 2378 test (+2:
tests/help-hermes-section.test.mjs).
[1.146.0] — 2026-08-12
Hermes ajanı + Telegram — entegrasyon kılavuzu + bir skill (Phase 5b, bölüm 1) — career-ops-ui’yi bir bulut sunucusunda çalıştırabilir ve olaylarını (tamamlanmış bir tarama, yeni bir rapor, acil bir takip) Nous Research’ün Hermes ajanı üzerinden Telegram’a bağlayabilirsiniz. Bu sürüm tasarım + dağıtım belgelerini ve bir hermes-bridge skill’ini sunar; Hermes LLM sağlayıcı yolu hâlâ planlanan / henüz bağlanmamış durumda (Phase 5 API sözleşmesi spike’ına tıkanmış). Belgeler kasıtlı olarak koddan önde.
Eklendi
docs/integrations/HERMES.md— derinlemesine inceleme: iki entegrasyon biçimi (OpenAI uyumlu endpoint vs. ajan çalışma zamanı), bulut sunucusuna dağıtım (reverse proxy + HTTPS + systemd, başsız bir makinede salt okunur parent sözleşmesi), Hermes üzerinden Telegram ve bir tehdit modeli «NEYİN açığa çıkarılmaması gerektiği» listesi (kanal’a CV / maaş / rapor içeriği / anahtar sızdırılmaz).- README’deki
## Hermes agent + Telegramtanıtımı — İngilizce README’de kısa bir yönlendirme + bağlantı, her dilin tam çevrilmiş README’sinde de yansıtılır. - Kılavuzu işlevsel kılan bir
hermes-bridgeskill’i (.claude/skills/hermes-bridge/) — ön koşul + kapsam denetimleri (Node ≥ 18, anahtarların varlığı, SSRF’ye karşı güvenli yol üzerinden endpoint erişilebilirliği), sırları asla diske/loglara yazmaz ve bir Hermes endpoint’i icat etmeyi veya sağlayıcının bağlı olduğunu iddia etmeyi reddeder. docs/architecture/OVERVIEW.md’deki bir Integrations bölümü kılavuza bağlanır.
Notlar
- Şu an hiçbir şey Hermes’i çağırmıyor. Bir kanarya testi (
tests/hermes-docs.test.mjs) «planlanan / henüz bağlanmamış» dürüstlük işaretlerini vellm-dispatch.mjs’de hiçbir Hermes/Nous dalı olmadığını doğrular — yani sağlayıcının ileride bağlanması, belgeleri + yol haritasını aynı değişiklikte güncellemek zorundadır. - v1.147.0’a ertelendi (Phase 5b, bölüm 2): uygulama içi yardımdaki «Hermes & Telegram» H2 bölümü × 17 dil ve cvstart.org pazarlama yüzeyi.
- Takım: 2376 test (+4:
tests/hermes-docs.test.mjs).
[1.145.0] — 2026-08-12
Anlayışlı istatistikler (devam): yeniden oluşturulabilir grafik — #/stats’teki “Hedef rol eğilimi” sekmesinde artık bir Grafik oluştur aracı var: bir metrik × boyut seçin, canlı olarak yeniden çizilsin. Kullanıcı bildirimli bir UX isteği (parent-sync yok).
Eklendi
- Yeniden oluşturulabilir metrik × boyut grafiği — bir metrik (İlanlar / Medyan maaş / Ortalama maaş) ve bir boyut (Ülkeye göre / Role göre) seçin, çubuk grafik anında yeniden çizilir. Maaş metrikleri para birimi + yıllık ⇄ aylık anahtarına uyar; ilanlar basit bir sayımdır.
- 8 yeni i18n anahtarı × 17 dil; anlık görüntü 1200 → 1208.
Notlar
- Tarayıcıda doğrulandı (0 konsol hatası). Takım: 2372 test (+2).
[1.144.0] — 2026-08-12
Ayarlar ve filtreler (Aşama 4, bölüm 1): izlenen portalları etkinleştir/devre dışı bırak — artık izlenen bir şirketi #/portals’tan açıp kapatabilirsiniz ve tarayıcı buna uyar. Kullanıcı bildirimli bir UX isteği (parent-sync yok).
Eklendi
#/portals’ta şirket başına Etkinleştir/Devre dışı bırak düğmesi — tek tıkla bir portalı kapatır (EN tarayıcı zatenenabled: falseşirketleri atlar, böylece devre dışı portal sonraki tüm taramalardan düşer) veya yeniden açar, iyimser bir bildirimle.POST /api/portals/toggle—portals.yml’deki bir şirketinenabledbayrağını cerrahi biçimde ve ayrıştırma doğrulamasıyla değiştiren açık bir kullanıcı yazımı (yorumlar, sıra ve diğer alanlar korunur). 5 yeni i18n anahtarı × 17 dil; anlık görüntü 1195 → 1200.
Notlar
- Tarayıcı değişikliği sıfır oldu —
en-scanner.mjszatenenabled !== falseile filtreliyor. Takım: 2370 test (+3).
[1.143.0] — 2026-08-12
Anlaşılır (devam): ana iş akışı görünümlerinde ? ipuçları — yardım ?’i artık tüm dillerde dokuz ana eylem sayfasını kapsıyor. Kullanıcı bildirimli bir UX düzeltmesi (parent-sync yok).
Eklendi
- 9 görünüm başlığına daha
?yardım ipucu —#/scan,#/evaluate,#/cv-studio,#/tracker,#/config,#/deep,#/batch,#/auto,#/applysatır içi bir?alır (HelpHint.titleile) ve yerelleştirilmiş bir «ne yapar / nasıl kullanılır / ne beklenir» açılır kutusu açar — v1.139.0’daki aynı CSP-güvenli bileşen. - 9 yeni i18n anahtarı × 17 dil (
help.hint.scan/…/apply); anlık görüntü 1186 → 1195.
Notlar
- Tarayıcıda doğrulandı (0 konsol hatası). Takım: 2365 test (+1).
[1.142.0] — 2026-08-12
Düzeltme: artık “Unknown” kariyer arketipi yok — #/orientation artık bazen “Unknown” yanıtlayıp ona “daha çok yüklenmenizi” önermek yerine, her zaman sekiz adlandırılmış kariyer vektöründen sıralama yapıyor. Kullanıcı bildirimli bir düzeltme (parent-sync yok).
Düzeltildi
#/orientation— AI istemi artık küme dışı bir arketipi yasaklıyor. Model, ilk üçü tam olarak sekiz adlandırılmış vektörden sıralamak ZORUNDA ve asla “Unknown”/“N/A”/“yetersiz veri” yanıtlayamaz veya yeni etiket uyduramaz. Özgeçmiş zayıfsa yine de en yakın üçünü daha düşük güvenle adlandırır ve hangi kanıtın eksik olduğunu söyler.
Notlar
- Yalnızca sunucu istemi değişikliği (
buildOrientationPrompt); i18n/şema değişikliği yok. Takım: 2364 test (+1).
[1.141.0] — 2026-08-12
Anlayışlı istatistikler (devam): finansman alan şirketlerin zenginleştirilmesi — #/funded artık daha görsel: şirket logoları, finansman tutarına göre bir grafik ve tur / tutar / keşif puanı / önerilen eylem içeren kartlar. Kullanıcı bildirimli bir UX düzeltmesi (parent-sync yok).
Değişti
#/funded— düz tablo → kart ızgarası. Yakın zamanda finansman alan her şirket artık bir kart: logo (CompanyLogoile addan türetilir, başarısızsa harf avatarı), tur + tutar çipleri, üst projenin keşif puanı ve önerilen eylemi, ayrıca finansman haberi bağlantısı ve tarihi.- Finansman tutarı görselleştirmesi — açıklanan tutara göre en büyük şirketlerin yatay çubuk grafiği; “$120M”/“€1.5B” gibi serbest metin tutarlar yeni bir
parseAmountile büyüklüğe ayrıştırılır. 3 yeni i18n anahtarı × 17 dil.
Notlar
- Hâlâ
GET /api/company-fundedüzerinde salt okunur; açıklama ve maaş aralığı finansman kaynağında yok. Takım: 2363 test (+2).
[1.140.0] — 2026-08-12
Anlayışlı istatistikler: daha zengin maaş rakamları — #/stats’teki “Pipeline’ım” maaş dökümü artık (yalnız medyan değil) ortalamayı, bir yıllık ⇄ aylık anahtarını ve ülke başına min · ort · medyan · maks tablosunu gösteriyor. Faz 3’ün ilk dilimi. Kullanıcı bildirimli bir UX düzeltmesi (parent-sync yok).
Eklendi
- Ortalama maaş —
RoleStats.salaryStatsartıkminUsd/medianUsd/maxUsdyanındaavgUsddöndürüyor. Medyan aykırı değerlere dayanıklıdır, ortalama çarpıklığı gösterir — birlikte bir dağılım olarak okunur. - Maaş bölümünde yıllık ⇄ aylık anahtarı ve ülke başına min · ort · medyan · maks tablosu (para birimi ve dönem seçicilerine bağlı). 8 yeni i18n anahtarı × 17 dil.
Notlar
- Rakamlar hâlâ yalnızca okunabilir maaşlı ilanlardan türetilir ve USD’ye normalize edilir (gösterge niteliğinde). Takım: 2361 test (+1).
[1.139.0] — 2026-08-12
Anlaşılır: ? yardım ipuçları — tıklayınca «ne yapar / nasıl çalışır / ne beklenir» sorularını dilinizde açıklayan, yeniden kullanılabilir ve CSP-güvenli bir ? düğmesi. Kullanıcı bildirimli bir UX düzeltmesi (parent-sync yok).
Eklendi
?yardım ipucu açılır kutusu (window.HelpHint) — bir başlığın yanındaki yuvarlak?, temaya uyumlu ve RTL’de yansıtılan hafif bir açılır kutu açar veUI.md()ile yerelleştirilmiş bir açıklama gösterir; erişilebilir (role="tooltip",aria-expanded, Escape/dışa tıklama ile kapanma, odak geri yükleme) ve CSP-güvenli.#/stats’in 5 sekmesine ve 8 AI/analitik görünüm başlığına (career-plan, yönlendirme, two-pager, networking, deneme mülakatı, bellek, funded, haftalık özet)?eklendi — 14 yeni i18n anahtarı × 17 dil.
Notlar
- Tüm görünümlerde zaten tek satırlık bir alt başlık vardı;
?, istendiğinde daha derin açıklamayı ekler ve boş durumları kendini açıklar hale getirir. Takım: 2360 test (+4).
[1.138.0] — 2026-08-12
Arayüz dilinde üretim — her AI üretimi artık arayüzde seçtiğin dilde yanıt veriyor; ayrıca incelemeden doğan test sağlamlaştırmaları. Kullanıcı bildirimli bir UX düzeltmesi (parent-sync yok).
Değişti
- AI üretimleri artık arayüz dilini gözetiyor. Arayüz Rusça, İspanyolca, Japonca … olduğunda üretilen metin her zaman İngilizce yerine o dilde dönüyor. Çıktı-dili yönergesi tüm üretim uç noktalarına iletiliyor — kariyer planı, yönlendirme, pazar raporu, deneme mülakatı, networking planı, «belgeye sor», bellek notu önerisi ve two-pager taslağı. Kod ve tanımlayıcılar İngilizce kalır (ör. two-pager YAML anahtarları); yalnızca düzyazı, başlıklar ve maddeler yerelleştirilir.
Düzeltildi
- CSS renk-rolü koruması (
tests/css-role-tokens.test.mjs) — v1.137.0 karanlık mod takma-ad token’larının rolü asla ters çevirmediğini doğrulayan statik bir kanarya: metin-rolü token’ları (--fg/--danger/--ok/…) aslabackgroundolarak, yüzey token’ları (--card/--panel/--line/…) asla metincolor’ı olarak kullanılmaz; tüm CSS ve SPA satır-içi stillerinde. UI.md()XSS yükleyici öz-sondası —api.js’tenmd()’i yükleyen test artık çıkarımın hemen ardındanmd('<script>…')’i yokluyor ve escape eksikse hata fırlatıyor; böylece gelecekteki hatalı bir dilimleme, güvenlik takımını kırpılmış bir fonksiyon üzerinde yeşile boyamak yerine yüksek sesle başarısız oluyor.#/career-plankaydırma koruması — üretim sonrasıscrollIntoViewyalnızca önizleme hâlâ belgeye bağlıysa çalışır.
Notlar
docs/UX-ROADMAP.mdgüncellendi:?yardım ipuçları + sayfa açıklamaları + boş durumlar artık v1.139.0; bir Nous Research / Hermes sağlayıcısı — bulut sunucu + Telegram dağıtım kılavuzu ve bir Hermes becerisi ile — Aşama 5 / 5b olarak izleniyor.- Takım: 2356 test (+5).
[1.137.0] — 2026-08-11
Okunabilirlik ve render düzeltmeleri — karanlık mod kontrastı, grafik etiketleri ve kariyer planı. Kullanıcı tarafından bildirilen bir UX geçişi (üst proje senkronizasyonu yok).
Düzeltildi
- Birçok ekranda karanlık modda beyaz-üzerine-beyaz / siyah-üzerine-siyah — birkaç görünümün referans verdiği on beş CSS özel özelliği (
--fg,--panel,--panel-2,--ok,--danger,--card, …) hiçbir zaman tanımlanmamıştı, bu yüzden sabit kodlanmış açık/siyah değerlere geri dönüyorlardı: açık modda sorun yoktu, karanlık modda okunamazdı (#/pipelinegenel bakış çipleri,#/statsetkin sekme,#/config“Etkin / Anahtarlar” + “✓ ayarlandı”,#/two-pagerbölümleri,#/mock-interviewsoru balonu, hata metni). Artık gerçek temaya duyarlı belirteçlere takma adlandırılmış durumdalar, böylece temayı otomatik olarak takip ediyorlar — otomatik bir denetleyiciyle doğrulanmış, 29 görünümün tümünde 0 WCAG-AA kontrast hatası;#/configetkin sekmesi okunabilir, tonlanmış bir stile taşındı. Bir regresyon koruyucusu (tests/dark-theme-tokens.test.mjs) onları takma adlı tutuyor. #/statsgrafik etiketleri kelimenin ortasından kesiliyordu (“Senior Backend Engineer” → “…Enginee”) — artık üç nokta ile kısaltılıyor ve tam etiket bir üzerine gelme araç ipucu olarak korunuyor.#/career-planoluşturulan planı ham Markdown olarak gösteriyordu — artık biçimlendirilmiş, okunabilir metin olarak otomatik render ediliyor (düzenlenebilir Markdown metin kutusunda kalıyor; Önizleme onu değiştiriyor).
Notlar
#/career-plan,#/two-pager,#/statsve haftalık mülakat özeti bozuk değil — bir plan oluşturana / veriniz olana kadar boş durumlar gösteriyorlar. Daha açık sayfa içi rehberlik ve?yardım ipuçları bir sonraki adım olarak planlanıyor (docs/UX-ROADMAP.md).
[1.136.0] — 2026-08-11
Üst proje career-ops v1.26.x paritesi (v1.26.0 sonrası ana hat) — bir yeni sıfır-kimlik-doğrulama kaynak artı web-ui yansılarına yönelik bir kalite ve sağlamlık düzeltmeleri dalgası. Kayıt defteri artık 79 kaynak = 74 İngilizce + 5 Rusça (ALL_ADAPTERS 74).
Eklendi
eightfold(Eightfold AI, #2684) — sıfır-kimlik-doğrulamahttps://<tenant>.eightfold.ai/api/apply/v2/jobsAPI’si üzerinden yetenek-kazanımı panoları,*.eightfold.ai’a ana bilgisayar-sabitli (markalıcareers.<company>.comCNAME’i kasıtlı olarak reddediliyor); bir güvenlik üst sınırıyla sayfalanmış, ölü-pano-fırlatma, url-çiftleme. Kaynak + adaptör + CI-izole paket;#/scanKaynak filtresinde ve açılış sayfasında görünüyor.
Düzeltildi
- Unicode-duyarlı çiftleme ve rol anahtarları (#2569 / #2587 / #2667) — yeni bir paylaşılan
normalizeTextKey(NFKC, herhangi bir yazı sisteminin harflerini/işaretlerini/rakamlarını koruyor) yalnızca-ASCII anahtarların yerini alıyor:detect-repostsartık genişlik/noktalama şirket varyantlarını kümeliyor (“Acme, Inc.” ≡ “Acme Inc”) ve farklı Latin-olmayan işverenleri asla çökertmiyor,role-matcherise tam-genişlikli unvanları katlıyor ve Latin-olmayan rol belirteçlerini silmek yerine koruyor. fetchJsonWithRetryartık reddedilen bir yönlendirmeyi yeniden denemiyor (#2657) — bir 3xx ile karşılaşanredirect:'error'koruyucusu determinist olduğundan, artık yeniden-denenemez olarak işaretleniyor ve yeniden deneme bütçesini tüketmek yerine hızlıca başarısız oluyor.title_filter.positiveVE-grupları (#2552) — pozitif bir girdi içindeki boşlukla ayrılmış bir+artık her terimin, herhangi bir sırada, başlıkta görünmesini gerektiriyor.oraclecloud, numaralandırılmış kiracı apekslerini kabul ediyororaclecloud1.com … oraclecloud99.com(#2683) — sınırlı bir aile (baştaki sıfır yok, ≤ 2 hane), asla bir joker aleksi değil.workablesağlamlaştırıldı (#2675) — Cloudflare-önlü ana bilgisayara karşı yeniden deneme, tarayıcı-benzeri başlıklar ve istek serileştirmesi.personio, XML beslemesi devre dışıyken hiçbir şey döndürmek yerine bir HTML kazımasına düşüyor.statesFALLBACK takma adları üst projeyle yeniden eşzamanlandı (#2615).
Notlar
- Taşınmadı (web-ui tarafından yansılanmıyor veya yalnızca-CLI): reply-matcher (#2672), jd-similarity (#2661), jd-skill-gap (#2686), tarama ortam-yolu (#2568) /
--flag=value(#2589) ayrıştırması, ve kapak mektubu / CV-şablonu / doctor / ollama / generate-pdf değişiklikleri. Webjs-yaml/nanoidYÜKSEK önerileri web-ui v1.135.0’da zaten yamalanmıştı.
[1.135.0] — 2026-08-11
Üst proje career-ops v1.26.0 paritesi — beş yeni sıfır-kimlik-doğrulama tarama kaynağı artı web-ui’nin zaten taşıdığı dört panoya doğruluk düzeltmeleri. Kayıt defteri artık 78 kaynak = 73 İngilizce + 5 Rusça (ALL_ADAPTERS 73).
Eklendi
- Beş yeni tarama kaynağı (her biri bir kaynak + adaptör + CI-izole bir paket;
#/scanKaynak filtresinde ve cvstart.org açılış sayfasında görünüyorlar):join(JOIN) — bir şirketin JOIN panosu,join.com/companies/<slug>içindeki Next.js__NEXT_DATA__’sından (ana bilgisayara sabitli, sayfa sınırlı).getro(Getro) — VC “yetenek ağı” portföy panoları, herkese açıkapi.getro.comPOST API’si üzerinden, en yeniden-eskiye sayfalanmış; her iş fona değil portföy işverenine atfediliyor.consider(Consider) — getconsider.com VC portföy panoları, aynı-kökenli bir POST üzerinden; yapılandırma-güdümlü ana bilgisayar yapısal bir SSRF koruyucusuyla sabitleniyor (yalnızca herkese açık HTTPS ana bilgisayarı).joinup(JOINUP) — İsviçre panosu joinup.ch, SSR edilmiş en yeni sayfayı okuyor; bir kazıyıcı kırılmasında hata-kapalı davranıyor.remotli(Remotli) — remotli.ch, İsviçreli şirketlerdeki uzaktan roller (CHF maaşları); işverenin kendi ATS başvuru URL’sini yayınlıyor, böylece çapraz-listelemeler çiftlemeden ayıklanıyor.
Düzeltildi
- a16z Speedrun artık geçici bir aksaklıkta tüm panoyu iptal etmiyor — sayfa getirmeleri artık paylaşılan bir
fetchJsonWithRetryüzerinden geçiyor (yalnızca geçici 429/5xx/zaman aşımında sınırlı yeniden denemeler, asla kalıcı bir 4xx’te), ve sayfa bütçesi 50 işlik sayfa için yeniden boyutlandırıldı. - arbeitsagentur v6 Jobsuche API’sine (
/pc/v6/jobs) taşındı — eski v4 uç noktası 404 veriyor; yanıt şekli yeniden adlandırıldı ve uzaktan filtreleme artık sunucu tarafında daralıyor. - thehub v2
jobsandfeaturedAPI’sine taşındı; satırlar yayın tarihi taşımıyor ve yaş filtresinden muaf. - hackernews, Algolia aramasını serbest metin sorgusu yerine
author_whoishiringhesap etiketine filtreleyerek aylık “Kim işe alıyor?” konusunu güvenilir şekilde buluyor.
Notlar
- Taşınmadı (web-ui zaten güvenli, aktarım-tarafından-emilmiş veya yalnızca-CLI): Unicode rol-çiftleme / şirket-eşleştirme anahtarları (web-ui’nin tekrar-ilan gruplaması zaten şirketi düz küçük harfle anahtarlıyor, bu yüzden farklı Latin-olmayan işverenler asla çökmüyor); takip reddi-gecikme sinyali + finanse edilen şirket rötuşları (salt-okunur, hataya-toleranslı olarak aktarılıyor); tarama ortam-değiştirilebilir yolları ve
--flag=valueayrıştırması (web-ui tarayıcıları işlem içinde çalıştırıyor); User-Agent birleştirme yeniden düzenlemesi (web-ui zaten bunu merkezileştiriyor); ve yalnızca-CLI öğeleri (güvenilmeyen-içerik listesi, oferta/offer-prep, doctor, kapak/CV şablon değişiklikleri).
[1.134.1] — 2026-08-05
Doğrulama sağlamlaştırması — kapsamlı bir proje denetimiyle ortaya çıkan düzeltmeler.
Düzeltildi
successfactorsartık tarama-ortası bir hatada kazınan işleri atmıyor (v1.134.0’daki ölü-pano-fırlatma aktarımında bir regresyon) — sayfalama döngüsündetry/catchyoktu, bu yüzden 2. sayfa ve sonrasında (1. sayfa başarılı olduktan sonra) bir hata fırlatılıyor ve o ana kadar toplanan her şeyi düşürüyordu; ve bu hata bir404ise (aralık dışı birstartrow),en-scannercanlı bir kiracıyı günlerce ölü olarak karantinaya alıyordu. Şimdiphenom/radancyile aynı: 0. sayfadaki bir hata hâlâ fırlatılıyor (ölü pano), ancak daha sonraki bir sayfadaki hata kısmi sonuçları koruyor.#/scanfiltre çipleri artık klavyeyle çalıştırılabiliyor (WCAG 2.1.1) — faset çipleri (ve “temizle” çipi) bir tıklama işleyicisine sahip amatabindex/rolü olmayan span’lerdi, bu yüzden klavye ve ekran okuyucu kullanıcıları onlara erişemiyor veya değiştiremiyordu. Şimdirole="button",tabindex="0",aria-pressedtaşıyorlar ve Enter/Boşluk ile etkinleştiriliyorlar.- Üç sabit kodlanmış İngilizce dize artık yerelleştirildi —
#/scangüven-rozeti araç ipucu,#/scanyer değiştirme sütun başlığı ve#/dashboardpuan başlığı, i18n parite kapısının göremediği çıplak literallerdi (hiçbir zaman anahtar olmamışlardı), bu yüzden İngilizce olmayan her yerelleştirmede İngilizce kalıyorlardı. Şimdiscan.trustTip+scan.col.reloc(2 yeni anahtar) ve mevcuttrack.col.score’un yeniden kullanımı var, kaynak-statik bir koruyucuyla (tests/scan-chip-a11y.test.mjs) sabitlenmiş. - +3 test → paket 2187.
[1.134.0] — 2026-08-05
Üst proje career-ops v1.25.0 paritesi.
Eklendi
- Yeni tarama kaynağı: getManfred (
manfred) — yayınlanmış maaşlarla İspanyol/AB teknoloji rollerinin pano-geneli bir beslemesi,www.getmanfred.com/api/v2/public/offers’tan (sıfır-kimlik doğrulama, ana bilgisayara sabitlenmiş + yalnızca-HTTPS, tek istekli tam katalog). Kaynak + adaptör + CI-izole bir paket (tests/sources-manfred.test.mjs); kayıt defteri artık 73 kaynak = 68 İngilizce + 5 Rusça (ALL_ADAPTERS68).#/scanKaynak filtresinde ve cvstart.org açılış sayfasında görünür.
Düzeltildi
- a16z Speedrun beslemesi sessizce 50 işe kısaltılıyordu (#2404) — besleme bir sayfayı 50 ile sınırlıyor ancak kaynak
PER_PAGE = 100istiyordu, bu yüzden sayfalama 1. sayfadan sonra duruyordu. 50’ye düzeltildi. - Ölü panolar artık “canlı ama boş” olarak okunmak yerine hata fırlatıyor (#2379) —
cryptocurrencyjobs,phenom,radancy,successfactors: hiçbir isteğin hiç çözümlenmediği bir getirme hatası artık hata fırlatıyor (böylece#/portalssağlığı ve tarama gerçek bir hatayı kaydediyor), onu boş bir listeye yutmak yerine; en az bir başarıdan sonraki bir tarama-ortası hata kısmi sonuçları koruyor. - workable artık genel widget API’sini kullanıyor (#5ab8425) — büyük bir hesabın tam ilan listesini tek bir istekte döndüren
apply.workable.com/api/v1/widget/accounts/<slug>’a geçildi, böylece büyük hesaplar artık kısaltılmıyor.
Notlar
- Taşınmadı (yalnızca CLI veya web-ui tarafından yansıtılmıyor): detect-reposts #2389 başlık-gruplama performans yeniden yazımı; Unicode şirket-anahtarı düzeltmeleri (web-ui’nin kendi takipçi çiftlemesi zaten Latin-olmayan-güvenli);
scan --since;cv-facts; CV şablonu / PDF denetim geçişi;doctor; modes güvenilmeyen-içerik direktifi.
[1.133.1] — 2026-08-02
Düzeltildi
#/funded(Finanse edilen şirketler) artık sonuçları gösteriyor — üst projenincompany-funded.mjs’i eksiksiz bir liste döndürdüğünde bile tablonun her zaman “finanse edilmiş şirket yok” göstermesine neden olan iki hata vardı. (1) Görünüm sonuçlarıres.candidatesaltında okuyordu, ancak üst proje bunlarıcompaniesaltında yayınlıyor (her biri{ company, amount, round, funding: { sources: [{ source, url, observed_date }] } }); istemci artık doğru anahtarı okuyor ve gerçek kanıt şeklini eşliyor. (2) Sonuç tablosu hücreleriniUI.el('tr', {}, …)’a değişken sayıda bağımsız değişken (varargs) olarak geçiriyordu, ancakUI.el(tag, attrs, children)children’ı tek bir düğüm veya dizi olarak alıyor, bu yüzden yalnızca ilk sütun (Şirket) render ediliyordu — hücreler artık bir dizi olarak geçiriliyor. Gerçek bir tarayıcıda doğrulandı: dört besleme genelinde 11 şirket, Şirket / Finansman sinyali / Kaynak / Tarih sütunlarıyla ve çalışan kanıt bağlantılarıyla render ediliyor, sıfır konsol hatası. Boş bir tarama artık kaynak başına tanılamaları da gösteriyor, böylece sessiz bir haber günü engellenmiş bir beslemeden ayırt edilebiliyor.tests/parity-routes-v1133.test.mjsiçinde regresyon korumaları: sahte üst proje betiği artık gerçekcompaniesçıktı şeklini yayınlıyor (orijinal test sabiti yanlışcandidatesşeklini yansıtıyordu — hatanın yeşil geçerek yayınlanmasının tam nedeni buydu), ayrıcafunded.js’inres.companies’i okuduğunu (aslares.candidates’i değil) ve tablo satırlarını dizi children ile oluşturduğunu doğrulayan kaynak-statik kanaryalar eklendi (+1 → 2144).
[1.133.0] — 2026-08-01
Eklendi
- Finanse edilen şirket keşfi (
#/funded, üst proje paritesi #2117) — üst proje career-ops’uncompany-funded.mjs’iniGET /api/company-fundedüzerinden aktaran yeni bir salt-okunur görünüm: herkese açık, ana bilgisayara sabitlenmiş finansman beslemelerinden (TechCrunch, PR Newswire, The Guardian, Hacker News) keşfedilen, yakın zamanda finanse edilmiş şirketlerin inceleme-öncelikli bir listesi. Aktarım, betiği--json --dry-runile çalıştırır (stdout’a JSON, dosya yazması yok), kullanıcı girdisini asla--sources’a aktarmaz, hız sınırlaması taşır ve kullanıcı tarafından tetiklenir (bir Keşfet düğmesi, asla bağlanma sırasında değil). Yeni rota modülüserver/lib/routes/funded.mjs+public/js/views/funded.js, Kaynak bulma altında. - Haftalık mülakat özeti (
#/interview-digest, üst proje paritesi #2129/#2130) — üst projenin sıfır-LLMweekly-digest.mjs’iniGET /api/interview/weekly-digestüzerinden aktaran yeni bir salt-okunur görünüm: mülakat oturumu notlarının mekanik bir toplu özeti — bu hafta hangi şirketlerle ve hangi turlarda mülakat yaptığınız, tekrar eden yetkinlikler ve elden geldiğince tespit edilen açık boşluklar. İsteğe bağlı?from=&to=aralığı yalnızca İKİSİ de geçerliYYYY-MM-DDolduğunda aktarılır; boş bir aralık geçerli biravailable:trueözetidir.server/lib/routes/interview.mjs+public/js/views/interview-digest.js’e eklendi, Analitik altında. - Her iki aktarım da üst proje betiği yokken (CI, bağımsız kurulumlar) yerleşik hataya karşı toleranslı
available:falsesözleşmesini izler. 26 yeni i18n anahtarı ×17 yerelleştirme; CI-izole pakettests/parity-routes-v1133.test.mjs(+5 → 2143).
Notlar
- Üst proje career-ops, Next.js
web/uygulamasının Takip İzleyicisi sayfası (#1422) ve arka uç PDF render’ı (#2182) ile v1.24.0’ın ötesine geçti — taşınmadı: web-ui’nin zaten kendi takip aktarımı ve PDF çalıştırıcıları var ve alttakifollowup-cadence.mjssağlamlaştırması kabuk-açma aktarımı üzerinden bedavaya geliyor.set-status.mjs/tracker-utils.mjsdeğişiklikleri CLI-dahilidir ve yansıtılmıyor.
[1.132.0] — 2026-07-31
Değiştirildi
#/scansonuç-render alt sistemipublic/js/lib/scan-results.js’e çıkarıldı (dosya-boyutu-sözleşmesi borcu —public/js/views/scan.js~1254 satıra kadar büyümüştü). Alt sistem (renderResults,buildChipRow,getRows, satır/faset oluşturucuları, seçenek boyacıları veFALLBACK_SOURCESkayıt defteri aynası) görünümün sağladığı bir bağlam nesnesini kapsayan birwindow.ScanResults.create(ctx)fabrikasına taşındı. Davranış değişikliği yok — fonksiyonlar birebir taşındı, kapatma değişkenlerictx.*’e yeniden bağlandı;scan.jsartık ~906 satır (800 satırlık hedefe doğru ikinci bir çıkarma geçişi planlanıyor).- Kaynak-statik testler her iki dosyayı
tests/helpers/scan-src.mjs::loadScanSrc()üzerinden okuyor;tests/scan-fallback-sources.test.mjsartık kayıt defteri aynasınıscan-results.js’ten okuyor. - Yeni tarayıcı-içi regresyon kapısı —
tests/playwright-scan-filters.mjshazır birdata/last-scan.jsontohumluyor ve her#/scanfiltresini çalıştırarak tam satır sayılarını doğruluyor (npm run test:e2e:browser); bunun için kararlı filtre kimlikleri (#scan-filter-*,#scan-apply) eklendi. - README “En son sürüm” afişi tek satırlık bir özet + tam changelog’a bir bağlantıya indirildi (uzun çok-sürümlü anlatı duvarı kaldırıldı). Tüm 17 yerelleştirmede uygulandı.
career-ops-ui v1.267.1 · page 4/10 · mirror of the project changelog for cvstart.org