summarum/README.ru.md
Horizontal42 51ee3b3208 linux + macos release builds (unsigned)
split bundle config into tauri.{windows,linux,macos}.conf.json so each
platform only carries its own targets; gen-icon emits icon.icns; macos is
ad-hoc signed since arm64 refuses unsigned downloads
2026-08-14 13:39:08 +03:00

14 KiB
Raw Permalink Blame History

Summarum

English

Калькулятор, который работает как блокнот. Пишешь что думаешь — каждая строка сразу даёт ответ в правой колонке. Никаких кнопок, никакого синтаксиса формул, просто текст.

# Поездка в Лиссабон
билеты $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$ в евро, сумма — переключать язык не нужно.

Установка

Скачай сборку под свою систему из Releases. Приложение весит около 2 МБ, дальше обновления проверяются сами.

  • Windows — Summarum_*_x64-setup.exe (или arm64-setup.exe для Windows on ARM). Запусти — готово.
  • Linux — .AppImage (chmod +x и запускай) либо .deb/.rpm, если хочется поставить нормальным пакетом. Самообновление работает только у AppImage, deb и rpm обновляются скачиванием следующей версии.
  • macOS — .dmg для Apple Silicon или Intel. Сборки не подписаны сертификатом Apple Developer, поэтому первый запуск — правый клик → Открыть, а не двойной клик (либо один раз выполнить xattr -cr /Applications/Summarum.app в терминале). Дальше запускается как обычно.

Требования:

  • Windows 10 (1803+) или Windows 11, 64-бит, и WebView2 Runtime — уже встроен в Windows 11 и большинство обновлённых Windows 10; если отсутствует, установщик скачает его автоматически.
  • Linux с webkit2gtk-4.1 (Ubuntu 22.04+, Debian 12+, Fedora 36+) и libayatana-appindicator3 для иконки в трее.
  • macOS 10.13 или новее.
  • Интернет нужен только для живых курсов и рыночных данных — всё остальное работает офлайн (курсы берутся из кэша или встроенного снимка).

Что понимает

Обычная математика — 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.dev) и кэширует его навсегда.

Проценты по-человечески — 20% от 80, скидка 20% от 1500, 5 это сколько % от 25, 20% от какого числа равно 30.

Даты и время — сегодня + 2 недели, завтра - сегодня, время в Нью-Йорке (работает и с прямым IANA-id: время в Europe/Berlin), сейчас в unix, 1750000000 как дата. Форматы дат: ISO (2024-01-01 + 30 дней), или через точку/слэш с 4-значным годом — 31.12.2024, 12/31/2024 — порядок день/месяц для неоднозначных случаев берётся из настройки «Формат даты». дней до 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, количество, минимум, максимум, произведение), заголовки #, комментарии //. Строка статуса всегда показывает итог листа; выдели несколько строк — увидишь их сумму. Добавь график в конце блока чтобы нарисовать спарклайн.

Ссылки между листами — тяни значение из другого листа через @: @Бюджет.total, @Бюджет.аренда, @[Поездка в Лиссабон].еда. Лист из одних ссылок становится живым дашбордом: @Активы.total - @Долги.total. Дай листу- источнику постоянное имя (не автоматическое), иначе ссылка сломается при правке первой строки.

Удобные мелочи

  • 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, настраиваемая точность, разделители и формат даты (системный, 31.12.2024, 12/31/2024 или 2024-12-31). Настройки разбиты на вкладки: Общие / Формат / Данные / Обновления.

Расширения

Внимание: расширения выполняются в WebAssembly-песочнице — без доступа к файлам, сети и приложению, только API numi ниже. Зависший скрипт прерывается, упавший — пропускается.

Брось .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               # тесты движка (259 кейсов)
npm run tauri dev      # запустить приложение
npm run tauri build    # собрать установщик

Для сборки нужны:

  • Node.js 22.6 или новее
  • Rust, stable
  • На Windows: toolchain MSVC и Visual Studio Build Tools с компонентом «Desktop development with C++» (нужен линковщик MSVC)
  • На Linux: libwebkit2gtk-4.1-dev, libayatana-appindicator3-dev, librsvg2-dev, libxdo-dev, libssl-dev, patchelf и компилятор C
  • На macOS: Xcode Command Line Tools
  • Если что-то не собирается — см. Tauri prerequisites

npm run tauri build собирает то, что умеет хост-платформа: NSIS на Windows, deb/rpm/AppImage на Linux, .app/.dmg на macOS. Кросс-компиляция между ними не поддерживается — релизный workflow собирает каждую платформу на своём раннере.

Стек: Tauri 2 + TypeScript + CodeMirror 6.

Благодарность

Вдохновлён Numi от Дмитрия Николаева — если ты на macOS, купи его. Summarum — независимый проект, написанный с нуля для Windows, Linux и macOS.

Лицензия

PolyForm Noncommercial 1.0.0 — бесплатно для личного, образовательного и другого некоммерческого использования. Коммерческое использование (включая перепродажу или репакинг) запрещено.