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.2.0 Förbättrad säkerhet

Framework
Den här releasen fokuserar på förbättrad säkerhet, stabilare miljökonfiguration och hårdare testtäckning.

Nytt och förbättrat
Återställt och förbättrat stöd för .env-styrning i GeoLocator.
GeoLocator kan nu läsa:
GEOLOCATOR_BASE_URL
GEOLOCATOR_TIMEOUT

Lagt till timeout-stöd för HTTP-anrop i GeoLocator.
Förbättrad hantering av ogiltiga eller tomma miljövärden.
Konstruktorargument i GeoLocator prioriteras före .env-värden.
Förbättrad felhantering vid ogiltiga API-svar från geolocation-tjänsten.
Förbättrad JSON-hantering i felmeddelanden från GeoLocator.

Säkerhet
Förbättringar kring security headers.
Hårdare skydd och testning runt säkerhetsrelaterade standardvärden.
Förbättrad hantering av sessionssäkerhet via miljövariabler, inklusive cookie-inställningar som HttpOnly, SameSite och Secure.

Tester och kvalitet
GeoLocator-testerna använder nu fake/spy istället för riktiga externa HTTP-anrop.
Mutationstester har stärkts för GeoLocator.
Fler tester för edge cases kring .env, timeout och API-fel.
PHPStan-anpassningar för striktare typkontroll.
Stabilare testsvit utan beroende av externa geolocation-anrop.

För utvecklare
GeoLocator är fortsatt bakåtkompatibel för normal användning:
getLocation() fungerar som tidigare.
getLocation(null) använder fortsatt $_SERVER['REMOTE_ADDR'].
get($key) fungerar som tidigare.
Applikationer kan konfigurera geolocation via .env utan att behöva ändra kod.

v1.1.9 Säkerhetsuppdatering

Framework
Den här releasen härdar PHP-session cookies och gör cookie-säkerheten konfigurerbar via .env.
Nytt

Session cookies sätts nu med säkrare defaults.
Stöd för konfigurerbar Secure, HttpOnly och SameSite.
SameSite=None kräver SESSION_COOKIE_SECURE=true.
EnvValidator validerar nya session-cookie-inställningar.
Förbättrad hantering vid session destroy/delete.
Lägg till i befintliga projekt

SESSION_COOKIE_SECURE=auto SESSION_COOKIE_HTTPONLY=true SESSION_COOKIE_SAMESITE=Lax

För production rekommenderas
SESSION_COOKIE_SECURE=true SESSION_COOKIE_HTTPONLY=true SESSION_COOKIE_SAMESITE=Lax

CSP-rekommendation
Komplettera applikationens CSP med:
base-uri: self object-src: none

I PHP-konfigurationen motsvarar det:
'base-uri' => ["'self'"] 'object-src' => ["'none'"]
För API-profiler kan en striktare variant användas:
'base-uri' => ["'none'"] 'object-src' => ["'none'"]

Bakåtkompatibilitet
Session-hanteringen har säkra defaults om miljövariabler saknas, men applikationer som kör EnvValidator måste lägga till de nya SESSION_COOKIE_* variablerna i sin .env.
Teststatus

PHPUnit: grönt
PHPStan: grönt
Infection: 5019/5019 mutanter dödade
Mutation Code Coverage: 100%
Covered Code MSI: 100%

v1.3.3 Uppdatering för användning av radix-framework v1.1.8

App
Den här releasen förbättrar felhanteringen i Radix Framework genom att logga HTTP-undantag med mer korrekt allvarlighetsgrad.
Tidigare loggades nästan alla exceptions som error, även normala klientfel som till exempel 404 PageNotFoundException. Det kunde skapa onödigt brus i produktionsloggarna, särskilt från botar och scanners som försöker nå vanliga paths som inte finns.

v1.1.8 Fixad loggnivå för HTTP-undantag

Framework
Den här releasen förbättrar felhanteringen i Radix Framework genom att logga HTTP-undantag med mer korrekt allvarlighetsgrad.
Tidigare loggades nästan alla exceptions som error, även normala klientfel som till exempel 404 PageNotFoundException. Det kunde skapa onödigt brus i produktionsloggarna, särskilt från botar och scanners som försöker nå vanliga paths som inte finns.

Nytt beteende:
Serverfel, 5xx, loggas som error.
Klientfel, 4xx, loggas inte längre som error.
404 loggas inte som standard.
Andra 4xx-fel, exempelvis 400, 403 och 405, loggas som warning.
HTTP-svar och API-svar påverkas inte.
Det innebär att exempelvis en saknad route fortfarande ger 404, men inte längre skräpar ner error-loggen som ett serverfel.

Oförändrat beteende
Ändringen påverkar inte:
HTTP-statuskoder
felvyer
JSON/API-felsvar
publik API-yta
PageNotFoundException
vanliga serverfel/runtime exceptions
Riktiga serverfel fortsätter att loggas som error med stacktrace.

Kvalitetssäkring
Ändringen är verifierad med:
PHPUnit
PHPStan
Infection mutation testing

v1.3.2 Fix location middleware

App
Ändrat location middleware till att både controllera country och city.

v1.3.1 Fix sidebar layout

App
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.
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.