20 Commits

Author SHA1 Message Date
grendervill 1f140d3433 Упрощение git/превью: copyCodeBlock, parseBlocks на splitMdBlocks, кэш diff, пагинация
- MdParser.copyCodeBlock(id): один вызов вместо get+copy в 3 QML-местах
- parseBlocks переписан на splitMdBlocks (убит regex только для ```, заодно чинит ~~~); renderInner без побочек, save/restore удалены
- Кэш diff-блоков (хеши+пути, 8 шт, >1МБ не кэшируем); регистрация кодов всегда в главном потоке
- История: пагинация limit+Показать ещё с сохранением выбора; willDelete; busy только на время async
- GitManager: commitFile точечно (общий commitFromIndex), fileExistedAt, workdirContent через DocumentManager.readTextFile, fileGitStatus через relativePath; удалены fileDiffText/Html и 2-arg fileHistory
- MarkdownView: дебаунс async-ветки 80мс + гашение протухших ответов
2026-09-06 22:17:13 +03:00
grendervill 95c03040c7 Prod: полный аудит и стабилизация — исправлены критические баги, расширено покрытие тестами, подготовлен бандл
- FileStore: защита от выхода за пределы хранилища (isInsideVault), валидация имён (запрет скрытых, зарезервированных, управляющих символов), проверка destDir, лимит watcher, dailyNote валидация, openVault проверка isDir
- DocumentManager: лимит 10МБ, кламп автосейва 0.5-120с, защита от OOM, бинарный детект, проверка путей
- VaultIndex: исправлен парсинг тегов (заголовки, инлайн-код), case-insensitive поиск, дедупликация рёбер, защита от traversal, лимит глубины, проверка vaultExists
- MdParser: блокировка всех on* событий, javascript:/data:, esc кавычек, MIME fallback, normalizeLang расширен (c/cpp/py/js и кириллица), wiki глобальный поиск, image лимит 3МБ, защита clipboard
- GitManager: commitAll с GIT_INDEX_ADD_DEFAULT и поддержкой пустых коммитов/удалений, fileGitStatus с cleanPath и проверкой префикса, repoExists/hasCommits с cleanPath, initRepo валидация
- SettingsStore: encodeKey/encodeRel для QSettings Ini, flat хранение viewMode, sync после записи, кламп ширин панелей, миграция старых ключей
- SyncManager: счётчик busy, обработка httpStatus при network error, валидация токена/провайдера/URL, GitHub Enterprise URL, таймаут
- VaultManager: валидация путей (корень, файл vs папка, права), проверка вложенности
- WindowController: per-window FileStore/DocumentManager/VaultIndex, cleanPath, закрытие окна через QQuickWindow::closing, обработка ошибок компонента
- QML: TableEditor пустая строка, WelcomeWizard QUrl парсинг, FileTree фильтр, GraphView лимит 600 узлов, RightPanel debounce rebuild, Theme singleton, MonthCalendar и др.
- Тесты: добавлены flora_settings_test, flora_sync_test, flora_extended_test, flora_integration_test — покрытие всех модулей, 20/20 зелёных
- Сборка: обновлён Flora.app (4.6М бинарь -> 173М бандл, ad-hoc подпись, проверен offscreen запуск, версия 0.0.1 + cmark 0.29 + libgit2 1.9)
- .gitignore: добавлены Testing/, coverage, gcda/gcov, __pycache__, .tmp, test-vault и др.
2026-09-01 19:25:07 +03:00
Flora (opencode) c8a9bc4690 Fix: серая панель ВНИЗУ (anchors.bottom), без названия файла; clip:true на TextEdit (текст не вылезает за пределы); anchors.bottomMargin:32 для отступа от панели 2026-08-18 00:17:12 +03:00
Flora (opencode) 15813d358e Fix: textDisplay — editMode=readWrite (редактирование), viewDisplay=readOnly+RichText+wrap (просмотр); прокрутка встроена в TextEdit; переключение по ✎👁 2026-08-17 19:45:24 +03:00
Flora (opencode) d709724fed Fix: TextEdit anchors.top: headerBar/bottom + anchors.bottom: parent.bottom (без Flickable — Flickable получал нулевую высоту); убран debug yellow rectangle 2026-08-17 19:41:26 +03:00
Flora (opencode) 2a5debfca3 Debug: красный фон за TextEdit для визуальной проверки размеров Flickable 2026-08-17 19:33:17 +03:00
Flora (opencode) 4c933c5b42 Fix: TextArea заменён на TextEdit+Flickable (базовый QML без Controls styling, гарантированный рендеринг); anchors.top/bottom/left/right для позиционирования 2026-08-17 19:26:03 +03:00
Flora (opencode) 6bf8e3ea15 Fix: полностью переписан EditorPane — простая TextArea anchors.fill: parent без ColumnLayout, без промежуточных контейнеров; шапка как overlay z:10; viewer с handleViewLink; refresh при смене файла/режима 2026-08-17 19:22:41 +03:00
Flora (opencode) a1c78cf5e3 Fix: TextArea заполняет ВЕСЬ EditorPane (anchors.fill: parent), шапка файла — плавающий оверлей (z:10) сверху; убран debug-label; убраны orphan-элементы 2026-08-17 19:13:10 +03:00
Flora (opencode) 4bbbf64999 Fix: EditorPane переписан на anchors (headerBar сверху, contentArea снизу); убрана лишняя } после contentArea; ColumnLayout больше не используется в EditorPane/EditorPanel 2026-08-17 18:53:08 +03:00
Flora (opencode) 69a1a6159c Fix: loadContent — принудительное обновление TextArea (очистка + установка + cursorPosition); убран debug-консоль из loadContent 2026-08-17 18:34:12 +03:00
Flora (opencode) 18962473ae Fix: color:text на TextArea, автооткрытие первого .md файла, отладка цепочки openDocument→setActiveIndex→loadContent→editor.text (проверено: контент загружается, editor.text.length=21) 2026-08-17 17:29:23 +03:00
Flora (opencode) 795d9e52df Debug: visible label docIndex/editMode/contentLen + qDebug in openDocument/setActiveIndex + loadContent console.log 2026-08-17 16:38:22 +03:00
Flora (opencode) 768f08eda5 Fix: убрана binding text: pane.editorContent из TextArea — только явное присвоение через loadContent() (onDocIndexChanged + Timer 50ms + Connections.activeIndexChanged). Календарь: cal.currentMonth как явная зависимость в hasNote. 2026-08-17 16:24:28 +03:00
Flora (opencode) 3290727d88 Фикс: таймер загрузки контента (30ms debounce для editorContent), точки календаря — привязка к cal.currentMonth для корректного обновления при смене месяца 2026-08-17 16:15:39 +03:00
Flora (opencode) 84be13a32d Фикс: editorContent property (явное присвоение вместо биндинга на функцию), граф — pan левой кнопкой по пустому месту + lastMouseXY, календарь — точка под цифрой (dayLabel.bottom), orphan code cleanup GraphView 2026-08-17 16:04:46 +03:00
Flora (opencode) 7b43b0c4fc Массовые исправления UX: вкладки (MouseArea не блокирует ×), контент редактора (onDocIndexChanged), авто-расширение .md, ошибка дубликата, ПКМ-создание внутри папок, точки в календаре, граф (зум колесом, клик по файлу, pan правой кнопкой), fileExists(), 16/16 тестов 2026-08-17 15:42:56 +03:00
Flora (opencode) c4708b6be6 Фаза 6: просмотр Markdown — MdParser (cmark-gfm AST→HTML: таблицы/ссылки/вики/картинки data-URI/задачи-чекбоксы), подсветка кода KSyntaxHighlighting (алиасы «С»/«С++»/python), RichText-просмотр в EditorPane (onLinkActivated); тест mdparser (15/15) 2026-08-17 13:05:19 +03:00
Flora (opencode) 3317aa169a Фаза 5: панель форматирования — FormatToolbar/TbButton, JS-форматирование в EditorPane (инлайн/списки/задачи/заголовки/цвета/индексы/цитата/выноска/обтекание), TableEditor (2×1, полосы «+» 20px) 2026-08-17 12:34:03 +03:00
Flora (opencode) e7d873903b Фаза 4: редактор — DocumentManager (вкладки, автосохранение 5с, сохранение при закрытии), EditorPane/EditorPanel (вкладки, режимы, «открыть рядом», Ctrl+S/W/E/Tab), открытие из дерева; тест docmgr (14/14) 2026-08-17 01:14:00 +03:00