Değişiklik günlüğü

GitHub

Her ö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.267.1] — 2026-11-04

Düzeltildi

  • Release treni onarımı (v1.267.0’un CI kapıları) — PROJECT-CONTEXT’teki test-sayım zinciri artık v1.267.0 başında kopmuyor (eval grader’ın eşlediği ok biçimi), QA prompt’ları yeniden düzenlendi (release başına bir canlı prompt, v1.266.0 arşivlendi) ve dosya-başına coverage 98/90 ratchet’ının üzerine çekildi: applicantpro salary renderer’ı ulaşılamaz bir fallthrough kaybediyor (salaryRangeOf kanıtlanabilir biçimde yalnızca undefined, {min}, {max} veya {min,max} üretiyor), tek-taraflı ≥/≤ dalları fetch akışı üzerinden sabitleniyor ve board-response-cache suite’ı no-store bypass’ını, kaydedilmemiş bir board’a karşı çağıranın sağladığı 304’ü ve MAX_ENTRIES tahliyesini sabitliyor.
  • Testler: canlı sayım 7395 (v1.266.0/1.267.0 dalgasının süitleri önceki notların izlediğinden daha fazla spec taşıyor — zincir ölçülen tabana yeniden sabitleniyor: dalgadan sonra 7392, bu yamada +3 kapı testi); kapsam 98.51 satır / 90.35 dal.

Notlar

  • v1.267.0 etiketi kırmızı merge commit’ini göstermeye bırakılır — yeniden işaretlenmez (sunucu yeniden işaretlenen etiketleri reddeder); v1.267.1 dağıtım aracıdır.

  • v1.267.0 treninin yama onarımı: CI kapıları yeşil, kod ağacı özünde değişmedi.

[1.267.0] — 2026-11-04

