English documentation. For Chinese documentation, see README.zh-CN.md.
TypeLens is a macOS desktop and CLI companion for Typeless. It focuses on two workflows:
- managing the remote Typeless dictionary with a faster local UX
- searching Typeless transcript history and copying useful text quickly
The desktop app is built with Wails + React + TypeScript. The CLI is built with Cobra.
- List all remote Typeless dictionary entries
- Add and delete dictionary entries
- Import dictionary entries from a plain text file
- expected format: one term per line
- Reset the dictionary against built-in defaults or a custom file
- Export the current dictionary to a
.txtfile - Show pending auto-import terms alongside synced remote terms
- Scan Codex, Claude, and additional user-provided directories for candidate terms
- Parse
history.jsonland related*.jsonlfiles - Preview candidate terms before importing
- Select/deselect terms before confirmation
- Persist accepted terms locally, then sync them to the remote Typeless dictionary in the background
- Stream real-time scan and sync logs in the desktop UI
- estimated files to scan
- scanned files progress
- total extracted text/messages
- raw candidate count
- final candidate count
- Query recent Typeless transcript history
- Filter by keyword or regex
- Choose context mode:
allfrontmostlatest
- Sort by newest-first or oldest-first
- Copy a transcript entry with one click
- Show cached dictionary and history immediately on startup
- Refresh in the background without interrupting the page
- Persist cache on disk instead of browser storage
- Sidebar with
DictionaryandHistory - Import dialog with tabs:
Import FileAuto Import
- Context menu refresh on dictionary items
- Keyboard shortcuts:
Cmd/Ctrl + F: jump to history searchCmd + W: hide the desktop window
Available commands:
typelens dict listtypelens dict add <term>typelens dict import <file> [--dry-run] [--concurrency N]typelens dict delete --id <id>typelens dict clear --yes [--concurrency N]typelens dict reset --yes [--file <path>] [--concurrency N]typelens history [--limit N] [--keyword text] [--regex expr] [--context frontmost|latest|all] [--no-copy] [--full]typelens auto-import
TypeLens currently assumes a macOS Typeless installation and an authenticated Typeless account.
It reads Typeless local data from:
~/Library/Application Support/Typeless/user-data.json~/Library/Application Support/Typeless/typeless.db
It also uses these local files:
- cache:
~/.typelens/cache.json - pending auto-import state:
~/Library/Application Support/TypeLens/auto-import-pending.json - default export directory:
~/Downloads
app.go: Wails desktop bindingsinternal/service/: application services, cache store, auto-import orchestrationinternal/cli/: CLI entrypoints and commandspkg/typeless/: Typeless API, history, import/export, auth, auto-import primitivesfrontend/src/: React desktop UI
- Go
1.26+ - Node.js and npm
- Wails CLI
- macOS with Typeless installed if you want to use real local Typeless data
wails devcd frontend
npm run buildgo test ./...wails buildTypeLens now supports a local install flow through make.
make installThis does two things:
- builds the desktop app and installs
TypeLens.app - builds the CLI and installs
typelens
Default install locations on macOS:
- desktop app:
/Applications/TypeLens.appwhen/Applicationsis writable- otherwise
~/Applications/TypeLens.app
- CLI:
~/.local/bin/typelens
make upgrademake upgrade rebuilds the app and CLI, then overwrites the installed copies in place.
make uninstallThis removes:
- the installed
TypeLens.app - the installed
typelensCLI binary
You can override install paths when needed:
make install INSTALL_APP_DIR=~/Applications INSTALL_BIN_DIR=/usr/local/bin- Dictionary import files are plain text files with one term per line.
- Auto-import source labels are a UI hint only. Import behavior is text-driven; the source label is not required for dictionary semantics.
- Background sync may temporarily keep pending words visible until remote sync completes.
For Chinese documentation, see README.zh-CN.md.