Снимок: 2026-10-11. Секция хаба Tools, тайл «Заметки» / «Notes», подпись «Заметки и идеи: сохранить и упорядочить». Доступен всегда.
Экраны и навигация
Screen.Notes→NotesScreen(641 строка) — список заметок.Screen.NoteEditor(isNew)→NoteEditorScreen(712) — редактор с markdown-предпросмотром.ImageViewerScreen(237) — просмотр картинки-вложения.
Возможности (подробно)
Заметки и структура
- Поля
NoteEntity:id(UUID),title,body,category,createdAt,updatedAt,pinned,attachments. - Категории
NoteCategory:WORK(Work),PERSONAL(Personal),IDEAS(Ideas),OTHER(Other). - Закрепление (
togglePin/togglePinById) — закреплённые наверх. - Теги:
allTagsсобирает из текста,textToTags/tagsToText.
Поиск, фильтры, сортировка
NotesViewModel (402 строки): updateSearch (полнотекстово), selectCategory, selectTag, setOnlyWithAttachments (только с вложениями), setSort, clearFilters, applyFilter. NoteFormat.filterNotes/sortNotes/matchRanges/snippetAround — подсветка совпадений и вырезка вокруг них. readSort — восстановление сортировки из prefs.
Чеклисты
toggleChecklist, appendChecklist — чекбоксы прямо в теле заметки; NoteMarkdown (200 строк) умеет разбирать и собирать markdown-структуру.
Вложения
NoteAttachment(name, mime, storedName, sizeBytes)— файл на диске.addAttachment/removeAttachment,getAttachmentFile.- Просмотр:
ImageViewerScreen, inline-превьюInlineAttachmentCard, Coil для картинок. openAttachmentExternally— открыть системным приложением.loadNoteAttachment— загрузка во вьюпорт.
Редактор
NoteEditorScreen: заголовок, тело, категория, панельNoteEditorBar(NoteBarButton— чеклист, вложение, теги, закрепление).- Автосохранение:
scheduleAutosave(по таймеру),saveNow/flushEditor(при уходе с экрана),saveEditorInternal. - Markdown-предпросмотр:
buildPreviewChunks— текст режется на абзацы/код/ списки и рендерится. - Мета-строка:
editorMetaLine— слова, символы, время изменения (wordCount,charCount,clockLabel).
Списки, карточки, действия
NoteCard(196) +NoteMonogram— карточка с монограммой.SwipeToDeleteNote— свайп-удаление,undoDelete— отмена,purgeDeleted— окончательное удаление.- Лист действий
NoteActionsSheet: поделиться (noteShareText), фильтры (NotesFilterSheet), передать агенту (NoteAgentSheet). - Копирование текста (
copyText),exportZipName.
Экспорт и импорт
exportZip— zip: markdown-файлы с front matter + папка вложений.importZip,importMarkdown,importJson— импорт; результатImportResult(imported, skipped).
Передача агенту
NoteAgentSheet + noteDraftText — заметка (или её текст) попадает в поле ввода треда Codex как черновик. Это главный «мост» между блокнотом и агентом: написал идею → отдал агенту.
Где в коде
| Файл | Строк | Роль |
|---|---|---|
ui/notes/NoteEditorScreen.kt | 712 | Редактор, предпросмотр, панель действий |
ui/notes/NotesScreen.kt | 641 | Список, свайп-удаление, действия |
ui/notes/NotesViewModel.kt | 402 | Состояние, фильтры, автосохранение, вложения |
ui/notes/NotesSheets.kt | 308 | Листы: действия, фильтры, агент |
ui/notes/NoteFormat.kt | 207 | Форматирование, фильтры, метрики |
ui/notes/NoteCard.kt | 196 | Карточка заметки |
ui/notes/ImageViewerScreen.kt | 237 | Просмотр картинки |
data/notes/NoteFileStore.kt | 231 | Файловое хранилище, zip |
data/notes/NoteMarkdown.kt | 200 | Markdown-разбор |
data/notes/NoteEntity.kt | 32 | Модель заметки |
Данные и API
- Хранилище — файлы, не Room.
NoteFileStore: каждая заметка = отдельный файл{id}.jsonвfilesDir/notes/, вложения — вfilesDir/notes/attachments/{noteId}/. - Персист настроек —
SharedPreferences(readSort). - Backend-эндпоинтов нет: заметки полностью локальные, доступ к Termux-файлам агент получает через
file_read/file_write. - Мост:
bridge.BridgeState.
Агент
MCP-тулы
Прямых «заметки»-тулов нет. Агент работает с ними как с файлами:
file_read/file_write(только/mcp) — прочитать/записать JSON заметки.- В чате —
CodexAttach.
Путь «пользователь → агент»
noteDraftText кладёт текст заметки в поле ввода треда (Screen.CodexChat(draft=…)), пользователь жмёт «отправить». Обратно: агент может записать файл заметки через file_write, и она появится в списке.
Подводные камни
- Файлы, не база. Удаление файла = потеря заметки; синхронизации с облаком нет. Обмен — только zip.
- Категория — enum с английскими названиями (
"Work","Ideas"), при импорте неизвестная категория падает вOTHER. - Автосохранение по таймеру.
flushEditorобязателен при уходе — иначе последние правки могут не записаться. - Свайп-удаление обратимо только через
undoDelete;purgeDeletedудаляет окончательно. - Фильтр «только с вложениями» скрывает заметки без файлов — при переносе папки вложений заметки «пустеют».
Как обновлять
- Каталог:
data/InstrumentCatalog.kt(idnotes). - Маршрут:
ui/navigation/Screen.kt(Screen.Notes,Screen.NoteEditor). - Код UI:
ui/notes/*. - Данные:
data/notes/*(модель, файловое хранилище, markdown). - Мост:
noteDraftTextвMainRouter/CodexPages.