README.md
July 17, 2026 · View on GitHub
LineSolv
A cross-platform desktop natural-language calculator
LineSolv is a natural-language calculator that understands phrases like $20 in euro - 5% discount or what is the 5 plus pi times five. It combines a powerful Go-based arithmetic engine with a clean, distraction-free desktop UI.
Built with Wails v2 (Go + WebView), Vite, TypeScript, and CSS custom properties for theming.
Screenshot
More screenshots: View all screenshots
Key Features
- Natural Language Math — Type phrases like
what is 20 plus 5%or$20 in euro - 10% discountand get instant results - Full-Window Transparency — Adjustable opacity (30%–100%, default 95%) with true window translucency on all platforms
- Real-Time Settings — Every setting (theme, font, opacity, line numbers, autocomplete) applies instantly with no Save button
- Line Number Toggle — Show or hide line numbers in the calculator editor
- Autocomplete Popup — Type-aware keyword suggestions that can be toggled on/off
- 27 Color Themes — Dark, Light, Neon, Red, Obsidian, Plasma, Blood, Midnight, Aurora, Mono, Frost, Prism, Lavender, Sage, Warm Light, Blue Trust Dark/Light, Orange Energy Dark/Light, Green Growth Dark/Light, Yellow Optimism Dark/Light, Purple Innovation Dark/Light, Red Passion Dark/Light with instant switching
- 5 UI Styles — Default, Liquid Glass, Material 3, Alivated, Neon — all rewritten to match their real-world design systems with authentic colors, typography, shadows, and component styling
- 17 Font Options — Sans-Serif, Serif, and Monospace fonts including JetBrains Mono, Fira Code, and more
- 40+ Unit Conversions — Length, mass, volume, temperature, time, and 30+ live currencies
- Function Graphing — Auto-detect plot expressions and render live charts
- Plugin System — 12 built-in plugins with expression-based custom functions, themes, and variables
- Notes & History — Multi-note notebooks with searchable history, PDF export, and undo/redo
- Cross-Platform — Native builds for Linux, macOS (Intel & Apple Silicon), and Windows
Features
Core Calculator
| Feature | Description | Example |
|---|---|---|
| Natural Language | Type conversational math phrases | what is twenty five plus three |
| Basic Arithmetic | Full PEMDAS with +, -, *, /, %, ^ | 2 + 3 * 4 |
| Number Words | spelled-out numbers up to billions | twenty five times pi |
| Fraction Input | Mixed numbers and fraction words | 2 1/2 + 1.5, three quarters |
| Scale Words | double, triple, half, quarter | double 5, half of 20 |
| Power Words | squared, cubed, square root of | 5 squared, cube root of 27 |
| Comparison | which is bigger, more than, less than | 5 more than 10 |
| Division Phrases | over, out of, divided by, into | 10 over 2, 3 into 15 |
| Multiplication Phrases | times, product of, lots of | product of 4 and 3 |
| Collective Nouns | a dozen, a score, a couple | half a dozen |
| Possessive Plurals | 3 tens, 5 thousands | 3 tens from 5 hundreds |
| SI Notation | k, M, B suffixes | 2B / 5k |
| Ordinal Suffixes | 1st, 2nd, 3rd, 4th | 1st + 2 |
| Conversational Prefixes | hello, hey, ok, well, etc. | hey there calculate 6 times 7 |
| Time Durations | 2h30m, 2h + 1h15m | 2h30m in minutes |
| "How many times" | Division as count | how many times does 5 go into 20 |
| "Split / Shared" | Division by sharing | 10 split among 2 |
| Combined Phrases | Mix multiple patterns | 5 choose 2 + 3! |
Percentages
| Feature | Example |
|---|---|
| Percentage of | 10% of 200 |
| Add percentage | 100 + 15% |
| Subtract percentage | 200 - 10% |
| "of what" | 50% of what is 25 |
| "what percent" | 10 is what percent of 50 |
| Tax and discount | 100 with 8% tax, 200 after 10% discount |
| Tip calculation | 40 plus 15% tip |
| Natural language | how much is one hundred plus fifty percent |
Unit Conversion
| Category | Units | Example |
|---|---|---|
| Length | mm, cm, m, km, in, ft, yd, mi | 10 inches in cm |
| Mass | g, kg, lb, oz | 1 kg in lb |
| Volume | ml, l, gal, qt, cup | 1 gal in l |
| Temperature | °C, °F | 100 c to f |
| Time | s, min, h, day | 2h30m in minutes |
| Currency | 30+ currencies (live rates) | $20 in euro - 5% discount |
Currency Support
USD, EUR, GBP, JPY, CNY, INR, CAD, AUD, CHF, KRW, RUB, ILS, VND, PHP, UAH, KZT, PYG, GHS, TRY, AZN, GEL, BTC, THB, HKD, SGD, MXN, ZAR, NZD, SEK, NOK, PLN, BRL, BDT, PKR, LKR, NPR, MYR, IDR, TWD, SAR, AED, KWD, EGP, NGN, COP, CLP, ARS, PEN, MAD, XAU (gold), XAG (silver).
Math Functions
| Category | Functions |
|---|---|
| Trigonometry | sin, cos, tan, asin, acos, atan, atan2 |
| Hyperbolic | sinh, cosh, tanh |
| Logarithmic | log, log2, log10, ln, exp |
| Roots & Power | sqrt, cbrt, pow |
| Rounding | round, ceil, floor, trunc, sign |
| Absolute | abs |
| Statistics | avg, median, mode, stdev, variance, range |
| Aggregation | sum, min, max |
| Combinatorics | fact/factorial, gcd, lcm, ncr/choose |
| Random | rand, random |
| Geometry | hypot/pythag/hypotenuse |
| Utility | fract, deg, rad |
| Number Theory | isprime/is_prime |
Constants
pi (π), e, speed_of_light, gravity, planck, boltzmann, gas_constant, avogadro, stefan_boltzmann, electron_mass, proton_mass, neutron_mass, electron_charge, bohr_radius, rydberg.
Variables & Context
| Feature | Example |
|---|---|
| Assign variables | x = 42 |
| Reference variables | x * pi |
| Chain assignments | y = x + 8 |
| Context references | of that * 2, then + 10, result / 2 |
| Previous result | last, previous, prior, last answer |
Purchase Math
| Feature | Example |
|---|---|
| Item pricing | 5 items at \$20 each |
| With discount | 5 items at \$20 each with a 15% discount |
| With tax | 5 items at \$20 each with a 15% discount and 8% sales tax |
| Natural language | I bought 8 items at \$5 each with a 10% discount and 6% sales tax |
| Freelance earnings | I got 25 hours of freelance work at \$37 per hour |
| Sale price | That \$200 jacket is 25% off. What's the sale price? |
Date & Time Math
| Feature | Example |
|---|---|
| Relative dates | today + 14 days, today - 7 days |
| Named dates | last month, next week, 2 weeks from now |
| Specific dates | March 1 + 30 days |
| Age calculation | born in 2007, i am 25 years old |
| Trailing noise | I completing a book at today + 14 days some story |
Function Graphing
Auto-detect plot/graph expressions and render live charts:
| Feature | Example |
|---|---|
| Basic plot | plot x^2 |
| Range specifiers | plot x^2 from -5 to 5 |
| Trigonometric | graph sin(x) from 0 to 6.2832 |
| Linear equations | y = 2*x + 3 |
| Polynomials | plot x^3 from -2 to 2 |
Interface
| Feature | Description |
|---|---|
| 27 Color Themes | Dark, Light, Neon, Red, Obsidian, Plasma, Blood, Midnight, Aurora, Mono, Frost, Prism, Lavender, Sage, Warm Light, Blue Trust D/L, Orange Energy D/L, Green Growth D/L, Yellow Optimism D/L, Purple Innovation D/L, Red Passion D/L |
| Multiple Notes | Create, rename, delete, export, import calculation notebooks |
| Notes Sidebar | Drag-and-drop reorder, search, PDF export |
| History Panel | Searchable calculation history with timestamps |
| Variable Explorer | View and manage all assigned variables |
| Steps Panel | Step-by-step evaluation with intermediate results |
| Documentation Viewer | Built-in docs with offline caching |
| Plugin Marketplace | Browse, install, enable/disable plugins |
| Settings | General, Theme, UI Style (5 styles with authentic design system styling), Keyboard Shortcuts, About tabs — all real-time, no Save button |
| Configurable Font | 17 font options (Sans-Serif, Serif, Monospace) with live preview |
| Window Opacity | Adjustable opacity slider (30%–100%, default 95%) for full-window transparency |
| Line Numbers Toggle | Show or hide line number gutter in the calculator editor |
| Result Panel Toggle | Show or hide the results column on the right side |
| Line Wrap Toggle | Toggle word wrapping in the editor (horizontal scroll when off) |
| Customizable Shortcuts | Rebind any keyboard shortcut |
| PDF Export | Export notes as formatted A4 PDFs |
| Print with A4 formatting, watermark, and date | |
| Undo/Redo | 200-entry custom stack |
| Splash Loading Screen | Animated logo and loading bar during startup |
| Toast Notifications | Non-modal feedback for actions (toggleable) |
| Dirty-State Indicator | Accent dot shows unsaved changes |
| Delete Confirmation | Optional "Don't ask again" preference |
| Window Dragging | Drag title bar to move window |
| Double-Click Fullscreen | Double-click title bar to toggle maximize |
| Text Selection | Select and copy text in docs and plugin details |
| Frameless Window | Clean, modern window chrome |
Plugin System
| Feature | Description |
|---|---|
| Custom Functions | Expression-based or builtin-backed functions |
| Custom Themes | 14 CSS color variables per theme |
| Custom Variables | Named constants available in all calculations |
| 12 Built-in Plugins | Finance, Statistics, Geometry, Physics, Date/Time, Health, Arrays, Hex, Color, Base-N, Matrix, Random |
| Plugin Marketplace | Browse and install from GitHub repository |
| Enable/Disable | Toggle plugins on/off without restarting |
| No Code Execution | Safe expression-only evaluation |
See the LineSolv Plugins repository for available community plugins.
Keyboard Shortcuts
| Action | Shortcut |
|---|---|
| Force evaluate | Shift + Enter |
| Toggle notes sidebar | Ctrl/Cmd + B |
| Toggle variables panel | Ctrl/Cmd + I |
| Toggle history panel | Ctrl/Cmd + H |
| Toggle steps panel | Ctrl/Cmd + S |
| Toggle documentation | Ctrl/Cmd + J |
| Open settings | Ctrl/Cmd + , or `Ctrl/Cmd + `` |
| Create new note | Ctrl/Cmd + N |
| Search notes | Ctrl/Cmd + F |
| Print current note | Ctrl/Cmd + P |
| Show shortcuts reference | ? or Cmd + / |
| History navigation | Ctrl/Cmd + ↑ / Ctrl/Cmd + ↓ |
| Undo / Redo | Ctrl/Cmd + Z / Ctrl/Cmd + Shift + Z |
| Duplicate line | Ctrl/Cmd + D |
| Select current line | Ctrl/Cmd + L |
| Delete current line | Ctrl/Cmd + Shift + K |
| Toggle case | Alt + Shift |
| Move line up/down | Alt + ↑ / Alt + ↓ |
| Close panel / clear | Escape |
| Clear all | Ctrl/Cmd + K |
| Fullscreen toggle | Double-click title bar |
Quick Start
Download
Grab the latest release for your platform from the releases page.
| Platform | Package |
|---|---|
| Linux | .deb (Debian/Ubuntu) or standalone binary |
| macOS | .dmg (Intel & Apple Silicon) |
| Windows | .exe (NSIS installer) |
Install
Linux (Debian/Ubuntu)
sudo dpkg -i linesolv-*.deb
linesolv
Or run the standalone binary:
chmod +x LineSolv
./LineSolv
macOS
Mount the .dmg and drag LineSolv into Applications. You may need to right-click -> Open to bypass Gatekeeper on first launch.
Windows
Run the NSIS installer. LineSolv will be available from the Start menu.
Uninstall
Linux (deb)
sudo dpkg -r linesolv
To also remove user data:
rm -rf ~/.config/neostore/linesolv
macOS
rm -rf /Applications/LineSolv.app
rm -rf ~/.config/neostore/linesolv
Windows
Uninstall via Settings > Apps, then delete %APPDATA%/neostore/linesolv to remove user data.
Requirements
- Linux: WebKit2GTK 4.1+ (Ubuntu 24.10+, Fedora 40+, Arch)
- macOS: macOS 12+
- Windows: Windows 10+
Usage
Type calculations naturally. Results appear as you type — no equals button needed.
Basic Math
| Input | Output |
|---|---|
42 | 42 |
2 + 3 * 4 | 14 |
(2 + 3) * 4 | 20 |
2^10 | 1024 |
5! | 120 |
Natural Language
| Input | Output |
|---|---|
twenty five plus 3 | 28 |
what is the square root of 144 | 12 |
calculate 15% of 200 | 30 |
how much is one hundred plus fifty percent | 150 |
Variables
| Input | Output |
|---|---|
x = 10 | x = 10 |
x * pi | 31.4159 |
y = x + 8 | y = 18 |
of that * 2 | 36 |
Unit Conversion
| Input | Output |
|---|---|
10 inches in cm | 25.4 cm |
1 kg in lb | 2.205 lb |
100 c to f | 212.0 °F |
2h30m in minutes | 150 minutes |
Currency
| Input | Output |
|---|---|
$100 + €20 | $122.80 |
$20 in euro - 5% discount | €18.26 |
£20 in usd | $26.60 |
Percentages
| Input | Output |
|---|---|
10% of 200 | 20 |
100 + 15% | 115 |
200 after 10% discount | 180 |
10 is what percent of 50 | 20% |
Purchase Math
| Input | Output |
|---|---|
5 items at \$20 each | $100.00 |
5 items at \$20 each with a 15% discount | $85.00 |
I bought 8 items at \$5 each with a 10% discount and 6% sales tax | $40.76 |
Math Functions
| Input | Output |
|---|---|
sin(pi/4) + cos(pi/4) | 1.4142 |
log2(8) | 3 |
gcd(12, 8) | 4 |
5 choose 3 | 10 |
avg(1, 2, 3, 4, 5) | 3 |
stdev(10, 20, 30, 40, 50) | 14.142 |
Graphing
| Input | Output |
|---|---|
plot x^2 | Parabola chart |
graph sin(x) from 0 to 6.2832 | Sine wave chart |
y = 2*x + 3 | Linear chart |
Architecture
LineSolv/
├── app/
│ ├── calculator/ # Arithmetic engine
│ │ ├── engine.go # Core eval pipeline
│ │ ├── units.go # Unit conversion database (100+ units)
│ │ ├── functions.go # 40+ built-in math functions
│ │ ├── variables.go # Variable storage
│ │ ├── steps.go # Step-by-step evaluation
│ │ └── graph.go # Function graphing (Chart.js)
│ ├── plugin/ # Plugin system
│ │ ├── types.go # Manifest, Plugin, FunctionDef types
│ │ ├── loader.go # Plugin scanning and loading
│ │ ├── builtins.go # 20+ builtin plugin functions
│ │ ├── expr.go # Expression evaluator for plugins
│ │ ├── state.go # Plugin state persistence
│ │ └── state_test.go # Plugin state tests
│ ├── service/ # Wails-bound Go methods
│ │ └── app.go # 42+ service methods
│ └── storage/ # Persistence layer
│ ├── db.go # SQLite database
│ ├── config.go # TOML configuration
│ ├── exporter.go # PDF/PNG export
│ └── fancyname.go # Readable note names
├── frontend/
│ └── src/
│ ├── components/ # UI components
│ │ ├── TitleBar.ts # Frameless window header
│ │ ├── CalculatorInput.ts # Main input textarea
│ │ ├── ResultDisplay.ts # Results column
│ │ ├── NotesPanel.ts # Note management sidebar
│ │ ├── HistoryPanel.ts # Searchable history
│ │ ├── VariableExplorer.ts # Variable viewer
│ │ ├── StepsPanel.ts # Step-by-step view
│ │ ├── GraphPanel.ts # Chart.js graphing
│ │ ├── DocsViewer.ts # Built-in documentation
│ │ ├── PluginPanel.ts # Plugin marketplace
│ │ ├── SettingsModal.ts # Settings (5 tabs)
│ │ ├── ShortcutModal.ts # Keyboard shortcuts
│ │ ├── ConfirmDialog.ts # Confirmation dialogs
│ │ ├── AutocompletePopup.ts # Autocomplete dropdown
│ │ └── ContextMenu.ts # Right-click menu
│ ├── stores/ # Reactive state
│ │ ├── calculator.ts # Calculator state store
│ │ ├── notes.ts # Notes state store
│ │ └── settings.ts # Settings state store
│ ├── utils/ # Utilities
│ │ ├── shortcuts.ts # Keyboard shortcut handler
│ │ ├── shortcutDefs.ts # Shortcut definitions
│ │ ├── format.ts # Number formatting
│ │ ├── html.ts # HTML escaping
│ │ ├── fonts.ts # Font loading
│ │ └── toast.ts # Toast notifications
│ ├── App.ts # Main orchestrator
│ └── style.css # CSS custom properties + theming
├── docs/ # Documentation
├── main.go # Entrypoint
├── wails.json # Wails configuration
├── go.mod # Go module definition
├── .version # Current version (0.17.0)
├── logo.svg # Project logo
├── docs/examples.txt # Input examples
├── CHANGELOG.md # Version history
├── CONTRIBUTING.md # Contribution guidelines
├── CODE_OF_CONDUCT.md # Community standards
├── ACCESSIBILITY.md # Accessibility statement and WCAG compliance
├── SECURITY.md # Security policy
├── Dockerfile # Containerized build environment
└── LICENSE # MIT License
Documentation
| Guide | Description |
|---|---|
| User Guide | Beginner-friendly guide to using LineSolv |
| Expression Reference | Complete expression syntax reference |
| Interface Details | Documentation viewer, plugin marketplace, settings, design tokens |
| Screenshots | All screenshots of the LineSolv interface |
| Getting Started | Quick start for new users |
| Configuration | Settings, config file options, and data storage |
| FAQ & Troubleshooting | Frequently asked questions and common issues |
| Architecture | High-level architecture and component overview |
| Frontend | Frontend component structure and styling guide |
| Plugin Development | How to create and install plugins |
| Themes | Theme customization guide |
| Development | Development setup, build, and code standards |
| API Reference | Wails-bound Go method reference |
| Calculator Engine | How the natural-language calculation engine works |
| From Words to Numbers | End-to-end pipeline walkthrough |
| Accessibility | WCAG 2.1 AA compliance and assistive technology support |
| Future Features | Planned features: AI integration, self-updater, image/voice, mobile |
Building from Source
Prerequisites
Steps
git clone https://github.com/rkriad585/LineSolv.git
cd LineSolv
npm install --prefix frontend
wails build -tags "webkit2_41"
./build/bin/LineSolv
Development (HMR)
wails dev -tags "webkit2_41"
Tests
# Backend tests
go test ./app/... -v
# Frontend tests
cd frontend && npx vitest run
# Type checking
cd frontend && npx tsc --noEmit
Docker
docker build -t linesolv .
docker run linesolv
License
MIT — LineSolv (c) 2026 rkriad585.
Security
See SECURITY.md for reporting vulnerabilities.
Contributing
Contributions are welcome. See CONTRIBUTING.md for guidelines, CODE_OF_CONDUCT.md for community standards, and ACCESSIBILITY.md for accessibility information.