J’ai demandé à Cursor le meilleur des deux mondes :
Chaque ligne peut se grouper si jamais il y a plusieurs états d’un même capteur à la suite.
Je fais pareil côté Fable avec les critiques que j’avais pour lui pour avoir la meilleure version de chaque côté.
On pourra comparer
La version Fable 5 après correctif :
Bon par contre j’ai flingué mes quota Claude de l’aprem avec tout ça
Je préfère également le design Fable 5, mais c’est vraiment à peu de chose.
Par contre je vois qu’il ne gère qu’un champs date. Et c’est vrai que la propositions de Cursor pour les dates était mieux.
Lol, oui ça pique ^^ Et impossible d’en partager …
C’est vrai qu’en testant en réel le design Fable 5, finalement je le trouve plus confort à utiliser.
Alors c’est assez intéressant en fait, quand tu sélectionne une date, en fait tu « sautes » à la date mais tu vois les jours autour, donc c’est super pratique !
pierre-gilles:
Alors c’est assez intéressant en fait, quand tu sélectionne une date, en fait tu « sautes » à la date mais tu vois les jours autour, donc c’est super pratique !
En effet, à voir en l’utilisant, mais idée interessante oui.
Le haut de page filtre reste sticky en haut du coup par contre ?
La date reste sticky mais pas les filtres :
Ah oui ^^ Non de mon côté, je parlais plutôt de l’entete de page avec les filtres + dates + recherche :
Car lorsqu’on recherche dans un journal histo, on aime pouvoir filtrer rapidement ^^
Yes je suis d’accord. Je reprendrais dès que j’ai de nouveau du crédit Claude Code
Tu t’es lâché au vu du nombre de PR ouverte aujourd’hui
@Terdious le header est maintenant sticky, mais que la sélection des types d’appareils.
J’ai testé et c’est vraiment propre !
Sticky — oui, je pense que c’est une bonne idée, mais pas pour tout le cartouche : date + pièce + recherche sticky mangeraient ~140 px de hauteur sur mobile, presque un cinquième de l’écran. Ce que j’ai fait :
les puces de filtres par catégorie restent collées en haut au scroll (une seule ligne compacte, scrollable horizontalement, avec fond opaque) — c’est l’outil qu’on manipule le plus en parcourant le flux ;
les en-têtes de jour viennent se coller juste en dessous , donc en scrollant on voit toujours « quel jour » + « quels filtres » ;
la recherche et la date restent en haut de page — on y accède d’un coup de scroll, et le bouton « Revenir au direct » / la pastille « N nouveaux événements » restent flottants de toute façon.
Du coup, je pense qu’on va partir sur la proposition de Fable 5 !
La PR :
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)
- [ ] 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.
Si certains veulent la tester, c’est possible ce matin ou ce midi. Sinon, je prévois de merger en début d’après-midi.
Comme je le disais plus haut, c’est un développement à faible risque : il s’agit uniquement d’une évolution cosmétique. On pourra donc continuer à l’améliorer, même une fois en production, puisqu’il n’y a aucune modification du modèle de données.
Merci à Claude Fable 5 pour cette implémentation !
Hop, c’est mergé, ça partira dans la prochaine version de Gladys
Cette fonctionnalité est disponible dans Gladys Assistant 4.82 :
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…
Merci à tous pour votre aide et vos retours