Skip to content

fix(shopping): облачный синк списка покупок вместо glagol — фикс KeyError: 'text' (#631) - #804

Open
Dekkee wants to merge 2 commits into
AlexxIT:masterfrom
Dekkee:fix/shopping-list-cloud-sync
Open

fix(shopping): облачный синк списка покупок вместо glagol — фикс KeyError: 'text' (#631)#804
Dekkee wants to merge 2 commits into
AlexxIT:masterfrom
Dekkee:fix/shopping-list-cloud-sync

Conversation

@Dekkee

@Dekkee Dekkee commented Aug 9, 2026

Copy link
Copy Markdown

Проблема

shopping_sync / todo_sync читали текущий список Алисы, отправляя по локальному glagol-каналу «Что в списке покупок» и разбирая card["text"]. Стриминговая Алиса (серверные эксперименты fair_tts_streaming / enable_partials) на этот запрос теперь отвечает {"is_streaming": true, "cards": [], "directives": [{"name": "tts_play_placeholder"}]} — текстовой карточки нет вообще, синк падает с KeyError: 'text', список в HA не обновляется.

Fixes #631

Решение

Синк полностью переведён на облачное notes API (rpc.alice.yandex.ru/gproxy/*) — та же cookie-сессия, что уже используется для будильников, CSRF-токен не нужен:

  • чтениеget_notes: «Список покупок» — единственная заметка с title == "Список покупок", активные пункты = subtasks с done == false;
  • добавлениеcreate_subtask;
  • удалениеdelete_subtask: пункт, отмеченный выполненным в HA (галка в To-do / Shopping List), удаляется из списка Алисы — та же семантика, что была у glagol-синка («Удали …»);
  • glagol в синке больше не используется.

Затронуто:

  • core/yandex_quasar.py — новые методы notes API;
  • hass/shopping_list.py, hass/todo_list.py — чтение и запись через облако;
  • core/yandex_station.py — в синк передаётся quasar вместо glagol.

Побочный бонус: колонка больше не проговаривает список и команды при каждом синке (косвенно касается #229 / #688).

Проверка

  • Живая установка HA: синк To-do ↔ Алиса работает в обе стороны, KeyError: 'text' исчез; галка на пункте в HA удаляет его из списка Алисы, добавленное голосом появляется в HA после синка.
  • Независимое подтверждение фикса из форка другим пользователем: список покупок перестал синхронизироваться #631 (comment)
  • py_compile всех затронутых файлов.

🤖 Generated with Claude Code

Dekkee and others added 2 commits August 9, 2026 14:46
get_notes / get_shopping_note / note_active_items / add_shopping_item /
delete_shopping_item via rpc.alice.yandex.ru/gproxy on the same cookie
session as alarms (cookie-only, no CSRF). Needed because streaming Alice
no longer returns a text card for the local glagol query (issue AlexxIT#631).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Streaming Alice (fair_tts_streaming / enable_partials) returns
{is_streaming: true, cards: []} for the glagol text query, so
shopping_sync/todo_sync crashed with KeyError: 'text' (issue AlexxIT#631).

Read and write the list via the cloud notes API instead of glagol:
completed items are deleted (same semantics as the old glagol sync),
new items are created via create_subtask. No voice feedback during
sync anymore as a side effect.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Dekkee added a commit to Dekkee/YandexStation that referenced this pull request Aug 9, 2026
…completed

Семантика вернулась к апстримной: галка на пункте = купил = пункт
удаляется из списка Алисы (delete_subtask), а не помечается done.
mark_bought / clear_bought_items / media_id clear_completed выпилены.
Содержимое = ветка fix/shopping-list-cloud-sync (PR в апстрим AlexxIT#804).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

список покупок перестал синхронизироваться

1 participant