AspansQulyp/notes/DECISIONS.md
deni.reyton 55c98747e3
Some checks failed
CI / windows (push) Waiting to run
CI / linux (push) Failing after 1m5s
Строгий дизайн: графитовая палитра и векторные иконки
- Одна приглушённая акцентная краска, скругления 4–6 px, плоские панели без теней
- Свой набор векторных иконок вместо эмодзи-глифов (src/icons.rs)
- Кнопки с иконкой, состояниями наведения и кольцом фокуса
- Нейтральные монограммы вместо цветных аватаров

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:24:47 +05:00

30 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- limit: 80 -->
# Решения
**egui/eframe вместо Tauri/Qt.** Чистый Rust, один бинарник, без WebView и Node; одинаково на Windows и Linux.
Рендер `glow` (OpenGL) — легче wgpu и быстрее собирается.
**Свой формат, а не .kdbx.** KDBX сложен (XML, много версий KDF/шифров). Свой формат — 60 байт заголовка
+ зашифрованный JSON, легко проверить. Импорт KDBX — отдельной задачей (см. PLAN).
**Argon2id 64 МиБ / 3 прохода / p=4.** Рекомендация OWASP-уровня, ~0.5 с на разблокировку.
Параметры пишутся в заголовок — можно усилить позже без смены формата.
**XChaCha20-Poly1305.** 24-байтный случайный nonce на каждое сохранение — без риска повтора.
Весь заголовок — AAD, подмена параметров ломает расшифровку.
**Синхронизация = файл в облачной папке.** Никакого своего сервера. Перед записью файл на диске
сливается с памятью; раз в 2 с проверяется внешнее изменение. Слияние — по записям, свежая побеждает,
старый пароль уходит в историю, удаления — через надгробия.
**Автосохранение после каждого изменения.** Нет кнопки «Сохранить» и риска забыть. Старая версия → `.qulyp.bak`.
**RustCrypto старых стабильных версий** (argon2 0.5, chacha20poly1305 0.10, hmac 0.12): новые мажорные
версии меняют API, а эти широко проверены.
**Язык интерфейса — русский.** Локализация — если понадобится.
**Строгий визуальный стиль.** Нейтрали делают работу, акцент (стальной синий) — только главная кнопка,
выделение, фокус и ссылки. Иконки рисуются вектором (`src/icons.rs`, сетка 16×16, одна толщина линии) —
шрифтовые эмодзи на разных системах выглядят по-разному.