Skip to content

Releases: gonemedia/aipointer

AIPointer - v1.1.8 Multi-monitor

Choose a tag to compare

@talentsache talentsache released this 31 May 19:52
73bcbbe

Works properly across multiple displays now, and speech-to-text runs fully on your machine.

Highlights

  • Multi-monitor support. Trigger AIPointer on any screen - the box, the screenshot, the drag-to-capture region, and typing all happen on whichever display your cursor is on. (Previously, with two or more monitors, the prompt could close itself after a couple of keystrokes.)
  • On-device speech-to-text. Your voice is transcribed locally - multilingual, including German - no API key, no cloud round-trip. Install it on demand in Settings; skip it and voice input keeps using your cloud provider. It joins the on-device read-aloud voices already in AIPointer, so the whole voice loop can run offline.

Download

Pick your platform below. Existing installs update themselves on next launch.

Full changelog: https://github.com/gonemedia/aipointer/blob/main/CHANGELOG.md

AIPointer - v1.1.7 - Local TTS

Choose a tag to compare

@talentsache talentsache released this 25 May 05:46

Fixed

  • Local TTS now loads cleanly on every Mac. v1.1.6 could fail at
    first Read aloud with a "could not load sharp module" message on
    some signed builds because two slightly-different copies of the
    same internal library ended up bundled side by side. v1.1.7 ships
    a single consistent runtime so the load just works the first time.
  • Voice picker keeps your selection. Choosing a different Kokoro
    voice and clicking Save now actually persists across sessions. In
    v1.1.6 the change was silently dropped and reverted to the default
    on the next open of Settings.

Added

  • ▶ Preview button next to the Kokoro voice dropdown. Settings →
    Voice → Local now has a play button right next to the voice picker.
    Click it to hear a short test sentence in the currently-picked
    voice before you commit. Lets you audition all 28 voices
    side-by-side without opening a real query. Click again while
    playing to stop. Previewed voices are cached, so re-clicking the
    same one is instant.

AIPointer v1.1.6 - Hotifx

Choose a tag to compare

@talentsache talentsache released this 24 May 15:37

Hotfix for AIPointer v1.1.5


v1.1.6 is a reliability hotfix on top of v1.1.5. No new features beyond
the Kokoro voice picker - the rest of this release is making the v1.1.5
voice engine + Finder auto-attach actually work on a signed, notarized
macOS build. v1.1.5 shipped with the Local TTS runtime missing from the
installer and a couple of regression-class bugs in the TTS / auto-attach
paths; v1.1.6 ships the fixes.

Fixed

  • Local TTS actually loads on signed builds.
  • Finder / Explorer auto-attach silent failure.
  • System TTS feels instant again.
  • Build YAML drift.

AIPointer v1.1.5 - Pick your Model

Choose a tag to compare

@talentsache talentsache released this 24 May 07:21

AIPointer 1.1.5

Read aloud now works for everyone, right away

You can now choose how AIPointer speaks under Settings, Voice:

  • System (default): uses your computer's built-in voice. Nothing to set up, nothing to download, works the moment you install.
  • Local: a free voice that runs entirely on your own machine. Nothing you say or hear leaves your computer. One-time download (Kokoro + Whispr) of about 231 MB, then fully offline.
  • Cloud: uses your provider key for the highest-quality voices.

Attach files straight from Finder or Explorer

Select up to 5 files in Finder (Mac) or Explorer (Windows), press the AIPointer hotkey, and they are attached to your next question automatically. No dragging, no paperclip needed.

Upload more files at once

Up to 5 files per question now.

Pick your model, live

Every provider now has a refresh button that pulls its current model list, so you can choose exactly which model to use without waiting for an app update.

Set backup/fallback providers

Choose a main provider and up to 3 backups. If one is down or busy, AIPointer automatically falls back to the next one.

Clearer in light mode

Better contrast and readability across the interface in light theme, and clearer text when selecting a region of your screen.

Plus a round of fixes to voice playback, the file-attach flow, and general interface polish.

AIPointer v1.1.2

Choose a tag to compare

