Skip to content

Latest commit

 

History

History
184 lines (151 loc) · 19.2 KB

File metadata and controls

184 lines (151 loc) · 19.2 KB

ToolForge

A fast, secure, lightweight and pluggable desktop toolbox for developers and power users

Built with Tauri 2 and Rust: all data is processed locally in Rust, every tool is an independent plugin, and the modern interface supports light / dark themes, Chinese and English, and in-app updates.

release platform stack ci license

English · 简体中文


✨ Features

  • Your data stays local: parsing, formatting, encoding, hashing and file I/O all run in Rust. The frontend only renders results, and nothing leaves your machine.
  • Everything is a plugin: every tool, built-in ones included, is an independent plugin with its own manifest, Rust backend, React UI and translations. The host hard-codes no tools.
  • Live feedback for long tasks: heavy work such as hashing large files runs as a background task with live progress and logs, and can be cancelled at any time. The task center keeps the history and logs.
  • Modern interface: semantic design tokens, light / dark themes, custom components and window controls, a ⌘K command palette, favorites and recently used tools.
  • Clipboard-aware ⌘K: open the command palette and it recognizes what you copied (JSON, JWT, timestamps, UUIDs, colors, curl commands, cron expressions, IPs, SQL, spreadsheet tables, certificates, screenshots and more) and offers the right tool, opened with the content already filled in. Detection runs locally in Rust and can be turned off.
  • Quick launch: a global shortcut (⌥Space / Alt+Space by default, configurable) brings ToolForge forward with the command palette from any app; background mode keeps it in the menu bar or system tray.
  • Internationalized: Simplified Chinese and English; plugins ship their own translations, and Rust only returns error codes that the UI translates.
  • On-demand resources: large assets such as AI models are downloaded only when a tool needs them, from verified sources with resume support, and can be removed at any time.
  • In-app updates: delivered through GitHub Releases with signed update packages; versions can be skipped and automatic checks turned off.
  • SQLite only for local storage: preferences, favorites, usage and task history are stored in a local database.

🧰 Built-in tools

