# Geliştirici Alanları (Spaces)

> Tema ve uygulama Spaces’leri: numaralı değişmez sürümler, staged ve production hedefleri, anında canlıya alma/geri alma, kimlerin kullanabildiği ve paket gereksinimi.
>
> Kaynak: https://tecof-app-dev.vercel.app/spaces · Bölüm: CLI · Son güncelleme: 2018-10-20

Spaces, özel temaları ve partner uygulamalarını terminalden geliştirip yayınlamanın yoludur. Kodu yerelde (ya da bulutta) geliştirirsiniz; `tecof theme push` yalnız değişen dosyaları yükler ve her yükleme numaralı, değişmez bir **sürüm** olur. Sürümü önizler, hazır olunca yeniden derlemeden saniyeler içinde canlıya alırsınız. Bir sorun çıkarsa önceki canlı sürüme yine saniyeler içinde dönersiniz.

> **Durum (11.10.2026):** Spaces yeni. `tecof spaces`, `tecof theme`, `tecof tokens`, `tecof status`, `tecof doctor`, `tecof setup agent` ve `tecof app push|versions|promote|rollback` komutları `@tecof/cli` **0.2.0** ile gelir; npm'deki ilk sürüm (0.1.0) yalnız uygulama komutlarını içerir. `tecof --version` 0.2.0'dan küçükse `npm install -g @tecof/cli@latest` ile güncelleyin. CLI Node.js 20 ya da üstünü ister.

---

## Kavramlar

| Kavram | Anlamı |
| :--- | :--- |
| Space (alan) | Yayınlanabilir birim: bir mağazanın tema kurulumu ya da bir partner uygulaması. Her alan Tecof'ta bir GitHub deposu ve bir Vercel projesiyle eşleşir |
| Alan kimliği | Tema: `thm_<kurulum kimliği>` (paneldeki `/app/themes/<kimlik>/versions` adresinde görünen kimlik). Uygulama: `app_<uygulama kimliği>` (`tecof.app.json` içindeki `id`) |
| Sürüm (`vN`) | Alan deposundaki bir commit ve onun üretim derlemesi. Numara alan başına artar ve bir kez verilir; aynı numara başka içeriğe gitmez |
| Canlı (live) | Mağazanın ya da uygulamanın alan adlarının o anda gösterdiği sürüm |
| Hedef: staged | Varsayılan push hedefi. Canlı sitenin ortam değişkenleriyle tam bir üretim derlemesi yapılır ama alan adı **atanmaz**; canlı site değişmez. `promote` ile yeniden derlemeden canlıya çıkar |
| Hedef: production | `--prod` ile push. Commit doğrudan `main` dalına gider, derleme bitince canlıya çıkar |
| Taban (base) | Push'unuzun üstüne kurulduğu `main` commit'i. Staged bir sürüm yalnız `main` bu tabandan ileri gitmediyse canlıya alınır |
| Kaynak (source) | Sürümü neyin ürettiği: `cli` (CLI push'u ya da `tecof app deploy`), `ide` (Cloud IDE kaydı), `ai` (AI tema işi), `git` (`main` dalına giden diğer commit'ler) |

---

## Nasıl Çalışır

```text
yerel klasör ──push──▶ v12 (staged, alan adı yok) ──open──▶ korumalı önizleme bağlantısı
                         │
                         └──promote──▶ v12 canlıda (yeniden derleme yok; main → v12 commit'i)
                                          │
                                          └──rollback──▶ önceki canlı sürüm (anında)
```

1. **Push:** CLI projeyi tarar, her dosyanın git blob SHA-1 özetini çıkarır ve yalnız depoda olmayan içerikleri yükler. Yerelde sildiğiniz dosyalar depodan da silinir.
2. **Sürüm:** Tecof değişiklikleri tabanın üstüne commit'ler, commit'i `tecof/v12` etiketiyle işaretler ve üretim derlemesini başlatır. Bu derleme alan adı almaz.
3. **Önizleme:** Derleme hazır olunca `tecof theme open v12` sürümü korumalı bir bağlantıda açar.
4. **Canlıya alma:** `tecof theme promote v12` alan adlarını bu derlemeye çevirir; yeniden derleme yapılmaz. Aynı anda `main` dalı v12'nin commit'ine ileri alınır.
5. **Geri alma:** `tecof theme rollback` alan adlarını bir önceki canlı sürüme döndürür.

