Skip to content

Latest commit

 

History

History
107 lines (82 loc) · 4.3 KB

ROADMAP.md

File metadata and controls

107 lines (82 loc) · 4.3 KB

Roadmap

Bokashi is built in small, releasable increments. Each milestone ends with a tagged GitHub release where useful.

M0 — Repository scaffolding ✅

  • License (MIT), README, CLAUDE.md, .gitignore
  • XcodeGen project.yml
  • App target skeleton (menubar entry, no real capture yet)
  • BokashiCore local Swift package with one passing test
  • CI: GitHub Actions running xcodegen + xcodebuild + swift test

M1 — Minimum viable capture ✅

  • Menubar status item (via SwiftUI MenuBarExtra)
  • Full-screen capture via ScreenCaptureKit
  • Screen Recording permission request flow
  • One global hotkey (⌃⌥⇧3 for full screen)

M2 — Capture modes ✅

  • Window selection capture (SCShareableContent.windows)
  • Region selection via transparent overlay window
  • Per-mode hotkeys (⌃⌥⇧4 for region; window picker is menu-driven)

M3 — Annotation editor → v0.1.0 ✅

  • Editor window opens after each capture
  • Clipboard-first save flow (Done/Save…/Discard); no auto-save to disk
  • Tools: arrow, box (filled / outlined), ellipse (filled / outlined), line
  • Color and stroke-width controls
  • Undo / redo via UndoManager
  • First public release: v0.1.0 on GitHub Releases

M4 — Privacy masking (manual) → v0.2.0 ✅

  • Mosaic tool (rectangle selection, CIPixellate)
  • Mosaic stays as an editable annotation layer until export
  • v0.2.0 release on GitHub Releases (mosaic only; Settings UI, Sparkle, and signed distribution deferred — see Backlog)

M5 — Automatic sensitive-info detection (opt-in) → v0.3.0 ✅

  • Vision OCR on captured image (VNRecognizeTextRequest)
  • Email detection (regex)
  • Phone numbers and postal addresses (NSDataDetector — replaces the originally-planned per-locale regex)
  • Personal names (NLTagger .nameType with .joinNames, Japanese supported — replaces the planned heuristic / CoreML model)
  • Click-to-mask any OCR'd text region (the more general companion to auto-detect; covers anything OCR finds)
  • Auto-mask-on-capture toggle in the menubar (opt-in, persisted)
  • v0.3.0 release on GitHub Releases

Text detection has since moved to privmask's DetectionPipeline, which adds postal codes, My Number, credentials, and Japanese personal names via the on-device model (NLTagger has no Japanese NER). Since privmask 0.5.0, the NER model installed with the privmask CLI finds those names without Apple Intelligence; it is not bundled, to keep the app small. Still on the wish list: credit-card-like sequences and usernames/handles, which the previous broad AI prompt covered loosely. IP addresses are left alone on purpose, as in privmask.

Backlog

Unscheduled work, grouped by theme. Items move out of here when they get folded into a release prep PR; what actually shipped is recorded in CHANGELOG.md.

Polish / UX

  • Hotkey rebinding UI via KeyboardShortcuts
  • Configurable save destination in Settings
  • Designed (rather than placeholder) app + menubar icons
  • Mosaic block-size presets (small / medium / large)
  • Text annotation tool (typed labels / captions on top of the image, with font-size and color controls)
  • Temporarily highlight masked regions in the editor (toggle to visualize which areas are masked, for last-mile coverage check before export)

Detection

Privacy-first: every detector runs on-device; cloud LLM APIs are explicitly excluded. The LLM layer is Apple's on-device Foundation Models (macOS 26+; replaced the Ollama vision-LLM detector in 2026-07) with a Vision face detector covering avatars.

  • Reviewable detection candidates (preview boxes before applying)
  • Local CoreML detector for chat-app UI patterns (Slack / Twitter / Discord) — bundled or downloadable model packs
  • More auto-detectors: IP addresses, AWS keys, My Number (credit cards and API keys are now covered by the Apple Intelligence detector on eligible machines)
  • Multimodal Foundation Models input for avatar-precision masking — revisit when the OS-27 device matrix is clear

Distribution / CI

  • Submit to the official homebrew/cask repo (deferred until v1.0)

Open questions

  • Scrolling capture
  • GIF / video capture (may stay out of scope)