Releases: HYLi360/Operon
Releases · HYLi360/Operon
Release list
Operon 0.9.0
Highlights
- A unified per-user configuration layer.
operonoptionally reads an XDG
config file ($XDG_CONFIG_HOME/operon/config.yml, i.e.
~/.config/operon/config.yml), resolves the audit identity and the NCBI
contact through one documented chain, and keeps secrets out of that file
entirely:secret-tool→systemd-creds --user→ the macOS Keychain
(/usr/bin/security). Manage it with the newoperon configcommand group —
path,show,get,set,unset,check,init, plus
secret list/get/set/clear. - The TUI closes the self-service loop. Registry editing (
add,
add-accession,next-id), table import, taxonomy snapshot import and
reference-set compilation, coverage-profile editing, NCBI Datasets import,
and — on the Files screen —standardize,import-qcand the one-source
run-pipelineare available as preview-first, audited dialogs that call the
same core functions as the CLI and write the samechanges/
workflow_runsprovenance. - Byte-stable outputs across interpreters and backends. TSV cell quoting is
decided in Operon instead of delegated tocsv(ODR-0044), and cells a
spreadsheet would execute are escaped (ODR-0040) — in both alignment QC
backends and everywrite_tsvconsumer, with provenance hashes computed over
the escaped bytes.
New features
Configuration and secrets
operon/config.py:UserConfig/user_config()— XDG location, lazy load
(importing the module never touches the filesystem), 0600 file / 0700
directory modes, defaults back-filled, unknown keys preserved. Effective key
set:schema_version,identity.actor,ncbi.email,ui.splash.operon/secrets.py: a zero-dependency secret-backend chain with an
actionable error when no backend is available (pointing at--api-key/
NCBI_API_KEY). Secret resolution order:--api-key>NCBI_API_KEY>
stored secret; the file-backed stores are kept at 0600 in a 0700 directory,
andconfig shownever prints secret material.- Precedence is explicit and documented: CLI > environment > project
configuration > user configuration > defaults. Existing environment
variables keep working and take precedence over the file; nothing was
deprecated. resolve_actor()now backs every audit writer (CLI, TUI, import wizard,
adapters);resolve_ncbi_email()andresolve_splash()follow the same
shape with their own--effectivesource reporting.tests/unit/test_env_audit.pyguards the environment reads inside the
package (operon/**/*.py), so ad-hocos.environlookups cannot creep back
in.
TUI
- Entities:
add,add-accessionandnext-iddialogs. - Home: table-import dialog (template + preview-gated import) and the NCBI
Datasets import dialog (mandatory dry-run preflight; Cancel stops a
resume-able run). - Coverage: taxonomy snapshot import and reference-set compilation
(Import taxonomy…, Compile reference set…). - Config: the
taxonomy_coverageprofile editor joins the QC and
sequence-classification editors, with the same version bump, snapshot and
rollback machinery. - Files:
standardize(link-kind preview),import-qc(write-free plan
preview throughplan_qc_import), andrun-pipeline(entity prefill,
profile selection, forced dry-run preflight, and an explicit opt-in for
curated decisions in place of--yes). - Parity: the M4 scope is fully implemented; remaining gaps are registered
plannedwith milestones orcli-onlywith reasons, enforced by
tests/unit/test_tui_cli_parity.py.
Internals
operon/pipeline.py: the four-stage ingest → standardize → QC → evaluate
runner shared by the CLI and the TUI (CLI output stays byte-identical).operon/qc/imports.py: the shared import-qc core, withplan_qc_importas
its write-free preview.- Helper splits across
taxonomy,tools,entity_view,sequence_tools,
the NCBI adapter andenvironment; broad exception handlers narrowed or
documented; the wizard actor and every credential now resolve through the
user layer.
Fixed defects
See defects.yml.
Compatibility
- No storage changes: database schema stays 2.11, metadata schema stays
1.4; existing projects open unchanged. - Python 3.10–3.15, verified in CI on Linux and macOS for every version,
plus a strict Sphinx build of both documentation trees. - No new runtime dependencies. The configuration and secret layers use the
standard library and system tools only. - Environment variables keep working and keep precedence over the user
configuration file; no variable was deprecated.
Full Changelog: v0.8.5...v0.9.0
v0.8.5
Fixed:
- ODR-0029: Run detail tests treat an empty worker set as completed screen loading
- ODR-0030: Old editor rows falsely satisfy readiness during a deferred form replacement
- ODR-0031: Detail panes apply a worker result that no longer matches the selection
- ODR-0032: A dropped initial panel render leaves the app on the splash screen
- ODR-0033: Environment-capture tests assert a raw path that capture redacts under $HOME
- ODR-0034: The classification editor's nesting limit is enforced by branches no caller can reach
- ODR-0035: The classification editor raises while a mode change replaces its body
- ODR-0036: A composition that lands while a nested condition row is being removed reads a row with no inputs
- ODR-0037: A shutdown test reads the grandchild pid file before the shell has written the pid
- ODR-0038: A Select's own on_mount runs unguarded next to the guarded override, so its mount failure reaches the app
- ODR-0039: An exhausted Select mount retry leaves options_ready False for good, and the form gate then waits forever
And switch license from AGPL to BSD-2-clause.
Full Changelog: v0.8.4...v0.8.5
v0.8.4 (replace v0.8.3)
0.8.3 was been released after a failed CI. We have been hardened the release workflow to avoid release without CI completed or failed.
Fixed in 0.8.4:
ODR-0027: Two config-screen tests read the UI a message-loop turn too early (introduced in 0.8.3)
Full Changelog: v0.8.3...v0.8.4
v0.8.3
Full Changelog: v0.8.2...v0.8.3
v0.8.2
Full Changelog: v0.8.0...v0.8.2
v0.8.0
Full Changelog: v0.7.2...v0.8.0
v0.7.2
Major Changes:
- Since there is no longer need for closed-source or Windows compatibility, we have removed
cx_Freezefrom the codebase.
Fixed Bugs:
5a7e800:Several popup interactive problems have been fixed, such as doubledismisscan result intoScreenStackError, andOKbutton of ErrorDialog has noon_button_pressedprocessor, make that can only closed byEscbutton.
Full Changelog: v0.7.1...v0.7.2
v0.7.0
Full Changelog: v0.6.2...v0.7.0
v0.6.2
Full Changelog: v0.2.2...v0.6.2