Kurallar ve ayrıntılar: [Sürümler, Canlıya Alma ve Geri Alma](/versions-and-rollback).

---

## main Dalı Kaynak Gerçeği Olarak Kalır

Her alanın deposunda `main` dalı, sitenin kodunun tek doğru kaynağıdır:

- Cloud IDE kayıtları, AI tema işleri ve MCP ile yapılan commit'ler eskisi gibi `main` dalına gider ve derleme bitince canlıya çıkar; `tecof theme push --prod` de aynı yolu izler. Bu yayınlar da sürüm listesinde kendi kaynaklarıyla (`ide`, `ai`, `git`, `cli`) görünür.
- Staged sürüm `main` dalına yazılmaz; commit yalnız `tecof/vN` etiketinde durur. Sürüm canlıya alınınca `main` o commit'e **hızlı ileri** (fast-forward) alınır. Böylece canlı site ile `main` aynı kodu gösterir ve herkes aynı geçmişi görür.
- Canlıya alma yalnız hızlı ileri mümkünse yapılır. Siz push ettikten sonra başka biri (Cloud IDE, AI, başka bir geliştirici ya da CI) `main` dalını değiştirdiyse işlem başlamaz ve `409 base-moved` döner; güncel `main` dalını çekip (`tecof theme pull`) yeniden push edersiniz. Böylece başkasının değişikliği, eski tabana kurulmuş bir sürümle fark edilmeden geri alınmaz.

---

## Önceki Akışla Karşılaştırma

| | Spaces öncesi | Spaces ile |
| :--- | :--- | :--- |
| Tema kodu | Cloud IDE, AI ya da MCP ile; her kayıt `main` dalına gidip canlıya çıkar. CLI'da tema komutu yoktu | Yerelde ya da bulutta geliştirme, `tecof theme push` |
| Yükleme | Uygulamada `tecof app deploy` her seferinde tüm kaynağı arşivleyip yükler | Yalnız değişen dosyalar yüklenir; silmeler de aktarılır |
| Canlıya çıkmadan deneme | Cloud IDE oturum önizlemesi; üretim derlemesi canlıya çıkmadan denenemez | Staged sürüm: üretim derlemesi, alan adı yok, korumalı önizleme |
| Canlıya alma | Derleme bitince kendiliğinden | Staged sürüm tek komutla, yeniden derlemeden |
| Geri alma | Düzeltme commit'i ve yeni derleme | Önceki canlı sürüme saniyeler içinde |
| Sürüm geçmişi | Yok | Her derleme numaralı bir sürüm; panelde **Sürümler** ekranı |
| Otomasyon | — | `--json` makbuzları, ajan modu, kapsamlı CI token'ları |

Önceki yollar çalışmaya devam eder: Cloud IDE ve AI yine `main` dalına yayınlar, `tecof app deploy` hâlâ çalışır.

---

## Kimler Kullanabilir

### Temalar

- Bir mağazanın ekibindeki her kullanıcı o mağazanın tema alanlarını görür. Mağaza ekibine eklenmiş ajans ve partner kullanıcıları da buna dahildir; partner hesabı **gerekmez**.
- Yalnız **özel temalar** yazılabilir: kendi deposu ve Vercel projesi olan, bu mağazaya ait temalar. Özel tema panelde yapay zekâyla üretilir, boş iskeletten açılır ya da bir katalog temasından kopyalanır.
- Erişim her istekte yeniden doğrulanır: ekipten çıkarılan kullanıcının CLI'ı o mağazanın alanlarına hemen erişemez.

### Uygulamalar

- Aktif bir partner üyeliği gerekir. Partner hesabınızın, Tecof barındırmasını kullanan (`hosting: "tecof"`) platform uygulamaları alan olarak listelenir.
- Kendi sunucunuzda barındırılan (`hosting: "external"`) uygulamalar alan değildir; dağıtımları sizdedir.
- Partner üyeliğiniz biterse CLI oturumunuz tema alanlarında çalışmaya devam eder, uygulama uçları `403 developer-not-partner` döner.

### Salt Okunur Alanlar

`tecof spaces ls` her alanın yazılabilir olup olmadığını gösterir. Salt okunur alanda sürüm listesi, günlükler ve önizleme okunabilir; push, canlıya alma, geri alma, yerel geliştirme değişkenleri ve bulut geliştirme `403 space-read-only` ile reddedilir.

