Radix
radixphp.se

Releaser & uppdateringar

En översikt av förändringar i Radix. För fullständig historik och taggar/versioner, se GitHub‑releaser.

v1.1.7 Förbättringar i QueryBuilder och statisk analys

Framework Senaste
Den här releasen innehåller flera förbättringar i databaslagret med fokus på tydligare API, striktare typning och högre testbarhet.

QueryBuilder
QueryBuilder har fått bättre stöd för grupperade och uttrycksfulla villkor:
orWhere() accepterar nu Closure för nästlade OR-grupper
whereExists() accepterar nu både QueryBuilder och Closure
whereNotExists() accepterar nu både QueryBuilder och Closure
Det gör det enklare att bygga mer avancerade SQL-villkor på ett läsbart och konsekvent sätt.

Typförbättringar
Flera interna delar har städats upp för att fungera bättre med strikt statisk analys:
onödiga ?? [] har tagits bort från properties som redan är deklarerade som icke-nullbara arrayer
interna properties för joins, ordering och unions har fått snävare och tydligare typer
koden analyseras nu renare under PHPStan utan att beteendet förändras vid körning
Test och kvalitetssäkring
För att säkerställa beteendet har testsviten utökats med nya tester för closure-baserade where-varianter och korrekt binding-hantering.

Dessutom:
inga nya överlevande mutanter hittades vid körning med Infection
ändringarna är därmed verifierade både funktionellt och mutationsmässigt

v1.1.6 Schema, nya metoder

Framework
Den här releasen introducerar två nya metoder i Radix\Database\Migration\Schema:
statement(string $sql, array $bindings = []): void
getDriverName(): string
Med detta går det nu att:
köra rå SQL direkt i migrationer
villkora migrationslogik beroende på aktiv driver
skriva mer robusta migreringar för både MySQL och SQLite
Detta är särskilt användbart i situationer där databasspecifika DDL-kommandon behövs, exempelvis collations, indexvariationer eller andra SQL-funktioner som inte täcks av det generella schema-API:t.
Ändringen är bakåtkompatibel och har verifierats med full testgrön status, mutationstest och statisk analys.

v1.1.5 Förbättrat migrationsstöd (MySQL/MariaDB + SQLite)

Framework
Sammanfattning
Den här releasen förbättrar migrationssystemet med bättre stöd för ALTER TABLE-operationer, index/unique-hantering och tydligare SQL-generering över databasmotorer. Fokus har varit kompatibilitet med MySQL/MariaDB i produktion och SQLite (PDO) i testmiljö, samt att stärka kvaliteten via PHPUnit + Infection.

Ändringar
Schema

Schema::alter() identifierar nu PDO-driver via Connection::getPDO() och skickar driver-namn vidare till blueprinten för korrekt SQL-generering.
Blueprint

Utökat ALTER TABLE-stöd med driver-aware SQL.
index() och unique() fungerar nu korrekt även i alter-läge:
MySQL/MariaDB: ALTER TABLE ... ADD [UNIQUE] INDEX ...
SQLite: CREATE [UNIQUE] INDEX ...
dropIndex() och dropForeign() hanteras driver-aware:
SQLite: DROP INDEX IF EXISTS ... (och no-op för DROP FOREIGN KEY p.g.a. SQLite-begränsningar)
Strikt validering av interna “virtual ops” för index/constraints (fail-fast vid ogiltigt format).
Förbättrad “fluent interface”-garanti: index()/unique() returnerar alltid $this utan fall-through.
Migrator

migrations-tabellen skapas nu driver-aware:
SQLite: INTEGER PRIMARY KEY AUTOINCREMENT + DATETIME DEFAULT CURRENT_TIMESTAMP
MySQL/MariaDB: befintlig INT AUTO_INCREMENT + TIMESTAMP DEFAULT CURRENT_TIMESTAMP
Tester & kvalitet
Nya PHPUnit-tester som verifierar SQL-kompilering för både MySQL och SQLite för:
ALTER + index() / unique() / dropIndex()
driver-name normalisering
korrekt “continue” i toAlterSql() när flera operations förekommer
Åtgärdat flera Mutation Testing-fynd (Infection):
borttagna “equivalent mutants” genom striktare validering och enklare parsing
förbättrade guards för att undvika timeouts/oklara fel vid trasig SQL
Bakåtkompatibilitet
Befintligt API bibehålls.
Default-beteende är fortsatt MySQL/MariaDB om driver inte kan identifieras.
SQLite-specifika begränsningar hanteras säkert (no-op där SQLite saknar stöd).

