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.3.1 Fix sidebar layout

App Senaste
Lagt till container-sidebar-main för att justera main och footer med sidebar.

v1.3.0 Återställt layoutfil i home/index

App
Liten fix, ändrat layoutfil i views/home/index till main

v1.2.9 Updaterad sidebar layout

App
Infört mer konsekvent sidebar-layout för publika informationssidor
Förbättrat aktiv markering i navigationen
Standardiserat högerkolumner för bättre visuell struktur
Enhetliggjort rubriker och sidhuvuden mellan informationssidor
Städat upp Alpine-beteende i mobilmenyn för bättre CSP-kompatibilitet

v1.2.8 Stöd för språkprefix i sök, paginering och adminåtgärder

App
Den här uppdateringen förbättrar hur applikationen hanterar URL:er i frontend. Tidigare fanns hårdkodade sökvägar i vissa JavaScript-funktioner, vilket kunde orsaka problem när webbplatsen kördes under språkprefixade adresser. Nu används servergenererade routes genomgående för sök-endpoints, paginering och adminåtgärder.

Det innebär bland annat förbättrad stabilitet för:
profilsökning
användarsökning
sökning i stängda konton
systemhändelser
systemuppdateringar

länkar för redigering, radering, blockering, återställning och aktivering

v1.2.7 Uppdatering layout

App
Uppdatering till radix-framework v1.1.7 i layouts.

Radix Framework
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.

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