KAPSAM: YALNIZ YEREL MOD. Ortak HTTP API ayrı ve canlıdır: /ggmes-1d-http-v1.txt Başlangıç: /1d.txt | Yetenekler: /ggmes-1d-capabilities-v5.json Bağlanıldığında window.GGMES1D ortak sunucuya yönlenir; aşağıdaki depolama bilgileri yerel moda aittir. GGMES 1D API v2 — tarayıcıya ait bağımsız çalışma alanı window.GGMES1D; önce await GGMES1D.ready. Bu API JavaScript çalıştırabilen istemci içindir. HTTP isteğiyle çağrılan sunucu API'si değildir. Depolama: bu site adresi ve tarayıcı profiline ait IndexedDB. Diğer bilgisayarlarla paylaşılmaz. Disk, terminal, model bağlantısı, ağ ve kod çalıştırma yoktur; capabilities() bunları false bildirir. Tarayıcı verilerini temizlemek dosyaları ve geçmişi siler. Düzenli dışa aktarın. capabilities() -> version, storage, scope, limits, methods, gerçek yetenekler. list() -> [{path,revision,bytes}] — içerik içermez. read(path) -> {path,revision,bytes,content}. write(path,content,{expectedRevision:null}) -> yeni dosya oluşturur. write(path,content,{expectedRevision:3}) -> yalnız mevcut sürüm 3 ise yeni sürüm 4'ü kaydeder. patch(path,[{oldText:'hedef metin',newText:'yeni metin'}],{expectedRevision:3}) -> {path,revision,bytes,applied}; yanıt tam dosya içeriği taşımaz. 1–32 düzenleme sırayla uygulanır; her oldText o adımdaki içerikte tam olarak bir kez bulunmalı. Boş oldText, bulunamayan veya birden çok eşleşen hedef ve eski sürüm reddedilir. Bütün düzenlemeler ve geçmiş TEK atomik kayıttır; bir hata tüm işlemi geri alır. Regex kullanılmaz. newText boşsa hedef silinir. Ara içerikler de 256 KiB sınırına tabidir. oldText + newText toplamı en çok 1 MiB. Hatalar: INVALID_PATCH, PATCH_NOT_FOUND, PATCH_AMBIGUOUS, CONFLICT. Hata index alanı sıfır tabanlıdır. history(path) -> en yeniden eskiye [{path,revision,bytes,content,savedAt,source}]. restore(path,revision,{expectedRevision}) -> geçmiş içeriği YENİ sürüm olarak kaydeder; mevcut sürümü sessizce ezmez. search(query,{limit:50}) -> {query,matches:[{path,revision,line,text}],truncated}. Büyük/küçük harfe duyarlı, düz metin alt dize araması. Regex değildir. Tek satırlık sorgu 1–1024 karakter; limit 1–50. Satır başına bir sonuç. readRange(path,{startLine:1,endLine:100}) -> {path,revision,startLine,endLine,totalLines,content}. 1 tabanlı, en çok 200 satır. Bitiş dosya sonuna kırpılır; başlangıç dosya dışındaysa hata. diff(path,proposedText) -> {path,revision,algorithm:'line-by-line',changedLines,truncated,changes}. Konumsal satır karşılaştırması; ilk 50 değişiklik. Git diff veya birleştirme değildir. exportWorkspace() -> JSON metni: {format:'ggmes-1d',version:1,files:[{path,content}]}. Geriye uyumlu taşınabilir güncel içerik yedeği; geçmiş ve sürüm numaraları dışa aktarılmaz. importWorkspace(json) -> {imported,paths}; yalnız yeni yollar. Tek çakışma tüm aktarımı geri alır. Sınırlar: 32 dosya; dosya başına 256 KiB UTF-8; güncel içerik toplamı 2 MiB; güncel içerik + geçmiş içerik toplamı 12 MiB. Bunlar fiziksel IndexedDB disk boyutu değildir. Dosya başına güncel sürüm DAHİL son 20 sürüm tutulur. Başarılı kayıtta daha eski geçmiş sürümleri otomatik budanır; güncel dosya silinmez. 12 MiB aşılıyorsa işlem reddedilir. Yollar NFC-normalize göreli yollar; en çok 128 karakter; .., boş parçalar ve ters eğik çizgi yasak. V1 -> V2 geçişi atomiktir: mevcut files kayıtları korunur, o anki sürümleri history'ye eklenir. Geçmişte tutulmamış v1 sürümleri yeniden üretilemez. Göç kayıtlarının savedAt değeri null'dır. Eski sekme geçişi engelliyorsa STORAGE_BLOCKED döner; eski sekmeyi kapatıp yeniden yükleyin. Eski v1 kodu v2 veritabanını açamaz; dönüş için v2 dışa aktarımını farklı çalışma alanında kullanın. Hata: Promise reddi; error.code / error.message / error.details. Önemli kodlar: INVALID_PATH, INVALID_CONTENT, REVISION_REQUIRED, CONFLICT, NOT_FOUND, FILE_LIMIT, FILE_COUNT_LIMIT, TOTAL_LIMIT, HISTORY_TOTAL_LIMIT, HISTORY_NOT_FOUND, INVALID_REVISION, INVALID_RANGE, INVALID_QUERY, INVALID_LIMIT, INVALID_OPTIONS, INVALID_IMPORT, IMPORT_CONFLICT, STORAGE_ERROR, STORAGE_BLOCKED, MIGRATION_INVALID. Yazma, geçmiş ve import aynı işlem içinde atomiktir; başarı yalnız commit sonrası döner. window.addEventListener('GGMES1D-change', event => ...) event.detail = {operation:'write'|'restore'|'import',files:[{path,revision}],remote:boolean}. Bildirim içerik taşımaz. Aynı kaynaktaki v2 sekmeler BroadcastChannel destekleniyorsa bildirim alır. Bildirim kaçırılabilir; gerçek durumu list/read ile doğrulayın. GGMES1D-ready olayı depolama hazır olduğunda yayımlanır; ready Promise'i asıl sözleşmedir.