@talentsache talentsache released this 19 May 09:59

AIPointer v1.1.2

New

Cursor accent picker. Settings, Appearance, Cursor accent. Three brand presets: Lime (default), Blue (macOS system blue), Magenta. The comet trail, halo, status dot, focus rings, and every accent-tinted surface retint live without restart. No free-form picker, palette stays curated.

Chat-only mode. Settings, Behaviour. Toggle on to open AIPointer as a pure chat window with no auto-attached screenshot. A small camera button appears inside the prompt input whenever no screenshot is attached, click it to attach one per query. Good for follow-up questions and quick lookups where you already know what you want to ask. Default off, v1.1.1 behavior preserved.

Pause and resume for text-to-speech. The Read button under each response is now a real play, pause, resume toggle. First click plays, second click pauses at the current position, third click resumes from there. Stop-words ("stop", "halt", "sei ruhig"), ESC, and a new query still fully end playback. Works for both Web Speech API and provider-TTS (OpenAI, Gemini). Closes #3.

Activation section in Settings. Keyboard hotkey dropdown and a Mouse-wiggle on/off toggle, both live-applied. The wiggle has existed since v1.1.0 but had no UI control. Default stays on, no sensitivity slider. Closes #4.

Changed

Floating chip toolbar. Screenshot and Clipboard chips now render as a horizontal toolbar above the BottomPill, collapsed as small icon bubbles by default. Hover to expand to icon, label, and dismiss button. High-opacity tint with white text so they stay readable against any backdrop (light AIPointer over a dark website, dark AIPointer over a bright editor). Replaces the banner-style strip inside the prompt input.

System prompt now knows its own version. A {{VERSION}} placeholder gets substituted with the running version at request time, so the LLM always answers correctly when asked which version it is on.

All repository links point to github.com/gonemedia/aipointer across the About window, settings footer, tray menu, FAQ, save-template footer, system prompt, and package.json.

Fixed

Manual theme choice persists across macOS appearance changes. Picking Light or Dark would silently flip back to system theme whenever macOS toggled appearance. The theme preference now owns the dark class entirely.

Chip text contrast. The old translucent fill bled the desktop through and made chip text unreadable when AIPointer floated over high-contrast backgrounds. Fixed alongside the new floating toolbar.

License

