Skip to content

Feature status ​

This page distinguishes end-to-end user behavior from modules or UI that exist only as scaffolding. It describes the current 1.x repository line.

Shipped end to end ​

AreaCurrent behavior
Vault creationFresh directory setup with password or keychain mode
Vault reopenLast/recent vaults, password unlock, keychain auto-open, BIP39 recovery
Prompt storageYAML-frontmatter Markdown under prompts/
EditingDrafts, save, delete, project, tags, favorite, body copy
Keyword searchSparse local search over title, tags, project, and body
Semantic searchExplicit MiniLM download, local 384-d embedding, ANN and RRF
SimilarityMinHash More like this
OrganizationProjects, tags, favorites, recent, unfiled, smart folders
Templates{{name}} and {{name|default}} on Palette copy
HistoryBody snapshots, retention, list, and restore
Prompt locksAES-GCM envelope plus per-prompt OS keychain key
Session lockManual and idle policies
BackupsFull versioned .onqbak, optional archive seal, destructive restore
Markdown transferDirectory import and full Markdown export
AuditLocal JSONL log with Settings toggle and viewer
Desktop shellTray hide/show, single instance, global shortcut
UpdatesStable-feed check on launch and manual version check
LocalizationEnglish, Thai, Spanish, Chinese, French, German
LegalBundled licenses, credits, acknowledgments, and runtime notices

Partial or scaffolded ​

Live filesystem synchronization ​

Core modules exist for:

  • recursive filesystem events;
  • per-prompt sync sidecars;
  • three-way merge;
  • reconciliation;
  • conflict parsing and resolution UI.

The desktop shell does not start the vault watcher or route reconcile outcomes into the conflict UI. External edits are not a supported live-update contract. Quit onQ before bulk external changes.

JSON and ChatGPT imports ​

Core importers support JSON arrays and conversations.json. The Settings picker requests a directory and the shipped flow therefore exposes Markdown directory import. ZIP extraction is not implemented.

Plugin runtime ​

The install, signature, license, enable/disable, registry, native-library load, and onq_plugin_init paths exist.

Current host runtime limits:

  • register_command records Palette commands;
  • registered native handler pointers are not invoked;
  • database, vault, keychain, embedding, and config callbacks return -1;
  • logging callback is a no-op;
  • capability-only commands return a status string rather than plugin work.

Treat plugins as an ABI and packaging preview, not a complete extension API.

Alternate plugin embedders ​

Enabled plugins with embedding capabilities appear in Settings. Selecting one changes only the in-process preference string. It does not replace the built-in MiniLM object or persist a working model choice.

Beta updates ​

The beta toggle is persisted, but all checks still use the stable updater endpoints. No beta feed routing exists.

Update installation ​

The updater checks and reports availability. The current UI does not download, install, or restart into an update.

Markdown preview ​

The editor offers a Preview tab, but it displays body lines as text rather than rendering full Markdown syntax.

Security and portability limits ​

Plaintext source by design ​

Unlocked prompt bodies are Markdown plaintext. Vault session lock protects the open index session, not those source files.

Prompt-lock history ​

Locking clears the current Markdown body, but prior body snapshots can remain under .onq/history/.

Prompt-lock key portability ​

Full backups include lock envelopes but not their OS keychain keys. The vault recovery phrase does not recover per-prompt keys.

Unsealed backups ​

An unsealed .onqbak contains plaintext unlocked prompts and history inside a compressed container.

Deliberate product boundaries ​

  • No hosted account.
  • No telemetry.
  • No cloud prompt service.
  • No subscription system.
  • No built-in sync provider.
  • No proprietary plugin license.
  • No automatic download of embedding models without user action.
  • No trash or delete undo.

Before depending on a boundary ​

Use shipped paths for production data. For partial paths, inspect the linked source and tests, then plan for API and behavior changes. Open an issue or contribute the missing integration instead of assuming scaffolded code is a public contract.

Architectural decisions live under docs/adr/.

Released under the GPL-3.0-only License.