Tool Description
JSON Formatter Format, minify, validate, escape / unescape, tree view and structural diff; JSON5 support; errors pinpointed to line and column; tree view loads large documents on demand
JSON Query Query and reshape JSON or JSON Lines with jq (jaq engine; output matches jq) or JSONPath with normalized match paths; raw, compact and sorted output, examples, files up to 100 MB and a 10-second time limit
XML Formatter Format, minify and validate; keeps comments, CDATA and declarations; unclosed or mismatched tags reported with line and column
SQL Formatter Beautify and minify; keyword casing, indentation and compact mode; generic SQL / PostgreSQL / SQL Server dialects
Regex Tester Live match and group highlighting with replacement preview; lookaround, backreferences and named groups; common pattern presets
Hex Viewer Open files of any size byte by byte with file-type detection, go to offset, hex or text search, a data inspector (integers, floats, UTF-8, Unix times in either byte order) and copying selections as hex, Base64, a C array or Python bytes
Timestamp Seconds / milliseconds / microseconds / nanoseconds detected automatically; multiple time zones side by side; date strings to timestamps; live clock
UUID Generator Batch generate UUID v1 / v3 / v4 / v5 / v7, ULID and NanoID; inspect versions and embedded timestamps
Hash MD5, SHA-1, SHA-2, SHA3, SM3 and CRC32; live text hashing and HMAC with verification; drop files to hash them in a background task with live logs
Encoder Base64 / Base64URL / Base32 / Hex, URL (component, full, form), HTML entities and Unicode escapes in both directions; files to Base64 or Data URIs
JWT Decoder Decode headers and payloads, check expiry, verify HS / RS / PS / ES / EdDSA signatures and sign new tokens
Certificate Viewer Inspect PEM / DER certificates and chains (names, SANs, validity, key, usages, fingerprints), or fetch the chain a server presents and verify it with the system trust store, showing the TLS version and cipher
Encryption AES (GCM / CBC / CTR / ECB), SM4 and ChaCha20-Poly1305 with hex, Base64, text or PBKDF2 keys; RSA key generation, OAEP / PKCS#1 encryption and PKCS#1 / PSS signatures, compatible with OpenSSL
Text Tools 13 naming styles and letter cases; trim, dedupe, sort (natural, by length), shuffle and number lines; character, word, CJK and reading-time statistics
Character Inspector List every character with code point, name, category, script and UTF-8 / UTF-16 bytes; find invisible characters, Trojan Source direction controls, lookalikes and mixed scripts; clean and normalize text; search characters by name or code with escapes for common languages
Encoding Converter Detect the encoding of many files at once (BOM, UTF-16, UTF-8, GBK, Big5, Shift_JIS, …) and their line endings; preview a file in any encoding to fix wrong guesses; convert to UTF-8 or another encoding and LF / CRLF in place with backups or into a folder
Text Diff Line, word or character diff with side-by-side highlighting, ignore case / whitespace and unified patch export
Batch Rename Rename many files with chained rules (replace / regex, insert, remove, case, numbering, templates with dates and EXIF capture time), a live conflict-checked preview, safe two-phase renaming and undo
Archive Manager Browse, preview and extract ZIP, 7z, TAR and tar.gz / bz2 / xz / zst archives (encrypted ZIP and 7z included) with path-traversal protection, and create ZIP, 7z, tar.gz or tar.xz archives with AES-256 passwords — all in pure Rust
Format Converter JSON ⇄ YAML ⇄ TOML ⇄ CSV with automatic detection, preserved key order and CSV delimiter / header / type options
Table Converter Convert tables between Markdown, CSV, TSV (Excel paste), HTML, JSON, SQL INSERT, LaTeX and bordered text with automatic input detection, CJK-aware column alignment, per-column alignment, header and transpose options
Document Converter Excel → Word and Word → Excel in pure Rust (sheets become tables and tables become sheets, numbers stay numbers), plus Word → PDF and PDF → Word through a locally installed LibreOffice, found automatically; batch conversion that never overwrites
Base Converter Arbitrary-precision integers in bases 2–36, prefix detection, two's complement for 8–128 bits and a clickable 64-bit view
Color Converter HEX / RGB / HSL / HSV / HWB / CMYK / Lab / OKLCH, WCAG contrast checks, tints, shades and harmonies
Password Generator Cryptographically secure passwords with per-type options and exclusions, plus a local strength and crack-time check
SSH Keys Generate Ed25519, ECDSA and RSA keys in the OpenSSH format with passphrases, inspect keys, authorized_keys and known_hosts with SHA256 / MD5 fingerprints and randomart identical to ssh-keygen, convert PEM RSA keys and change passphrases
QR Code Generate QR codes as PNG / SVG with error correction, size and colors; read QR codes from images
Barcode Generate EAN-13, EAN-8, UPC-A, ITF-14, Code 128, Code 39, Code 93, Codabar, Data Matrix, PDF417 and Aztec codes; retail check digits are added or verified automatically, EAN/UPC are drawn with guard bars and grouped digits; save as SVG or PNG, and read every barcode in an image or a clipboard screenshot
Background Remover Remove image backgrounds with a local AI model (U²-Net lite or IS-Net) running in Rust; models download on first use with resume and SHA-256 verification; transparent PNG or a solid color
OCR Extract Chinese and English text from images and screenshots with PaddleOCR PP-OCRv4 models running in Rust (about 15 MB, downloaded on first use); paste screenshots with ⌘V, see recognized boxes and copy lines
IP Calculator IPv4 / IPv6 subnets: network, broadcast, host range, counts, address type and reverse DNS; subnet splitting, membership check and range to CIDR
URL Parser Split a URL into scheme, user, host (with punycode and Unicode forms), port, path segments, query and fragment, all decoded; edit, add, sort and remove query parameters and rebuild the URL; remove utm_* and other tracking parameters in one click
HTTP Client Send requests with params, headers and JSON / text / form bodies; status, timing, headers and pretty-printed JSON; save responses and copy as cURL
WebSocket Client Connect to ws:// and wss:// servers with custom headers and subprotocols, watch every received and sent frame live, format JSON, and send text, hex / base64 binary or pings with saved snippets
DNS Lookup A / AAAA / CNAME / MX / TXT / NS / SOA / SRV / CAA / PTR records from the system resolver or public DNS, compared side by side with timings; flags proxy fake IPs
Port Manager See which process listens on each TCP / UDP port (with user, memory and command line), search, stop the process, and check remote ports in parallel with latency and failure reasons
Local Server Serve a folder as a website on localhost or the local network (with QR codes) and watch every request live; directory listing, SPA fallback, CORS, byte ranges, dotfiles hidden and paths locked to the folder
System Monitor Live CPU, memory, disk, network and temperature readings plus a searchable process list
Disk Usage Scan a folder or disk in parallel and see what takes up space in a zoomable treemap colored by file type, with folder contents, largest files and a type breakdown; move items to the Trash
Duplicate Finder Find files with identical content across folders (size → first 64 KB → full BLAKE3 hash, in parallel), ignore hard links, preselect extra copies by date, path or folder and move them to the Trash after re-verifying
Folder Compare Compare two folders by size and time or by content, with ignore patterns; browse the differences as a tree, see changed text files side by side and copy files or folders to the other side, keeping modification times
Context Menu Manager (Windows) List the right-click menu entries for files, folders, folder background, desktop and drives; disable and enable them without deleting anything, with a double-click .reg undo file for every change; switch the Windows 11 classic menu
Unit Converter 14 categories including length, weight, temperature, area, volume, data size and rate, pressure, energy and power, plus traditional Chinese units
Date Calculator Days, weeks and years-months-days between dates (with times); add or subtract time with end-of-month handling; count or add working days Monday to Friday or by the Chinese public holiday schedule with make-up workdays; a month calendar with lunar dates, solar terms and festivals
Number to Words Type a number, Chinese numerals, an RMB amount or a Roman numeral and get RMB uppercase (following the PBOC rules), Chinese numerals, English words, check amounts, Roman numerals, digit grouping, scientific notation and byte sizes, all with exact decimal digits
Random Random integers in any range (unique, sorted), draw names from a list with optional weights, shuffle, split into balanced groups, roll dice and flip coins; an optional public seed makes every result reproducible so anyone can verify a draw
Image Compressor Batch compress JPEG (mozjpeg), PNG (dithered palette with transparency, or lossless oxipng) and WebP offline; resize, strip EXIF, keep color profiles, never overwrite, and compare with the original using a drag divider
Image Converter Batch convert PNG / JPEG / WebP / GIF / BMP / ICO / TIFF, resize by percent or bounding box, JPEG quality; runs as a task with live logs and never overwrites files
Image Color Picker Click an image to pick a color (single pixel or an averaged area) with a magnifier; extract the main palette with OKLab k-means and shares; every color as HEX, RGB, HSL and OKLCH with text contrast; export as CSS, SCSS, Tailwind, JSON or a GIMP palette
App Icon Generator Turn one image or SVG into icon sets for the web (favicon.ico, PNGs, webmanifest and HTML snippet), iOS (Xcode AppIcon.appiconset), Android (mipmaps and round icons), macOS (.icns) and Windows (multi-size .ico), with padding, background color and corner radius; or drop the image into 37 templates such as folders, drives, documents, disc cases, photos and cartridges, export PNG / ICNS / ICO and set it as a folder icon (on macOS also on drives and any file), with one click to restore the default
PDF Tools Merge PDFs and reorder, rotate, duplicate or delete pages on a thumbnail grid; split by page ranges, every N pages or one file per page; turn images into a PDF (JPEG embedded without recompression); opens password-protected files
Cron Expression Explain 5 / 6 / 7-field cron expressions field by field, preview upcoming runs in any time zone, with L, W, # and aliases such as @daily
JSON to Code Generate TypeScript, Rust (serde), Go, Java records, Kotlin, Python (pydantic) and C# models from JSON samples, merging arrays and detecting optional and nullable fields
cURL to Code Convert curl commands (including browser “Copy as cURL” in bash or cmd format) into JavaScript fetch, Python requests, Go, Rust reqwest, Java HttpClient, PHP and C# code, listing anything that cannot be converted
Mock Data Generate up to 100,000 rows of realistic Chinese or English test data (consistent names, emails, valid ID numbers, real cities and 35 field types) as JSON, CSV or SQL INSERT, reproducible with a seed
CSV Viewer Open CSV / TSV files up to 1 GB (a million rows in under a second) with automatic encoding, delimiter and header detection; sort, search, filter, column statistics and export to CSV / TSV / JSON / Markdown
Log Viewer Open gigabyte log files instantly, filter by level, text or regex with highlighted matches, follow new lines like tail -f, and inspect JSON inside lines; GB18030 and ANSI colors handled
Image Info Format, dimensions, color type, EXIF camera settings and GPS location with a map link, dominant colors; strip EXIF / XMP / IPTC from JPEG and PNG losslessly
Markdown Editor GitHub Flavored Markdown with live preview rendered in Rust, outline, word count, formatting toolbar and shortcuts; drafts are saved automatically; export standalone HTML