AIPointer moves from MIT to the Business Source License 1.1, the same license as Skales (the author's main project). Source stays public on GitHub. Personal, educational, and internal business use remain free. Commercial redistribution, SaaS hosting, white-labeling, bundling, and resale require a written commercial license. Reverts automatically to Apache 2.0 on 2030-05-19. Older releases (v1.1.1 and earlier) keep their MIT terms.

See NOTICE.md for the public reasoning and COMMERCIAL-LICENSE.md for licensing inquiries.


Auto-update prompts existing v1.1.1 users on next launch. Manual downloads below.

Full changelog: CHANGELOG.md

AIPointer v1.1.1

Choose a tag to compare

@talentsache talentsache released this 17 May 22:16

AIPointer v1.1.1 — Stabilization Release

The first wide rollout of v1.1.0 hit ~300 users this weekend. This release rolls up four rounds of post-launch fixes plus a fresh visual polish pass.

Highlights

New visual identity. macOS-Control-Center-style tile surface for the BottomPill and PromptInput. Warm-grey light surface (#f5f5f5) and Claude-sidebar dark surface (#262626). Five-layer shadow for perceived depth, fractalNoise micro-grain via inline SVG (works in production where backdrop-blur drops to 1px on packaged macOS builds).

Theme picker. Settings → Appearance: System (follows your OS), Light, or Dark. Pick AIPointer's appearance independently — run macOS in light and AIPointer in dark, or vice versa.

macOS-blue Screenshot chip (#2997ff) above the input. Click × to dismiss for the current query. Paperclip chip toggles clipboard inclusion (off by default).

/lastsession command. Restores the most recent saved session — useful when you closed the box by accident. Also surfaced as a banner when you re-open AIPointer within 60 seconds of an accidental dismiss.

Save button redesigned with a Replace flow when a session with the same name exists. Document chooser styled with a glass surface that matches the new pill tile.

Critical fixes

  • Child Mode game/app launch no longer routes to vision LLM. "Open game", "spiele Online-Spiel", "starte X" trigger the intent router before the LLM is called. Direct routing to launch_app (whitelisted apps) or to safe game URLs.
  • Voice loop spoken-stop interrupt. "Stop", "halt", "sei ruhig", "pause", "be quiet" in EN/DE/FR/ES/IT/PT/NL now break the audio loop cleanly. Loop disarms, mic closes, user has full control.
  • Windows API key persistence. DPAPI safeStorage flow no longer drops keys on app restart. Per-key encryption flag tracked, fallback path preserved, provider warnings now actually surface in the UI.
  • Action commands no longer drag a screenshot through the LLM. Open/launch/play/search/volume intents go to tools directly without a vision call. Saves tokens and stops the LLM from talking about the wallpaper when you asked it to launch a game.

Visible polish

  • Stop word interrupt while TTS is still speaking, not just after.
  • Provider health banner sits below the macOS menu bar and clicks through to Settings.
  • Toast notifications visually centered (positioning wrapper split from animated motion.div).
  • Onboarding wizard layout fixes: child voice toggle is independent, footer no longer overlaps the action area.
  • Light-mode chip readability fix — answer chips no longer auto-dismiss while the answer is being read aloud.
  • /lastsession command + 60s recovery banner if the box was dismissed by accident.

Behind the scenes

  • Independent decrypt-failure tracking per provider (was global before, hid which key broke).
  • Decrypt log spam reduced from one warning per provider per IPC call to one per process lifetime per failure mode.
  • Audio mode armNextRef is now reset on manual mic press, voice loop stop word, and on every settings open — prevents the auto-restart-after-stop regression.
  • Onboarding consent version unchanged at v1.1.0-2026-05-16 (no consent reset for existing users on a bug-fix release).

Auto-update: existing v1.1.0 users will get prompted automatically. Manual download below.

Full changelog: CHANGELOG.md

AIPointer v1.1.0

Choose a tag to compare

@talentsache talentsache released this 16 May 16:30

[1.1.0] — 2026-05-16

Major feature release. Audience feedback on v1.0.0 landed at 7/10; v1.1.0
targets 10/10 by hardening the first-run experience, adding a true Child Mode
behavior layer, and polishing the visual + interaction layer. The Pillbox UI
itself is byte-identical to v1.0.0 — Child Mode is a pure behavior layer
(system prompt, tool gating, sanitizer, URL whitelist).

Added

  • Onboarding wizard. Separate framed window on first launch — 5 steps:
    Welcome + privacy, Mode pick (Adult / Child), PIN setup,
    Autostart + updates, Provider + API key. Cancel quits cleanly; complete
    boots the rest of the app. Keychain prompt fires exactly once, at the
    moment the user explicitly clicks Complete.
  • Child Mode. Locale-driven safe-browsing layer that produces kid-friendly
    responses (EN/DE), restricts tools to fetch_url / open_url / launch_app,
    validates every outbound URL against a per-language allowlist, swaps the
    system prompt, and stamps a stricter HTML sanitizer schema. PIN-gated
    Settings, /quit, and mode-switch back to Adult. Voice-first ON by default
    with a slower TTS rate (0.9).
  • launch_app tool. Open whitelisted desktop apps (paint, calculator,
    notes, word, excel, mail, browser) with an approval pill. Cross-platform
    (open -a, start, execFile). Parent-configurable allow-list in Child
    Mode via childModeAllowedApps.
  • Voice command router. Pre-LLM phrase router. Says "open settings" /
    "einstellungen öffnen" / "ayuda" / "aiuto" — fires the matching slash
    command in EN, DE, FR, ES, IT, PT, NL without an LLM round-trip.
    Exact / prefix / Levenshtein-≤-2 matching.
  • Cross-platform autostart. Toggleable "Start AIPointer at login" with a
    "Start in the tray (no window)" sub-toggle. app.setLoginItemSettings on
    macOS / Windows, ~/.config/autostart/aipointer.desktop on Linux.
  • Mouse-wiggle activation. Wiggle the mouse left-right-left within 700ms
    to summon AIPointer. Disable in Settings → Behaviour (on by default).
  • Left-side hotkey listening. New hotkey choices: MetaLeft, CtrlLeft,
    AltLeft, ShiftLeft, plus MetaEither / CtrlEither that listen on
    both sides simultaneously.
  • Dynamic pill. Bottom pill drifts gently toward the cursor with spring
    inertia, never snapping. Pure visual; the pill's hit-test position
    remains centered.
  • Live mode switching. Adult ↔ Child without restart. System prompt,
    tool registry, sanitize schema, voice defaults all rebuild on the fly.
  • PIN module. PBKDF2-SHA256 (200k iterations, 16-byte salt, timing-safe
    compare). Plain electron-store storage on purpose — no safeStorage so
    PIN setup during onboarding doesn't trigger a keychain prompt.
  • Per-language whitelist module. EN + DE kid-safe domain lists with
    optional path-prefix gating (bbc.co.uk → /cbeebies + /bitesize only).
  • Intent router. Pre-LLM keyword/regex matcher for Child Mode — "I want
    to play" → games URL, "show me pictures of …" → image search, etc.
    Short-circuits to a direct action without an LLM round-trip.
  • XSS test suite. 15 attack vectors against the child sanitize schema +
    12 host edge-cases against the URL validator + 6 PIN unit tests +
    10 voice-command tests. npm test runs them all (vitest + jsdom).
  • AUTHORSHIP.md (docs/AUTHORSHIP.md). Canonical provenance / DNA
    record. Referenced by README, CHANGELOG, and the hidden /origin
    slash command. Closes a long-standing dangling reference.
  • Diagnostics. Hidden /diagnostics slash command (Adult mode) prints
    version, provider configuration, permissions state, hotkey, default
    crop, and the last 5 in-memory errors. Useful for support emails.

Changed

  • Default screenshot crop 1024×768 → 512×384. ~75% drop in vision token
    cost with negligible legibility loss for cursor-centered content. Crop
    size now reads from settings (screenshotCropW / screenshotCropH).
    Region selection (drag-rectangle) is unchanged.
  • Glassmorphism restored. Main prompt box, settings, and bottom pill
    now use backdrop-blur-xl backdrop-saturate-150 with reduced bg alpha
    and an inner-ring highlight. New reducedTransparency setting and a
    CSS-var-based escape hatch for older Intel Macs.
  • Voice-first default in Child Mode. Runtime override on audioMode
    forces it ON when in Child Mode, leaving the stored adult preference
    intact for the switch back.
  • Provider key storage is now lazy. SettingsGet IPC no longer
    decrypts API keys; the renderer never sees plaintext keys at load.
    Decryption happens only at query time (router) or on an explicit
    Show key IPC call. First-run keychain prompt is fully deferred to
    the wizard's Complete step.

Fixed

  • TTS continues after mic press. useTTS now tracks a speakId
    version token; when stop() is called mid-fetch, the post-await
    branch checks the token and refuses to start a new audio element.
    Previously a pending synthesizeSpeech IPC could resolve and quietly
    restart playback after the user pressed the mic, producing parallel
    voice + recording.
  • Audio-mode loop: mic press during speaking phase. The loop's
    armNextRef is now reset when the user manually presses the mic, so
    it doesn't auto-restart speaking after the user takes control.
  • Keychain prompt on first run before any disclaimer. SettingsGet IPC
    uses a new lightweight variant (getSettingsLight) that never touches
    safeStorage. The first encryptString call happens at the moment the
    user submits their key in the onboarding wizard — with user-active
    context — not at startup.
  • macOS traffic-lights flicker. Already shipped in v1.0.0 (overlay.ts
    setWindowButtonVisibility + ready-to-show), verified intact.

Security

  • Child Mode URL validation is defense-in-depth. The intent router,
    the LLM tool declaration set, and the open_url execute-time
    validator each independently enforce the whitelist. A jailbroken LLM
    cannot open an off-whitelist URL because open_url.execute rejects it
    with a verbose error that the LLM re-verbalises as a kid-friendly
    redirect.
  • Stricter sanitize schema for Child Mode drops <a>, <details>,
    <summary>, <kbd>, <mark>, <sub>, <sup> entirely and
    restricts class values to a kid-* allow-prefix.
  • PIN hashing uses PBKDF2-SHA256 (200k iterations, 16-byte salt,
    timing-safe compare). Stored plain in electron-store config.json by
    design (no safeStorage trigger). Brute-force is offline-resistant up
    to consumer-grade.
  • Provider keys never leave main process plaintext. The IPC
    surface returns empty strings for apiKey; the renderer must
    explicitly call revealProviderKey to see one, which fires the
    keychain prompt with full user context.
  • Tools blocked in Child Mode: read_clipboard, copy_to_clipboard,
    reveal_in_finder, save_document — both removed from the
    LLM-visible declarations AND refused at execute time as a safety net.

Provenance

  • DNA / authorship file is now real: see docs/AUTHORSHIP.md.
  • v1.1.0 provenance: aipointer/v1.1.0/ms/talentsache/skales/20260516.

AIPointer v1.0.0

Choose a tag to compare

@talentsache talentsache released this 14 May 01:02

AIPointer v1.0.0

The AI cursor companion. Hold a key, ask a question, get an answer about whatever your cursor is pointing at.

og

Highlights

  • Cursor-anchored AI. Hold Right-Cmd on macOS or Right-Ctrl on Windows / Linux, a glassmorphism box opens beside your cursor with a screenshot of the surrounding region as context. Vision-capable LLM answers about what you're looking at.
  • Multi-provider. OpenRouter (recommended, single key, automatic routing), or direct Anthropic, OpenAI, Google Gemini keys. Per-provider Test button with live credit balance for OpenRouter.
  • Voice in and voice out. Microphone input with auto-stop on silence. Text-to-speech read-aloud. Optional voice-first conversation mode for hands-free follow-up loops.
  • Region screenshots. Hold the trigger key again while the box is open and drag a rectangle to ask about an exact region.
  • Six built-in tools. Fetch URL, open URL, copy, save document, reveal in Finder, read clipboard. All action tools gated behind a green-check / red-x approval.
  • Ten templates. /summary, /brief, /translate, /explain, /code, /improve, /define, /solve, /reply, /identify. Plain prose works too, intent auto-detected across languages.
  • Save the answer. A4-styled HTML, PDF, or Markdown. Print-ready.
  • Auto-updater. Quiet daily check, prompt on restart when an update is ready. Disable in Settings.
  • Local-first. No telemetry, no analytics, no crash reporting. API keys stored in your OS keychain via Electron safeStorage.

First run

  1. Download for your OS at aipointer.app.
  2. On macOS, grant Accessibility (for the global key listener) and Screen Recording (for the cursor-region screenshot) when prompted.
  3. Settings panel opens automatically. Paste an API key. Get one at openrouter.ai/keys, console.anthropic.com, platform.openai.com, or aistudio.google.com/apikey.
  4. Hold Right-Cmd (macOS) or Right-Ctrl (Windows / Linux) anywhere, ask a question, press Enter.

Privacy

Screenshots and clipboard text go only to the LLM provider you configured. Nothing else leaves your machine. API keys live in your OS keychain (macOS Keychain, Windows DPAPI, Linux libsecret) via Electron safeStorage. The auto-updater fetches a static JSON file from aipointer.app/updates/latest.json, no identifier included.

Tech

Electron 30, React 18, TypeScript 5, Tailwind 3, Framer Motion, Vite 5, uiohook-napi for the global hook, sharp for image processing, native fetch for every LLM provider.

What it isn't

Not a long-running autonomous agent. For multi-step automation, computer-use, persistent goals, and complex workflows, use Skales, same author, same design philosophy, much bigger scope.

License

MIT. See LICENSE.


Built by Mario Simic in Vienna.