Ich habe Cursor das Beste aus beiden Welten gefragt:
Jede Zeile kann gruppiert werden, falls mehrere Zustände eines Sensors hintereinander vorliegen.
Ich mache dasselbe bei Fable mit den Kritikpunkten, die ich an ihm hatte, um die beste Version auf beiden Seiten zu erhalten.
Wir können vergleichen
Die Version Fable 5 nach dem Update:
Gut, aber ich habe meine Claude-Quoten für den Nachmittag damit alle verbraucht
Ich bevorzuge ebenfalls das Design von Fable 5, aber das ist wirklich nur eine Kleinigkeit.
Allerdings sehe ich, dass es nur ein Datumsfeld verwaltet. Und es stimmt, dass der Vorschlag von Cursor für die Daten besser war.
Lol, ja, das tut weh ^^ Und es ist unmöglich, sie zu teilen …
Es stimmt, dass ich den Design-Entwurf Fable 5 beim echten Testen schließlich als angenehmer in der Nutzung empfinde.
Also, es ist eigentlich ganz interessant, wenn du ein Datum auswählst, springst du zwar zu diesem Datum, aber du siehst auch die Tage drumherum, also ist es super praktisch!
pierre-gilles:
Das ist eigentlich ganz interessant, wenn du ein Datum auswählst, springst du zwar zum Datum, aber du siehst die Tage drumherum, also ist das super praktisch!
Ja, das sieht man beim Benutzen, aber ja, eine interessante Idee.
Bleibt der Filter oben auf der Seite trotzdem oben fixiert?
Das Datum bleibt kleben, aber nicht die Filter:
Ah ja ^^ Nein, ich meinte eher die Kopfzeile mit den Filtern + Daten + Suche:
Denn wenn man in einem historischen Journal sucht, möchte man schnell filtern können ^^
Ja, ich bin einverstanden. Ich würde sofort weitermachen, sobald ich wieder Claude-Guthaben habe
Du hast dich heute ja richtig ausgetobt, bei der Anzahl der offenen PRs
@Terdious der Header ist jetzt sticky, aber nur die Auswahl der Gerätetypen.
Ich habe es getestet und es ist wirklich sauber!
Sticky — ja, ich denke, das ist eine gute Idee, aber nicht für das gesamte Feld: Datum + Raum + sticky-Suche würden ~140 px Höhe auf dem Handy einnehmen, fast ein Fünftel des Bildschirms. Was ich gemacht habe:
die Filterpunkte pro Kategorie bleiben oben am Bildschirm kleben beim Scrollen (eine einzige kompakte, horizontal scrollbare Zeile mit undurchsichtigem Hintergrund) — das ist das Werkzeug, das man am meisten beim Durchstöbern des Feeds benutzt;
die Tagesüberschriften kleben sich direkt darunter , also sieht man beim Scrollen immer „welcher Tag“ + „welche Filter“;
die Suche und das Datum bleiben oben auf der Seite — man gelangt mit einem Scroll dorthin, und der „Zurück zur Live-Ansicht“-Button / das „N neue Ereignisse“-Label bleiben ohnehin schwebend.
Also, ich denke, wir werden uns für den Vorschlag von Fable 5 entscheiden!
Der Pull Request:
master ← claude/smart-home-activity-history-h5lrne
ouvert 01:06PM - 03 Jul 26 UTC
### Pull Request check-list
To ensure your Pull Request can be accepted as fast… as possible, make sure to review and check all of these items:
- [x] If your changes affect the code, did you write the tests? (8 new server tests: lib + controller)
- [x] Are tests passing? (`npm test` device suites: 261 passing; front has no unit-test script)
- [x] Is the linter passing? (`npm run eslint` on both front/server)
- [x] Did you run prettier? (both front/server, all files pass `prettier --check`)
- [x] If you are adding a new feature/service, did you run the integration comparator? (`npm run compare-translations` on front — en/fr/de complete)
- [x] Did you test this pull request in real life? With real devices? (tested end-to-end with a seeded local instance — screenshots below workflow; not yet with real devices)
- [x] If your changes modify the API (REST or Node.js), did you modify the API documentation? (apidoc comments added on the new endpoint)
- [ ] If you are adding a new features/services which needs explanation, did you modify the user documentation?
- [x] Did you add fake requests data for the demo mode (`front/src/config/demo.js`) so that the demo website is working without a backend?
### Description of change
This PR adds a new **Activity** page (`/dashboard/history`, new "Activity" tab in the header) that shows a live, visual timeline of everything happening in the home: doors opening, motion detected, lights turned on/off, sensor values… It is designed to stay readable even for homes with 100–200 devices reporting states continuously.
**Front (the main part):**
- Visual timeline grouped by day ("Today", "Yesterday", then full dates), with a colored icon per event family, device name, human-readable action ("Opened", "Motion detected", "Turned on", "21.5 °C"…), room badge and time.
- **Burst grouping**: consecutive states of the same device feature are collapsed into a single line with a `×N` badge, expandable to see each timestamped occurrence — this is what keeps the feed readable with chatty sensors.
- Filter chips by event family (Openings, Motion & presence, Buttons & remotes, Lights & switches, Climate, Safety, Energy, Other), room selector and device search (server-side filtering, debounced).
- **Real-time**: new states arrive live through the existing websocket. When the user has scrolled down, events are not inserted (the content would move under their eyes): a floating "N new events" pill appears and scrolls back to top on click.
- Infinite scroll with cursor pagination (IntersectionObserver + "Load more" fallback), empty state, mobile responsive, en/fr/de translations, demo mode data.
**Server:**
- New endpoint `GET /api/v1/device_feature/states_history`: returns recent device states across all devices from DuckDB, most recent first, decorated with device feature / device / room metadata. Supports cursor pagination (`before` / `take`, capped at 500) and `categories` / `room_id` / `search` filters. The query is always constrained to existing device feature ids, so states of deleted features never consume rows of a page.
Screenshots (local instance with seeded data):
- Desktop timeline with live badge, filter chips and day sections
- "Openings" filter with ×N burst grouping and expandable occurrences
- Mobile view
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_012ZHMk4de6U51BGf6gnNqiR
---
_Generated by [Claude Code](https://claude.ai/code/session_012ZHMk4de6U51BGf6gnNqiR)_
## Summary by CodeRabbit
* **New Features**
* Added an Activity/History timeline at `/dashboard/history` with day grouping (“today/yesterday”), room/category filtering, search, live “new events” buffering, and infinite loading.
* Added an authenticated API endpoint to retrieve device feature state history with cursor pagination (including optional `before_id`).
* Extended demo data with rooms and historical device feature state events.
* **Documentation**
* Added/updated History page and navigation i18n strings across supported languages, including device value labels.
* **Tests**
* Added backend/controller and library tests covering metadata, filtering, ordering, pagination, and edge cases.
Falls jemand es testen möchte, ist das heute Vormittag oder Mittag möglich. Ansonsten plane ich, es am frühen Nachmittag zu mergen.
Wie ich bereits oben erwähnt habe, handelt es sich um eine Entwicklung mit geringem Risiko: Es geht nur um eine kosmetische Verbesserung. Wir können sie also auch nach der Implementierung weiter verbessern, da es keine Änderungen am Datenmodell gibt.
Vielen Dank an Claude Fable 5 für diese Implementierung!
Hop, es ist gemerged, es wird in der nächsten Version von Gladys veröffentlicht
Diese Funktion ist in Gladys Assistant 4.82 verfügbar:
Salut à tous,
Je sors aujourd’hui ce qui est, pour l’instant, l’une des plus grosses releases de l’année, et il y a une vraie raison à ça.
On est clairement à un tournant dans la façon de développer : les modèles d’IA gagnent en puissance, et les outils pour s’en servir au quotidien deviennent enfin matures. Depuis deux semaines, deux d’entre eux ont changé ma manière de travailler sur Gladys.
Claude Fable 5, le modèle phare d’Anthropic, celui qui a été temporairement restreint aux États-Unis…
Vielen Dank an alle für eure Hilfe und euer Feedback