Skip to main content

thinkspace logo

thinkspace

Context-Aware Scratchpad


License: MIT Supported Platforms PyPI Supported Versions PyPI PyPI Status Downloads

  • Why: Context switching to Notion/Obsidian/Todoist kills focus.
  • What: thinkspace note "todo: fix env var issue" — later: thinkspace search "env"

✨ Features

  • 🏷️ Auto-tags every note with your project (Git repo or folder) and time buckets (YYYY, YYYY‑MM, YYYY‑MM‑DD).
  • 🔎 Search by text, tags, project, or time window. Uses SQLite with FTS5 full-text indexes when available, otherwise runs compatible LIKE queries.
  • 📦 Zero-config local store in your user data dir (e.g. ~/.local/share/thinkspace/notes.db).
  • 🎨 Rich CLI output: readable tables, panels, and helpful highlighting.
  • 🗑️ Safe deletes with per-note confirmation or an interactive picker.
  • 🧰 Portable single dependency stack (Typer + Rich + Platformdirs).

🚀 Quickstart

pip install thinkspace
# or from source
pip install .

Add a note:

thinkspace note "todo: fix env var issue"

Search later:

thinkspace search "env"

List recent notes:

thinkspace list --limit 10

Filter by project:

thinkspace search "todo" --project my-repo

Show top tags:

thinkspace tags

Export to Markdown:

thinkspace export --out notes.md

Delete a note:

thinkspace delete 42

Clean up interactively:

thinkspace delete --interactive --limit 50

🧩 Commands

  • note [TEXT] – Capture a note. Use --tag multiple times to add manual tags.
  • search [QUERY] – Full‑text search with optional filters: --project, --since, --until, --limit.
  • list – Show most recent notes.
  • tags – Show top tags (auto & manual).
  • db-path – Print the notes DB path.
  • export – Export all notes (optionally filtered) to Markdown.
  • delete [ID ...] – Remove one or more notes (prompts for confirmation unless --yes is provided, or open with --interactive to choose from a checklist).

🏗️ How it works

  • On first run, Thinkspace creates a tiny SQLite DB at your user data directory.
  • Notes are stored with fields: id, text, project, tags, created_at, path.
  • If SQLite FTS5 (the built-in full-text search extension) is available, Thinkspace builds an FTS5 virtual table so queries tokenize text and return ranked matches instantly.
  • On systems without FTS5 compiled in, Thinkspace falls back to standard SQL LIKE clauses—simple substring matching that works everywhere, though with slower lookups on large notebooks.

🧪 Testing

pip install -r requirements-dev.txt  # installs pytest & mypy
mypy src
pytest -q

🧹 Linting

pip install -r requirements-dev.txt  # installs ruff
ruff check .
ruff format .

📦 Publishing to PyPI

  1. Update version in pyproject.toml.
  2. Build:
    python -m build
    
  3. Upload:
    python -m twine upload dist/*
    

⚡ uv workflow

Prefer using uv for speed and reproducibility.

# 1) Create and sync a local env (writes uv.lock)
uv sync

# 2) Run the CLI from the project env
uv run thinkspace note "hello from uv"

# 3) Format & lint
uv run ruff check --select I --fix
uv run ruff format

# 4) Type checking
uv run mypy src

# 5) Tests
uv run pytest -q

# 6) Build & publish
uv build --no-sources
uv publish  # set UV_PUBLISH_TOKEN with a PyPI token

Dev dependencies live in [dependency-groups] and are synced by default.

Metadata

Release files for thinkspace 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for thinkspace 1.0.2
File Size Uploaded Provenance Actions
thinkspace-1.0.2.tar.gz 10.5 kB Without provenance Details for thinkspace-1.0.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for thinkspace 1.0.2
File Interpreter ABI Platform Actions
thinkspace-1.0.2-py3-none-any.whl Python 3 none any Details for thinkspace-1.0.2-py3-none-any.whl

Total release size: 21.1 kB

Release files / thinkspace-1.0.2.tar.gz

Download URL thinkspace-1.0.2.tar.gz
Size 10.5 kB
Tags Source
SHA-256 checksum
How to use checksums
729762305be42826e5112efef763d234bbbc1778c4ba33668aa8cc5f2ac1f065
BLAKE2b-256 checksum
How to use checksums
615debb8545fa7cf0046ddef30718e965b52caa4c2147728a3423da9b238ccee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.2

Release files / thinkspace-1.0.2-py3-none-any.whl

Download URL thinkspace-1.0.2-py3-none-any.whl
Size 10.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a6cdb4007ca59b4768948259ee2e4fb5f3278bd1f63b4ab364b55deb88c3b09f
BLAKE2b-256 checksum
How to use checksums
90f1d7ca4ec9c8ac437c4ad1fcf365a358a69aeed5bce347adbf4f77330121ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.2

Security for thinkspace 1.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page