More tools are on the way.

📦 Download

Grab the installer for your platform from Releases:

Platform Installer
macOS (Apple Silicon / Intel) .dmg
Windows .msi / -setup.exe
Linux .AppImage / .deb / .rpm

Builds are not code-signed yet. If macOS says the app is damaged or from an unidentified developer, right-click it and choose Open, or run:

xattr -cr /Applications/ToolForge.app

If Windows SmartScreen appears, choose More info → Run anyway. In-app updates are not affected.

🛠 Development

Requirements

Common commands

pnpm install          # install frontend dependencies
pnpm dev              # run the desktop app in development mode with hot reload
pnpm build            # build installers
pnpm icons:generate   # rebuild desktop / tray icons from the TF logo SVG

cargo xtask check     # run exactly the checks CI runs
cargo xtask check rust|web|rules   # run a subset
pnpm lint             # ESLint (zero warnings)

cargo xtask check runs, in order: convention rules → rustfmt → clippy → Rust tests → TypeScript type checking → ESLint → frontend build.

Plugin layout

plugins/<name>/
├── manifest.json          # id (org.devlive.toolforge.<name>), category, functions, permissions
├── icon.svg
├── locales/en-US.json     # UI text, log and error code translations
├── backend/               # Rust: implements ToolPlugin; all data processing lives here
└── ui/                    # React: presentation only, calls the backend through usePlugin / useTask
  • Regular functions are invoked with call() for instant results. Functions declared with "task": true in the manifest must run as tasks and report logs and progress, and honor cancellation, through TaskContext.
  • Plugin UIs may only use @toolforge/ui components and semantic tokens; files, clipboard and other capabilities go through the SDK's host.

