
# Kompatibilitás és frissítés

Ez az oldal összefoglalja, amit frissítés előtt vagy a pontos kimenetre támaszkodva tudnia kell: a futtatási követelményeket, hogy a port melyik TailwindCSS kiadást követi, miben tér el szándékosan az TailwindPHP az TailwindCSS-től, valamint az egyes kiadások megjegyzéseit. A teljes előzmény a [CHANGELOG.md](https://github.com/inline0/tailwindphp/blob/main/CHANGELOG.md) fájlban található.

## Követelmények

- **PHP 8.2 vagy újabb.** A tesztcsomag PHP 8.2, 8.3 és 8.4 verzióján fut.
- **A `ctype` és a `mbstring` bővítmények.** A fordító a `ctype_*` és a `mb_chr()` függvényt hívja. Ezek a legtöbb PHP builddel és a hivatalos Docker lemezképekkel együtt érkeznek, de a `composer.json` még nem deklarálja őket ([#11](https://github.com/inline0/tailwindphp/issues/11)), így nélkülük a csomag települ, de futás közben hibát jelez.
- **Nem kötelező: `pcntl`** lehetővé teszi, hogy a CLI `--watch` módja szabályosan leálljon `SIGINT`/`SIGTERM` esetén. Nélküle a figyelő mód továbbra is működik.

Nincs Node.js, FFI vagy natív bináris.

## Melyik TailwindCSS kiadást követi

A 1.7.0 kiadás a **TailwindCSS v4.3.3** verzióját követi. Az upstream adattár a `reference/tailwindcss`-ban git almodulként van rögzítve, a tesztcsomagjai ebből a rögzített másolatból származnak, a 4,427 tesztjei pedig minden feltöltéskor lefutnak (lásd: [Teljesítmény és tesztelés](https://tailwindphp.inline0.dev/hu/docs/advanced/performance)). Az átültetett bővítmények az `@tailwindcss/typography` és az `@tailwindcss/forms` mintáját követik, az osztálysegédprogramok pedig a clsx, az tailwind-merge és a CVA mintáját, mindegyik ugyanígy rögzített verzióval.

## Ismert eltérések az TailwindCSS-től

### Szerializálási részletek

A létrehozott CSS megfelel a referencia tesztcsomagjainak. Néhány szerializálási részlet eltér attól, amit a TailwindCSS CLI kiír; ezek egyike sem változtatja meg a kaszkádot:

- Gyártóspecifikus előtagok: ha a referencia a szerzői `-webkit-*` sort és egy generált sort is kiad, az TailwindPHP csak egy sort ír ki.
- Az alacsonyabb szintre alakított pszeudoelemek (`::file-selector-button`, `::-webkit-datetime-edit-*`) a szerzői szelektorlistában maradnak, nem bomlanak külön szabályokra pszeudoelemenként.
- A szerzői, egyszeres idézőjeles karakterláncok egyszeres idézőjelesek maradnak (`'Segoe UI'`), nem normalizálódnak dupla idézőjelekre.
- Az együtt előforduló hosszú alakú tulajdonságok nem vonódnak össze rövidített tulajdonsággá (az Tailwind saját kimenetében erre nincs szükség).
- Az `.p-0` megtartja a `padding: 0px` értéket ott, ahol a referencia CLI a `padding: 0` értéket adja ki, mert a kinyert tesztkorpusz a `0px` alakot rögzíti. A tömörítő ezt `0` alakra rövidíti.

### Nem része

A TailwindPHP egy CSS fordító. Kimaradnak belőle a Tailwind ökoszisztéma szerkesztőeszközei (IntelliSense, automatikus kiegészítés, osztályok rendezése) és a forrástérképek, ezért a CLI nem kínál `--map` beállítást.

### Tartalom beolvasása

A `tw::generate()` és a `TailwindCompiler::generate()` csak a `class` és `className` attribútumokból olvassa ki az osztályneveket. A PHP vagy JavaScript karakterláncokban lévő osztálynevekhez használja a [`tw::extractCandidatesFromStrings()`](https://tailwindphp.inline0.dev/hu/docs/api#twextractcandidatesfromstrings) vagy a `@source inline("…")` eszközt. A `@source` elérési út alakjait a API figyelmen kívül hagyja, a CLI pedig csak részben veszi figyelembe (lásd alább).

### Ismert problémák a jelenlegi kiadásban

| Terület | Jelenlegi működés | Probléma |
|---|---|---|
| CLI `@source` | Az elérési utak és globminták nem érvényesülnek; a rendszer a bemeneti fájl könyvtárát vizsgálja, a `@source not` pedig semmit sem zár ki. Lásd: [Mit vizsgál a CLI](https://tailwindphp.inline0.dev/hu/docs/cli#what-the-cli-scans) | [#8](https://github.com/inline0/tailwindphp/issues/8) |
| CLI `--optimize` | Tömörít, a `--minify`-hoz hasonlóan | [#9](https://github.com/inline0/tailwindphp/issues/9) |
| CLI hosszú kapcsolók | A `--input file.css` (szóközzel elválasztva) figyelmen kívül marad; használja a `--input=file.css` vagy `-i file.css` kapcsolót | [#13](https://github.com/inline0/tailwindphp/issues/13) |
| Bővítményváltozatok | A `addVariant()`/`matchVariant()` változatok és a tipográfiai elemek módosítói (`prose-headings:` …) a szelektoruk nélkül fordulnak le | [#10](https://github.com/inline0/tailwindphp/issues/10) |
| `@apply` mixinek | A `@apply --my-mixin;` eltűnik ahelyett, hogy változatlanul továbbadódna | [#12](https://github.com/inline0/tailwindphp/issues/12) |
| Referenciaimportok | A kimenet üres, ha egy referenciaimport megelőzi a segédprogramok importját; a `@import "tailwindcss" reference` nincs hatással | [#14](https://github.com/inline0/tailwindphp/issues/14) |

## Frissítési megjegyzések

### 1.7.0

- **A kimenet bájtszinten változik** az 1.6.x-hez képest, miközben funkcionálisan megfelel az TailwindCSS v4.3.3 referenciának. A látható változások közé tartozik:
  - Térközszorzók: a `p-1` `padding: var(--spacing)` alakot ad ki `calc()` helyett, a `0` szorzó pedig egyszerű nulla hosszúságot eredményez.
  - A törtek százalékká alakulnak: a `w-1/2` `width: 50%` alakot adja.
  - Színek: a `oklch()`/`oklab()` világossági értéke százalékként szerializálódik (`oklch(62.3% .214 259.815)`), a `white` és `black` pedig `#fff` és `#000` alakra rövidül.
  - A CSS2 pszeudoelemek egy kettősponttal szerializálódnak (`:before`, `:after`, `:first-letter`, `:first-line`).
  - A beágyazott `@media`/`@supports`/`@container` szabályok helyben, forrássorrendben lapulnak ki, nem a végére kerülnek; a deklarációk a lightningcss rendezését követik, az árnyékolt ismétlődő deklarációk pedig törlődnek.
- **A kimenethez kötött gyorsítótárak egyszer ürülnek.** A `tw::generate()` fájlgyorsítótára nem veszi figyelembe a TailwindPHP verzióját, ezért frissítés után futtassa a `tw::clearCache()` parancsot (vagy ürítse ki a `cache` könyvtárat). A [fordítóállapot gyorsítótára](https://tailwindphp.inline0.dev/hu/docs/advanced/caching#compiler-state-cache) önmagát érvényteleníti.
- **Új:** `@variant` a szerzői CSS nyelvben, CSS mixinek a `@apply` nyelvben, `@media reference` és `@import "…" reference`, a teljes `--value()`/`--modifier()` motor a funkcionális `@utility`-hez, szigorúbb `@utility` névellenőrzés, valamint a `tw::compile()` `polyfills` beállítása.

### 1.6.1

- **Új:** a `container` segédprogram (`width: 100%`, valamint töréspontonként egy `max-width`).
- Az összetett `--tw-*` változók (eltolás, méretezés, forgatás, döntés, szűrők és mások) mostantól regisztrálva vannak a `@property` rendszerben, így a stíluslapok megkapják ezeket a `@property` szabályokat, és a `translate-x-7`-hez hasonló transzformációk működnek a böngészőben.

### 1.6.0

- **Új:** a tartós fordítóállapot-gyorsítótár (`stateCacheFile` a `tw::compile()` és `TailwindCompiler` esetén, `StateCache\compileCssCached()`), valamint a különálló `parseCssState()`/`finalizeCssState()`/`compileParsed()` függvények. A meglévő hívások pontosan úgy működnek, mint korábban.

### 1.5.0

- Azoknak a `TailwindCompiler` alosztályoknak, amelyek felülírják a `generate()` vagy `css()` metódust, hozzá kell adniuk a nem kötelező `bool $minify = false` paramétert; a PHP elutasítja azokat a felülírásokat, amelyek kihagyják az ősosztály nem kötelező paraméterét.
- A tömörített kimenetet a szerializáló állítja elő, ezért a tömörített bájtok kissé eltérnek a 1.4.x kimenetétől (a tömörített kimenethez kötött gyorsítótár egyszer ürül).
- **Új:** `generateExact()` és `cssExact()` oldalankénti CSS adatokhoz egy hosszan futó fordítóból.
