23 Commits

Author SHA1 Message Date
Andrey Epifancev
3e963ce4bf docs(readme): пути после переноса в ~/projects/jira-bridge, MCP в user scope (#50)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 12:42:37 +04:00
Andrey Epifancev
4e397b563d feat(mcp): batch_create принимает path у ensure_attachment и сам загружает файл (#43)
Все файлы пакета читаются до загрузки: «файл не найден: <path>», «у ensure_attachment либо path, либо file», больше 10 МБ — до POST /files; filename по умолчанию — имя файла; описание batch_create говорит про path (решение 19). design.md: решение 20 (R-2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 01:51:44 +04:00
Andrey Epifancev
9b21060d60 feat(commands): команда ensure_attachment — проверка файла при постановке, size при выдаче (#43)
SPEC ensure_attachment {key, file, filename}, пауза 30 с, по состоянию не подтверждается; queue._check_setup: формат file, файл загружен («файл <sha> не загружен: POST /files»), filename без / и \, без кавычек и управляющих символов (R-2); claim, довыдача и GET /agent/commands/{id} дописывают size (null без файла), в базе params без size, retry проходит (решения 17–18).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 01:46:14 +04:00
Andrey Epifancev
e8707d4762 feat(api): POST /files и GET /agent/files/{sha256}, files/ 0700 при старте, уборка в tick раз в сутки (#43)
Не base64 — 400 bad_request, пустой — 422 empty_file, больше 10 МБ — 413 too_large; агенту — {file, size, content} в base64, нет файла — 404 no_file; уборка отдельно от автообновления (решения 14–16).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 01:41:54 +04:00
Andrey Epifancev
3b4cf66b77 feat(commands): тип bug в ensure_issue — проверка настройки issue_types.bug при постановке (#43)
validate принимает task|epic|bug; queue._check_setup отвергает bug без issue_types.bug с name или id (422 «команда N: нет настройки issue_types.bug»); init берёт bug из issue_type_bug/issue_type_bug_id, только если ключи есть (решение 9). Спека hub-api: уборка файлов раз в сутки в пределах процесса (R-1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 01:35:56 +04:00
Andrey Epifancev
e475a8afc1 test(web): e2e окна карточки, тестовый хаб с комментариями и командами; README (#37)
Раскладка карточки: в одну колонку (уже 900 px) колонки растягиваются на всю
ширину (align-items: stretch), порог — 899.98px.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:25:44 +04:00
Andrey Epifancev
0cf71e7792 Merge branch 'main' into feat/32-hub-hygiene
Конфликт pyproject.toml: оставлены обе секции — filterwarnings (hub-hygiene-d, решение 14)
и [tool.uv] python-preference (#29). Рулинги R-14 (переписан), R-15, R-16 в design.md.
318 passed, 0 warnings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 11:01:16 +04:00
Andrey Epifancev
bc377eda2c docs: финальное ревью — M-2, M-3, M-4/T2.5, M-5, R-13, R-14 (#32)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:56:51 +04:00
Andrey Epifancev
e180bb4e5f fix: ответ PUT /settings, «создание задачи отменено», CRLF в подтверждении, реле по resolve() (O-11, O-10, O-9, minor-1, T3.1 #16) (#32)
PUT /settings отвечает всеми настройками (R-3); пропуск при cancelled-создателе — «создание задачи new:N отменено» (R-4); ensure_fields сравнивает строки без различия CRLF/LF; _cleaned по resolve(); _type_error по веткам (решения 9–12, 15).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:42:03 +04:00
Andrey Epifancev
8a319ea595 fix(agent): agent_reported — до первого claim запускатель неизвестен, подсказки «без run.py» нет (M-2 #25) (#32)
GET /agent отдаёт agent_reported; release.hint(reported=); MCP agent_status: «запускатель: неизвестно (агент ещё не выходил на связь после перезапуска хаба)» (решения 7–8, R-1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:36:19 +04:00
Andrey Epifancev
f977d9bd34 fix(release): публикация с fsync и откатом через agent.py.prev, проверка манифеста (M-1, M-3, M-5, M-6, M-7 #25) (#32)
Сбой записи — «не удалось записать публикацию: …», код 1, прежняя версия остаётся; манифест годен при целой version ≥ 1 и sha256 из 64 hex; предупреждение о негодном — одно на ошибку; не-UTF-8 agent.py — 404 (решения 1–6).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:31:22 +04:00
Andrey Epifancev
447d878e0e fix(hub): Python от uv вместо miniconda — SQLite 3.51.1 вешал хаб взаимной блокировкой (O-14, R-11, #29)
Стеки зависшего тестового хаба: потоки запросов ждут мьютексы unix-VFS SQLite в sqlite3.connect
(findReusableFd) и close (sqlite3WalClose -> unixLock). Ошибка SQLite 3.51.0–3.51.1, исправлена в 3.51.2.
.python-version = 3.13 и tool.uv.python-preference = only-managed: uv берёт свой CPython 3.13.12 (SQLite 3.50.4)
и сам пересоздаёт .venv. Тест не даёт вернуться на SQLite 3.51.0–3.51.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 03:29:23 +04:00
Andrey Epifancev
8d31fdf111 docs: web-app-followups — CLAUDE.md, README (#29)
CLAUDE.md: текущий change — openspec/changes/web-app-followups/.
README: шрифты IBM Plex входят в сборку, приложение работает без интернета.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 01:58:09 +04:00
Andrey Epifancev
34c57ceeab Merge remote-tracking branch 'origin/main' into feat/21-web-app
# Conflicts:
#	ARCHITECTURE.md
#	CLAUDE.md
#	src/jira_hub/api.py
#	tests/test_api.py
2026-10-15 00:07:48 +04:00
Andrey Epifancev
51564854d6 feat(api): / и /links ведут в веб-приложение, links.html удалена; документация (#21)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 23:44:41 +04:00
Andrey Epifancev
7c922382e6 feat(hub): agent_status — публикация и самообновление агента; README, ARCHITECTURE (#22)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:13:21 +04:00
Andrey Epifancev
adab949783 docs: доска связей хаба — README, ARCHITECTURE, CLAUDE.md (#17)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:13:20 +04:00
Andrey Epifancev
817c761fb2 feat: ensure_issue закрывается довыдачей, не сверкой; reversed_links в отчёте импорта (R-11, O-3, #9)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:48:57 +04:00
Andrey Epifancev
958dbe956f feat(queue): довыдача команды без отчёта, предел 3 выдачи; R-13 и «свежая claimed» удалены (#9)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:44:16 +04:00
Andrey Epifancev
4a82be05cc fix(relay): самовосстановление при сбоях папки — одно предупреждение вместо потока трассировок (I-1, I-2, #5)
Отказ доступа (TCC), удалённые req/ или work/ больше не сыплют трассировки каждые 0,1 с и не останавливают
реле молча: одно предупреждение на причину, подкаталоги создаются заново; resp/ создаётся до пересылки,
чтобы выданный claim не уходил в никуда.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:08:21 +04:00
Andrey Epifancev
aa621a078a feat(api): реле общей папки запускается в serve; README — транспорт через папку (#5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:41:27 +04:00
Andrey Epifancev
1bc6ebe534 fix(mcp): batch_wait и refresh асинхронные, refresh по умолчанию без ожидания (R-12, I-3)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 23:11:18 +04:00
Andrey Epifancev
d7f82cb611 feat(hub): CLI, README, описание архитектуры
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:47:24 +04:00