The project navbar rendered a single Resources tab that was only ever active
on project.resource.index, a page that never rendered the bar, and rendered
nothing at all without an environment, leaving project and environment
settings with no title.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Target selection now renders as a full-width layer card instead of a narrow
dialog floating in an empty full-height console canvas. The themed console
shell, its viewport height lock, and the console theme selector stay with an
open session, where they belong.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Route production builds, releases, and changelog generation through `main`, update contribution guidance for main/next branch targets, and cover the branch policy in workflow tests.
Swap the static world-map partial for a cobe-based 3D globe
(traffic-globe.js) driven by per-country marker data. Extract shared
sparkline/device/geo derivations into BuildsTrafficChartPayload and
reuse it across global, dashboard, and per-application analytics
components. Add device-donut, hosts-list, and sparkline partials, and
extend breakdown dimensions with protocol/cache/status. Default live
refresh to off until manually armed.
Replace the server-scoped Analytics Livewire component with an
app-wide one that filters by server/application and supports live
refresh. Add a per-bucket status-class time series endpoint/data
class for a stacked-area chart, falling back to the donut when the
Sentinel build doesn't support it. Decorate top-path rows with their
owning domain, expand breakdown dimensions to agent/ip/useragent, and
raise path/breakdown result limits. Capture X-Forwarded-For,
User-Agent, and Referer headers in traefik access logs (now enabled
in dev too) so IP, browser, and referrer breakdowns work. Add
flag-image and referer-host helpers for geo/referrer rendering.
InstallPrerequisites had no alpine branch and threw before Docker
install was ever reached. Enable the community repository (commented
out on some images) and install curl/wget/git/jq with apk.
The Docker install now also pulls docker-cli-compose, which
validateDockerCompose() requires, creates /etc/docker since Alpine's
docker package does not ship it, and enables/starts the OpenRC service.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GXciegHbJhXbGvVn7mwgbR
Add manual fix-release validation and stable image rebuilds, inject traceable development versions into SHA builds, and suppress invalid release links for development versions.
- Add live 24h polling toggle to server/application analytics views
- Add geo visualization (world map, country flags/names) for traffic
- Add dashboard nudge for servers eligible but not yet analytics-enabled
- Add lazy-loaded TrafficOverview widget to application General page
- Default-enable traffic analytics on new eligible server settings
- Rotate Caddy access logs via lumberjack roll options
- Add Traefik logrotate sidecar for copytruncate access-log rotation
Preserve optimistic listbox selections during Livewire saves, refresh service domains after updates, and align application, service, and server navigation layouts.