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
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.2.6 Smidigare first-run (sessions + CLI)

App
Den här releasen gör starter-applikationen mer friktionsfri vid första körning, särskilt för CLI/migrationer.

Ändrat
Tog bort CLI-bootblock som stoppade körning när SESSION_DRIVER=database men sessions-tabellen/DB inte var redo.
.env.example använder nu säkra defaults för first-run:
SESSION_DRIVER=file
SESSION_FILE_PATH=storage/sessions (cross-platform, inte /tmp/...)
Lade till storage/sessions/.gitkeep så sessions-katalogen finns från start.
Behöll/införde CLI-fallback i RadixSessionHandler-wiring:
CLI faller tillbaka till file om database valts men PDO saknas
webbmiljö ger ett tydligt fel istället för tyst fallback
Varför
Målet är att undvika att användare fastnar i en trasig “first-run”-upplevelse om de råkar sätta SESSION_DRIVER=database innan DB/migrationer är klara, oavsett OS.

Uppgradering
Ingen åtgärd krävs för nya projekt. Befintliga projekt kan fortsätta som vanligt.
Vill du köra database-sessions: kör migrationer först, byt sedan till SESSION_DRIVER=database.

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.2.5 Flyttat Systeminformation från dashboard

App
I den här versionen har vi flyttat Systeminformation från Dashboard till Administration. Det ger en tydligare dashboard med fokus på genvägar och dagligt arbete, medan systemstatus, loggar och uppdateringar nu samlas på ett mer naturligt ställe under administrationsdelen.

v1.2.4 Auth-sidor: enhetlig design + generisk template-text

App
Den här uppdateringen harmoniserar utseendet på alla auth-sidor så de följer samma layout, spacing och typografi. Färgtemat är fortsatt blått och texterna är justerade för att passa en generell Radix-app-template.

v1.2.3 Liten fix

App
Uppdaterat färgskala i flash meddelanden för att bättre matcha temat.

v1.2.2 Uppdaterat flash-layout

App
Flash-meddelanden använder nu mörkt tema på publika sidor och ljust tema i appen för bättre konsekvens och läsbarhet.

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.
Saknar du en detalj här? Se GitHub‑releaser för komplett historik.

Cookies & integritet

Vi använder nödvändiga cookies för grundfunktioner och säkerhet (t.ex. att komma ihåg ditt val här och skydda formulär). Om du använder administrativa delar kan sessionscookies även förekomma vid inloggning. Läs mer.