Repository navigation
build-4
Pre-release
Pre-release
Что нового
Merge pull request ivanarama#173 from ivanarama/fix/weekly-review-2026-06-22
Сборка
Автосборка из ветки main.
Коммит: e04fdef0d7a18086d0bf9bffdb546a52e14c27e5
Версия платформы: build-4
Для идентификации: в конфигураторе в шапке отображается платформа build-4.
Изменения с build-3 (250 коммит(ов))
- docs(report): план 66 — СКД v2 (развитие компоновки) (e106242)
- feat(report): сворачиваемые блоки отчёта (параметры/график/данные) (6a307d7)
- feat(report): кнопки «развернуть/свернуть всё» в СКД (129df74)
- feat(report): выравнивание значений показателей (left/right/center) (ccab25b)
- feat(report): форматирование чисел показателей (разрядность/знаки/%) (ee1aac1)
- feat(report): залипающий заголовок таблицы СКД (8b6aeb0)
- feat(configurator): выравнивание и формат показателя в конструкторе СКД (3cfce01)
- fix(ui): СсылкаНаОбъект — форма (Сущность, Ид) для ссылок в таблицах страниц (план 66) (251e6bd)
- docs: план 66 — страницы и сравнение с панелями подсистем (d4f4a77)
- docs(report): отметить этап A плана 66 выполненным (b4588e4)
- feat(report): экспорт СКД в Excel с группами и итогами (2bb815e)
- test(report): покрыть detail-режим Excel-экспорта СКД и уточнить комментарии (e8094c1)
- feat(report): вычисляемые показатели (выражения, проценты) (aaaccd2)
- test(report): покрыть EvalNum и многоуровневый Expr; уточнить комментарии (7b96c6f)
- feat(report): расшифровка детальной строки в документ (a409009)
- fix(ui): декодировать имя страницы в /ui/page/{name} — из меню был 404 (f050c61)
- docs: план 66 — план доработок страниц (кнопки-действия, конфигуратор, i18n) (4ee321b)
- fix(report): не строить расшифровку-ссылку без сущности перехода (138e472)
- docs: правило ведения docs/features.md (раздел «Тестируем» на сайте) (81270ec)
- fix(report): пустая ячейка вместо 0 для неопределённого показателя в Excel-экспорте СКД (9e709ae)
- docs(report): отметить этап B плана 66 выполненным (7586faf)
- docs: backfill уже реализованных возможностей в каталог (JOIN, HTTP, вложения, email, PDF/Excel, бэкап) (a0c6004)
- feat(ui): страницы — кнопки-действия (вызов процедуры обработчика), план 66 (5fbb05a)
- feat(launcher): путь к файлу SQLite в списке баз (01f7100)
- docs(features): выверка перед мержем — статусы и факты (6ac2462)
- feat(launcher): страницы в конфигураторе — CRUD объекта «страница», план 66 (7642654)
- Merge pull request ivanarama#84 from ivanarama/docs/testing-features (21aaa9c)
- feat(ui): страницы — i18n подписей блоков (авто-уровень), план 66 (5134b32)
- fix(i18n): переводы UI image-поля и режимов списка (план 64) (0d408d3)
- Merge pull request ivanarama#79 from ivantit66/feature/64-layout-editor-ux (bd560fb)
- Merge pull request ivanarama#80 from ivantit66/docs/66-67-plans (2c4b4b3)
- Merge main в feature/59-report-composition (48a7fbf)
- Merge pull request ivanarama#81 from ivanarama/feature/59-report-composition (9e0b40a)
- Merge main в feature/66-pages (501e051)
- Merge pull request ivanarama#82 from ivantit66/feature/66-pages (d729d6b)
- Merge main в feature/67-exec-command (e080445)
- Merge pull request ivanarama#83 from ivantit66/feature/67-exec-command (42e91cc)
- Merge remote-tracking branch 'origin/main' into feature/launcher-sqlite-db-path (d3a75b8)
- Merge pull request ivanarama#85 from ivanarama/feature/launcher-sqlite-db-path (2331bf8)
- fix(report): сохранять titles при правке композиции и не ломать detail_link (09014f5)
- Merge pull request ivanarama#96 from ivanarama/fix/report-composition-blockers (3df521f)
- fix(report): корректность СКД — ключ группировки, сортировка nil, Excel-кнопка (a0dfd13)
- Merge pull request ivanarama#97 from ivanarama/fix/compose-correctness (1d22bd5)
- refactor(report): единый обход дерева СКД для HTML и Excel (ivanarama#93) (9de3acb)
- feat(dsl): НСтр по умолчанию берёт язык интерфейса пользователя, план 66 (8336d1e)
- Merge pull request ivanarama#98 from ivanarama/refactor/compose-single-traversal (840690d)
- refactor(report): график СКД через общий widget.EChartsOption (ivanarama#93) (06da942)
- Merge origin/feature/66-pages в локальную ветку (b38ce09)
- Merge pull request ivanarama#99 from ivanarama/chore/compose-dedup-rest (519b9a1)
- Merge main в feature/66-pages: план 67 (команды ОС) + план 66 (страницы) (9a53b79)
- Merge pull request ivanarama#100 from ivantit66/feature/66-pages (4a76c98)
- fix(configurator): создание общего модуля из дерева (issue ivanarama#95) (65fc2b5)
- fix(configurator): прокрутка вкладок Бэкапы/Файлы/Импорт (issue ivanarama#94) (780ca15)
- Merge pull request ivanarama#101 from ivanarama/fix/configurator-module-and-tab-scroll (9f76bdb)
- fix(security): санитайзер raw-HTML страниц через bluemonday (план 66) (d96c447)
- fix(security): определять тип картинки по содержимому, обезвреживать SVG (e92b992)
- Merge pull request ivanarama#107 from ivanarama/fix/page-sanitizer-and-image-upload (fa4b4c1)
- fix(dsl): поддержка нескольких переменных в одном Перем через запятую (b888cee)
- fix(configurator): кликабельные ошибки, регистронезависимая подсветка, шаблоны конструкций (0a13f4c)
- Merge pull request ivanarama#108 from ivanarama/fix/configurator-dsl-issues-102-105 (e89cef7)
- docs(features): полный каталог возможностей + раздел «как настроить» (092e576)
- Merge ветки docs/features-catalog: полный каталог возможностей в features.md (cccef0e)
- feat(config): поля author/copyright/license в app.yaml (3a117ea)
- feat(version): константы правообладателя платформы (92e6f37)
- feat(ui): проброс авторства конфигурации и платформы в Config (ca43c57)
- feat(ui): авторство и лицензия на экране «О программе» (6a5752d)
- feat(configurator): редактирование автора/правообладателя/лицензии конфигурации (8bc2d27)
- docs(config): пример авторства в tasks + features.md (d65486e)
- docs: секция «Авторы» в README (94f48d3)
- docs: формат git-trailer — инструмент, а не соавтор (1a8f01c)
- docs(plan): план 69 — авторство и лицензирование конфигураций (8c952ed)
- Merge pull request ivanarama#109 from ivanarama/feature/config-authorship (bd8e8f9)
- docs(examples): авторство и лицензия в остальных примерах (7efefd9)
- Merge pull request ivanarama#110 from ivanarama/feature/examples-authorship (580e719)
- docs(plans): сверка 2026-06-18 — 59/66/67 реализованы, 68 этапы A+B (2007ca4)
- Merge pull request ivanarama#111 from ivanarama/feature/68-cross-table (21d766b)
- feat(report): кросс-таблица (pivot) — измерения в колонки (9490873)
- docs(plan): план 68 — этап C1 (кросс-таблица) выполнен (845e807)
- fix(configurator): сохранение реквизитов/ТЧ и точности чисел в редакторах (669b409)
- feat(report): варианты компоновки отчёта (план 68, C2) (9f3e387)
- refactor(report): вынос сборщика Composition из формы в compform (148e32c)
- feat(report): тип UserReportSettings (рантайм-настройки + отборы) (14f7a09)
- fix: доводки по ревью за 2 дня — потери данных, path traversal, СКД, картинки, DSL/UI (51cd2bc)
- test: уникальные имена тест-хелперов конфигуратора (postCfgRv и др.) (e477afe)
- feat(storage): per-user хранение настроек отчёта в _settings (a082719)
- feat(report): эффективная компоновка из рантайм-настроек пользователя (c415f4d)
- feat(report): пост-запросные отборы строк в рантайм-настройках (10190b0)
- feat(report): экспорт в Excel учитывает рантайм-настройки (d77f4c2)
- feat(report): панель рантайм-настроек — группировки и показатели (6d0c267)
- feat(report): отборы в панели рантайм-настроек (3021757)
- feat(report): сохранение и сброс рантайм-настроек отчёта (580eba0)
- feat(report): автозагрузка сохранённых рантайм-настроек отчёта (1e16671)
- feat(report): индикатор и сброс пользовательских настроек отчёта (6a02d2f)
- fix(dsl): раздел объявления переменных модуля (Перем) перед процедурами (ivanarama#116) (8955950)
- fix: доводки по второму ревью — IDOR картинок, GC блобов, СКД, атомарность страниц (164176a)
- fix(i18n): перевод ключа «Добавить реквизит» (en) (ab65805)
- Merge remote-tracking branch 'origin/main' into feature/68-pivot (be7c496)
- Merge pull request ivanarama#113 from ivanarama/fix/configurator-tablepart-save (2efc825)
- Merge pull request ivanarama#112 from ivanarama/feature/68-pivot (efab2d2)
- fix(security): объектный RBAC для ИИ-запросов и вложений (планы 54, 56) (746e0d4)
- Merge branch 'main' into fix/review-2day-followups (ac6a657)
- Merge remote-tracking branch 'origin/fix/review-2day-followups' (81d9335)
- Merge pull request ivanarama#114 from ivanarama/fix/review-2day-followups (8b5e42e)
- docs(plan): дизайн-спека этапа 2 плана 55 — html/template + go:embed конфигуратора (68d40c1)
- fix(dsl): ключевые слова как имена свойств после точки (ivanarama#117) (89a1399)
- Merge pull request ivanarama#118 from ivanarama/fix/117-keyword-member-name (f27b915)
- docs(plan): пошаговый план Фазы 1 — конфигуратор на html/template (TDD) (39a243d)
- test(configurator): падающий тест экранирования XSS (план 55, фаза 1) (d5c52d3)
- fix(security): конфигуратор на html/template — контекстное экранирование (план 47 §1.3) (3143fa2)
- test(configurator): точные ассерты экранирования XSS по контекстам (фикс ревью I1) (d40a2ec)
- test(configurator): неваккуумные JS-ассерты экранирования (\u003c вместо сырого <) (b340214)
- test(configurator): smoke-рендер вкладок (rich data) + удалить мёртвую cfgAdminOverlay (fb4826b)
- test(configurator): уникальные якоря тела вкладок convert/files/backup (фикс ревью) (47834bb)
- docs(plan): Фаза 1 плана 55 (html/template) реализована — XSS-долг плана 47 §1.3 закрыт (51cb932)
- docs(plan): пошаговый план Фазы 2 — вынос CSS/JS конфигуратора в go:embed (9cfd989)
- refactor(configurator): вынести CSS в /static/configurator.css (план 55 фаза 2a) (7944b68)
- refactor(configurator): bootstrap window.__cfg/__cfgI18n, JS читает данные/переводы рантайм (план 55 фаза 2b-1) (21d5ee2)
- test(configurator): XSS-тест заполняет bootstrap и проверяет экранирование в window.__cfg (фикс ревью) (4a67548)
- fix(configurator): пустые срезы bootstrap → [] вместо null (фикс ревью I1) (d22ecff)
- feat(configurator): partial переводов titles-block + parseMapForm (eeb163d)
- refactor(configurator): вынести JS в /static/configurator.js, тесты на файл (план 55 фаза 2b-2) (81dfd33)
- docs(plan): фаза 2 плана 55 — фронт конфигуратора вынесен в go:embed (6726→2443 строк) (ac7108f)
- feat(configurator): переводы справочников/документов и их реквизитов (e712df4)
- feat: подсистема торгового оборудования (подключаемое оборудование) (15e6cc4)
- docs(plans): планы остатка по торговому оборудованию (30–32) (3f2664c)
- fix(configurator): удаление всех переводов объекта убирает titles из YAML (8af8212)
- Merge origin/main into feature/55-configurator-htmltemplate (2cc56c6)
- feat: фискальный регистратор ККТ (54-ФЗ) через драйвер АТОЛ (54bb641)
- fix(configurator): переводы реквизитов табличных частей (ce4cf66)
- feat: оборудование кассира в основном UI onebase (мост браузер→агент) (6dec764)
- feat: декларативный дисплей покупателя + CP866-кодировка (0ab71c4)
- feat(configurator): переводы отчётов и параметров (eed8c5c)
- feat(configurator): переводы обработок и параметров (874e503)
- feat(configurator): переводы констант (labels) (71b521e)
- feat(configurator): переводы подсистем (deccfb7)
- docs(plan): спека follow-up'ов плана 51 — UI провайдеров/моделей, tool-use OpenAI/Gemini, два зазора RBAC (85f392f)
- feat(configurator): переводы регистров накопления, измерений и ресурсов (08b2b2d)
- docs(plan): детальный план реализации follow-up'ов 51 + правка спеки (embed) (1bf2506)
- feat(llm): tool-use для OpenAI и Gemini протоколов (follow-up плана 51) (403a3d1)
- fix(configurator): передать AvailableLangs в register-detail (86176f7)
- fix(rbac): регбух как право register + фильтр описание_данных по правам (план 54 follow-up) (538613c)
- feat(configurator): переводы инфорегистров, измерений и ресурсов (ac47039)
- feat(configurator): нормальный UI настроек ИИ — формы провайдеров/моделей/задач вместо JSON (план 51) (2a6d3ae)
- docs(rbac): актуализировать комментарий aiDeniedSource (регбух теперь register) (a7638d4)
- feat(configurator): переводы регистра бухгалтерии и ресурсов (9ed9fd1)
- feat(configurator): переводы страниц и главной страницы (febde3f)
- refactor(configurator): единый гейт formHasMapField для titles объектов (1861afe)
- docs: каталог возможностей и статус плана 31 (переводы в конфигураторе) (773aaf5)
- test(configurator): smoke-тест рендера переводов в форме справочника (16d4b52)
- feat(metadata): переводы значений перечислений (ValueTitles + оба формата YAML) (031cbe0)
- feat(ui): перевод значений в выпадающих списках перечислений (a31f20c)
- feat(ui): перевод значений перечислений в списках (faa9aa4)
- feat(configurator): редактор переводов значений перечислений (2a17a88)
- feat(ui): перевод значений перечислений в managed-списках (SlickGrid) (a5db9bd)
- fix(gengen): совместимость scanEnumDir с новым форматом перечислений (43d956a)
- refactor(ui): чистка кода переводов enum-значений (9d82146)
- docs: обновить документацию переводов значений перечислений (d0c50b8)
- fix(ui): порядок значений enum в DOM-ТЧ + отдельная секция features.md (c26fc9c)
- fix(configurator): не терять значения enum при пустом имени в середине (81ae270)
- Merge PR ivanarama#119: refactor(configurator): html/template + go:embed (план 55 этап 2) (d1b211e)
- Merge PR ivanarama#125: feat(configurator): переводы синонимов в формах конфигуратора (план 31) (227d4e7)
- Merge PR ivanarama#126: feat: переводы значений перечислений (follow-up плана 31) (f6fd4bf)
- fix(llm): исполнять OpenAI tool_calls при finish_reason:stop (488d548)
- Merge PR ivanarama#124: План 51 follow-up: tool-use OpenAI/Gemini, два зазора RBAC, UI провайдеров/моделей (cfe7f79)
- Merge PR ivanarama#121: feat: фискальный регистратор ККТ (54-ФЗ) через драйвер АТОЛ (334360a)
- fix(equipment): защита ККТ от двойной фискализации + валидация + токен агента (c5be673)
- Merge PR ivanarama#123: feat: декларативный дисплей покупателя + CP866-кодировка (0eb33ac)
- Merge PR ivanarama#122: feat: оборудование кассира в основном UI onebase (мост браузер→агент) (f459d3c)
- feat(equipment): подключить ПодключитьОборудование в рантайм конфигураций (0ae7d89)
- Merge feature/equipment-dsl-runtime: ПодключитьОборудование в рантайме конфигураций (858d755)
- i18n(ui): перевести строки меню оборудования на 14 локалей (db48254)
- fix(configurator): заготовка формы объекта по виду объекта (ivanarama#133) (14e8a56)
- fix(dsl): понятная ошибка для оператора вне процедуры/функции (ivanarama#128) (a325e0a)
- fix(configurator): позиционировать дерево на созданном объекте (ivanarama#127) (30013ec)
- feat(configurator): изменяемая ширина боковых панелей дерева и отладки (ivanarama#131) (823dd9e)
- feat(bp3): экспортёр OneBase-PuT → БП3 — внешняя обработка (.obform) + пакет контракта (ef10ced)
- feat(dsl): Документы.X.НайтиПоИдентификатору(УИД) — загрузка документа по UUID (cb818ab)
- fix(bp3): обновлённый .obform (ТЧ по UID, без BOM) (a857a04)
- feat(configurator): палитра реквизитов — перетаскивание полей на форму (ivanarama#134) (4a0152b)
- feat(ui): оболочка вкладок рантайма — фаза 1 (ivanarama#129, ivanarama#130) (1db2516)
- feat(ui): вкладки фаза 2 — открытие форм в новых вкладках + дубликат (ivanarama#129, ivanarama#130) (7a9dbd1)
- feat(ui): вкладки фаза 3 — защита от потери несохранённых правок (ivanarama#129) (0dfcccb)
- feat(ui): вкладки фаза 4 — полировка управления вкладками (ivanarama#129, ivanarama#130) (3299511)
- feat(configurator): дерево файлов конфигурации, фаза 1 (ivanarama#132) (121508f)
- feat(configurator): дерево файлов — «открыть в редакторе», фаза 2 (ivanarama#132) (410137e)
- fix(ui): скрывать админ-пункты меню от неадминистраторов (ivanarama#149) (2eeda6a)
- fix(ui): серверный хук ПриЧтенииНаСервере на GET формы объекта (ivanarama#148) (2d05d42)
- fix(ui): показывать вложения в управляемых формах объекта (ivanarama#152) (93d3527)
- fix(examples): восстановить конфиг оборудования/фискалки в examples/trade (71d5791)
- fix(ui): реализовать рендеринг ПолеДаты в управляемых формах (ivanarama#150) (152bdfd)
- Merge pull request ivanarama#153 from ivanarama/fix/restore-equipment-fiscal-config (f480ad0)
- Merge pull request ivanarama#136 from ivanarama/fix/128-clearer-module-error (9b5b8a1)
- Merge pull request ivanarama#137 from ivanarama/fix/127-tree-position-new-object (c31785f)
- Merge pull request ivanarama#138 from ivanarama/fix/131-resizable-panels (0b77d73)
- Merge pull request ivanarama#135 from ivanarama/fix/133-form-object-template (70d6cef)
- Merge pull request ivanarama#154 from ivanarama/fix/134-drag-attributes (37ce6b9)
- Merge pull request ivanarama#139 from ivanarama/feat/129-130-tabs-phase1 (e70d5a7)
- Merge pull request ivanarama#141 from ivanarama/feat/129-130-tabs-phase2 (8cae773)
- Merge pull request ivanarama#142 from ivanarama/feat/129-130-tabs-phase3 (64d3082)
- Merge pull request ivanarama#143 from ivanarama/feat/129-130-tabs-phase4 (0fc6d9a)
- Merge pull request ivanarama#144 from ivanarama/feat/132-config-file-tree (43acbf8)
- Merge pull request ivanarama#145 from ivanarama/feat/132-config-file-tree-phase2 (4f3b89c)
- i18n(en): переводы ключей вкладок и дерева файлов конфигурации (116fb07)
- Merge pull request ivanarama#155 from ivanarama/fix/i18n-tabs-filetree-keys (d2349b7)
- i18n: перевести ключи вкладок и дерева файлов на все локали (9abb176)
- Merge pull request ivanarama#160 from ivanarama/i18n/fill-tabs-filetree-translations (3ca197e)
- Merge pull request ivanarama#156 from ivanarama/fix/149-sidebar-admin-links (0107db4)
- Merge pull request ivanarama#157 from ivanarama/fix/148-form-read-hook (dc047a5)
- Merge pull request ivanarama#158 from ivanarama/fix/152-managed-form-attachments (e4b58c0)
- Merge pull request ivanarama#159 from ivanarama/fix/150-date-format (ebf301e)
- feat(ui): actions.delete.visible — скрыть кнопку удаления в форме (ivanarama#151) (e2f1204)
- Merge remote-tracking branch 'origin/main' into feature/bp3-export (ed4f346)
- Merge pull request ivanarama#162 from ivanarama/feature/bp3-export (9a08c1b)
- Merge pull request ivanarama#161 from ivanarama/fix/151-hide-delete-action (3bb8af4)
- fix(configurator): валидная вставка реквизита в YAML формы (ivanarama#134) (c32b018)
- Merge pull request ivanarama#163 from ivanarama/fix/154-attr-insert-valid-yaml (0c80581)
- feat(storage): глобальный режим открытия форм ui.form_open_mode (0c14a1e)
- feat(storage): персональный режим форм + EffectiveFormOpenMode (46c5840)
- feat(ui): редирект на /ui/app в режиме вкладок (ed2e60f)
- feat(ui): переключатель режима форм в топбаре + POST /ui/form-mode (b35afa6)
- feat(ui): выбор режима форм в «Параметрах» (634ca21)
- feat(configurator): глобальный режим открытия форм по умолчанию (b0e4fe0)
- fix(ui): переключатель режима форм работает в базе без авторизации (dfeaf6b)
- Merge pull request ivanarama#166 from ivanarama/feature/form-open-mode (4e03d88)
- chore: игнорировать локальные заметки ручной проверки (ПРОВЕРКА*.md) (cce3b01)
- Merge pull request ivanarama#167 from ivanarama/chore/gitignore-proverka-notes (209eb7e)
- fix(i18n): немецкие умляуты в de.json (ivanarama#165) (695666e)
- Merge pull request ivanarama#168 from ivanarama/fix/165-de-umlauts (47c6a1b)
- fix(i18n): полный проход de.json по умляутам и ß (ivanarama#165) (a902ff7)
- Merge pull request ivanarama#169 from ivanarama/i18n/de-umlauts-full (e10ceb8)
- fix(i18n): немецкие смысловые термины из ivanarama#165 (Anwendung/Designer) (36aa27b)
- Merge pull request ivanarama#170 from ivanarama/i18n/165-de-semantic (6a99213)
- fix(deviceagent): constant-time токен, гейт всех маршрутов железа + анти-SSRF, логирование ошибок (ревью) (9de84fb)
- fix(equipment): округление денег ККТ, сверка чека, дочитывание ответов, идемпотентность (ревью) (8c7dbd9)
- fix(ui): XSS имени вложения, fail-closed RLS на чтение, nosniff/postMessage харднинг (ревью) (fdd8c71)
- fix(report): защита __settings от исполнения DSL, NaN/Inf, дубли колонок, сортировка/warnings кросс-таблицы (ревью) (de0486f)
- fix(pages,blobs): экспорт-гейт действий страниц, защита DSL-blobs и legacy в GC (ревью) (0eb182b)
- fix(dsl): точное форматирование денег KPI, CSS-whitelist для ДобавитьСыройHTML (ревью) (1f84f94)
- fix(configurator,ai,llm): round-trip сохранение обработки, RBAC ссылочных полей, инвариант tool-use (ревью) (0b780c7)
- Merge branch 'fix/wr-fiscal' into fix/weekly-review-2026-06-22 (9faa602)
- Merge branch 'fix/wr-device' into fix/weekly-review-2026-06-22 (83d1593)
- Merge branch 'fix/wr-reports' into fix/weekly-review-2026-06-22 (694a37b)
- Merge branch 'fix/wr-uisec' into fix/weekly-review-2026-06-22 (d1618c9)
- Merge branch 'fix/wr-pages' into fix/weekly-review-2026-06-22 (d4bb9f8)
- Merge branch 'fix/wr-configllm' into fix/weekly-review-2026-06-22 (4d12c63)
- Merge branch 'fix/wr-builtins' into fix/weekly-review-2026-06-22 (84ed148)
- fix(i18n): убрать дубликат ключа "Недопустимое имя файла" в en.json (ревью ivanarama#30) (7f6775d)
- fix(report): подпись и формат колонок Excel-кросса по индексу показателя (ревью ivanarama#17) (ebc6ec8)
- fix(equipment): ResolveByUUID в интерфейс FiscalRegistrar и ключ идемпотентности из DSL (ревью ivanarama#24) (0375faf)
- Merge pull request ivanarama#173 from ivanarama/fix/weekly-review-2026-06-22 (e04fdef)