# Summarum [English](README.md) **Калькулятор, который работает как блокнот.** Пишешь что думаешь — каждая строка сразу даёт ответ в правой колонке. Никаких кнопок, никакого синтаксиса формул, просто текст. ``` # Поездка в Лиссабон билеты $420 отель $95 * 4 ночи еда 30€ в день * 4 дня и музеи 25€ итого → $1,066.97 5 дюймов в см → 12.7 cm 100 км/ч в миль/ч → 62.14 mph $2000 в рублях → 144,060 ₽ скидка 20% от 1500 → 1,200 сегодня + 6 недель → 22 Июля 2026 1000 USD в EUR на 2024-01-01 → € 917.30 ? * 1.2 = 1000 → 833.33 AAPL в USD → $213.55 дней до 2027-01-01 → 183 day график → ▂▄▇█▆ ``` Работает на **английском и русском одновременно**: `5 метров в см`, `20$ в евро`, `сумма` — переключать язык не нужно. ## Установка Скачай последний `Summarum_*_x64-setup.exe` (или `arm64-setup.exe` для Windows on ARM) из [Releases](../../releases), запусти — готово. Весь установщик около 2 МБ. Дальше обновления проверяются сами. Требования: - **Windows 10 (1803+) или Windows 11**, 64-бит. - **[WebView2 Runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/)** — уже встроен в Windows 11 и большинство обновлённых Windows 10; если отсутствует, установщик скачает его автоматически. - Интернет нужен только для живых курсов и рыночных данных — всё остальное работает офлайн (курсы берутся из кэша или встроенного снимка). ## Что понимает **Обычная математика** — `2 + 2`, `8 / (45 - 20%)`, скобки, `^`, `sqrt`, `sin`, факториалы, `случайное()`, `случайное(1; 6)`. Точная десятичная арифметика: `0.1 + 0.2` это `0.3`, а не `0.30000000000000004`. **Слова как операторы** — `12 плюс 4`, `20 делить на 4`, `5 и 3`. Текст вокруг математики игнорируется: `потратил 20 на пиццу и 5 на кофе` даст 25. **Единицы** — длина, масса, объём, площадь, температура, время, углы, данные (`1 ГиБ в МБ`), CSS px/em, скорость, давление, энергия, мощность, частота, расход топлива: ``` 6 футов в метрах 1 атм в мм рт.ст. 8 л/100км в mpg 2 часа 30 мин в мин 150 л.с. в кВт 32 px в em ``` **Деньги** — ~150 валют и топ-20 криптовалют с живыми курсами (обновляются раз в час, кэшируются для офлайна). `$100 + 20%`, `5 eth в USD`, `9800 рублей в долларах`. **Живые рыночные данные** — котировки акций и сырья обновляются каждые 15 минут: `100 AAPL в USD`, `2 GC=F в USD` (фьючерс на золото), `MSFT + GOOGL`. **Исторические курсы** — `1000 USD в EUR на 2024-01-01` запрашивает курс ЕЦБ за этот день (через frankfurter.app) и кэширует его навсегда. **Проценты по-человечески** — `20% от 80`, `скидка 20% от 1500`, `5 это сколько % от 25`, `20% от какого числа равно 30`. **Даты и время** — `сегодня + 2 недели`, `завтра - сегодня`, `время в Нью-Йорке`, `сейчас в unix`, `1750000000 как дата`. ISO-даты: `2024-01-01 + 30 дней`, `дней до 2027-01-01`, `дней с 2020-03-15`. **Поиск неизвестного** — поставь `?` на место неизвестного и `=` с нужным результатом: `? * 1.2 = 1000` → `833.33`, `100 - ? = 30` → `70`. Работает для любых выражений, решаемых линейным методом или бисекцией. **Для программистов** — `0xFF & 0x0F`, `1 << 4`, `255 в hex`, `в binary`, плюс `в дроби` (0.75 → 3/4) и `в roman` (2026 → MMXXVI). **Листы с переменными** — переменные (`аренда = $500`), нарастающие итоги (`сумма`, `avg`, `prev`, `количество`, `минимум`, `максимум`, `произведение`), заголовки `#`, комментарии `//`. Строка статуса всегда показывает итог листа; выдели несколько строк — увидишь их сумму. Добавь `график` в конце блока чтобы нарисовать спарклайн. ## Удобные мелочи - **Ctrl+Alt+N** (настраивается — поле в настройках записывает нажатые клавиши) показывает/скрывает окно из любого места. Закрытие прячет в трей. - **Ctrl+W** закрывает текущий лист (спрашивает подтверждение если есть содержимое). - **Ctrl+F** (или кнопка 🔍) ищет сразу по всем листам — по тексту или по значению результата: `>1000`, `<50`, `=100`, `~100` (±1%). Клик по результату — переходишь туда. - **Клик по результату** копирует его. Копирование строки копирует её *вместе с ответом* (`аренда * 3 = $1,500`). **Ctrl+Shift+C** копирует весь лист с ответами. - **Экспорт картинкой** — меню ⤓ содержит «Скопировать картинкой»: рендерит лист в PNG и кладёт в буфер обмена (при ошибке предлагает сохранить файл). - **Потяни разделитель** чтобы изменить ширину колонки результатов. - **Брось файл `.numi`, `.sum`, `.txt` или `.md`** в окно — откроется как лист. - **Закрепление и порядок листов** — нажми значок булавки на любом листе в сайдбаре чтобы закрепить его вверху; кнопки ↑↓ меняют порядок. - **Резервные копии автоматические**: ежедневный снимок всех листов (хранятся 14 дней), удалённые листы лежат в корзине 14 дней (настраивается) — верни перетащив обратно. Настройки → Backups откроет папку. - **Папка данных настраивается** — укажи OneDrive/Dropbox и листы синхронизируются между машинами. - **Поверх всех окон** (в настройках) закрепляет окно над остальными. - Приложение само проверяет обновления при запуске и предлагает установить — вручную скачивать и переустанавливать не нужно. - Светлая/тёмная тема, интерфейс en/ru, настраиваемая точность и разделители. ## Расширения > **Внимание:** расширения запускаются как доверенные локальные скрипты с доступом к вашим файлам. Загружайте только код, который вы написали сами или полностью доверяете. Брось `.js`-файл в папку расширений (Настройки → Extensions folder) и перезапусти. API совместим с расширениями Numi: ```js numi.setVariable("ндс", { double: 20 }); numi.addUnit({ id: "этаж", phrases: "этаж,этажей", baseUnitId: "meter", format: "эт", ratio: 3 }); numi.addFunction({ id: "гипот", phrases: "гипот" }, (v) => ({ double: Math.hypot(v[0].double, v[1].double) })); ``` Тогда `5 этажей в метрах` → `15 m` и `гипот(3; 4)` → `5`. ## Баги и идеи Открой [issue](../../issues). Строка того что написал и что ожидал увидеть — достаточно. ## Для разработчиков Устройство движка, структура проекта и как добавлять единицы/валюты: см. [ARCHITECTURE.ru.md](ARCHITECTURE.ru.md). ```bash npm install npm test # тесты движка (113 кейсов) npm run tauri dev # запустить приложение npm run tauri build # собрать установщик ``` Для сборки нужны: - [Node.js](https://nodejs.org/) 22.6 или новее - [Rust](https://rustup.rs/) (stable, MSVC toolchain) - [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) с компонентом «Desktop development with C++» (нужен линковщик MSVC) - Если что-то не собирается — см. [Tauri prerequisites](https://tauri.app/start/prerequisites/) Стек: [Tauri 2](https://tauri.app) + TypeScript + CodeMirror 6. ## Благодарность Вдохновлён [Numi](https://numi.app) от Дмитрия Николаева — если ты на macOS, купи его. Summarum — независимый проект, написанный с нуля для Windows. ## Лицензия [PolyForm Noncommercial 1.0.0](LICENSE) — бесплатно для личного, образовательного и другого некоммерческого использования. Коммерческое использование (включая перепродажу или репакинг) запрещено.