mirror of
https://github.com/niels-emmer/wall-cast.git
synced 2026-09-13 23:53:36 +02:00
[PR #6] [MERGED] feat(airquality): air quality widget — European AQI + pollen forecast #6
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
github-mirrors/wall-cast#6
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/niels-emmer/wall-cast/pull/6
Author: @niels-emmer
Created: 3/23/2026
Status: ✅ Merged
Merged: 3/23/2026
Merged by: @niels-emmer
Base:
main← Head:feat/air-quality📝 Commits (4)
1a64115feat(airquality): add air quality widget with AQI and pollen forecast45760a5fix(airquality): add Air Quality to rotator slot type dropdownb9e6b10docs: update CLAUDE.md, README, and example config for air quality widget78ff7b0chore(memory): mark rules rewrite plan as complete📊 Changes
13 files changed (+510 additions, -18 deletions)
View changed files
📝
CLAUDE.md(+4 -1)📝
README.md(+3 -2)📝
backend/app/config.py(+2 -0)📝
backend/app/main.py(+2 -1)➕
backend/app/routers/airquality.py(+169 -0)📝
config/wall-cast.example.yaml(+4 -4)📝
docs/config-reference.md(+25 -1)📝
docs/memory/records/rules-rewrite-plan.md(+2 -2)📝
frontend/src/admin/AdminPanel.tsx(+8 -6)➕
frontend/src/hooks/use-air-quality.ts(+33 -0)📝
frontend/src/i18n/translations.ts(+35 -0)➕
frontend/src/widgets/airquality/AirQualityWidget.tsx(+220 -0)📝
frontend/src/widgets/base-registry.ts(+3 -1)📄 Description
Summary
airqualitywidget (large slot) showing European AQI index, pollutant chips (PM2.5, PM10, NO₂, O₃, Dust), and a 4-day pollen bar chart (birch, grass, alder, mugwort, ragweed)Changes
backend/app/routers/airquality.py— new/api/airqualityrouter;_parse()aggregates hourly pollen → daily max and classifies levels; 1 h cachefrontend/src/hooks/use-air-quality.ts— TanStack Query hook (1 h refetch)frontend/src/widgets/airquality/AirQualityWidget.tsx— AQI card + pollen bar chartfrontend/src/widgets/base-registry.ts— widget registeredfrontend/src/admin/AdminPanel.tsx— added toROTATOR_SLOT_TYPESdropdown and default new-screen rotatorfrontend/src/i18n/translations.ts— nl + en strings for AQI levels, pollen species, pollen levelsdocs/config-reference.md— newairqualitywidget section, refresh table, API keys tableREADME.md/CLAUDE.md— widget table, project layout, data sources, API endpoints all updatedconfig/wall-cast.example.yaml— airquality added to main rotator; removed invalidspeedtest_bytes_*fieldsTest plan
git pull && docker compose up --build -dairqualityslot to a rotator via Admin → Screens → rotator → Add slot → Air Quality🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.