Skip to content

Roadmap #15

Description

@djdarcy

Roadmap

Evergreen tracking issue for notepad-cleanup development priorities. Updated as work lands; never closed.

Current focus: v0.3.0 — generalizing from "a Notepad tool" to "an editor-agnostic extraction pipeline", starting with Sublime Text.

Phase 1: Foundation — shipped

  • Two-phase extraction (silent WM_GETTEXT, UIA tab switching for unloaded tabs)
  • Manifest + per-window output structure
  • AI organization via Claude Code CLI (organize)
  • Cross-session deduplication with exact and fuzzy matching (Pre-organize deduplication: diff new notes against previous sessions and link duplicates #9)
  • Filesystem linking — hardlink / symlink / DazzleLink descriptors
  • Link-aware organize; links separate / links join
  • Configuration system: folder registry, ... notation, MRU, search dirs
  • Diff integration (Beyond Compare, WinMerge, VS Code)
  • PyPI publishing, traffic tracking, badges
  • Fix compare missing nc-* session folders (compare misses nc-* format session folders (pattern/format mismatch) #14)
  • Fix organize silently overwriting files with duplicate names (v0.2.5)
  • First automated regression suite + human test checklists (v0.2.5)

Phase 2: Editor-agnostic sources — v0.3.0, in progress

The pipeline downstream of extraction (dedup, compare, organize, links) binds to manifest.json and the output directory, never to an editor. Only ~7% of the codebase is Notepad-specific, so sources become pluggable.

  • sources/base.pySource / Container / Tab contracts, capability flags
  • sources/notepad.py — adapter over existing discovery/extractor
  • sources/sublime.py — session-file parser with buffer taxonomy
  • sources/__init__.py — lazy mode registry
  • compare_to_origin() — source-agnostic buffer-vs-file comparison
  • saver.py — generalize hwnd to container_id; add source to manifest
  • --mode {notepad,sublime} dispatch in cli.py
  • default_mode in the config system
  • pytest suite for sources against synthetic fixtures
  • Human test checklist for the mode switch

Phase 3: Backends — v0.3.0

Extends the existing --backend option beyond claude / prompt-only. Sensitive content routes to a self-hosted model so credentials never leave the network.

  • backends/base.pyBackend.plan() contract, data_stays_on_prem flag (Support additional AI CLI backends (OpenAI Codex CLI, Gemini CLI, etc.) #6)
  • backends/claude_cli.py — move existing invocation behind the contract
  • backends/openai_compat.py — LM Studio / Ollama (one adapter, base-URL difference)
  • Excerpting + batching + checkpoint/resume for long runs
  • backends test preflight that measures throughput, not just reachability
  • Routing policy: --backend auto sends flagged content on-prem, clean content to cloud
  • Two-layer secret detection (path/content heuristics + model judgement)

Phase 4: Semantic triage — v0.3.x

  • Local embeddings for topic clustering (cheap first pass before any LLM call)
  • Cluster naming via a small number of LLM calls rather than per-file classification
  • Confidence-scored authorship candidates via similarity to known directories
  • Catalogue output: class, size, era, type, duplication, secret flags

Phase 5: Session drain — v0.3.x

  • drain --dry-run — report only, no write path
  • Preflight gates: editor closed, re-extraction complete, every buffer accounted for, backup verified
  • Write path: archive the existing session, then write a fresh one; never mutate in place
  • Reopen verification + one-step restore

Phase 6: Extraction improvements

Phase 7: Reach

Related

Design documents live in the maintainers' private notes and are referenced by filename in commit messages under a Design: section.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    evergreenNever close -- living document updated over timepinnedPermanently open issueroadmapProject roadmap

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions