# Cleverphant — UPDATE (esamos instaliacijos atnaujinimas)

> Kaip atnaujinti **jau įdiegtą** Cleverphant instaliaciją po dev serverio užduočių.
> **Fresh install** → žr. [`INSTALL.md`](INSTALL.md). Paketai ateina iš Satis (`^1.0` semver tag'ai).
> Šitas failas ateina su paketu → consumer'yje skaitomas per `vendor/va-themes/cleverphant/UPDATE.md`.

---

## ⚠️ Update metu NENAUDOK `cleverphant:install`

`cleverphant:install` **PIRMA IŠVALO** esamą web turinį (Pages/News/FAQ/Menus per `CleverphantContentWiper`) — jis skirtas TIK first-install / eksplicitiniam reset'ui. Update'ui naudok **`cleverphant:upgrade`** (idempotent, content-safe).

> Ta pati taisyklė galioja ir kitų temų clean-slate flagams — jie visi install/reset-only, NIEKADA update'ui: Florial `florial:seed-content --fresh`, Seglo `seglo:install --wipe-foreign`. Update'ui naudok atitinkamai `florial:upgrade` / `seglo:upgrade` (be jokio wipe flago).

---

## Standartinis update

```bash
# 1) Paketai (Satis rebuild OPS pusėje turi būti įvykęs)
composer clearcache
composer update va-themes/cleverphant "va-core/*" "va-modules/*" -W

# 2) DB migracijos — pasiima naujas struktūrines migracijas
#    (pvz. 2026-08: Naujienlaiškio „Prenumeratoriai" punktas → admin sidebar DB meniu)
php artisan migrate --force

# 3) Content-safe sync: FORMOS + tema + permissions (idempotent)
php artisan cleverphant:upgrade --force --force-forms
#    --force        : praleidžia patvirtinimą (deploy/CI)
#    --force-forms  : PERRAŠO contact/lead/newsletter formų definicijas dabartine
#                     paketo versija. BŪTINA kai užduotis pakeitė formos laukus
#                     (pvz. 2026-08 kontaktų forma: „Kada" + „Kaip apie mus"
#                     radio'ai, be collapsible, be poreikis/kita_data). BE šito
#                     esamos formos LIEKA su sena definicija (firstOrCreate).
#                     Pateikimai (form_submissions) NIEKADA neliečiami.

# 4) Web meniu (kol cleverphant:upgrade neapima web.main — žr. žemiau)
php artisan db:seed --class="ViartasThemes\Cleverphant\Database\Seeders\CleverphantMenusSeeder" --force
#    Perseed'ina web.main → Cleverphant nav. SAUGU (liečia TIK meniu, ne turinį).

# 5) Frontend (Node/npm NEREIKIA — pre-built)
#    themes:publish-assets kopijuoja VISĄ paketo public/: build + img + FONTS + favicon.
php artisan themes:publish-assets
php artisan vendor:publish --tag=package-assets --force
php artisan optimize:clear
```

> Turinį iš naujo užsėti (SĄMONINGAI, ištrinant esamą) reikia TIK pilnam reset'ui:
> `php artisan cleverphant:install --force` — **ištrins admin-redaguotą turinį**.

---

## Ką atneša 2026-08 update (kontekstas)

| Sritis | Kas pasikeitė | Kaip pasiima |
|---|---|---|
| **Formos render** | Viešos formos (kontaktai/pradeti) dabar renderinamos per `va-core/form-builder` (native 2-stulpeliai `col-md-6`, `input_type` email/url/date) | `composer update` (`va-core/form-builder` + `va-modules/forms`) |
| **Kontaktų/lead laukai** | 10 matomų laukų kaip cleverphant.lt: `Kada` + `Kaip apie mus sužinojote?` radio'ai; NUIMTA collapsible „daugiau", `kita_data`, `poreikis`, post-submit | **`cleverphant:upgrade --force-forms`** |
| **Notifikacijos laiškas** | `forms::mail.submission` → tvarkingas HTML (buvo raw Markdown); radio reikšmės → žmogiški label'ai | `composer update` (`va-modules/forms`) |
| **Naujienlaiškis admin** | „Prenumeratoriai" (`/admin/newsletter`, sąrašas + CSV eksportas) pridėtas į admin sidebar DB meniu | **`php artisan migrate`** (nauja migracija) |
| **Šriftai + favicon** | Self-host Inter 3.019 TTF + Cleverphant favicon | `themes:publish-assets` (kopijuoja public/fonts + public/img) |
| **Mokyklos šablonas** | Kortelių repeteris admin „Šablonas" tab'e | `composer update` (blade + inline JS, jokio publish) |

Detaliau — [`CHANGELOG.md`](CHANGELOG.md).

---

## ⚠️ 2026-08-26: tema pereina į foundation **2.x** (MAJOR)

Iki šiol tema reikalavo `va-core/*` ir `va-modules/*` kaip `^1.0`. Nuo šio release'o —
**`^2.0`** (o `va-modules/news` + `va-modules/news-categories` — `^2.1`, nes juose yra
tinklaraščio funkcionalumas).

Kodėl tai svarbu: foundation train'as `v2.0.0` buvo uždėtas 2026-08-22, **bet nė vieno
paketo vidiniai constraint'ai nebuvo atnaujinti**, tad ta linija realiai nebuvo įdiegiama —
paprašius `va-core/core:^2.0`, composer vis tiek traukdavo `va-cross/media:^1.0` (=1.12.2).
Dabar sutvarkyti visų 79 paketų constraint'ai, ir 2.x linija yra vientisa.

**Consumer'io `composer.json` PRIVALO pasikeisti kartu** — kitaip `composer update` nieko
naujo nepaims (`^1.0` niekada neišrinks 2.x):

```jsonc
"va-core/auth":              "^2.0",
"va-core/ckeditor":          "^2.0",
"va-core/core":              "^2.0",
"va-core/translations":      "^2.0",
"va-core/users":             "^2.0",
"va-modules/custom-links":   "^2.0",
"va-modules/faq":            "^2.0",
"va-modules/forms":          "^2.0",
"va-modules/menus":          "^2.0",
"va-modules/news":           "^2.1",
"va-modules/pages":          "^2.0",
"va-themes/cleverphant":     "^2.0",
"va-themes/viartas-default": "^2.0"
```

Tada `composer update -W`. Jei composer skundžiasi neišsprendžiama grandine — greičiausiai
Satis dar neperbuildintas su naujais tag'ais (OPS pusė).

---

## Ką atneša 2026-08-26 update

| Sritis | Kas pasikeitė | Kaip pasiima |
|---|---|---|
| **Tinklaraščio straipsniai** | 8 straipsnių turinys, antraštės ir datos — 1:1 iš cleverphant.lt; URL'ai `/tinklarastis/{slug}` kaip gyvame | **`cleverphant:upgrade --force-news`** (vienkartinis) + `php artisan migrate` |
| **Straipsnio puslapis** | Nebėra datos ir kategorijos; naujas „Ačiū" skaitiklis; „Atgal" veda į tinklaraštį; „Kiti įrašai" niekada netuščias | `composer update` (view'ai) + `migrate` (`news.reactions_count`) + `cms:sync-permissions` (jį paleidžia pats upgrade) |
| **Tinklaraščio sąrašas** | Nebėra įžangos pastraipos ir kategorijų filtro | `composer update` |
| **Požiūris** | Nuimta „Kodėl tęsiame" laiko juosta (ji priklauso ∞ ciklui) | `composer update` |
| **∞ Ciklas** | Pridėta „Visi vienodai skirtingi!" galerija su realiomis mokyklų ekrano nuotraukomis | `composer update` + `themes:publish-assets` |
| **/pradeti forma** | Papildomi laukai suskleisti po „Norite pasidalinti daugiau?"; „Kaip apie mus sužinojote?" — po išsiuntimo; mygtukas „Pateikti" dizaino spalva | **`cleverphant:upgrade --force-forms`** |
| **/pradeti puslapis** | Be naujienlaiškio ir CTA juostos (kaip dizaine) | `composer update` |
| **Footeris** | External ikona tik tikroms išorinėms nuorodoms (buvo ant visų) | `composer update` |

⚠️ **`--force-news` — VIENKARTINIS.** Perrašo straipsnių antraštes/turinį/slug'us/datas. Kai
turinį jau tvarko redaktorius, šito flago nebejunk (`cleverphant:upgrade --force --force-forms`
pakanka).

ℹ️ Senoji kategorija **„Mokyklų svetainės"** lieka DB tuščia (straipsniai persikelia į naują
„Tinklaraštis" konteinerį). Ją galima ištrinti per adminą — automatiškai netrinama, nes
instaliacija gali būti į ją ką nors prikabinusi.

ℹ️ Seni trumpi straipsnių URL'ai (`/del-bendruju-reikalavimu` ir pan.) **nebeegzistuoja** — tie
slug'ai buvo tik demo seed'as, gyvoje svetainėje jų niekada nebuvo, todėl 301 redirect'ų nėra.
Senos eilutės su tais slug'ais lieka kaip našlaičiai — trinti per adminą.

---

## Smoke po update
- `/` → 200, turinys IŠLIKĘS (ne ištrintas).
- `/kontaktai` → 2 stulpelių forma, 10 laukų (vardas|pavardė, pareigos|įstaiga, svetainė|el.paštas, **Kada**|**Kaip apie mus**, žinutė, GDPR). Vienas smėlinis fonas. Favicon skirtuke.
- `/admin` login → kairėje po „Turinio valdymas" matosi **Prenumeratoriai**.
- Pateik `/kontaktai` tuščią → klaidos **inline po laukais** (ne viena raudona dėžė).
- Laiškai keliauja į sukonfigūruotą SMTP (dev: MailHog/Mailpit `MAIL_PORT=1025`).

---

## Jei neatsinaujina
- Paketas senas → Satis rebuild neįvyko arba `composer clearcache` praleistas.
- Formos liko su senais laukais → praleidai **`--force-forms`**.
- „Prenumeratoriai" nesimato meniu → `php artisan migrate` nebuvo paleistas, arba meniu dar neseed'intas (tada MenusSeeder jį įtraukia).
- Turinys dingo → per klaidą paleistas `cleverphant:install` (žr. įspėjimą viršuje).