Conventions

  • Data processing must happen in Rust. The frontend must not pull in data processing libraries or use browser storage (enforced by ESLint and the convention scanner).
  • Styles use semantic tokens only: no raw palette classes and no dark:. Native form controls and dialogs are not used.
  • All UI text goes through i18n; Rust returns only error codes and parameters.
  • Rust tests live in dedicated xxx_test.rs files.
  • Commits follow Conventional Commits, one commit per feature.

🚀 Releasing

scripts/release.sh --dry-run        # preview the release plan and notes
scripts/release.sh                  # release the current version
scripts/release.sh minor --wait     # bump the minor version, release and wait for CI
scripts/release.sh 1.0.0 --next none
scripts/release.sh --help           # all options

The release script checks the repository state, runs every check, creates an annotated tag whose message is the version's commit history, and pushes it. GitHub Actions then builds the macOS / Windows / Linux installers and, once every platform succeeds, publishes the release together with the update manifest. Finally the script bumps the project to the next development version and commits it.

Before releasing, add the updater signing key to the repository secrets as TOOLFORGE_UPDATER_PRIVATE_KEY (the private key file content, paired with the public key in tauri.conf.json), plus TOOLFORGE_UPDATER_KEY_PASSWORD if the key has a password.

📄 License

MIT © devlive-community