# Cleverphant CHANGELOG — consumer upgrade notes

> ## ⚠️ Update naudok `cleverphant:upgrade` — **NE `cleverphant:install`**
>
> `cleverphant:install` yra **DESTRUKTYVUS** (task-34): jis PIRMA išvalo esamą web
> turinį (Pages / News / FAQ / meniu punktus) ir tik tada seeda savo. Pirmam
> diegimui — teisinga; kiekvieno deploy metu — **prarastum per admin redaguotą
> turinį**. Todėl atnaujinimui yra atskira, saugi komanda.
>
> **Standartinis update (VISADA tinka, leidžiamas kiekvieną deploy):**
>
> ```bash
> composer update
> php artisan migrate --force
> php artisan cleverphant:upgrade --force
> php artisan themes:publish-assets
> php artisan vendor:publish --tag=package-assets --force
> php artisan optimize
> ```
>
> `cleverphant:upgrade` yra **idempotentinis ir turinio neliečia**. Jis absorbuoja:
> naujus permission'us (per `cms:sync-permissions`), naujas formų definicijas
> (`firstOrCreate` — per builder'į redaguotų NEperrašo), temos eilutę ir
> per-aplinkos temų default'us. Migracijas paima atskiras `migrate --force`
> (bėga PRIEŠ upgrade — schema turi egzistuoti anksčiau nei ją liečia seeder'iai).
> Pabaigoje jis atspausdina lentelę su turinio eilučių pokyčiu — sveikame
> pakartotiniame run'e VISI turinio pokyčiai = `0`.
>
> **Žemiau — TIK žingsniai, kurių ta komanda NEabsorbuoja** (turinio seed'as,
> naujas `.env`, Satis rebuild, breaking change). Jei užduoties čia nėra —
> vadinasi, standartinio update pakanka.

---

## QA #8 — meniu iš realių puslapių

- `CleverphantMenusSeeder` (įrištas į `cleverphant:install`) perseed'ina `web.main` iš
  realių Cleverphant puslapių (Pradžia/Mokyklos/Požiūris/∞ ciklas/DUK/Tinklaraštis/
  Kontaktai) ir **numeta** generinio shop `web.brands` — `/admin/menus` rodo tik
  Cleverphant nav.
- Front nav DB-redaguojamas su `.env` `MENUS_DB_DRIVEN=true`; be jo — hardcoded (0 regresijos).
- **Update'e** (NE pilnas install): meniu perseed'ink saugiai, be turinio wipe —
  `php artisan db:seed --class="ViartasThemes\Cleverphant\Database\Seeders\CleverphantMenusSeeder" --force`.

## QA #9 — CKEditor WYSIWYG turinio laukas

- `form-builder` dabar deklaruoja `va-core/ckeditor` → puslapio „Turinys" laukas rodo
  CKEditor įrankių juostą (ne plika textarea su raw HTML). Ateina per `composer update`,
  assets per `vendor:publish --tag=package-assets` (į `public/vendor/ckeditor`). Jei
  `composer update` meta „va-core/ckeditor not found" → trūksta Satis'e (kaip form-builder).

## Turinio atnaujinimas (kai jo tikrai reikia)

`cleverphant:upgrade` **niekada** neseeda Pages / News / FAQ. Jei užduotis atvežė
naujo turinio (arba diegi tuščią saitą), rinkis sąmoningai:

| Komanda | Ką daro | Kada |
|---|---|---|
| `cleverphant:install --additive --force` | **Nedestruktyvi.** Seeda TIK trūkstamas eilutes (`firstOrCreate`), esamų neliečia. | Turinio „papildymas" gyvame saite |
| `cleverphant:install --force` | **DESTRUKTYVI.** Išvalo ne-Cleverphant web turinį ir seeda iš naujo. | Pirmas diegimas / sąmoningas reset'as |
| `cleverphant:seed-pages --force` | Perrašo 9 Cleverphant puslapių eilutes (id išsaugomas). | Kai reikia atstatyti puslapių kanoninį turinį |

⚠️ `--force` prie `cleverphant:install` reiškia DU dalykus: praleidžia destruktyvų
patvirtinimą IR perrašo slug'ą atitinkančias FAQ/News/formų eilutes. Su
`--additive` jis lieka nedestruktyvus turiniui, kurio dar nėra, bet **perrašo**
esamas FAQ/News/formų eilutes — jei to nenori, leisk be `--force`
(reikės atsakyti į patvirtinimą interaktyviai).

---

## task-44 — `cleverphant:upgrade` + deploy un-gate

- **Vienkartinis:** atnaujink Forge deploy skriptą pagal [`INSTALL.md`](INSTALL.md)
  („Forge / production deploy"). Anksčiau `cleverphant:install` buvo **marker-gated**
  (`if [ ! -f storage/app/.viartas-installed ]`) → bėgo TIK pirmą kartą, todėl
  vėlesnės užduotys (nauji permission'ai, formų definicijos, temos eilutė)
  consumer'io nepasiekdavo. Dabar `cleverphant:upgrade --force` paleidžiamas
  **kiekvieną deploy**, o marker'is dengia tik tikrą first-time bootstrap'ą
  (`CmsBootSeeder` + `cleverphant:install`).
- Marker'io trinti NEREIKIA — jis toliau teisingai saugo pirmojo karto seed'ą
  (ir, svarbiausia, neleidžia destruktyviam install'ui pasikartoti).

## task-43 — naujienlaiškis per Forms builder'į

- **Absorbuojama** `cleverphant:upgrade` (`newsletter` formos definicija seed'inama
  `firstOrCreate`). Kol ji neužseed'inta, footer'io blokas veikia per seną tiesioginį
  POST — prenumeruoja, tik apeina builder'į.
- **Vienkartinis (assets):** `php artisan themes:publish-assets` — be jo naršyklė
  gauna seną `cleverphant.js` bundle'ą ir inline success eilutė nepasirodo.
  (Standartiniame update jis jau yra.)

## task-41 / task-42 — `/pradeti` + `/kontaktai` formos

- **Absorbuojama** `cleverphant:upgrade` (`susipazinkime` + `kontaktai` definicijos).
- ⚠️ Jei definicijos JAU egzistuoja ir nori naujausios task-42 versijos
  (`url` laukas, suskleidžiama grupė, po-submit klausimas), reikia **force** refresh'o —
  upgrade jo sąmoningai nedaro (neperrašinėja per builder'į redaguoto turinio):
  ```bash
  php artisan tinker --execute="app(\ViartasThemes\Cleverphant\Database\Seeders\CleverphantContactFormSeeder::class)->force()->run();"
  ```

## task-36 — Cleverphant = default web tema

- **Absorbuojama** `cleverphant:upgrade` (temos eilutė + `cleverphant:activate` +
  `themes:sync-defaults`). Rankinio `UPDATE themes` nebereikia.