| `readOnlyReason` | Anlamı | Ne yapılır |
| :--- | :--- | :--- |
| `catalog-theme` | Katalog (paylaşımlı) teması; aynı kod yüzlerce mağazada çalışır. Kaynak kodu da indirilemez (`403 space-source-forbidden`) | Temayı özel temaya kopyalayın (aşağıda) |
| `shared-theme` | Özel tema başka bir mağazaya ait | Temanın ait olduğu mağazanın alanını kullanın |
| `no-repo` | Temanın deposu henüz yok | Tema kurulumu tamamlanınca alan yazılabilir olur |
| `no-project` | Temanın Vercel projesi henüz yok | Tema kurulumu tamamlanınca alan yazılabilir olur |
| `external-hosting` | Uygulama kendi sunucunuzda barındırılıyor | Kendi dağıtımınızı kullanın ya da Tecof barındırmasına geçin |

**Katalog temasını özel temaya kopyalama:** Panelde temanın **Sürümler** ekranındaki **Özel temaya kopyala** düğmesi Tecof asistanını bu istekle açar; asistan işlemden önce onayınızı ister ve kullanılacak krediyi gösterir. Kopya hazır olunca etkinleşir, o zamana kadar mevcut temanız yayında kalır. Uzak MCP sunucusunda aynı işi `fork_theme_to_custom` aracı yapar ([MCP](/mcp)). Kopyanın kendi deposu, Vercel projesi ve sürüm geçmişi olur.

---

## Paket Gereksinimi

Tema alanına yazan işlemler — push, canlıya alma, geri alma ve bulut geliştirme — mağaza paketinde **Özel Temalar** ve **Kod Erişimi** özelliklerinin ve geliştirme modunun (Cloud IDE) açık olmasını ister. Bu, Cloud IDE'nin istediği koşulla aynıdır: hiçbir paket CLI'dan Cloud IDE'nin vermediği bir kod yetkisi almaz.

Okuma işlemleri pakete bağlı değildir: alan ve sürüm listesi, günlükler, önizleme bağlantısı, kaynak indirme (`tecof theme pull`) ve yerel geliştirme (`tecof theme dev`).

| Hata | Anlamı |
| :--- | :--- |
| `403 plan-feature-unavailable` | Pakette gereken özellik yok; `data.feature` eksik özelliği, `data.currentPlan` mevcut paketi verir |
| `403 plan-module-locked` | Geliştirme modu pakete dahil değil; `data.requiredPlan` gereken paketi verir |

Uygulama alanları mağaza paketine bağlı değildir.

---

## Tek Hesap, Kullanıcıya Bağlı Oturum

`tecof login` ile açılan oturum kişisel hesabınıza bağlıdır, bir partner hesabına değil. Aynı oturumla üyesi olduğunuz mağazaların özel temalarında ve partner hesabınızın uygulamalarında çalışırsınız. Cihaz oturumu 30 gün geçerlidir ve 14 gün kullanılmazsa düşer.

CI için hesabınızın tüm erişimini taşıyan cihaz oturumu yerine yalnız gereken alana ve yetkiye sınırlı bir **kapsamlı token** kullanın: [Güvenlik ve CI](/dev-security).

---

## Bu Bölümün Sayfaları

| Sayfa | İçerik |
| :--- | :--- |
| [Tema Geliştirme: Hızlı Başlangıç](/theme-quickstart) | Kurulum, giriş, kodu indirme, yerel ve bulut geliştirme, push, önizleme, canlıya alma, geri alma |
| [Sürümler, Canlıya Alma ve Geri Alma](/versions-and-rollback) | Sürüm durumları, staged ve production, önizleme bağlantıları, canlıya alma ve geri alma kuralları, panel ekranı |
| [Güvenlik ve CI](/dev-security) | Kimlik bilgisi saklama, token ömürleri, CI token'ları, GitHub Actions, gizli anahtar taraması, ajan modu |
| [CLI Başvurusu](/cli-reference) | Tüm komutlar ve seçenekler, ortam değişkenleri, çıkış kodları, JSON makbuzları, yok sayma kuralları, sınırlar |
| [Hızlı Başlangıç: Tecof CLI](/app-quickstart) | Uygulamalar için `tecof app` akışı ve `tecof app push` ile sürümler |
