Skip to content
fishballappPublic

About

A floating todo list pad. Capture text from any app with a double ⇧ (shift) tap.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Repository files navigation

JogPad

Select text in any app, tap Shift twice, and it lands in a pad that stays out of your way. Tick a few later, copy them as a numbered list, paste the lot into a prompt.

Shift Shift. A giant Shift keycap beside the JogPad pad, with the line: select text in any app, tap Shift twice, it lands in a pad that stays out of your way.

jogpad.fishball.app has the download, the shortcuts, the install steps, and the pad itself running in the page so you can try the gesture before installing anything. Everything below is for people who want to build it.

macOS only. Free, MIT, no account, no sync, no telemetry. Your notes are one markdown file under ~/Library/Application Support/com.ycmjason.jogpad/.

Running it from source

Needs Node 26 or later, pnpm, and a Rust toolchain new enough for Tauri 2 (1.85+).

pnpm install
pnpm -F @jogpad/desktop dev

macOS asks for Accessibility access the first time you double-tap Shift. Without it the app still works as a scratchpad, it just cannot read other apps' selections.

pnpm -F @jogpad/desktop web runs the same UI in a browser tab on an in-memory host, for front-end work that does not need a Rust build.

Layout

packages/ui              the pad: React UI, the notes model, and the gesture rule
apps/desktop/src         desktop host: Tauri bindings for files, window, permissions, updates
apps/desktop/src-tauri   Rust: file writes, event tap, selection reader, NSPanel, updater
apps/site                the Astro site, which runs the same pad in the browser

All notes logic lives once, in packages/ui. A host only implements side effects (packages/ui/src/host.ts); the desktop and the site each provide one.

pnpm test                            # the markdown round trip and every mutation
pnpm -F @jogpad/desktop rust:test    # the double-tap detector and the file paths (Rust)

Releasing

A release is built by the workflow, run by a version tag (v<version>) on a commit of main. It refuses a tag with no ## <version> section in CHANGELOG.md or one that differs from apps/desktop/package.json, builds a signed and notarised universal DMG on a macOS runner, and attaches it to a draft release. Nothing goes public until the draft is published.

Every push to main also publishes a dev build on its own, served to the Dev update channel in Settings. Stable, Beta and Dev are a toggle there, not separate installs.

Contributing

This repository is an exported copy of a private monorepo, so a pull request merged here would be lost on the next export. Open an issue and describe the change, with a diff if you have one; it will be applied at the source and credited.

Licence

MIT. See LICENSE.

JogPad started as a clone of Copper by shadcn, built from its public description. No code from Copper was used, and it is not affiliated with or endorsed by shadcn.

About

A floating todo list pad. Capture text from any app with a double ⇧ (shift) tap.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages