fix(sessions): lista vuota sul device — modello C++ con ruoli (v0.1.2)
Causa: su Qt 5.6 (kit Sailfish 5.1) una QVariantList di QVariantMap
usata come model non fa risolvere i campi nei delegate QML
(model.title/message_count/updated_at = undefined -> righe vuote), pur
con payload corretto dal server (verificato con cattura reale del 12/09).
- Nuovo src/sessionsmodel.{h,cpp}: QAbstractListModel con ruoli
session_id/title/message_count/updated_at; api.sessions ora e' il
modello, api.sessionsCount per lo stato "nessuna sessione"
- /api/sessions con sidebar_source=webui&exclude_hidden=1 (come la
sidebar del browser: solo sessioni WebUI, niente CLI/cron/nascoste)
- SessionsPage: describe(message_count, updated_at) con parametri espliciti
- PROTOCOL.md: payload sessions verificato + nota del pitfall Qt 5.6
This commit is contained in:
+3
-3
@@ -76,12 +76,12 @@ richiede il probe WebUI su :8899). Esito 12/09/2026: unit 9/9, live completo OK.
|
||||
|
||||
```bash
|
||||
cd /home/kaneda/workspace
|
||||
tar czf harbour-hermes-0.1.1.tar.gz \
|
||||
--transform 's,^harbour-hermes,harbour-hermes-0.1.1,' \
|
||||
tar czf harbour-hermes-0.1.2.tar.gz \
|
||||
--transform 's,^harbour-hermes,harbour-hermes-0.1.2,' \
|
||||
--exclude='.git' harbour-hermes
|
||||
```
|
||||
|
||||
Lo spec si aspetta la directory `harbour-hermes-0.1.1/` (pattern degli altri
|
||||
Lo spec si aspetta la directory `harbour-hermes-0.1.2/` (pattern degli altri
|
||||
progetti: cercato in modo robusto anche per i sorgenti live di sfdk).
|
||||
|
||||
## 5. Dipendenze lato server (WebUI)
|
||||
|
||||
+24
-13
@@ -30,32 +30,43 @@ server ha una password impostata.
|
||||
|
||||
## 2. Sessioni
|
||||
|
||||
`GET /api/sessions` → lista per la sidebar:
|
||||
`GET /api/sessions?sidebar_source=webui&exclude_hidden=1` → lista per la
|
||||
sidebar (stessi parametri del frontend web: solo sessioni WebUI visibili;
|
||||
senza parametri arrivano anche le CLI/cron e le nascoste — lista più lunga).
|
||||
**Cattura reale del 12/09/2026** (chiavi verificate):
|
||||
|
||||
```json
|
||||
{
|
||||
"sessions": [
|
||||
{
|
||||
"session_id": "171ff18f9313",
|
||||
"title": "Webui Session",
|
||||
"session_id": "20260907_123845_c7e52d",
|
||||
"title": "Diagnosi guasto YunoHost",
|
||||
"workspace": "/home/kaneda/.hermes/profiles/carlo/home/workspace",
|
||||
"model": "deepseek-v4-flash",
|
||||
"model_provider": "deepseek",
|
||||
"message_count": 2,
|
||||
"created_at": 1785701975.8797414,
|
||||
"updated_at": 1785701985.0872252,
|
||||
"pinned": false, "archived": false,
|
||||
"message_count": 163,
|
||||
"created_at": 1788707925.6,
|
||||
"updated_at": 1788778530.726691,
|
||||
"pinned": false, "archived": false, "project_id": null,
|
||||
"profile": "default",
|
||||
"source_tag": "webui", "session_source": "webui",
|
||||
"is_cli_session": false, "is_streaming": false,
|
||||
"active_stream_id": null
|
||||
"source_tag": "webui", "raw_source": "webui",
|
||||
"session_source": "webui", "source_label": "WebUI",
|
||||
"parent_session_id": null
|
||||
}
|
||||
],
|
||||
"active_profile": "default",
|
||||
"server_time": 1789188804.1041577
|
||||
"sidebar_reference_sessions": [ "..." ],
|
||||
"cli_count": 4, "archived_count": 0,
|
||||
"archived_webui_count": 0, "archived_cli_count": 0,
|
||||
"include_archived": false, "all_profiles": false,
|
||||
"active_profile": "default"
|
||||
}
|
||||
```
|
||||
|
||||
⚠ Qt 5.6 (kit Sailfish 5.1): i campi di questi oggetti NON si risolvono nei
|
||||
delegate QML quando il modello è una QVariantList (`model.campo` = undefined
|
||||
→ righe vuote pur con dati corretti dal server). Il client usa un
|
||||
QAbstractListModel C++ (`SessionsModel`) con ruoli `session_id`, `title`,
|
||||
`message_count`, `updated_at`.
|
||||
|
||||
`GET /api/session?session_id=ID` → `{"session": { ... }}` con in più:
|
||||
|
||||
- `messages`: array di `{"role": "user"|"assistant", "content": "...",
|
||||
|
||||
Reference in New Issue
Block a user