InputBar 2.0.0
· 2 min read
Breaking Changes
- IPC protocol: plain-text
SHOW/SEARCH:textstill accepted (backward-compatible). New JSON envelope format introduced:{"protocol": 1, "command": "show", "args": {}}. Old scripts continue to work unchanged. - Dev mode data path: generated data now routes to
src/gen/Data/instead ofsrc/Data/. A one-time migration runs automatically on first launch. --verboseflag: new CLI flag to enable DEBUG logging in compiled mode.
Improvements
- Logging: timestamped format
[YYYY-MM-DD HH:MM:SS.mmmZ] [LEVEL] [module]. Bootstrap log at%TEMP%\InputBar\bootstrap.logactive before path resolution. Log rotation (5 MB max, 3 files kept). Levels: DEBUG / INFO / WARN / ERROR / FATAL. - Crash handler: unhandled exceptions now write a
InputBar_crash_<timestamp>.logto%TEMP%before exiting. - Atomic config writes: Settings.json, hotkeys.json, Plugins.json now written via temp+rename to prevent corruption on crash.
- Schema versioning: Settings.json and hotkeys.json carry a
schema_versionfield enabling structured migrations. - Graceful shutdown: SIGTERM / SIGINT handled. Plugins
teardown()called in reverse load order. 5-second hard timeout on shutdown. - WinKeyHook install prompt: user is asked before installing WinKeyHook. SHA-256 integrity check runs if a hash is configured in
build/project.json. - Path traversal guard:
ConfigDirectoryvalues pointing at system directories are rejected. - Thread safety:
_pipe_handleprotected by a lock. Reader thread usesthreading.Eventstop flag. - IPC
quitcommand: both plain-textQUITand JSON{"command":"quit"}trigger a graceful shutdown. - Plugin teardown contract: plugins may expose
teardown() -> None— called on shutdown. - Named constants: all magic timing/retry values named (no bare literals).
- Type annotations: all public functions in Core modules annotated.
build/project.json: single source of truth for name, version, publisher, GUID.build_app.batandCMakeLists.txtboth read from it.pyproject.toml: ruff linter configured for the project..docs/ARCHITECTURE.md: module map, startup sequence, directory layout..docs/DECISIONS.md: ADRs for all major technical choices.
Infrastructure
- Git root:
.gitmoved fromsrc/to project root (§3.1 compliance). .gitignore: root-level gitignore added.build/,releases/, publish scripts,src/gen/,CONTEXT.mdall excluded.- Dev data isolation:
src/gen/directory (gitignored) holds all dev-mode generated data.