11 KiB
Summarum
Калькулятор, который работает как блокнот. Пишешь что думаешь — каждая строка сразу даёт ответ в правой колонке. Никаких кнопок, никакого синтаксиса формул, просто текст.
# Поездка в Лиссабон
билеты $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, запусти — готово. Весь установщик около 2 МБ. Дальше обновления проверяются сами.
Требования:
- Windows 10 (1803+) или Windows 11, 64-бит.
- WebView2 Runtime — уже встроен в 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:
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. Строка того что написал и что ожидал увидеть — достаточно.
Для разработчиков
Устройство движка, структура проекта и как добавлять единицы/валюты: см. ARCHITECTURE.ru.md.
npm install
npm test # тесты движка (113 кейсов)
npm run tauri dev # запустить приложение
npm run tauri build # собрать установщик
Для сборки нужны:
- Node.js 22.6 или новее
- Rust (stable, MSVC toolchain)
- Visual Studio Build Tools с компонентом «Desktop development with C++» (нужен линковщик MSVC)
- Если что-то не собирается — см. Tauri prerequisites
Стек: Tauri 2 + TypeScript + CodeMirror 6.
Благодарность
Вдохновлён Numi от Дмитрия Николаева — если ты на macOS, купи его. Summarum — независимый проект, написанный с нуля для Windows.
Лицензия
PolyForm Noncommercial 1.0.0 — бесплатно для личного, образовательного и другого некоммерческого использования. Коммерческое использование (включая перепродажу или репакинг) запрещено.