Eklendi

  • Dört yeni tarama kaynağı — GermanTechJobs, Darwinbox, Keka, ApplicantPro/isolved (kayıt 125 → 129 = 124 EN + 5 RU · 124 adapter) — career-ops @ 7d8feb6d (87 upstream commit) karşısında ikinci parent-sync dalgası. GermanTechJobs (#6346): germantechjobs.de/rss üzerinden pano-geneli RSS (tek istekte ~626 öğe); işveren başlığın son " @ " segmentidir — bir tane içermeyen başlık düşürülür, asla panonun altına kaydedilmez; yalnızca açık provider: seçimi. Darwinbox (#6416): <tenant>.darwinbox.in ardında kimlik-gerektirmeyen alljobs JSON’u, şirket id’si careers URL’sinden gelir, POST ile sayfalı yürüyüş (50/sayfa, max_pages 20/200), kısa-sayfa durağı kaynağın kendi satır sayısından okunur. Keka (#6199): iki istek — feed UUID’sini adlandıran betiği taşıyan redirect:'manual' bir careers kabuğu (bilinmeyen bir tenant TenantNotFound.html’e 302 döner ve adlandırılmış bir 404 gibi okunur), ardından açık envanterin tamamı tek bir embed-jobs dizisinde. ApplicantPro / isolved (#6252): bootstrap’tan sayısal domainId, ardından {success, data:{jobs, jobCount}}; jobCount > rows listenin eksik olduğu konusunda uyarır; isteğe bağlı applicantpro: { fetchDetails: true } 250 ms pacing’le JSON-LD’den zenginleştirir.
  • ETag ile pano yanıtlarının yeniden kullanımı (#6105) — tek bir tarama içinde son 15 dakikada çekilmiş bir pano yanıtı olduğu gibi yeniden kullanılır ve daha eskileri If-None-Match ile yeniden doğrulanır (304 gövdeyi korur); önbellek anahtarı yöntem + URL + kimlik başlıkları + gövdeyi kapsar, üst üste binen okumalar uçuştaki promise’e katlanır, CAREER_OPS_HTTP_CACHE=0 / _TTL_MS bunları override eder. Tarama koşusu başına bellek-içi (web-ui’nin disk-üzeri önbellek sözleşmesi yok) — kayda geçen bir sapma.

Düzeltildi

  • Dört panoda tarihler (#6274) — remoteok, remotive, workingnomads ve IBM artık bir yayın tarihi veriyor, böylece «Posted within» filtresi oralarda da çalışıyor; remotive’nin naive zaman damgası UTC’ye normalize ediliyor (makine-başına yaş bug’ı canlıydı), IBM’in _source’u gerçekte dcdate istiyor.
  • Yanlış yazılmış bir portals.yml anahtarı reddediliyor (#6107) — EN taraması artık herhangi bir istekten önce adlandırılmış bir hata fırlatıyor (dosya + anahtar + en yakın anahtar önerisi, Levenshtein ≤ 2), titel_filter:’ı sessizce yok saymak yerine.
  • getro eski bir featured pin’inin ötesinde yürümeye devam ediyor (#6406) — sabitlenmiş bayat bir ilan hâlâ düşürülüyor ama artık sayfalamayı sonlandırmıyor; yürüyüş gerçek bir kısa sayfada biter.

Notlar

  • Bilinçli olarak yapılmadı: RU tarayıcının seen-filtresi dil-duyarlı değil ve onun portals ayrıştırma yolu yanlış-yazım-anahtarı kapısını çalıştırmıyor (hand-off’lar dalga spesinde kayıtlı — henüz dil-başına satır veren bir RU panosu yok); remoteok, UTC’ye normalize etmek yerine offset taşıyan tarih dizisini tutuyor (canlı şekli deterministik). Testler 7096 → 7243; Playwright 173 geçti / 0 başarısız / 1 opsiyonel atlandı; kayıt 129 = 124 EN + 5 RU · 124 adapter (tüm sayaç kapıları canlı kayıttan yeniden üretildi).

[1.266.0] — 2026-11-01

Eklendi

  • Personio dil sürümleri birbirini yemeyi bırakıyor (CAR-223: parent #4789 + #5044 + #5285) — ertelenmiş yığın, kendi sürümü olarak icra edildi. Tarama tarafı (#4789): scan_history.dedup_include_language: true (katı opt-in — KAPALI bayt-özdeş) bir ilanın dil sürümlerinin seen-history varyant mekanizması üzerinden dedup’ı atlatmasını sağlar (languageFormsFromUrl / recordUrlVariant / isUnseenLanguageVersion); kanonik anahtar language/lang/locale parametrelerini soyar. preferred_languages (#5285): bir ilanın sürüm satırlarını tercih-edilen-önce sıralar (kararlı, eşitlikte sağlayıcı sırası) — anahtardan bağımsız (KAPALI tercih edilen sürümü tutar, AÇIK her sürümü o sırada tutar), validate-portals’in bir validatePreferredLanguages portuyla. personio fan-out (#5044): careers sayfası ?language=en zorlaması olmadan çekilir (bir tenant’ın kendi ?language=xx’i dikkate alınır) ve her dil sürümü için language + ?language=<code> URL’leriyle bir satır verir; dedupIncludeLanguage dil-başına çekimler ekler (tavan 5, pacing’li); /xml ve job-link yedekleri değişmedi. recruitee aynı language emisyonunu + preferred_languages’ı kazanır (opts veya girdi). Paylaşılan yardımcılar server/lib/language-preferences.mjs içinde yaşıyor.

Notlar

  • Hand-off’lar kayıtlı, bilinçli olarak yapılmadı: RU tarayıcının seen-filtresi dil-duyarlı değil ve henüz dil-başına satır veren bir RU panosu yok; istemci url-key.js aynası ve portals-rota doğrulama bağlantısı açık kalıyor. Testler 7096 → 7203; kayıt değişmedi 125 = 120 EN + 5 RU · 120 adapter.

[1.265.0] — 2026-11-01

Eklendi

  • İki yeni tarama kaynağı — Apple ve Bulldogjob (kayıt 123 → 125 = 120 EN + 5 RU · 120 adapter) — career-ops @ fe857ecf karşısında parent-sync dalgası. Apple (jobs.apple.com, #5496 + #6196): site kullanılabilir bir JSON API’si olmayan bir React Router SSR uygulaması; kaynak sıradan arama rotasının hydration blob’unu okur (window.__staticRouterHydrationData); keşif girdi tarafından yönetilir (apple.queries ilgililik sıralı metin eksenleri + apple.teams slug eksenleri, varsayılan yok — ikisi de olmayan girdi fırlatır), sayfalar max_pages ile sınırlı (varsayılan 2, tavan 50) 200 ms pacing’le, URL’nin her segmenti surrogate-güvenli kodlanır ve Apple’ın PIPE diye etiketlediği ilan snippet’inde «talent pipeline olabilir» ipucu taşır — bunun üzerine filtre yapılmaz. Bulldogjob (bulldogjob.pl, #6253): Polonya teknoloji panosunun da JSON API’si yok — listeleme sayfaları __NEXT_DATA__ (50/sayfa, totalCount) taşır; girdinin careers_url’i kullanıcının sitede kurduğu aramadır (filtreler yolda yaşar), her istek açık bir /page,N taşır ve yürüyüş kısa sayfada, bildirilen total’da veya max_pages’te (varsayılan 25, tavan 100) durur, kısmi panolarda kesilme etiketiyle.
  • IBM sayfalama rework’u (#6273) — sabit 600 kayıtlık yürüyüş max_pages olur (varsayılan 20, tavan 300, girdi bazlı override), sayfalar arası 200 ms pacing ve fetchJsonWithRetry üzerinden sayfa başına retry; ilk sayfa başarısızsa fırlatır, sonraki bir sayfa başarısızsa toplananı korur ve sayfayı adlandırır, yalnızca girdinin kendi tavanında tam sayı bir sayfa «raise max_pages» uyarısı verir.

Düzeltildi

  • justjoin ilanları lastPublishedAt ile tarihliyor (#6254) — aday API’nin publishedAt’ı işveren her yenilediğinde ilerler, panonun çoğu bugünün tarihini taşıyordu ve max_posting_age_days haftalardan kalma ilanları geçiriyordu; artık daha erken yayın tarihi kazanır, eksik veya parse edilemezse fallback.
  • jobvite tek bir posting URL paylaşan satırları katlıyor (#6127) — kamuya açık bir besleme tek bir detail URL için şehir başına bir <job> satırı döndürür; ayrıştırıcı ilk şehri tutuyor ve gerisini yineler olarak sayıyordu. Artık kardeş satırlar yalnızca konum katkısı verir, feed sırasıyla · ile birleşir, ilk başlık/tarih kalır, remote birleşen konum üzerinden yeniden değerlendirilir.
  • Liveness: bir UltiPro rung’ı (#6090) — UKG’nin ilan başına JSON endpoint’i yok ve kapalı ilanlara da 200 döner, böylece 57 kapalı UltiPro ilanının tamamı uncertain okunuyordu. Detay sayfası kaydı gömer: OpportunityIsClosed true/false → expired/active, «opportunity unavailable» bildirimi → expired, gerisi tarayıcıya kalır. Built In’ın «Sorry, this job was removed» bandı hard-expired oldu (#6336) — sayfa tam JD’yi ve APPLY kontrolünü tutuyor; artık bant kazanır, «sorry» içermeyen kardeş «Job removed» rozeti eşleşmez.

Notlar

  • Bilinçli olarak yapılmadı: jobvite düzeltmesinin parent-tarafı scan.mjs konum derleyicisi yarısı (web-ui USPS derleyicisini no-port olarak belgeler) ve Apple PIPE ipucu için ebeveynin note alanı (web-ui job shape’inde note yok; snippet içinde seyahat eder). Tests 7096 → 7135 (+39); Playwright 173 pass / 0 fail / 1 opt-in skip; coverage gate ≥ 98/89; kayıt 125 = 120 EN + 5 RU · 120 adapter (tüm sayaç kapıları canlı kayıttan yeniden üretildi).

[1.264.3] — 2026-11-01

Düzeltildi

  • Hız sınırı sağlamlaştırma dalgası (REVIEW-2026-10-31-v1.264.1’den inceleme LOW №1–3) — writeRateLimit() (express-rate-limit@7.5.1, 60 req/min route×IP, 429 JSON + Retry-After) artık 47 veri-değiştiren uç noktanın tamamını kapsıyor (2 idi): kapsam dışı bırakılmış 9 llmRateLimit koruması değiştirildi (/api/config — .env yeniden yazımı!, PUT /api/batch, /api/batch/merge, outcome, followup/seed, assessments, stats/snapshot, mock-interview/save, networking/save), pahalı yollarda LLM kovasının öncesine 3 tane istiflendi (/api/evaluate, /api/deep, /api/auto-pipeline) ve 33 çıplak kayıt bağlandı (CV/profile/modes düzenleyicileri, tüm tracker yazımları, pipeline POST/restore/DELETE, jds, tek bir döngü düzenlemesiyle 7 /api/run/*, posting-guard, satır-içi Playwright-PDF, portals toggle/health/track, discover, reports, export/docx, two-pager, career-plan, memory ve üç DELETE rotası). /api/apply-helper allowlist’li çıplak olarak kalıyor (salt yerel hesaplama, sabitlenmiş); 16 salt-LLM rotası tasarım gereği koşullu LLM kovasını koruyor. Bir eksiksizlik tetikleyicisi (tests/rate-limit-coverage.test.mjs, 27 çıplak kayıtla red-first) gelecekteki her hız sınırlandırılmamış veri-değiştiren kayıtta CI’ı düşürür.
  • TRUST_PROXY isteğe bağlı kullanımı + yeniden devreye alınan doğrulamalar (inceleme LOW №1–2) — app.set('trust proxy', N) bir TRUST_PROXY env hop sayısını kabul ediyor (asla boolean true değil — bu, saldırgan-kontrollü sol XFF ucuna göre anahtarlamaya yol açardı); varsayılan olarak ayarsız, böylece loopback belgelenmiş soket-anahtarlı rota-başına dejenerasyonunu koruyor. validate: false, hedefli bir writeValidateConfig()’e dönüşüyor: yalnızca xForwardedForHeader muaf tutuluyor (trust proxy olmadan Caddy’nin XFF’si tasarım gereği yok sayılıyor), diğer her doğrulama — trustProxy dahil — yeniden gürültülü, böylece gelecekteki bir trust proxy: true yanlış yapılandırması sessizlik yerine ERR_ERL_PERMISSIVE_TRUST_PROXY olarak yüzeye çıkıyor. Özel keyGenerator bilinçli olarak kaldırıldı: express-rate-limit, proxy doğrulamalarını varsayılan anahtar üreticisine bağlıyor ve rota-başına izolasyon değişmedi (her fabrika çağrısına bir MemoryStore).
  • cvstart.org kopyalama geri bildirimi 2 sn sonra geri alınıyor (CAR-141) — «Скопировано ✓» durumu artık kabul kriterindeki 2 saniye boyunca kalıyor (1,5 sn idi), tests/site-copy-feedback.test.mjs içinde red-first sabitlendi. Bu, CAR-141’in ajan tarafından giderilebilir son kriterini kapatıyor; tanıtım videosu yenilemesi sahibin ertelemesinde kalıyor (karar 2026-11-01).

Değişti

  • Yardım paketleri 19 dil diyor (×19) — §19 “Localizing the app” ve §32 “Run it from OpenWorker” cümleleri artık iki yerel ayar geriden gelmiyor: her paket artık 19 diyor ve தமிழ் ile Tiếng Việt’i kendi sayım biçimiyle adlandırıyor (ar, yazıyla yazılmış «التسع عشرة» biçimini kullanıyor); vi.md §32’sindeki kendi «cả-17» kalıntısı da düzeltildi. Yapı kapıları (33 H2 / 125+ H3) bayt düzeyinde kararlı.
  • Durum hijyeni — AGENTS.md v1.264.2 / 7082 test diyor (v1.86.x / 1566 idi); PLAN.md 1–7. sürümleri Shipped olarak işaretliyor ve ship-train paragrafı docs ×19 diyor; StatsBar.astro yorumu artık facts.adapters’ın gerçekte ne tuttuğunu açıklıyor (123 = kaynak toplamı, tüketiciler için tarihsel anahtar adı korundu); i18n.js başlığı 19 dil diyor; v1.264.2 QA istemi gerçek kapsamı (98.45/90.05) ve Playwright aritmetiğini (176 = 174 harness + 1 opsiyonel atlama + 2 betik-seviyesi süit) taşıyor.

Notlar

  • Bilinçli olarak yapılmadı: kayıtlı port-listesi başına parent-sync dalgası BACKLOG’da kalıyor — fork önce upstream a9476866’ın ötesine senkronize olmalı (10 port-listesi commit’inin 7’si henüz yerel üst proje ağacında değil; IBM/UltiPro/Bulldogjob/apple S–M olarak kapsamlandı, personio language-dedup kendi sürümüne ertelendi). CAR-141’in tanıtım videosu yeniden kaydı sahibin tarafından bilinçli olarak ertelendi («видео не надо пока», 2026-11-01).
  • Testler 7082 → 7096 (+9 kapsam tetikleyicisi + 5 trust-proxy); Playwright 173 geçti / 0 başarısız / 1 opsiyonel atlandı (mevcut vakalar içinde +2 chevron sabitlemesi); kapsam 98.46 satır / 90.10 dal; evals 14/0/1skip; registry değişmedi 123 = 118 EN + 5 RU · 118 adapters.

[1.264.2] — 2026-11-01

Düzeltildi

  • Kenar çubuğu grup başlıkları kısaltma sözleşmesine katılıyor (CAR-219) — grup açma/kapama etiketleri (.nav-v2-toggle > span) artık üç nokta ile kısaltılıyor ve CAR-203 gezinme öğeleriyle aynı syncLabelTitles() mekanizması üzerinden yerelleştirilmiş bir araç ipucu taşıyor; chevron asla küçülmüyor, açma/kapama tıklanabilir kalıyor, RTL bozulmadan korunuyor. Red-first sabitleme tests/nav-v2.test.mjs içinde (+1 → 7082 test).

Değişti

  • cvstart.org metni 19 dilin tamamında yayınlanıyor (CAR-220) — meta.helpDesc, helpTeaser.c1.desc ve faq.a2 her site yerel ayarında çevrilmiş (v1.264.1’de tasarım gereği yalnızca EN’diler); GitHub Pages yükseltilmiş metni cvstart.org’da canlı olarak yayınladı.
  • Backlog + inceleme hijyeni (CAR-221/222) — «upstream’de birleştirildikten sonra taşınacak» altı madde kapatıldı: yedi upstream PR’sinin tamamı birleştirildi, dört madde zaten taşınmıştı, ikisi üst proje tarafında. docs/reviews/REVIEW-2026-10-31-v1.264.1.md geliyor (0 HIGH / 0 MED, üç LOW takip maddesi BACKLOG’a not edildi) ve parent-sync port-listesi kayda geçiyor (6 PORT / 3 VERIFY / apple kaynak boşluğu; upstream kuyruğu 118 commit @ VERSION 1.38.0).

Notlar

  • Changelog ayna-damgası düzeltmesi (92a05fcf) bu etiketle birlikte geliyor: cvstart.org’daki her sayfalanmış ayna artık onu üreten sürümün sürüm numarasını taşıyor, böylece site-build-after-fanout değerlendiricisi nihayet atlamak yerine gerçek mantığını çalıştırıyor.
  • Bilinçli olarak yapılmadı: kalan veri-değiştiren POST’ların hız sınırlandırılması (inceleme LOW №3) ve trust-proxy kova bağlaşımı — bir sonraki sağlamlaştırma dalgası için BACKLOG’a not edildi. CAR-141 (tanıtım videosu) sahibin kalıyor.
  • Testler 7081 → 7082 (+1 CAR-219 sabitlemesi); Playwright 176; registry değişmedi 123 = 118 EN + 5 RU · 118 adapters.

[1.264.1] — 2026-10-31

Düzeltildi

  • Kenar çubuğu hapları uzun yerelleştirilmiş etiketleri zarifçe kısaltıyor (CAR-203) — gezinme etiketi span’i artık düzgün bir flex vatandaşı (v2-nav.css içinde min-width: 0 + overflow: hidden + text-overflow: ellipsis + nowrap), ve nav-v2.js’teki syncLabelTitles() yerelleştirilmiş etiketi aynı data-i18n anahtarı üzerinden araç ipucuna yansıtıyor (sıfır yeni i18n anahtarı) — uzun «Профинансированные компании» artık satırın overflow: hidden’ı tarafından sertçe kırpılmak yerine fareyle üzerine gelindiğinde yeniden okunuyor. 44 px dokunma hedefi, aktif boyama ve RTL aynası dokunulmadan kaldı; red-first sabitleme tests/nav-v2.test.mjs içinde.
  • Her yerel ayar için tek bir 480 s değerlendirme tavanı (CAR-218) — remote-QA v1.264.0, es ve zh-CN üzerinde geçici 502 · 300 s · 0 ch değerlendirmeleri yakaladı (hedefli yeniden koşu geçti, ama duvar gerçekte oradaydı). EVAL_TIMEOUT_MS artık 480_000 ve evalTimeoutMs(lang) onu koşulsuz döndürüyor — GEMINI_EVAL_TIMEOUT_MS ve auto-pipeline miras alıyor. CAR-174’ten gelen yerel-ayar-duyarlı token bütçesi (16384 / 32768) yerel ayar başına tek bölünme olarak kalıyor.

Değişti

  • cvstart.org SSS tam kaynak sayılarını taşıyor (CAR-217) — {sources} iş panosu kaynağı: {sourcesEn} uluslararası pano artı {sourcesRu} Rus kaynağı ifadesi facts.json’dan yerine konuyor; facts.json canlı registry’den üretiliyor (123 = 118 EN + 5 RU), böylece sayılar asla sapamaz; hâlâ eski ~{adapters} söyleminde olan yerel ayarlar adaptersRounded üzerinden yuvarlamayı sürdürüyor. EN metin yükseltmeleri de beraberinde geliyor (meta.helpDesc, helpTeaser.c1.desc, faq.a2 komut menüsünü, geri al özelliğiyle gruplanmış pipeline’ı ve kanban tracker’ı adlandırıyor).

Notlar

  • Bilinçli olarak yapılmadı: site i18n metin yükseltmeleri (meta.helpDesc / helpTeaser.c1.desc / faq.a2) bu sürümde yalnızca EN kalıyor — diğer yerel ayarlar bir sonraki dokümantasyon dalgasına kadar doğru-ama-daha-yuvarlak söylemi koruyor (çevrilenlerde onların faq.a7’si tam-sayı yer tutucularını kazanıyor). CAR-141 (tanıtım videosu) sahibin kalıyor; yerine geçen car136/m141 dalı silindi, fikirleri Linear görevine not edildi (archive/car136-m141 etiketiyle kurtarılabilir).
  • Testler 7041 → 7081 (CAR-203 sabitlemesi + CAR-218 sabitleme yeniden yazımları); Playwright 176; registry değişmedi 123 = 118 EN + 5 RU · 118 adapters.

[1.264.0] — 2026-10-31

Eklendi

  • Satır-içi tracker durum düzenlemesi — her #/tracker satırının durum rozeti, kanonik aşamaların kompakt bir <select>’i (GET /api/tracker/stages’ten, asla sabit kodlanmış bir whitelist değil). POST /api/tracker/status, üst projenin kanonik set-status.mjs’ini applications.md kilidi altında aktarıyor (durum whitelist’i states.mjs üzerinden, --dry-run/--note geçişi, temizlenmiş ayrıntıyla fail-soft 502, argv-dizisi spawn). Başarı satırı yerinde güncelliyor (ton sınıfı + sekme sayıları, odak korunur); başarısızlık değeri geri alır ve toast gösterir. Aktarımın adresleyemediği satırlar — elle düzenlenmiş bilinmeyen bir durum, bir backfill sentinel’i # — salt-okunur rozeti tutuyor (route-review LOW düzeltmeleri; inceleyici: HIGH/MED bulgu yok).
  • Sunucu uyarıları her AI sayfasında yüzeye çıkarıldı — evaluate, deep, auto-pipeline (sayfa ve modal), career-plan, market, cv-studio (humanize + tailor) artık sunucunun warnings dizisini (çıktı-token kırpılması, dil sürüklenmesi, tarih düzeltmeleri) bir badge-warn şeridi olarak (role="status") render ediyor; auto-pipeline modalı artık done-frame uyarılarını düşürmüyor. Yeni anahtar llm.truncatedNotice ×19.
  • Kapsam dalgası (+111 test) — routes/map.mjs 100/94.9, geocode.mjs 96.3/92.9, content.mjs 99/84.9, networking.mjs 96.4/89.1, sources/habr.mjs 100/98.2 (yeni tests/cov-*-routes.test.mjs ×3, tests/sources-habr.test.mjs); dal tabanı ≥ 90 %’ta tutuldu.
  • Linear CAR-191…216 kapanış paketi (docs/reviews/2026-10-30-linear-car191-216-closure-bundle.md) — CAR başına commit SHA’ları ve kanıt yorumlarıyla yapıştırılmaya-hazır sahip kapanışı.

Düzeltildi

  • Trudvsem tarama kaynağı — boş bir sayfa (results: {}, “sonun ötesinde” de dahil) artık tüm taramayı öldürmüyor (temiz sıfır satır); API hata zarfları (HTTP-200 status: 500 ile) API’nin kendi metniyle fırlatılıyor; sayfalama kayıt ofsetleriyle yürüyor (sayfa-indeksiydi — sayılar sessizce kopyalanıyordu, yüzlerce yerine ~52 ilan); yürüyüş, API’nin derin-ofset hata bölgesinden önce duruyor (offset × limit ≥ 10000). Canlı uçtan uca doğrulandı.
  • habr — başlıklar/şirketler varlık çözümünden sonra etiket-kırpılıyor (hh.mjs paritesi): kart başlığındaki &lt;script&gt; artık canlı işaretleme olarak tarama satırlarına ulaşamıyor; başlıklardaki meşru >> hayatta kalıyor.
  • PUT /api/profile (ham yol) — boş olmayan bir full_name içermeyen bir candidate: bloğu reddediliyor, alanlar-birleştirme yoluyla aynı çizgide (full_name: null kalıcıyordu).
  • İpucu dürüstlüğü — .doc CV yükleme kabul listesinden ve cv.uploadHint ×19’dan kaldırıldı (ayrıştırıcı onu hiç desteklemedi); config.openaiModelHint ×19 gpt-5 adını veriyor (sunucu her *-codex kimliğini ona eşliyor); config.anthropicModelHint ×19 ve Anthropic varsayılanı artık üst projenin katmanlarını yansıtıyor — varsayılan claude-sonnet-5-5, premium claude-opus-5-5.
  • Claude Code dokümantasyon bağlantısı → code.claude.com (eski docs.anthropic.com/en/docs/claude-code URL’si bağlantılar kapısında TypeErrors veriyor).
  • yardım ×19: Satır-yoğunluğu mermisi gitti (düğme v1.263.0’da arayüzden ayrıldı) ve 18 kırık **bold** aralık ailesi onarıldı — artı renderer-sızıntı sınıfı ×19 düzeltildi (her tablo-öncesi-paragraftan sonra ikinci boş satır; kalın hücrelerin dışına taşan pipe glifi): 19 yardım paketinin tamamında render’da 0 literal **.

Notlar

  • Anthropic varsayılan modeli değişti → claude-sonnet-5-5 (üst projenin standart katmanı). Eski sessiz varsayılana (claude-sonnet-4-6) dayanan dağıtımlar otomatik yükseliyor — vazgeçmek için .env’de ANTHROPIC_MODEL’i sabitleyin.
  • Bilinçli olarak yapılmadı: tasarım gereği açık bırakılan iki LOW inceleme kusuru (satır-içi seçici kanban movesReady bozulmasını yansıtmıyor — her başarısızlıkta dürüst toast seçilen davranış; code: 'timeout' dalı >30 s’lik bir testle değil, sahte-yazıcı sözleşmesiyle kapsanıyor). CAR-141 (tanıtım videosu) sahibin kalıyor.
  • yardım ×19, v1.263.0 gönderildikten sonra main üzerinde yayın-sonrası düzyazı geçişini aldı (yoğunluk mermisi çıktı, renderer-sızıntı sınıfı düzeltildi) — bu sürüm onu taşıyan ilk etiket.
  • Bu etikette ayrıca: kanıt çipi altyapısı (rapor parser’ları + görünüm rozetleri), fix-report-links runner’ı (POST /api/runners/report-links, #/health üzerinde «Onar» kartı) ve kullanım kaydıyla batch maliyet tahmini/onayı — dal kesimi ile etiket arasında main’e geldi.

Tests 6905 → 7041 (+136) · Playwright 176 (173 geçti / 1 opsiyonel atlandı) · kapsam 98.5 % satır / 90.1 % dal · registry değişmedi: 123 sources = 118 EN + 5 RU · 118 adapters.

[1.263.0] — 2026-10-30

Eklendi

  • Hareket cilalama katmanı — yeni motion.css (son app sayfası): modal/popover girişleri (scale .97 + fade, 130–180 ms), toast yay-vari giriş + yumuşak ayrılma durumu, tema-düğmesi basma yayı, chip/sekme basma scale(.97), kademelendirme altyapısı (50 ms adımlar, 12 tavan), .page-enter rota-değişimi solması (router), chip’lerde/sekmelerde odak-halo geçişleri. Her kural prefers-reduced-motion-güvenli (hareket none’a düşer, opaklık/renk kalır).
  • Dokunma doğruluğu — 68 hover-lift kuralı korumasızdı: dokunmatik cihazlar bir dokunuş sonrasında takılı kalmış “kaldırılmış” bir kart tutuyordu. Tüm transform hover’ları artık @media (hover:hover)-kapılı (motion.css nötrleştirici) ve kart kaldırma yalnızca gerçekten etkileşimli kartlara uygulanıyor (.card:has(a), a.card, button.card, [role=button].card) — statik kartlarda artık sahte affordance yok.
  • Erişilebilirlik: her kontrolün programatik bir adı var. Yeni A11yDump yardımcısı 16 salt-okunur LLM-çıktısı dökümünün tümünü adlandırıyor; 12 yalnızca-placeholder alanı (CV Studio ×6, config ×2, scan arama, tracker puan seçici, outcome notu, plan düzenleyici, auto URL, hata raporu) aria-label aldı; a11y-form-wires kapısı artık bunu sınıf-çapında dayatıyor (26 adlandırılmamış yer vardı, artık 0 + gerekçeleri belgelenmiş bir allowlist).

Düzeltildi

  • #/scan: yapışkan tablo başlığı, üstüne kaydırıldığında artık topbar aramasının üzerine boyamıyor (z topbar’ınkine eşitti, sonra gelen DOM kazanıyordu — artık onun altında token-türevli); “Зарплата от/до” girdileri yeniden normal boyutta (bir .v2-scan-bar .input flex kuralı popover’ın sütun flex’ine sızıyor ve flex-basis 200 px’i YÜKSEKLİK olarak ayarlıyordu — artık >-kapsamlı + popover koruması); yoğunluk düğmesi sahip kararıyla kaldırıldı (altyapı korundu, i18n anahtarları ×19 kaldırıldı).
  • Deploy workflow sağlamlaştırması (F1–F6): provider girdisi herhangi bir kabuk birleştirmesinden önce karakter-seti doğrulamasından geçiyor; hermes teşhisleri değerleri ayıklıyor (büyük/küçük-harf-duyarsız anahtar filtresi + değer maskeleme + üç çıkış kanalında da 80 karakter kırpma, ?token= de maskeleniyor); hermes adımı inputs.app_dir’e saygı duyuyor; public_url https-kapılı; anti-downgrade korumasının 6 yürütülebilir sabitlemesi var (varsayılan yok, koruma-Deploy’dan-önce sırası, katı refs regex’i).
  • İnceleme kuyruğu, red-first: CSV-içe-aktarma ters-bölü gidiş-dönüşü (yeniden içe aktarım yeniden tekilleştiriyor), cv-voice baş-kırpma 4827 ms → 13 ms, statedYearsMin tembel hesaplanıyor, posting-guard capture TOCTOU, MiniMax CN joker’i, deel token atlama, içe aktarma seçicinin okumadan önce boyut-korumaları. İçe aktarma modalı: nav-guard kuruldu, dosya girdisi iptalde kaldırılıyor, korumalı yinelenenler okunuyor, num reduce ile.
  • Sahibin UX paketi: dashboard hero dikey ritmi (satır-seviyesi çocuklar tek satır kutusuna yapıştırılıyordu); yardım TOC’si −8 px aktif-satır kayması (satır-başına satır-içi oluk + numara sütunu); mobil çekmece (görünür ✕ kapatma, scrollTop sıfırlama, hayalet –paper solması .has-hud’a kapılı); docs-assistant sayfası artık yanıttaki uzun bir URL ile taşmıyor (grid min-width zinciri + overflow-wrap: anywhere); «Недавние» açıklandı (ipucu) + temizlenebilir; career-plan Kaydet başarısız bir yükleme sonrasında yeniden kuruluyor; evaluate URL-ön-doldurması yapıştırma-yer-tutucusu üzerinde artık bir LLM çağrısı yakmıyor; auto-pipeline Enter IME bileşimine saygı duyuyor.
  • Kontrast (WCAG denetimi, 296 çift): docs-fab degrade 2.43 → 6.4:1, toast.success → ok-soft çifti (1.75 → AA koyu), banner btn-dark → --ink çevirmesi, scan-logbtn/reposts-badge/fab-chip/close açık varyantları ve form-kontrol kenarlıkları 3:1’e (--cv3-input-line, WCAG 1.4.11 — 1.2:1 idi).
  • Görsel tarama: tracker boş durumu tam-genişlik bir kart (390’da 760 px tablonun içinde kırpılıyordu); scan konsol satırı yarım-kırpma yerine üç-noktayla kısalıyor; yüzen sohbet FAB’ı artık 390’da içeriği örtmüyor (44 px hedef, inset 12); dashboard «Application statuses» boş durumu v2-empty desenini izliyor; stats «?» ipucu bir ayırıcı + 44 px hedef alıyor; career-plan Input sekmesi sonucun nereye geldiğini açıklıyor; yardım §1 markdown (18 kırık kalın aralığı).

Değişti

  • Vurgu mavisi → kızıl kırmızı (sahip isteği, logo ile uyumlu, hue 15) — 5 cv3 token × 3 tema bloğu; docs-assistant sohbet balonu metni --accent-ink’e biniyor (sabit #fff idi, koyuda 2.39:1); funded yıkaması --accent-soft’a biniyor. Danger kendi tedavileriyle hue 25’te kalıyor.
  • Dokümantasyon: README test-tablosu sayısı ×17 (v1.248 döneminden bir sürüklenme), yardım §1 + 18 markdown aralığı, yardım fr/it/ta «118», satıcı fiyatları CHECKED_ON 2026-10-30, HANDOFF/CONTEXT/TRACEABILITY olguları.

Notlar

  • Bilinçli olarak yapılmadı: skeleton sweep yeniden işi dışarıda kalıyor (car112 sözleşmesi mevcut solmayı kelimesi kelimesine sabitliyor); tema-düğmesi simge çapraz-solması bir display değişimi olarak kalıyor (tema-düğmesi Playwright sözleşmesi onu gözlemliyor); .btn:active scale çoğaltılmadı (app.css ona sahip); motion kademelendirme yalnızca altyapı — dashboard karoları onu sonra benimser; yardım ×19 düzyazısı (yoğunluk anması, §1 markdown, «118») sonraki fan-out’a biniyor.
  • Tam remote-QA kanıtı: v1.262.4 üzerinde ja hedefli yeşil (376 s / A–G ✓); en/it token-yoğun dönemde daha önce yeşildi.

Tests 6869 → 6905 (+36) · Playwright 176 · kapsam 98.4 % satır / 89.9 % dal · registry değişmedi: 123 sources = 118 EN + 5 RU · 118 adapters.

[1.262.4] — 2026-10-30

Düzeltildi

  • ja, token-yoğun değerlendirme yerel ayarlarına katılıyor (ja → 32768-token tavanı + 480 s saati). prod v1.262.3 üzerindeki 5-yerel-ayarlık hedefli yeniden koşu, gecenin dört 502 · 300 s · 0 ch zaman aşımını geçiciler ve deterministikler olarak ayırdı: ar (250 s), ko (291 s) ve zh-CN (259 s) yeniden koşularından geçti, ru’nun tek seferlik dil sürüklenmesi tekrarlanmadı — ama ja standart tavanda sıfır çıktıyla iki kez duvara çarptı (tam ×19 koşu 40981578549 ve hedefli yeniden koşu 41012725839). it/pl ile aynı şekil sınıfı. Red-first sabitleme: evalMaxTokens('ja') = 32768, evalTimeoutMs('ja') = 480_000, diğer yerel ayarlar 300 s tutuyor.

Notlar

  • Bilinçli olarak tek-amaçlı bir yama: ja düzeltmesi bu sürümün taşıdığı tek değişiklik — başka hiçbir şey taşımıyor. Gecenin kanıtına göre ar/ko/zh-CN standart tavanda kalıyor (geçiyorlar; gecenin başarısızlıkları sağlayıcı yükü geçicileriydi) ve ru’nun sürüklenmesi tek seferlik bir üretim feyk’iydi.

Tests 6868 → 6869 (+1) · Playwright 176 · registry değişmedi: 123 sources = 118 EN + 5 RU · 118 adapters.

[1.262.3] — 2026-10-30

Düzeltildi

  • pl, token-yoğun değerlendirme yerel ayarlarına katılıyor (pl → 32768-token tavanı + 480 s saati). prod v1.262.1 üzerindeki tam remote-QA, Lehçe evaluate’in standart tavanda öldüğünü yakaladı — 502 · openrouter · 300 s · 0 ch — ve v1.262.2 ile gönderilen hedefli yeniden koşu onu birebir yeniden üretti (koşular 40960568766 ve 40968958062): 18/19 yerel ayar A–G’den geçti, it token-yoğun 480 s saati içinde 302 s’de bitti, pl ise sıfır çıktıyla iki kez duvara çarptı. Deterministik bir zaman aşımı, bir feyk değil — v1.262.1’de it’i bu kümeye taşıyan şekil sınıfının aynısı. Red-first sabitleme: evalMaxTokens('pl') = 32768, evalTimeoutMs('pl') = 480_000, 18 standart yerel ayar 300 s tutuyor.

Notlar

  • Bilinçli olarak tek-amaçlı bir yama: pl düzeltmesi bu sürümün taşıdığı tek değişiklik — başka hiçbir şey taşımıyor; v1.262.2 inceleme-kuyruğu içeriği ayrı gönderildi.

Tests 6867 → 6868 (+1) · Playwright 176 · registry değişmedi: 123 sources = 118 EN + 5 RU · 118 adapters.

[1.262.2] — 2026-10-30

Düzeltildi

  • Dalga-incelemesi kuyruğu — 7 düşük-şiddetli bulgu, her biri red-first. CSV içe aktarma ters-bölü gidiş-dönüşü: bir hücredeki \ yazılırken ikiye katlanıyor ve geri okunurken de ikiye katlanmış kalıyordu, böylece aynı CSV’nin yeniden içe aktarımı şirket+rol tekilleştirmesini kaçırıyor ve yinelenen bir satır oluşturabiliyordu — okuyucu artık bölme işleminden sonra \\ kaçışını geri çözüyor (yaz→oku gidiş-dönüşü kayıpsız, yeniden içe aktarım tekilleştiriyor). cv-voice <head> kırpma, kapanmamış etiketlerde ikinci derecedendi — rotanın tavanladığı 64 KB girdi üzerinde 4827 ms → 13 ms. statedYearsMin, years_min yapılandırılmamışken bile her kaynağın her işi için tam yıl-ayrıştırıcısını çalıştırıyordu — artık tembel (lazy), büyük tarama başına saniyelerce CPU ortadan kalktı. readdir ile statSync arasında silinen bir capture, posting-guard listelemesini çökertiyordu (TOCTOU — kaybolan dosyalar atlanıyor). MiniMax CN varsayılanı yalnızca api.minimax.cn ile tam eşleşme arıyordu — artık herhangi bir *.minimax.cn base URL’si CN modelini alıyor. Hex referansı olmayan Deel $-token’ları artık özete sabit-metin olarak sızmıyor. İçe aktarma seçici, file.text()’ten ÖNCE file.size’ı kontrol ediyor — 512 KB sunucu tavanı, tarayıcı olası bir dev dosyayı ayrıştırdıktan sonra ancak 413 döndürüyordu — yerelleştirilmiş bir import.tooLarge toast ×19 ile.
  • Deploy workflow’unun sağlamlaştırılması (workflows incelemesi F1–F6). provider, karakter-seti doğrulaması olmadan uzak kabuğa yerleştirilen tek girdiydi — değer içindeki bir ' tırnaklamayı kırıyor ve prod’da keyfi kod çalıştırıyordu; artık herhangi bir birleştirmeden önce ^[A-Za-z0-9_-]+$ beyaz listesiyle doğrulanıyor ve anahtar-koruma grep’i artık yanlış geçemez. hermes teşhis adımı ham journalctl + unit dökümlerini genel günlüğe basıyordu; filtresi büyük harfli *_API_KEY=’i kaçırıyor ve hiçbir şeyi maskelemiyordu — artık üç çıkış kanalında paylaşılan büyük/küçük-harf-duyarsız ayıklama + değer maskeleme + 80 karakter kırpma var, ?token= sorgu dizeleri de maskeleniyor. hermes adımı inputs.app_dir’i yok sayıyor ve /opt/career-ops/src/.env yolunu sabitliyordu. public_url, bir https kontrolü olmadan curl’a ulaşıyordu (başındaki - ile seçenek enjeksiyonu). Ve anti-downgrade koruması — v1.238.0 olayının düzeltmesi — hiçbir yürütülebilir kapısı yoktu: ci-workflows’a altı yeni sabitleme (refs’in varsayılanı yok, koruma Deploy’dan önce çalışıyor, katı refs regex’i).
  • İçe aktarma modalı kuyruğu (SPA incelemesi). Modal, outcome modalıyla aynı nav guard’ı kuruyor — sayfadan ayrılmak artık onu başka bir görünümün üzerinde yetim bırakmıyor. Gizli dosya girdisi artık yalnızca change’de değil cancel’de de kaldırılıyor — art arda iptaller document.body’ye girdi elemanları sızdırmıyor. plan.duplicates, önizlemede korumalı biçimden okunuyor. Tracker num tahsisi, Math.max(...spread) yerine reduce kullanıyor — spread ~100 bin satırda argüman sınırına çarpıyor.

Değişti

  • Dokümantasyon: yardım kılavuzunun «118 EN adapters» maddesi fr/it/ta’da da sayıyı taşıyor (diğer 15 yerel ayarda zaten vardı). cvstart.org’daki satıcı fiyatları resmi fiyatlandırma sayfalarına karşı yeniden doğrulandı — dördü de değişmedi, CHECKED_ON → 2026-10-30. Sürüm-sonrası sürüklenme taraması, README ×19, CONTEXT.md, CLAUDE.md ve SDD kılavuzlarında 42 bayat sayı/sürüm satırını düzeltti (109/104 dönemi ve v1.262.0 dönemi kalıntıları).

Notlar

  • Bilinçli eylemsizlik: cv-studio’nun yerel window.confirm’i (CAR-179 dönemi) kalıyor — onu UI.confirm’e dönüştürmek bir takip işidir, yama maddesi değil; <mark title> kalıp-ifade tooltip’i yalnızca-tooltip olarak kalıyor (kabul edilebilir a11y tabanı); remote-qa.yml, cancel-in-progress: true tutuyor — yeniden gönderme, çalışan bir regresyonun yerini kasıtlı olarak alıyor.
  • prod v1.262.1 üzerinde tam remote-QA: routes ×19 ✓ · site ×19 ✓ · links ✓ · canlı LLM 18/19 yerel ayarda A–G ✓ — pl tek bir 502 · 300 s · 0 ch sağlayıcı zaman aşımı yedi (token-yoğun bölge değil; hedefli yeniden koşu bu sürümle gidiyor).
  • Testler 6841 → 6867, sürüm dalında (6864 pass / 0 fail / 3 skip, +26 vs v1.262.1) · Playwright 176 · kapsam 98.42 % satır / 89.94 % dal · registry değişmedi: 123 sources = 118 EN + 5 RU · 118 adapters.

[1.262.1] — 2026-10-29

İtalyanca değerlendirme yaması: OpenRouter dönemi raporu SCORE_SUMMARY bloğunun hemen önünde keserken yakaladığı için it token-yoğun yerel ayarlara katılıyor (32768 token tavanı + 480 s saati) — ve bu tanıyı mümkün kılan sağlayıcı geçiş araç takımı deploy workflow’una geliyor.

Düzeltildi

  • it değerlendirmesi SCORE_SUMMARY’den önce kesildi (CAR-190 kuyruğu): remote-QA 40928864980 (yeniden doldurulan kredilerle ilk koşu) — bir it değerlendirmesi 264 s koştu ve 15 045 karakterle döndü, 16 384 tavanında tok ~15635: A–G blokları sağlam, ---SCORE_SUMMARY--- yok. v1.261.1’de (CAR-174) ta’ya tavanını kazandıran şekil sınıfının aynısı. it, TOKEN_DENSE_EVAL_LOCALES’e katılıyor (ta, hi → ta, hi, it): hem 32 768 token bütçesi hem de 480 s saati artık uygulanıyor ve /api/evaluate + auto-pipeline llm.mjs’teki tek doğruluk kaynağında kalıyor.
  • Bloksuz en raporu — tek seferlik üretim feyki: Aynı koşu tek bir en değerlendirmesinin dili doğru ama A–G bloklarının hiçbiri olmadan döndüğünü gördü; hedefli bir yeniden koşu tertemiz geçti (21 091 karakter, A–G ✓). Token-yoğun kümeye eklenmedi — bir feyk tarih değildir.

Eklendi

  • Deploy workflow’u: mode=hermes ve mode=provider (CAR-190 operasyon kuyruğu): mode=hermes Hermes gateway’ini yeniden başlatır ve tam bir teşhis basar (sırları ayıklanmış unit dosyası, önce/sonra dinleyiciler, sudo günlüğü, port-port sondalar, uygulamanın kendi HERMES_BASE_URL görünümü, OpenRouter kredi bakiyesi); mode=provider bir anahtar-varlığı korumasıyla LLM_PROVIDER’ı değiştirir (hedef sağlayıcının *_API_KEY’i yoksa reddeder) ve uygulamayı yeniden başlatır — Hermes kredileri yolda bittiğinde prod’un openrouter’a geçtiği yöntem budur. Deploy-modu ref koruması yalnızca mode=deploy için doğrulanıyor, böylece recon/verify gönderimleri yeniden çalışıyor (v1.261.3 dönemindeki required-inputs değişikliği onları sessizleştirmişti).

Notlar

  • Bilinçli eylemsizlik: en token-yoğun kümeye hiç eklenmiyor — bloksuz tek bir rapor bir üretim feykidir, hacim tarihi değil.
  • Bilinçli eylemsizlik: pekiştirilmiş ta dil yönergesi it’e hiç genişletilmiyor — İtalyanca için dil kayması gözlemlenmedi.
  • Bilinçli eylemsizlik: yeni UI-v2 demo videosunun kaydı owner’da kalıyor (CAR-141) — landing artık her durumda youtube-nocookie.com üzerinden gömüyor.
  • Testler 6841 → 6841, sürüm dalında.

[1.262.0] — 2026-10-29

Upstream-özellikleri minor sürümü: Deel iş panosu tarayıcıya katılıyor (registry 123), başka bir tracker’ın CSV’si doğrudan #/tracker’a aktarılıyor, posting-guard bütünlük denetimi ve CV ses denetimi relay/lint olarak geliyor, tarayıcı bir deneyim-yılı filtresi öğreniyor ve yedi dilde daha Apply düğmeleri eksik gibi okunmayı bırakıyor — ayrıca MiniMax’ın emekliye ayrılmış varsayılan modeli değiştirildi ve repost’lar artık kaynaklar arasında uydurulmuyor.

Eklendi

  • Deel iş panosu kaynağı (CAR-184): registry 123 kaynak = 118 EN + 5 RU · 118 adapter — jobs.deel.com/<slug> tenant panolarını otomatik algılar (Klarna ve diğerleri); Next.js flight yükü tüm envanteri tek istekte taşır (başlıklar, konumlar, düzen, tarihler, açıklama), izin verilmeyen /api/ yoluna hiç dokunulmaz, iş ilanlarını başka yerde yayınlayan bir tenant, kaynağın adıyla reddettiği bir redirect ile yanıt verir ve ücret bilgisi bilinçli olarak eşlenmemiş bırakılır (ödeme aralığı olmayan tutarlar bir tahmin olurdu); count kapıları ×5 + help §17 ×19.
  • Tracker CSV içe aktarma (CAR-181): dry-run önizlemeli ve kilitli commit’li POST /api/tracker/import-csv — RFC-4180 tırnaklama, ISO / gün-önce / ay-adı biçimlerinde tarihler, yabancı tracker aşamaları kanonik durumlara katlanır (bilinmeyen bir aşama notla birlikte Evaluated olarak gelir, asla atılmaz), markdown-link hücresinden veya Notlar sütunundan okunan normalize edilmiş ilan URL’siyle tekilleştirme, sınırlar 512 KB / 2000 satır; #/tracker, önizleme modallı bir CSV İçe Aktar düğmesi kazanır, i18n ×19.
  • Posting guard relay’i (CAR-182): POST /api/runners/posting-guard — parent’ın deterministik sıfır-LLM JD bütünlük kapısı, jds/ capture önek kuralıyla (doldurulmuş ya da değil, tam-sayı karşılaştırmalı) rapor numarasından veya açık, temizlenmiş bir yoldan çözülür; çocuk yalnızca argv, 30 sn’lik bir tavan ve fail-soft bir sözleşme alır; #/reports/:slug üzerindeki bir «Posting guard» eylemi bulguları gösterir, i18n ×19.
  • CV ses denetimi (CAR-188): özgeçmişlerdeki 27 kalıplaşmış ifade (passionate about, proven track record, leveraged, spearheaded, delve…) artı kısa çizgi bulguları (2022–2024 gibi bir yıl aralığı bir iz değildir; 20–30% öyledir) salt-okunur POST /api/cv-studio/voice-check olarak ve birebir eşleşmeleri vurgulayan bir #/cv-studio kartı; Tailor kontrol listesi altı değişmeze büyüyor; i18n ×19.
  • Deneyim-yılı tarama filtresi (CAR-180): jd-years ayrıştırıcısı (65 ifade, emin olmadığında asla atmaz) ilan açıklamalarından belirtilen alt sınırı okur, yeni bir years_min: portals seçeneği yetersiz-nitelikli ilanları skipped_experience olarak atlar (asla bir URL’yi sabitlemeyen gözlemsel bir geçmiş durumu) ve yearsMin gelecekteki UI için tarama snapshot’ında yolculuk eder.
  • Yedi dilde daha Apply denetimleri (CAR-185/189): Vietnamca Nộp đơn ứng tuyển, Bulgarca Кандидатствай/Кандидатстване/Външно кандидатстване (isim etiketin başına sabitlenir — tavsiye-makalesi bağlantıları Apply değildir), Felemenkçe Solliciteer/Solliciteren, İspanyolca ¡Apúntame!/Postularse (etiketler, fiil değil — SSS bağlantıları artık önemsizdir), Çince 申请职位/投递 (denetimin tamamına sabitlenir) — bu panolardaki canlı ilanlar artık no_apply_control okumuyor.

Düzeltildi

  • MiniMax varsayılan modeli (CAR-187): emekliye ayrılmış MiniMax-Text-01 varsayılanı, api.minimax.io üzerinde MiniMax-M3.1-Flash ve api.minimax.cn üzerinde MiniMax-M3 ile değiştirildi; temel URL satıcıya sabitli (satıcı-olmayan bir ana bilgisayar çalışma zamanında reddedilir ve anahtar ona hiç ulaşmaz); ayarlar ipucu ×19 yeni varsayılanları adlandırıyor.
  • Repost’lar aynı kaynağı gerektiriyor (CAR-186): LinkedIn’de ve işverenin Greenhouse’unda listelenen bir rol artık repost olarak bildirilmiyor — kümeler artık sourceHost()’a göre bölünüyor; bu, bölgesel alt alan adlarını yalnızca bilinen sitelerde katlar (de.linkedin.com ≡ www.linkedin.com, ama ca.example.com ayrı kalır), Greenhouse ana bilgisayar takma adlarını tek kaynakta birleştirir ve sondaki noktayı soyar.
  • Tamilce değerlendirme dil-sürüklenmesi (CAR-183): güçlendirilmiş bir Tamilce yönergesi artık hacim bütçesinin yanındaki uçucu prompt kuyruğunda oturuyor (CAR-174 yuvası) — v1.261.2’de görülen aralıklı sürüklenmenin ardından remote-QA raporları yeniden Tamilce’ye düşüyor.

Notlar

  • Bilinçli eylemsizlik: posting-guard relay’i fail-soft olarak geliyor — fork, parent’ın posting-guard.mjs dosyasını henüz hiç taşımıyor (upstream PR #6146 hâlâ açık), bu yüzden bir parent senkronizasyonu onu sevk edene dek uç nokta {available:false, reason:"script-not-found"} yanıtını veriyor.
  • Bilinçli eylemsizlik: yearsMin bu sürümde bir #/scan UI çipi olarak hiç görünmüyor — alan snapshot’ta yol alıyor ve filtre yalnızca portals-config.
  • Bilinçli eylemsizlik: upstream modes/reports Machine Summary değişiklikleri (#6161/#6160/#6157) hiç port edilmedi — web-ui aynaları olarak değil, dağıtılmış parent ile geliyorlar.
  • Testler 6734 → 6841, sürüm dalında; tarayıcının dedup anahtarına dokunulmadı (URL-normalizasyon davranışı hiç değişmedi).

[1.261.3] — 2026-10-28

Tasarım-tamamlama yaması: Lovable tasarım fazı 3 (yoğunluk + coral’ın tamamen emekli edilmesi), tarama ana bilgisayar havuzu (32 şirket, ana bilgisayar başına 10), altı upstream sağlayıcı konum düzeltmesi, Trakstar Hire kaynağı (kayıt defteri 122), CV Studio geri alması + kaydedilmemiş-değişiklik koruması — artı nihai-regresyon P3 düzeltmeleri ve dokümantasyon paritesi.

Düzeltildi

  • Harita kümesi «related» etiketi 3.16:1 → 4.68:1 (her iki tema): açık temadaki --map-score-mid #567b75’e koyulaştırıldı (önerilen #5f7f7a yalnızca 4.37 ölçtü — bir adım daha koyu gerekiyordu); koyu taraf zaten 4.98:1’di, dokunulmadı. map-cluster-visual içinde red-first sabitlemesi.
  • Skip-link odak halkası: son kalan literel #ff385c konturu → var(--accent-c) — 78 odak halkasının tamamı artık accent token’ını izliyor.
  • .tab-btn.is-active accent topolojisi (#584, faz 3): denetim üç renk ailesini karıştırıyordu (açık coral dolgusu + danger metni + mavi kenarlık); artık tek bir accent-soft çifti.
  • Upstream sağlayıcı konum düzeltmeleri ×5 (#580, CAR-176): workday Fully Remote bayrağı (bir yer değil), workable telecommuting fan-out’u + eyaletin yalnızca şehir yokken eklenmesi, successfactors sondaki virgül, lever remote kelime-sınırı, icims Location-önekli etiketler.
  • http-json: tükenmiş zaman aşımında yeniden deneme yok (#580) — son-tarih iptali her iki yeniden-deneme yardımcısında da geçici değil (upstream, 30sn×yeniden-denemelerle bir Ashby panosunda ~94sn ölçtü).
  • Dokümantasyon paritesi (#587): HANDOFF/CONVENTIONS/README içindeki son 17/18-dönemi sayaçları (uk, eksik Локалізація bölümünü aldı; §-geçmişi §32/§33’e uzatıldı — 33 H2 aritmetiği doğrulandı).

Eklendi

  • Lovable tasarım fazı 3 (#584): yoğunluk token’ları canlı — tablo satırları ≈32px, denetimler 30px, çipler 24px (WCAG 2.5.8 boşluk istisnası); her coral rgba kalıntısı cv3 çiftlerine taşındı (.dash-hero, .badge-bad, haleler, .tab-btn.is-active); --ease-out tanımlandı, TOKEN_HANDOFF boş; .callout--ok/--danger sözleşmesi.
  • Trakstar Hire kaynağı (#583, CAR-177): kayıt defteri 122 kaynak = 117 EN + 5 RU · 117 adaptör — ana bilgisayara sabitlenmiş jsapi.recruiterbox.com, kısa/boş/tekrarlı duruşlarla offset yürüyüşü, kısmiler korunuyor, trakstarTruncated etiketlemesi; sayaç kapıları ×5 + yardım §17 ×19.
  • Tarama ana bilgisayar havuzu (#579, CAR-178): eşzamanlı 32 şirkete kadar, ana bilgisayar başına 10 ile sınırlı (upstream anahtarlı-limiter deseni) — anlık görüntü sıralı koşuyla bayt-birebir özdeş (red-first zamanlama-sahte kapısı).
  • CV Studio geri alması + kaydedilmemiş-değişiklik koruması (#582, CAR-179): QWERTY-olmayan düzenlerde güvenli Cmd/Ctrl+Z ile AI-koşusu sonuçları üzerinde sınırlı bir geri alma yığını (30), rotadan ayrılırken kaydedilmemiş-değişiklik koruması (canlı-probe ile kirli kontrolü, confirm/rewind/beforeunload), i18n ×19.
  • Upstream sağlayıcı düzeltmeleri ×17 test edildi (CAR-176’nın parçası); remote-QA özeti başarısız tarama kaynaklarını adlandırıyor + eval başına tok ~N (#567, v1.261.2’de zaten mevcut — bu sürümün triajında gözlemlenebilirlik kullanıldı).

Notlar

  • Accent artık mavi (Lovable konsepti): birincil eylemler/aktif durumlar/odak halkaları --cv3-accent’ı izliyor; kırmızı danger için saklı (.btn-danger, toast.error, danger metni). Coral yalnızca logo PNG varlığında yaşıyor (sahibin kararı).
  • Yoğunluk: tablo satırları ≈32px / denetimler 30px / çipler 24px — WCAG 2.5.8 boşluk istisnası belgelendirildi; v1.26.1’in 44px kanaryası token sözleşmesi üzerine yeniden yazıldı.
  • CodeQL: açık 10 uyarının tamamı kapatıldı (4’ü gerekçeyle FP olarak kapatıldı — belgelenmiş sınıflar: llmRateLimit/atomicWrite; 6’sı kaynakta düzeltildi).
  • Testler sürüm dalında 6655 → 6734; yeni Trakstar kaynağının ötesinde hiçbir tarayıcı-kaynak davranışı değişmedi.

[1.261.2] — 2026-10-28

Kararlılık + cilalama yaması: geocode önbelleği yazım-ortası bir çökmeyi atlatıyor (CAR-173), UI.md madde-işareti devamlarını ve iç içe listeleri render ediyor, yardım paketlerindeki render-edilen-metin anahtar sızıntıları ×17 kapatıldı, evaluate ta için yerel-ayar duyarlı bir token tavanı alıyor (CAR-174), RTL chrome mantıksal özelliklerle aynalanıyor (85 bulgu), harita yakalamaları ×19 yeniden çerçeveleniyor ve harita kümeleri koyu temada kontrastı geçiyor — artı Lovable tasarım entegrasyonunun ilk fazı (pasif tokens-v3.css sayfası), dokümantasyon geri-doldurması (sürüm incelemesi + şartnameler) ve CI-düğüm kapsam muafiyetleri.

Düzeltildi

  • Geocode önbelleği yırtık-yazma kaybı (CAR-173, #562): her iki flush yolu da (gecikmeli insert-flush, çıkış-flush) .cache/geocode.json dosyasını çıplak bir writeFileSync ile yazıyordu — önce-kırp-sonra-yaz — böylece yazım ortasında bir çökme, OOM veya SIGKILL yırtık bir dosya bırakıyor ve bir sonraki açılışın JSON.parse’u hata fırlatıyordu; gününki değil tüm kalıcı önbelleği (haftalarca Nominatim bütçesi) sessizce çöpe atıyordu. Her iki yazım noktası da artık file-lock.mjs::atomicWrite üzerinden gidiyor (aynı dizinde geçici dosya → rename → başarısızlıkta unlink) — FULL-R1/FULL-M1’in pipeline.md, cv.md, profile.yml, career-plan, batch girdisi ve memory’ye uyguladığı sözleşmenin aynısı. CAR-142 flush mekanizmasının kendisi (gecikmeli insert-flush, çıkış-flush, sınırlı kapanış) red-first doğrulamayla sağlam olduğu kanıtlandı: testler (a)/(b), eklemelerin GEOCODE_SAVE_MS penceresi içinde dosyaya ulaştığını ve geçerli JSON olarak kaldığını kilitliyor; (c) bir mekanizma kapısı artı her iki flush yolunun davranışsal çalıştırmaları — geçici-dosya artığı kalmadığını ve dosyanın ayrıştırılabilir olduğunu doğruluyor.
  • UI.md liste devamları (#563): liste işleyicisi yalnızca arka arkaya gelen - /* satırlarını tüketiyordu; böylece bir maddeden sonraki girintili devam satırı üretilen <ul>’in dışına düşüyor ve paragraf geçişi parçayı atlıyordu — devam satırı **/ters-tırnak işaretleriyle çıplak düzyazı olarak sızıyor (yardım paketleri boyunca yerel ayar başına ~95 sarkan metin dizisi; en.md 95, ru.md 104). Bir devam satırı — baştaki boşluk, yeni bir blok değil (başlık, madde, NUL-sarmalı fence yer tutucu, boş satır) — artık önceki <li>’ye <br/> ile birleştirilmiş metin olarak katılıyor; vurgu işaretlerinin birleşimin ötesinde asla eşleşmemesi için inline() satır satır çalıştırılıyor; fence-yer-tutucu koruması NUL-ilk-karakter üzerine kurulu, çıplak bir token eşleşmesi değil. İç içe - maddeleri, numaralı listeler, liste içindeki fence’ler ve liste içindeki başlıklar belgelenmiş ayrı bir boşluk olarak kalıyor (sonraki docs dalgası).
  • Yardım render-edilen-metin anahtar sızıntıları ×17 (#561): remote-QA, render edilen yardımda görünen 85 çiğ i18n anahtarı buldu (kök neden yeniden-üretimle kanıtlandı: aynı UI.md tek-satır-madde tüketimi — sarılmış bir devam satırı çiğ metin olarak üretilirken ters tırnaklarını düz tutuyordu; v1.260/261 yardım bölümleri çok satırlı maddeler yazmıştı). 163 madde 17 yerel ayarda tek satıra açıldı — yalnızca boşluk değişikliği, çevrilmiş tek bir sözcüğe bile dokunulmadı (eski-yeni karşılaştırması doğrulandı). Yeni kapı tests/help-rendered-keys.test.mjs her paketi gerçek zincir üzerinden render ediyor (stripGithubOnlyBlocks + vm ile yüklenen UI.md) ve 1711 anahtardan herhangi biri metinde görünürse başarısız oluyor; red-first 17 yerel ayar → yeşil. Yeniden-üretim araçları depoya giriyor: scripts/remote-qa/help-render-scan.mjs (vm) + help-render-crosscheck.mjs (gerçek DOM).
  • Remote-QA Ctrl+K CAR-122 palet sözleşmesini doğruluyor (#561): prod-regression.mjs artık Ctrl+K’dan sonra komut paletini bekliyor (.nav-v2-palette[role=dialog] + odak nav-v2-input’ta) VEYA geri-dönüş olarak eski arama-odaklanmasını; ikisinden birini sessizce kabul etmek yerine. Birim testi tests/remote-qa-ctrl-k.test.mjs sahte bir DOM üzerinde 6 senaryoyu kilitliyor, red-first 0/6 → 6/6.
  • Harita yakalama çerçevelemesi ×19 (#560): images/job-map-en.png üzerinde sahibin raporu — üstte topbar aramasının yarısı + kesilmiş bir h1, sağ kenarda yan listenin gri bir kıyısı, Londra yakınlarında çerçeveyle kesilmiş bir işaretçi kümesi ve haritada ~2/3 yükseklikte haritayı enine kesen beyaz bir yatay çizgi. capture-map-screenshots.mjs artık geocode kuyruğunun boşalmasını bekliyor (located + noLoc === total, N/N sayacı değil — Remote satırları yapısal olarak konumsuz, dolayısıyla eski bekleme asla tamamlanamıyordu), çekim için header.topbar ve #notif-drawer’ı gizliyor, tam .job-map-page kutusunu kırpıyor (çerçeve kenarıyla kesilen panel yok), hiçbir küme yarım kesilmesin diye iki adım uzaklaştırıyor, harita yüksekliğini sabitliyor ve düz bir görüntü-alanı ekran görüntüsü alıyor (captureBeyondViewport birleşik döşeme katmanını yeniden örnekliyor ve döşeme-satır sınırlarında beyaz şeritler boyuyor), ayrıca harita kapsayıcısını tamsayı hizasına oturtuyor. 19 job-map yakalamasının tamamı yeniden çekildi.
  • Harita küme baloncukları — koyu-tema kontrastı + etiket sığması (#572): sahibin taraması P2/P3 — koyu temadaki küme halkaları sabit bir beyaz dolgunun üzerinde duruyordu (1.83:1); halkalar artık skor-paleti rakamlarıyla var(--paper) alıyor (ölçülen 4.98:1+, dolguda 9.53:1; en düşük bant koyu temada matematiksel olarak renklendirilemez ve dürüst bir data-dim yoluyla 6.1:1’i koruyor) ve related etiketi baloncuğuna sığıyor (rAF yazı-tipi-sığması, rakamlar asla küçülmüyor).
  • #/scan dil değişimi — iskelet yeniden-kurulumu (#534 takibi, ajan yolda, etiketten önce iniyor): v1.261.0 sahibin düzeltmesine (#534) takip — dil değişimi yeniden-boyamasında yeniden kurulan iskeletler tamamlanmış bir yeniden-getirmenin ardından artık hayatta kalmıyor.
  • Dokümantasyon sapması (CAR-139, ajan yolda, etiketten önce iniyor): README ×19 sayaçları, HANDOFF ×19, CONVENTIONS olguları canlı kayıt defteri/test durumuyla yeniden eşitlendi.

Eklendi

  • Sürüm incelemesi + şartname geri-doldurması (docs, #559/#558): docs/reviews/REVIEW-2026-10-28-v1.261.1.md (v1.261.0/v1.261.1 dalgası kendi şartnamelerine karşı incelendi) ve aynı dalga için SDD şartname geri-doldurması — BACKLOG kuyruğu artık kalan boşluğu adlandırıyor (sources/habr.mjs için özgül testler).
  • RTL derin taraması (#571): AR düzeneği 39 rotayı LTR-karşı-RTL dolaşıyor (X-aynası, taşma, kırpılma, text-align imzaları) — 85 bulgu düzeltildi: sabit chrome öğeleri (toast, sidebar, drawer + onun kapatma ×’i, docs-FAB, usage-HUD, skip-link) inset-inline-*/border-inline-*’a taşındı, tablolar 17 görünüm dosyası + 2 kütüphanede text-align: start/end’e geçti, toplu [dir=rtl] text-align:right kuralı kaldırıldı (scan yıldız-sütunu ortalamasıyla çelişiyordu), CAR-58 skor-sütunu izolasyonu bir ltrNum span’ına taşındı.
  • Klavye a11y düzenek (#570): tests/playwright-a11y-keyboard.mjs 11 rota dolaşıyor (Tab sırası/tuzakları, odak göstergeleri, Escape kaplamaları, Enter/Space) — 0 üretim hatası; regresyon kapsamı yeni.
  • i18n çevrilmemiş taraması (#565): 36 en-özdeş değer ×9 yerel ayarda çevrildi (*.rolePh, config anahtarları, ta manifestosu) + beyaz-listeye dayalı kapalı bir tarama koruması; site (cvstart.org) i18n denetimi (#568): 20 anahtar × 18 yerel ayarda çevrildi (demo.*/stats.t.*/showcase.tab* bloğunun tamamı her yerde İngilizceydi), 1 ölü anahtar ×19 kaldırıldı.
  • Remote-QA gözlemlenebilirliği (CAR-175, #567): özet, başarısız olan tarama kaynaklarını adlandırıyor (stderr örnekleri, kırpma-öncesi maskeleme) ve sağlayıcı kullanımından tok ~N yazdırıyor; mantık, bir sapma kapısıyla birlikte saf bir summary-parts.mjs içinde duruyor.
  • UI.md iç içe işaretçi listeleri (tek düzey, #564): - maddeleri iç içe bir <ul> olarak render ediliyor (fence-yer-tutucu-güvenli) — yerel ayar başına son 2 sarkan düzyazı dizisi gitti.
  • Lovable tasarım entegrasyonu — faz 1 (#566) / faz 2 (dal, etiketten önce iniyor): public/css/tokens-v3.css Lovable konseptini harfi harfine taşıyor (oklch yüzeyler 0–3, AA-ek-açıklamalı mürekkep çiftleri, accent ailesi, ok/warn/danger/info/neutral yumuşak+mürekkep, skor bantları A–G ×2 tema, yoğunluk + odak + gölgeler); faz 2 onu mevcut token adları üzerinde etkinleştiriyor (accent blue/danger diye bölünüyor, cv3 token’ları üzerinde skor bantları + callout’lar), kontrast/rol/koyu kapıları güncellenmiş olarak.
  • Evaluate yerel-ayar duyarlı token tavanı (CAR-174, #569): evalMaxTokens(lang) — ta/hi 32768 istiyor (üç SDK istemcisi 16384’te yeniden kırpılıyordu; her iki katman da düzeltildi), artı prompt’ta bir Tamil hacim bütçesi (blok başına ≤5 cümle, ≤900 sözcük) — v1.261.1 remote-QA ta raporu çıkış-token sınırında kesilmişti (Block B–G + SCORE_SUMMARY eksikti).
  • CodeQL gerçek-düzeltme takibi: yeni QA render araç takımı, elle yazılmış varlık işlemey yapısal bölme geçişleri + htmlToText({cap: Infinity}) ile değiştirdi; maskeleme doğrulamaları maskelenmiş çıktının birebirini sabitliyor; RTL düzeneğinin kullanılmayan sabitleri temizlendi.
  • CI-düğüm varyansı için Coverage muafiyet politikası (habr #558, states #561): sources/habr.mjs (CI node-matrisi dal kapsamı 87.23, yerel ≥89’a karşı) ve states.mjs (CI 86.49, yerel ≥89’a karşı) scripts/coverage-baseline.json içindeki muafiyetlere katılıyor — node-sürüm varyansı nedeniyle CI’da ölçülen dal kapsamı yerel tabanın yapısal olarak altında kalan dosyalar, tüm kapıyı aşağı kırmak yerine muaf tutuluyor.

Notlar

  • Ctrl+K sözleşmesi (CAR-122): akor komut paletini açar — arama kutusunu doğrudan ODAKLAMAZ; arama paletten odaklanır. Remote-QA prod regresyonu artık tam olarak bunu doğruluyor (#561).
  • CodeQL yanlış-pozitif kapatmaları ×5: main’deki js/missing-rate-limiting uyarıları security_events token’ını bekliyor — operatör eylemi, kod değişikliği değil.
  • Dal kesiminden sonra indi: #561/#562/#563/#564/#565/#566/#567/#569/#570/#571/#572’nin tamamı main’e birleştirildi; #534-skeleton ve CAR-139 ajanları etiketten önce birleşiyor. Tek düzeyin ötesindeki iç içe işaretçi listeleri ve inline-ağırlıklı görünüm geometrisi belgelenmiş boşluklar olarak kalıyor.
  • Test tabanı: sürüm dalında 6609 (v1.261.1’den beri +15; birleşme anında #561’den ~13 daha — 2 yeni kapı dosyası); fan-out öncesindeki tek kırmızı testler CHANGELOG ×19 parite kapıları (yerel ayar fan-out’u orkestratörün bir sonraki adımı); hiçbir tarayıcı kaynağına dokunulmadı (kayıt defteri 121 = 116 EN + 5 RU · 116 adaptör).

[1.261.1] — 2026-10-28

prod-QA istemci yaması: #/two-pager için bir P1 çökme düzeltmesi, Ctrl+K’nın QWERTY-olmayan klavye düzenlerinde çalışması, 390px mobil dalgası (docs-assistant taşması, harita çiplerinin üst üste binmesi, 39 rotalı bir düzenek), CAR-137’nin tamamlanması (özgül hatalar, v2empty ×5, ipuçları ×13 + mode sayfaları) ve CAR-140’ın gerçek v2 ekran görüntülerini her yere indirmesi.

Düzeltildi

  • two-pager TDZ (CAR-170, P1, #554): Cannot access 'previewTimer' before initialization — kurulum döngüsü sözcüksel olarak let previewTimer’ın üzerinde dururken, kaydedilmiş etiketler düzenleyicisi geri yüklenen her çip için kurulum sırasında onChange tetikliyordu; böylece #/two-pager render’ının tamamı çöküyordu (h1 yok, ×19 yerel ayar). Zamanlayıcı + bağlama artık döngünün üzerinde duruyor; davranışsal bir test gerçek görünüm modülünü yürütüyor — düzeltmeden önce birebir prod hatası, sonrasında render edilmiş bir sayfa — artı bir sözcüksel-sıra sapma kapısı.
  • QWERTY-olmayan klavye düzenlerinde Ctrl+K (CAR-172, #554): her iki akor işleyicisi de yalnızca e.key ile eşleşiyordu — Rusça bir klavye düzeninde akor key='л' code='KeyK' olarak geliyordu ve hiçbir şey yapmıyordu. nav-v2.js ve app.js’te e.code === 'KeyK' üzerinden eşleştiriliyor; sentetik bir ‘л’/KeyK akoruyla gerçek bir tarayıcıda yeniden üretildi. CAR-122 sözleşmesi yeniden ifade ediliyor (bkz. Notlar).
  • docs-assistant 390px taşması (CAR-172, #554): CAR-136 başlangıç çipleri .btn idi (nowrap, flex-shrink: 0) — kırılamayan bir 418px öge, #/docs-assistant’ı 390px görüntü alanının 56px ötesine itiyordu; CAR-146 daraltma deseni (v2-llm.css içinde; 800-LOC CSS kapılarına dokunulmadan) bunu 0’a indiriyor.
  • Harita çiplerinin üst üste binmesi @390 (#552): 390px görüntü alanında harita meta çipleri CTA satırının üzerine biniyordu (map.css).
  • CAR-137 — özgül hatalar + v2empty ×5 (#550): beş genel hata geri-dönüşü (‘Error’ / ‘failed’) özgül, eyleme dönük anahtarlara dönüştü — evaluate POST başarısızlığı, sonlandırıcı olay olmayan bir auto-pipeline akışı, scan→pipeline ekleme, repost-kümeleri yükleme, pipeline geri alması; son beş düz boş durum (#/reports, #/usage, #/portals, #/activity, #/dashboard) CAR-124 v2empty desenine katılıyor (açıklama + etiketli aria-hidden örnek + önceden bağlanmış eylem; 15 yeni v2empty.* anahtarı, dört ölü tek satırlık anahtar kaldırıldı) — tamamı ×19 sözlükte, birleştirilmiş anlık görüntü yeniden üretildi.
  • CAR-137 — HelpHint ×13 + mode-sayfa kiti (#550): bağlamsal «?» ipucu artık kalan her sayfa H1’inde (pipeline, reports, dashboard, cv, portals, usage, activity, assessments, map, health, docs-assistant, settings) ve kit aracılığıyla 8 mode sayfasında duruyor (her MODES cfg’si bir hintKey taşıyor, HelpHint.title üzerinden render ediliyor).

Eklendi

  • Mobile-390 düzenek (#552): tohumlanmış bir korpusla 390×844 boyutunda her SPA rotasının (31 kanonik + 8 mode sayfası = 39 hash) bir Playwright taraması — rota başına yatay taşma kontrolü (scrollWidth vs clientWidth, 1px tolerans, en geniş ihlalciyi adlandırır) artı bir CTA isabet kontrolü (yapışkan çubuk/çekmece/FAB birincil bir CTA’yı kapatamaz); opt-in, tarayıcı ikilisi yokken zarifçe atlanır, ağsız.
  • Taze v2 yakalamaları ×48 (CAR-140 A fazı, #551): tohumlanmış, CI-izole bir fikstürden gerçek v2-arayüz ekran görüntüleri — dashboard ×19 + job-map ×19 (job-map-ta ilk kez görünüyor, job-map-vi yeni) + scan/pipeline/tracker/reports × en/ru — README’yi, yardımı ve landing’i besliyor.
  • cvstart.org gerçek ekran görüntüleri (CAR-140 B fazı, #553): CAR-140 yer tutucu yuvaları gitti — landing artık gerçek v2 yakalamalarını gösteriyor (job-map vitrini + ekran görüntüsü satırları, ×19 landing yerel ayarı).
  • CAR-137 ipuçları (#550): 21 yeni çevrilmiş anahtar ×19 (help.hint.* ×20 + mode-sayfa hintKey’leri) — artık her sayfa kendini yerinde açıklıyor.

Notlar

  • Ctrl+K sözleşmesi (CAR-122): akor komut paletini açar — arama kutusunu doğrudan ODAKLAMAZ; arama paletten odaklanır. v1.261.0 QA kontrol listesindeki «Ctrl+K фокусит поиск» satırı geçersiz kılındı; v1.261.1 QA prompt’u güncellenmiş kontrolü taşıyor.
  • CodeQL gerçek düzeltmeleri (#547): 4 uyarı kapatıldı (content.mjs sabit-anahtar yinelemesi yapısal hâle getirildi, lint taraması) — bu yamadan önce v1.261.0 main’inde yayın sonrası indi; eksiksizlik için burada listeleniyor.
  • Test tabanı: 6582 (+51); tarayıcı süiti 171–172 geçti / 0 başarısız / 1 seçime bağlı atlama; mobile-390 düzenek bağımsız çalışıyor (node tests/playwright-mobile-390.mjs). Hiçbir tarayıcı kaynağına dokunulmadı (kayıt defteri 121 = 116 EN + 5 RU · 116 adaptör).

[1.261.0] — 2026-10-28

Tam inceleme dalgası 1.261.0 ile tamamlandı (tüm YÜKSEK + ORTA bulgular indi), sahibin bildirdiği dil değişimi düzeltmesi, değerlendirme-kalitesi düzeltmeleri, yardım ×18 fan-out’u, cvstart.org landing v2 — artı dalgayı belgeleyen 4 SDD/OpenSpec şartnamesi. Her düzeltme red→green fix-forward ve bir GLM-5.3-Flash taze-bağlam incelemesinden geçti.

Güvenlik

  • FULL-R1 — CSRF acting-GET kapısı + kilitli atomik pipeline yazıları (#519): /api/stream/*, /api/run/*, /api/geocode üzerinde Sec-Fetch-Site/Origin/Referer kapısı (dışa aktarılan ACTING_GET, statik kapsam kapısı); her data/pipeline.md / data/last-scan.json oku-değiştir-yaz’ı withFileLock + yeni atomicWrite altında (aynı dizinde geçici dosya → rename → başarısızlıkta unlink).
  • FULL-R2 — kaynaklarda SSRF kümesi (#514): rss.mjs https+özel-adres reddi; ~25 çıplak-fetchImpl kaynağı korumalı taşıma katmanlarına geçirildi; aynalar sabitlendi; habr/hh/geekjob/getmatch için yönlendirme doğrulaması; paylaşılan delay(ms, signal).
  • FULL-R4 — stripDangerousMarkdown düzyazı bozulması (#513/#518): şema temizliği artık yalnızca bağlantı/öznitelik bağlamlarında çalışıyor; varlıklar yalnızca saptama amaçlı bir kopyada çözülüyor («JavaScript: React, Node» ve «R&D» artık sağ kalıyor).
  • FULL-M2 — taşıma katmanı sertleştirmesi (#520): safeGet, köprü denetleyicisinin sinyaliyle birlikte timeoutMs’e uyuyor; guardResolvedHost DNS hatasında fail-closed davranıyor. #525, çapraz-köken yönlendirmelerde kimlik-bilgisi başlıklarının soyulmasını, her sonuçlanma yolunda taşıma-dinleyicisi ayrılmasını ve önceden-iptal edilmiş bir sinyalin çökmesini düzeltiyor.
  • FULL-M4 — logo/batch (#523): logo HER yolda magic byte sabitliyor (yalan söyleyen bir image/png SVG taşıyamıyor), depolama anında content-type’ı image/* ile sınırlıyor, özel önbellek + nosniff; batch: --parallel 1–8 aralığına kırpılıyor, --min-score doğrulanıyor, BATCH_BUSY tek-uçuş, config/batch mutasyonlarında llmRateLimit.

Eklendi

  • CAR-147 — yerel ayar duyarlı değerlendirme tavanı (#524): evalTimeoutMs(lang) — ta/hi, 300 s yerine 480 s alıyor (Hint yazı sistemleri hece başına birkaç belirteç tokenize ediyor; eski sert süre sınırı 502 + boş rapor üretiyordu); remote-QA istemcisi 540 s bekliyor.
  • CAR-133 — cvstart.org landing v2 (#532): reduced-motion ile kapılanan paralaks hero, scan→evaluate→tracker akışının açıkça SIMULATED etiketli bir demosu, canlı-doğrulanmış sayımlarla scroll-reveal bölümleri, CAR-140 ekran-görüntüsü yer tutucu yuvaları.
  • CAR-135 — arayüz v2 için yardım yeniden yazıldı, ×18 fan-out tamamlandı (#533, #540, #541, #542): 19 yardım dosyasının tamamı v2 kabuğunu anlatıyor (katlanabilir gezinme, Cmd/Ctrl+K komut paleti, iskeletler, örnek+eylemli boş durumlar, scan v2 kabuğu, pipeline gruplu+geri alma, reports v2, kanban); arayüz etiketleri kendi i18n anahtarlarını aktarıyor; 121-kaynak cümlesi kayıt defterinden üretiliyor.
  • Şartnameler (SDD/OpenSpec) (#535): oct27 wave-two geri-doldurması + üç ileriye dönük şartname (yardım fan-out’u, yazma devirleri, dil değişimi değişmezleri).

Düzeltildi

  • Dil değişimi artık #/scan’i boş bırakmıyor (#534) — sahibin bildirdiği: görünüme-yerel tarama durumu (sonuçlar, facet çipleri) artık modül düzeyinde; 4 s gecikmeli yeniden-getirme ile davranışsal bir Playwright düzeneği (eski biçimde kırmızı).
  • CAR-148/149 — ru raporları «Block G eksik» diyor (#530): prompt, birbiriyle tutarsız üç farklı A–G eşlemesi öğretiyordu; iskelet + liste + örnek artık oferta.md ile uyuşuyor (G = Posting Legitimacy); davranışsal sapma kapısı.
  • CAR-150 — pipeline geri alması comp meta verisini koruyor (#537): DELETE comp yanıtlıyor, POST kapılı isteğe bağlı bir comp kabul ediyor, görünüm {token, comp}’u tüm geri-dönüş dallarında taşıyor.
  • FULL-M3 — ölü kaynaklar dürüst paneller raporluyor (#522): getro/mycareersfuture/meituan/mokahr/glints bozuk bir 1. sayfada hata fırlatıyor (ölü bir API artık «sağlıklı, 0 iş» gibi okunmuyor); pinnedOverride, 18 adaptörün company.api geçersiz kılmalarını sabitliyor.
  • FULL-M5 — tek sağlayıcı basamağı (#521): routes/llm.mjs runActiveProvider üzerinden yürüyor (+cachePrefix, sinyal); Gemini alt-süreç müdahalesi; yanıt sözleşmeleri bayt-aynı.
  • FULL-M1 — paylaşılan-dosya yazıları kilitli (#526, #539): runTrackedScript + TRACKER_MUTATING kadrosu; outcome/followup alt-süreçleri kilidi tutuyor; tracker.mjs atomicWrite ile yazıyor; PUT kayıtları kilitli+atomik.
  • FULL-M6 — sunucu + istemci konsolidasyonu (#531, #536, #525): dotenv null-prototip + __proto__ reddi; isPrivateOrLoopback NAT64/6to4/benchmark/rezerve; env-config mtime önbelleği; file-lock gerçek yuva GC; safeGet timeout+signal; DNS koruması fail-closed; SSE ×4 → API.postStream; odak/etiket/durum kütüphaneleri; clipboard yazımı artık bekleniyor; dashboard Hired tonu.
  • R3 — CSS belirteç sapması (#527): --accent çözümlendi (harita odak halkaları sessizce ölüydü); 11 belirteç-dışı süre belirteç tablosuna katlandı; sapma kapısı.
  • R4 — yüklemede geride kalanlar (#538): assessments/mode-page/pipeline önizlemesi CAR-112 iskeletlerini render ediyor.
  • CodeQL + CI paketi (#517, #539 düzeltmesi): kullanılmayan import’lar; ACTING_GET kapısı gerçek regex’i import ediyor; yaşam-döngüsü dilimi yeniden çapalandı.

Notlar

  • Bilinçli olarak yapılmayanlar: bağlantı-anı DNS sabitlemesi (undici gerektiriyor — bağımlılıkların dışında, belgelenmiş kalıntı risk); CAR-140 ekran görüntüleri (dağıtılmış v2 arayüzünü gerektiriyor); CAR-137/138/141 (bir sonraki belge geçişi); js/missing-rate-limiting CodeQL sınıfı belgelenmiş bir yanlış-pozitiftir (özel limiter kredilendirilmiyor).
  • Yardım ×18 fan-out: es/de wave-1, giriş notunu ve Aktif Şirketler kartı deltasını atladı (de kendi girişini indirdi; es tek satırlık bir takip düzeltmesi alıyor).

[1.260.0] — 2026-10-26

İncelemeyle sertleştirme treni, v1.259.0 filosunun opus-5-5 ve AI-inceleme turlarından sekiz birleştirmesi (#491–#498): maaş normalizasyonu, rapor-tarihi kapsamı, coğrafi kodlama sağlamlığı, paket önbellek-kırmama r2+r3, derin taşma düzeltmesi — artı iki arayüz v2’si (pipeline, reports). Her düzeltme kırmızı→yeşil fix-forward ile indi.

Düzeltildi

  • Maaş karşılaştırma normalizasyonu (CAR-143 rev-2): dönem işaretçileri yalnızca ait oldukları rakamın yakınında tanınıyor — «6 month contract, $120k» artık ×12 ile yıllıklaştırılmıyor; yalnızca sayıya ekli RU/ES dönem biçimleri («за месяц» rakamın hemen yanında) tesadüfi sözcükleri geçiyor; $/¥ simge ailesi tanınıyor ama satırda açık bir ISO kodu yoksa eşlemesiz kalıyor (AUD/CA/SG dollar’lar artık USD olarak faturalandırılmıyor; bir ¥ RMB biçimi ~20×-sapmış JPY dönüşümü yerine açık bir uyarı taşıyor); çıplak 19xx/20xx sayıları her zaman yıldır; aralık rakamları ortağın dönemini devralıyor; profilin minimum ve target_range değerleri asla tek bir aralıkta birleştirilmiyor.
  • fixReportDate kapsamı (CAR-144 rev-2): sunucuda sabitlenen tarih düzeltmesi yalnızca ilk ## başlığından önceki ön-bölüme uygulanıyor (H2 başlıklı bir rapor temkinli bir no-op kazanıyor — bayat bir tarih kabul edilebilir, uydurulmuş olan değildir); ön-bölüm içinde: tek bir aday varsa o düzeltilir, değilse tek bir kalın **Date:** düzeltilir, o da yoksa hiçbir şey yapılmaz (iki kalın ya da iki düz aday hiçbirini yeniden yazmaz). FIX-5 PDF-etiket kapısı artık gerçek birleştirilmiş sözlüğü okuyor — eksik bir yerel ayar, İngilizce geri dönüşün üzerinden sessizce geçmek yerine hata veriyor.
  • Habr konum çipi + coğrafi kodlama sağlamlığı (CAR-142 rev-2): bir Habr meta çipi ancak yapısal kanıtla (bir şehir-filtresi bağlantısı ya da bir konum simgesi) şehre dönüşüyor — taşınma bildirimleri («Возможна релокация») ve istihdam türleri asla konum kılığına girmiyor; coğrafi kodlama önbelleği artık yeniden başlatmayı aşıyor (beforeExit/exit/SIGTERM+SIGINT üzerinde yeniden fırlatmayla akıtma, kirli bayrak yalnızca yazma yere indikten sonra temizleniyor); kapatma sınırlı (çıkış-döngüsü mandalı, nesil sayacı, tazelik LRU); tükenmiş bir coğrafi kodlama bütçesi genel bir 502 yerine 503 + Retry-After yanıtlıyor.
  • Paket önbellek-kırmama (CAR-145 r2+r3): kabuk /js/bundle.js?v=<content-hash> adresini gösteriyor — eşleşmede immutable, uyuşmazlıkta no-store — taze bir kabuğun önbelleğe alınmış eski bir paketle eşleştiği 5 dakikalık dağıtım penceresini ortadan kaldırıyor. Karma ve akış tek dosya tanıtıcısını paylaşıyor (yırtık okuma yok); kısa bir okuma, bütün bir dağıtımı zehirleyebilecek bir stat-geri-dönüş karması yerine null döndürüyor; make-bundle, kimliği ve .br/.gz eş-dosyalarını nokta-önekli bir geçici dosya + yeniden adlandırma yoluyla yazıyor — böylece öldürülen bir derleme ne yarım yazılmış bayt sunabilir ne de geçici dosyasını sızdırabilir.
  • Derin sayfa taşması (CAR-146): dosya adı tek başına bir telefonun dar ekranını aşan kayıtlı bir araştırma özeti #/deep sayfasını artık 390px ötesine itemiyor — kart kendi satırında sınırlanıyor, başlık sarılıyor, tarih tek satırda kalıyor; dar-görüntü-alanı taraması artık aşırı uzun tohumlanmış bir fikstürle #/deep üzerinden de yürüyor (iki uzak-QA çalışmasının tek bulgusu, kapatıldı).
  • Pipeline v2 sertleştirmesi (CAR-116 incelemesi): silmeler onaylıyor ve geri alınıyor (dürüst geri-alma metniyle), kartlarda ana-makineden şirket uydurması yok, FNV-1a satır kimlikleri, gerçek toplu sayımlar ve toplu işlemler üzerinde bir yeniden-giriş koruması.

Eklendi

  • Pipeline v2 (CAR-116): zenginleştirilmiş kartlar, gruplanmış bir görünüm ve geri almaya izin veren toplu ıskarta; 17 yeni pipe.* anahtarı 19 sözlüğün tamamında çevrilmiş olarak indi.
  • Reports v2 (CAR-118): puan-bandı/meşruiyet/şirket/tarih filtreleriyle canlı arama, sıralanabilir başlıklar (aria-sort), bant başına eylem düğmeleri taşıyan kalıcı bir kart görünümü, tıkla-filtrele puan histogramı ve birleşik «Company — Role» / «x.x/5» render’ı (window.ReportOps); 31 rep2.* anahtarı 19 sözlüğün tamamında çevrilmiş olarak indi.

Notlar

  • Her düzeltme, kırmızı→yeşil kanıt taşıyan bir inceleme turundan geçti; ilk paket r2 üzerindeki iki AI-inceleme YÜKSEK bulgusu (kısa-okuma karması, eş-dosya atomikliği) r3 ile kapandı ve CAR-143/CAR-144/CAR-142 turlarının her biri öncülünün açık bulgularını yeniden doğruladı.
  • Bilinçli olarak yapılmayanlar: harita küme görünümü CAR-125 olarak kalıyor (kuyrukta); sunucu-taraflı pipeline meta verisi geri yüklemesi ayrı bir bilet; rev-2 öncesi v1.259.0 durumları altında kaydedilen içerik için geriye dönük düzeltme yok.
  • Test tabanı: 5988 (+165); tarayıcı süiti 152 geçti / 0 başarısız / 1 seçime bağlı atlama. Hiçbir tarayıcı kaynağına dokunulmadı (kayıt defteri 121 = 116 EN + 5 RU · 116 adaptör); 48 yeni i18n anahtarı, ×19 fan-out ile birlikte özellik PR’lerinin kendileri içinde indi.

[1.259.0] — 2026-10-25

Ajan filosundan ikinci tren, altı düzeltme: rapor tarihleri sunucu tarafında sabitleniyor, harita coğrafi kodlayıcısı önbelleğe alıp RU şehirlerini okuyor, yardım ×18 yerelleştirilmiş düğme etiketlerini kullandırıyor, arayüz cümleleri dilleri karıştırmayı bırakıyor, maaş karşılaştırmaları sunucu tarafında hesaplanıyor — ve JS paketi önceden sıkıştırılmış dağıtılıyor (soğuk yükleme 3.1 MB → 598 KB).

Düzeltildi

  • Uydurulmuş rapor tarihleri (CAR-101): değerlendirme prompt’u bugünün tarihini artık sunucu tarafında sabitliyor («Date: alanı TAM OLARAK OLMALIDIR — harfiyen kopyala; asla uydurma») ve fixReportDate, kaymış bir tarihi her kabul noktasında (Anthropic dalı, Gemini alt-süreci, OpenAI-uyumlu kuyruk, /api/deep, auto-pipeline) bugüne yeniden yazıyor — bir uyarı + etkinlik kaydıyla; bu bir düzeltmedir, asla bir ret değil. Üretimdeki 349/789 rapor uydurulmuş tarihler taşıyordu; yenileri taşıyamıyor.
  • Harita coğrafi kodlaması (CAR-105): hh.ru/Habr satırlarının Kiril şehir dizgeleri artık coğrafi kodlayıcıya ulaşıyor; kalıcı ve sınırlı bir önbellek (data/geocode-cache.json, withFileLock), çözümlenmiş bir şehrin sağlayıcıya asla ikinci kez gitmemesini sağlıyor; coğrafi kodlama çağrıları istek başına bütçeleniyor, böylece harita 13.9 sn bloke olmak yerine aşamalı olarak doluyor.
  • Karma-dilli arayüz (CAR-108): 19 sözlükten 17’sinde 23 anahtarlı sızıntı düzeltildi (85 değer) — «все matching», «только remote», «Открыть Scan», «Evaluated → Applied…» hunisi ve daha fazlası, her yerel ayarın kendi ürün sözcük dağarcığını yeniden kullanan eksiksiz yerelleştirilmiş cümlelere dönüştü. i18n-no-latin-leaks, parça tablosu + huni sondasıyla genişletildi (kırmızı→yeşil).
  • Para birimi karar çevrilmesi (CAR-109): maaş karşılaştırması comp-compare.mjs içinde sunucu tarafında hesaplanıyor ve kanonik biçimde gömülüyor (Candidate minimum: … per YEAR (raw: …) karşısında JD offer: …); aylık ×12, k/к/тыс/萬 ve ondalık-virgül biçimleri karşılaştırmadan önce normalize ediliyor; belirsiz bir dönüştürme tek başına kararı asla çeviremez (zh-TW «€80–100k ниже минимума» vakası öldü). Model asla çarpma yapmıyor.
  • Yardım ×18 düğme etiketleri (CAR-107): yerelleştirilmiş yardım paketleri, arayüzün artık göstermediği İngilizce etiketleri kullandırıyordu («⚡ Run live», «Save», «Scan now») — görünüm kaynaklarından eşlenen 18 yerel ayarda 263 değişiklik; docs-assistant düzeltmeyi devralıyor.

Eklendi

  • Ön-sıkıştırılmış paket + önbelleklenebilir soğuk yükleme (CAR-104): make-bundle.mjs, sürüm anında bundle.js.br (brotli q11) + .gz üretiyor; paket-kapsamlı bir ara katman Vary: Accept-Encoding, public, max-age=300, must-revalidate + ETag/304 ile br > gz pazarlığı yapıyor; tazelik-korumalı (eş-dosyalar asla kimlik paketinden daha eski sürüm sunmaz), doğrudan artefakt çekimleri 404 veriyor, CSP bayt-aynı. Soğuk yükleme: 3.1 MB → ~0.6 MB tel (−%80); 5 dk içindeki tekrar ziyaretler ≈0 bayt aktarıyor.

Notlar

  • Altı düzeltmenin tamamı kırmızı→yeşil kanıtla (kendi süitlerinde 13 + 28 + 1 + 30 + 7 yeni vaka) ajan filosundan geldi ve inceleme turlarıyla cilalandı (CodeQL #579/#580/#584 kodda düzeltildi — stub URL’ler new URL().host ile ayrıştırılıyor, ölü bir prompt dizgesi düşüldü).
  • v1.258.0 puan geri-doldurması sayıları artık CAR-129’da kayıtlı (updated: 22, reportScoreless: 159).
  • Bilinçli olarak yapılmayanlar: 349 tarihsel rapor için geriye dönük tarih düzeltmesi yok (bir geri-doldurma sahibin onaylayacağı bir operasyon olurdu), harita küme görünümü yok (CAR-125 bu coğrafi kodlama düzeltmesinin arkasında kuyrukta kalıyor).
  • Test tabanı: 5823 (+74). Hiçbir tarayıcı kaynağına dokunulmadı (kayıt defteri 121 = 116 EN + 5 RU · 116 adaptör); i18n anahtarı yok (CAR-108 yalnızca mevcut anahtarların değerlerini düzenliyor).

[1.258.0] — 2026-10-25

Ajan filosundan tek tren üzerinde altı düzeltme: #/scan şirket sayacı evrenleri karıştırmayı bırakıyor, derin araştırma kaynak talep ediyor, form hataları alanı aydınlatıyor, yükleme durumları iskeletler ve anında h1 kazanıyor ve değerlendirmeler 37k-belirteçlik prompt öneklerini önbelleğe alıyor.

Düzeltildi

  • #/scan «Aktif şirketler» sayacı (CAR-100): pay, TÜM sonuç satırlarında ayırt edilen şirketleri sayıyordu (üretimde 1554 — tek başına hh.ru yüzlerce katıyor), payda ise API destekli izlenen şirketleri sayıyordu (~90) — tek kesirde iki evren. (a) eşleştirmesi: pay artık API destekli izlenen taramanın kendisinin getirdiği satırlar arasındaki şirketleri sayıyor (_entry ?? company ile eşleşen; hh.ru/telegram işveren satırları düşüyor); tarama-öncesi geri dönüş aynı evrene taşındı («104/90» okuyabiliyordu).
  • Derin araştırma uydurması (CAR-110): derin prompt artık katı bir sözleşme taşıyor — her olgusal iddia [source: domain.com] ile bitiyor (adlandıramıyorsa → söyleme; bir işaret uydurmak «unknown» yazmaktan daha kötüdür), bilinmeyen olgular unknown olarak yazılıyor ve rapor MUTLAKA bir ## Data freshness bölümüyle bitmelidir. Tazelik çapaları: bugünün UTC tarihi + POST /api/deep üzerinde isteğe bağlı bir şirket url (sınırlı, sunucu tarafında asla getirilmez).
  • Form hataları alanı vurguluyor (CAR-130): başarısız bir POST ilk form alanını aria-invalid + .is-error ile işaretleyip odağı ona veriyor (WCAG 3.3.1); düzenlenince temizleniyor. Ağ-hatası ipucu dağıtım-farkında — loopback geliştirici-komutu ipucunu koruyor, dağıtılmış bir kaynak bash web-ui/bin/start.md tavsiyesi yerine «sunucu yanıt vermiyor» mesajını alıyor (bağlantı banner’ında da aynı sabit-kod vardı).
  • Yükleme durumları (CAR-112): #/map ve #/tracker h1’lerini anında render ediyor (router odak hedefi ancak veri geldikten sonra var oluyordu) ve paylaşılan bir iskelet yardımcısı (Skeleton.rows, common.loading’i yeniden kullanan bir role="status" bölgesi içinde aria-hidden parıltı satırları), takipçi, tarama sonuçları ve harita kabuğundaki çıplak «Yükleniyor…» metninin yerini alıyor; prefers-reduced-motion nabzı durduruyor.
  • Değerlendirme prompt önbelleği (CAR-111): buildEvaluationPromptParts, ~37k-belirteçlik prompt’u bayt-kararlı bir öneke (CV + profil + mod dosyaları + talimatlar) ve JD kuyruğuna ayırıyor; Anthropic yolu [önek + cache_control: ephemeral] + [JD] gönderiyor — önek, ilkinden sonraki her çağrıda önbellek-okuma tarifesiyle faturalanıyor (≈10× daha ucuz). Eksik/uyuşmayan önek, bayt-aynı eski isteğe geri düşüyor; OpenAI-uyumlu basamak dokunulmadan bırakıldı (oradaki önbellekleme sunucu-taraflı).

Notlar

  • Altı düzeltmenin tamamı kırmızı→yeşil kanıtla (5 + 7 + 7 + 7 + 8 yeni vaka) ve inceleme turlarıyla ajan filosundan geldi; ilk CAR-111 CodeQL uyarıları (#579/#580) kodda düzeltildi — test stub’ı alt-dizge eşleştirmesi yerine URL ana makinesini ayrıştırıyor ve ölü bir tam-prompt dizgesi düşüldü.
  • Puan geri-doldurması üretimde çalıştırıldı (v1.256.0 uç noktası, sahibin onayıyla): updated: 22, missingReport: 0, reportScoreless: 159 — 159 puansız satır, başlıkları makine bloğundan önce gelen ya da ayrıştırılamayan puan biçimleri taşıyan raporlara işaret ediyor; yalnızca yeniden değerlendirmeyle ya da daha geniş bir ayrıştırıcı geçişiyle kurtarılabilir (CAR-129’da not edildi).
  • Bilinçli olarak yapılmayanlar: yol-süresi sütunu sona-sıralama değişikliği yok (önceden var olan Infinity-on-desc tuhaflığı), eski kullanım kayıtlarının geriye dönük yeniden fiyatlandırması yok, tarama filtre formları için .is-error tarzı vurgu yok (CAR-130, paylaşılan mod-sayfası gönderim yardımcısı + api.js ipucuyla sınırlı).
  • Test tabanı: 5749 (+36). Hiçbir tarayıcı kaynağına dokunulmadı (kayıt defteri 121 = 116 EN + 5 RU · 116 adaptör); i18n anahtarı yok (CAR-130 ipucu conn.down’u yeniden kullanıyor; iskelet bölgesi common.loading’i yeniden kullanıyor).

[1.257.0] — 2026-10-25

Ajan filosundan iki düzeltme: uygulama içi yardım asistanı Devanagari ve Tamil yazılarını anlıyor ve kullanım sayfası Hermes’in gerçekte neye mal olduğunu gösteriyor.

Düzeltildi

  • hi/ta için yardım asistanı getirimi (CAR-103): docs-assistant anahtar-sözcük dizgecinin kelime sınıfı [\p{L}\p{N}\u30fc]+ idi — birleştirme işareti yoktu. Her Devanagari matrası (ा ै ्…) ve Tamil sesli işareti (ே ை ்…) bir kelimeyi parçalara bölüyordu; uzunluk kuralı kısa parçaları düşürüyordu (bir Hintçe sorgu 0 bölümle eşleşiyordu), daha uzun kelimeler ise başları kesilerek alakasız bölümlerle çakışan anlamsız artıklara dönüşüyordu. Sınıf artık \p{M}’i içeriyor; CJK bigram yoluna dokunulmadı. hi «मैं स्कैन कैसे चलाऊं?» ve ta «ஸ்கேன் எப்படி இயக்குவது?» sorguları dağıtılan paketlerden doğru bölümleri getiriyor.
  • Hermes için kullanım maliyeti (CAR-106): normalizeUsage() sağlayıcı kullanımını {in, out}’a daraltıp ağ geçidinin bildirdiği cost’u sessizce düşürüyordu — #/usage, 9.5 M Hermes belirteci üzerinde $0.0000 gösteriyordu (fiyat tablosundaki satırı 0/0). Kullanım kaydı biçimi, geriye dönük uyumlu isteğe bağlı bir cost? kazanıyor; toplayıcı, kayıt başına sağlayıcının bildirdiği maliyeti yeğliyor ve yalnızca yokken fiyat tablosu tahminine dönüyor; çöp/negatif değerler düşürülüyor, asla uydurulmuyor.

Notlar

  • Her iki düzeltme de kırmızı→yeşil kanıtla (3 + 5 yeni test; 14/14 ve 10/10 yeşil; komşu süitler 78/78 ve 61/61) ajan filosundan geldi. İlk PR’ler (#470/#471), squash-merge edilmiş v1.256.0 ile çakışan bayat bir worktree tabanı taşıyordu — bunların yerine temiz cherry-pick’ler (#472/#473) geçti.
  • Bilinçli olarak yapılmayanlar: tarihsel data/llm-usage.jsonl satırlarının geriye dönük yeniden fiyatlandırması yok (bunlar maliyet alanı taşımıyor; yalnızca yeni kayıtlar yararlanıyor).
  • Test tabanı: 5713 (+8: docs-assistant ×3, usage ×5). Hiçbir tarayıcı kaynağına dokunulmadı (kayıt defteri 121 = 116 EN + 5 RU · 116 adaptör); i18n anahtarı yok.

[1.256.0] — 2026-10-25

Takip verisi kalitesi: rol hiçbir zaman şirket olarak kaydedilmiyor, bir iş panosu hiçbir zaman işveren olarak kaydedilmiyor, puanlanmamış satırlar artık en önde belirmeyi bırakıyor — ve tek-seferlik bir uç nokta, eksik puanları raporların kendilerinden geri dolduruyor.

Eklendi

  • Puan geri-doldurması (CAR-129): POST /api/tracker/backfill-scores, bağlantılı raporu ayrıştırılabilir bir puan taşıyan satırların Puan hücresini dolduruyor (değerlendirilmiş 181 satırın raporu vardı ama puanı yoktu). Puanlı satırlara, açık sentinel’lere (N/A), raporsuz satırlara ve puansız raporlara asla dokunulmuyor; yalnızca Puan hücresi, dosya kilidi altında yeniden yazılıyor; puan biçimi yazım yerinde doğrulanıyor ve takipçinin X.X/5 kuralına normalize ediliyor; çalıştırma idempotent ve {ok, updated, missingReport, reportScoreless} döndürüyor.

Düzeltildi

  • Rol hiçbir zaman şirket değildir (CAR-128): guessCompanyRole tire-başlıklı satırın SOL tarafını şirket olarak ele alıyordu, oysa panolar her iki sıralamayı da yazıyor — «Senior Frontend Engineer - Grafana Labs» rolü ŞİRKET olarak kaydediyordu (13 satır: Grafana, CircleCI…). Artık kelime-sınırlı bir rol-anahtar sözcüğü sezgisi rol tarafını seçiyor ve bir istihdam türü asla işveren olmuyor («Senior Engineer - Remote (EU)», «Remote (EU)» kaydetmek yerine hiçbir şey kaydetmiyor).
  • Bir iş panosu hiçbir zaman işveren değildir (CAR-127): alan-adı-slug geri dönüşü hh.ru satırlarını «hh» olarak kaydediyordu (120 satır). hh/habr slug’ları işveren-değil listesine katılıyor; cümle-içi işveren çıkarımı («в компании X», «X ищет») artık iş-panosu ana makineleri (hh.ru/kz/uz/by, habr.com) için de çalışıyor — sayfa metninin gerçek işvereni adlandırdığı yerde. Yolda kök neden de bulundu: o çıkarım desenlerindeki ASCII \b/\w Kiril alfabesiyle hiçbir zaman eşleşmiyordu — v1.248.4’ten beri sessizce ölü; Unicode lookbehind’ları ve \p{L} sınıfları onların yerini alıyor.
  • Puanlanmamış satırlar sona sıralanıyor (CAR-129): takipçinin puan sıralaması bir -1 sentinel’i kullanıyordu; böylece varsayılan artan sıralamayla her puanlanmamış satır her puanlıdan önce beliriyordu. Boş değerler artık her iki yönde de sona sıralanıyor (puan FİLTRESİ kendi -1’ini koruyor — “puanlanmamış bir ≥4 filtresine takılır” orada doğru semantiktir).

Notlar

  • Tarihsel satırlar bu sürümle TAŞINMIYOR: ayrıştırıcı düzeltmeleri yeni değerlendirmelere uygulanıyor; puanlar geri-doldurma uç noktası üzerinden geri kazanılabilirken, 120 «hh» işveren hücresi yeniden yazım değil yeniden değerlendirme gerektiriyor.
  • Bir opus-5-5 inceleme turu içine katıldı: çapasız «X ищет» deseni dağıtımdan önce atıldı (fiilden önceki herhangi bir büyük-harfli dizi işveren olarak kaydedilirdi — uydurma-yapmama invariatı), cümle-başı «В…» çapaları eklendi ve geri-doldurma yazıcısı hedef hücreyi yeniden denetliyor (manuel düzenlemelerden sonra yinelenen # satırları mevcut), elle-bozulmuş kısa bir satırın sütun sayısını koruyor ve ilk tablo-dışı satırda duruyor. Noktalı bir adın içindeki nokta («Сбер. IT»), «в компании» çapası için cümle noktasından ayırt edilemez — tutucu önek («Сбер») kaydediliyor; fiile-çapalı desen tam biçimi yakalıyor.
  • Bilinçli olarak yapılmayanlar: tracker.js’ten birim-test-edilebilir bir lib’ye karşılaştırıcı çıkarımı yok (kaynak-statik kapı kalıyor; CAR-129’da takip işi olarak not edildi), yol-süresi sütunu sona-sıralama değişikliği yok (önceden var olan Infinity-on-desc tuhaflığı), «hh» satırları için veri taşıması yok.
  • Test tabanı: 5705 (+10: auto-pipeline-jd-gate içinde 5 kimlik, 2 CAR-128, CAR-129 sıralama kapısı, düşmanca yol pinini de kapsayan 4 geri-doldurma — yerlerine konan v1.248.x örnekleri düşülünce). Hiçbir tarayıcı kaynağına dokunulmadı (kayıt defteri 121 = 116 EN + 5 RU · 116 adaptör); i18n anahtarı yok.

[1.255.2] — 2026-10-24

Canlı regresyondan ve bir üretim çökme bildiriminden gelen üç kullanıcıya-görünür düzeltme: #/scan render çökmesi, kör Vietnamca dil denetimi ve yinelenen zh-TW özet-bloğu kaybı.

Düzeltildi

  • #/scan çökmesi (CAR-99): v1.253.0’dan bu yana sayı-kapısı yenilemesi FALLBACK_SOURCES literalini her girdinin sonuna çift virgül koyarak yazdı — dizide 120 eleman-bırakma boşluğu. Tarama görünümündeki new Set(FALLBACK_SOURCES.map((s) => s.value)) böylece undefined tuttu ve şirket sınıflandırıcısının id.length’i her sayfa render’ında TypeError: Cannot read properties of undefined (reading 'length') attı (üretimde logbuf yakaladı). Boşluklar kaldırıldı ve yeni bir kapı (4 özellik, kırmızı-doğrulanmış) dosyayı çalıştırıp herhangi bir boşlukta, kullanılamaz girdide ya da adaptör-kimliği Set’indeki bir undefined’da başarısız oluyor — yalnızca-metin sapma kapısı bu sınıfı göremiyordu.
  • Kör vi dil denetimi (CAR-97): Vietnamca Latin yazıdır ve canlı-QA stop-word tablosunda girdisi yoktu; bu yüzden “vi stop words” İngilizce eşleşmeleri sayıyordu ve bir Vietnamca yanıt report not in vi olarak okunuyordu (canlı regresyon: vi 2, en 2). Vietnamcanın artık kendi on-kelimelik işlev-sözcüğü tablosu var — saf bir vi raporu geçiyor, İngilizce olan hâlâ düşüyor.
  • zh-TW SCORE_SUMMARY bloğunu kaybetti (CAR-98): kapanış dil hatırlatması yalnızca makine biçiminin çevrilmemesi gerektiğini söylüyordu, özet bloğunun var olması gerektiğini asla — kısa bir zh-TW raporu (5.983 karakter) A–G bloklarını taşıyordu ama bloğu tümüyle atlıyordu (v1.239.2 sınıfı bir yinelenme). Açılış yönergesi ve kapanış hatırlatması artık bloğun zorunlu olduğunu ve bloksuz raporun geçersiz olduğunu söylüyor.

Notlar

  • Bu sürüm bilinçli olarak hiçbir tarayıcı kaynağını, kayıt defteri sayısını (121 = 116 EN + 5 RU · 116 adaptör) ya da sağlayıcı kablolamasını değiştirmiyor — yalnızca düzeltmedir, sayı-kapılarına dokunulmadı.
  • Test tabanı: 5695 (+9: car99-fallback-holes ×4, car97-vi-lang-check ×4, CAR-98 prompt değişmezi ×1). Tarayıcı süiti 143/143. vi/zh-TW canlı yeniden-denetimi dağıtım-sonrası regresyonla geliyor.

[1.255.1] — 2026-10-24

İki inceleme düzeltme turu: Vietnamca yerelleştirmesinin Opus incelemesi (9 bulgu) ve CAR-91/92 düzeltmelerinin ikinci tur incelemesi (5 zorunlu düzeltme) — her ikisi de kırmızı→yeşil testlerle kapatıldı.

Düzeltildi

  • vi yerelleştirmesi inceleme turu (CAR-88 devamı): project.subtitle / project.roleHint içine sızan Hangul glifi (신) düzeltildi (độ khớp tín hiệu); EN sözlüğünün taşımadığı bir vi değerindeki herhangi bir CJK/Kana glifi için başarısız olan bir kapı eklendi. docs/help/vi.md içindeki altı boşluklu markdown URL’si (what-is career-ops, apply for a job, set up playwright ve üç tane daha) gerçek kılavuz slug’larına kısa çizgili biçime çevrildi; URL’lerde-boşluk-olmaz kapısı eklendi.
  • Değerlendirme başlık sınırları (CAR-92 r2 H1): &, ., /, ' artık blok harfinin sol sınırında kelime karakteri sayılıyor — ## Q&A, ## Plan B, ## Ph.D. requirement, ## E-commerce artık A/B/D/E blokları olarak kaydedilmiyor; çıplak satır sonu sonlandırıcısı yalnızca bir blok-kelime dizgecinden (Block/блок/블록/…) sonra kabul ediliyor; ASCII - yazılı-sonlandırıcı sınıflarından çıkarıldı, böylece E-commerce/ई-मेल başlıkları hayatta kalıyor.
  • Ukraynaca/Rusça numaralı raporlar (CAR-92 r2 H2): А Б В Г Д Є Ж dizi algılayıcısı artık paylaşılan bir yardımcı; bir başlık düzeyinde 3+ dizi harfi bulduğunda o düzey kesicinin referans düzeyi oluyor — harfli ### A. alt bölümleri raporu artık Б bloğunda kesmiyor.
  • Taşınan-satır yaşam döngüsü (CAR-92 r2 M1): başarısız bir kaynağın sonraki taramaya taşıdığı satırlar carriedSince damgası alıyor, 30 gün sonra ya da 5 art arda taşınmadan sonra atılıyor ve sessizce sonsuza dek birikmek yerine taze satırların arkasına ekleniyor.
  • Gemini sentez paydası + legitimacy (CAR-92 r2 M2) ve alt süreç gövde-puanı yolu (M3): bulgular dosyasından okundu, kırmızı testlerle düzeltildi.
  • Soğuk-yükleme paketi sapma kapısı vi sözlüğü için güncellendi (90 script etiketi / 87 paketlenebilir) ve kullanılmayan test bağlaması kaldırıldı (CodeQL 572).

Notlar

  • İncelemenin işaretlediği README.vi “Son sürüm” bandındaki adaptör-sayısı ifadesi Önceki bandında yaşıyor ve zaten EN README ile bayt-bayt aynı — EN↔vi paritesini korumak için dokunulmadan bırakıldı (commit gövdesinde belgelendi).
  • Test tabanı: 5686 (+26: eval-validate-opus-r2, scanner-carryover-r2, vi-kapısı doğrulamaları). Kayıt defteri değişmedi: 121 kaynak (116 EN + 5 RU) · 116 adaptör.

[1.255.0] — 2026-10-24

Vietnamca (Tiếng Việt), 19. arayüz dili olarak katılıyor — EN ile tam pariteli 1525 anahtarlık sözlük, vi/vi-VN algılama, eksiksiz yardım paketi, README ve CHANGELOG aynaları, cvstart.org açılış sayfası entegrasyonu ve dil değiştiricideki 🇻🇳.

Eklendi

  • Vietnamca (vi) — 1525/1525 anahtar, en ile tam parite; detect() vi ve vi-VN kabul eder; Vietnamca LTR’dir (asla RTL_LANGS’a eklenmez). ‘Pipeline’ ‘Pipeline’ olarak kalır — standart teknik ödünç kelime, beyaz listede.
  • Eksiksiz docs/help/vi.md (33 H2 / 125 H3), ayrıca README.vi.md ve CHANGELOG.vi.md aynaları ve prompts.mjs içindeki Vietnamca iskele dizeleri (LOCALE_NAMES + SCAFFOLD_STRINGS) — Vietnamca LLM çıktısı kutudan çıktığı gibi çalışır.
  • cvstart.org açılış sayfasının Vietnamca’sı — site/src/i18n/vi.json, sitemap locale girdisi ve bir dashboard-vi.png ekran görüntüsü; dil değiştirici 🇻🇳 kazanır (19 konum).
  • Sayım kapıları 18 → 19 — LANGS, detect prob’ları, i18n denetimi, changelog paritesi, README çeviri bloğu, locale taraması — ayrıca red-first tests/i18n-vi-locale.test.mjs (139 satır).

Notlar

  • Açılış sayfası vi kazanıyor — ta emsalinden kasıtlı bir sapma (o sürüm açılış sayfasını bilerek 17’de tutmuştu); sürüm şartnamesinde belgelendi.
  • vi Latin yazıdır, bu yüzden no-latin-leaks kapısı uygulanmaz (Latin olmayan dilleri korur); Latin teknik kelime hazinesi burada normdur.
  • Test tabanı: 5634 → 5642 (1 atlanan = katılım-isteğe bağlı yerleşim-yakalama tarayıcı testi, değişmedi).

career-ops-ui v1.267.1 · page 1/10 · mirror of the project changelog for cvstart.org