v1.1.4 Förbättrad formuläråterfyllning och felhantering

Framework
I den här releasen har vi förbättrat hjälpfunktionerna för formulär så att användarens inmatning bevaras korrekt vid valideringsfel, även för nästlade formulärfält.

Ändringar:
old() har utökats med stöd för dot-notation (t.ex. results.12.3.1.horse_name) för att kunna hämta värden ur nästlad old-data i sessionen.
old() är fortsatt bakåtkompatibel genom att alltid försöka exakt nyckelmatchning först (viktigt om nyckeln råkar innehålla punkt).
Ny helper old_or() har lagts till för att kunna skilja på:
“värdet saknas” → returnera fallback
“värdet finns men är tom sträng” → returnera tom sträng
error() är kvar med samma beteende och returnerar första felmeddelandet (eller hela listan) för ett fält.

Effekt:
Formulär med nästlade fält återfylls korrekt efter valideringsfel.
Mindre risk att användare tappar data vid omrendering av formulär.

v1.1.3 Förbättringar Validator

Framework
Förbättringar
Validator: förbättrade översättningar av fältnamn för dynamiska fält i dot-notation (t.ex. results.12.3.1.horse_name) genom att kunna falla tillbaka på sista segmentet.

Validator: normaliserar hp_ → honeypot även i sista segmentet för dot-notation, så att fältöversättningar fungerar konsekvent i felmeddelanden.

Validator: required_with fungerar nu korrekt med dot-notation (beroenden hämtas via dot-lookup) och är robust mot whitespace i parameterlistor.

Test/QA
Nya tester för dot-notation-översättningar, hp-normalisering och required_with-beteende, inklusive prioritet för exakt nyckel framför fallback.

Städning: tog bort oanvänd intern hjälpfunktion convertSizeToMB().

Bakåtkompatibelt: ändringarna påverkar främst felmeddelanden och gör validering striktare/korrigerad för nästlade fält.

v1.1.2 Förbättrat stöd för scaffolds

Framework
Nytt

scaffold:install --all för att installera alla scaffolds under presets-root.
Deterministisk installationsordning baserad på dependencies (.requires.php) så att presets installeras i rätt ordning.
Stöd för --force-placeholders för att skriva över enbart placeholder-filer vid behov.
Förbättrat --dry-run som visar plan/ordning samt vad som skulle skapas/skrivas över.
Förbättringar

Robustare preset-discovery (top-level + nested) med tydliga fel när ett requirement saknas.
Sammanfattning efter körning (inkl. dry-run) med antal filer/kataloger som skapats/överhoppats/överskrivits.
Kompatibilitet

Ingen databasmigrering eller manuell åtgärd krävs. Befintliga presets fortsätter fungera, och nya flaggor är valfria.

v1.1.1 Uppdaterad dokumentation

Framework Milstolpe
Uppdaterad dokumentation efter uppdelning i två paket:
mattablues/radix-framework
mattablues/radix-app
README förtydligat med korrekt installation och länkar mellan repos.
Uppdaterade Composer scripts för stan/test/infect/format.

v1.1.0 Borttagning och fixar

Framework
Borttagning av Token::hashCrc32()
make:view layout option: admin → app

Åtgärda php-cs-fixer-skript så att de fungerar på Windows.

Ta bort föråldrad användning av env-variabler

v1.0.0 Första release av Radix Framework

Framework Milstolpe
Första stabila releasen.
- Grundfunktionalitet publicerad via Packagist.
Saknar du en detalj här? Se GitHub‑releaser för komplett historik.