diff --git a/CHANGELOG.md b/CHANGELOG.md index 63cea2c..5f4cc7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.2.0] - 2026-03-17 + +### Added +- Dashboard URL (`design.dynotx.com/dashboard/datasets/`) printed after every command that sets an active dataset +- API key cached to `.phi/state.json` on first use — no need to re-export `DYNO_API_KEY` in subsequent sessions +- `phi filter` dataset ready panel now shows a prominent **Next step: `phi filter`** above detailed job options + +### Changed +- Python compatibility widened from 3.11-only to **3.9–3.13** +- Filter jobs now named `job-filter_pipeline-` (was `job-design_pipeline-`) +- `phi login` panel no longer displays `endpoint`, `user_id`, or `org_id` +- `DYNO_API_KEY` missing error message now points to `https://design.dynotx.com/dashboard/settings` +- Removed generative model commands (`phi design`, `phi boltzgen`) from user-facing documentation +- Removed Biomodals section from README +- Fixed repository URLs (`dyno-tx` → `dynotx`) + ## [0.1.0] - 2024-03-01 ### Added diff --git a/CLI-REFERENCE.md b/CLI-REFERENCE.md index 03dcee0..43a320f 100644 --- a/CLI-REFERENCE.md +++ b/CLI-REFERENCE.md @@ -5,7 +5,7 @@ Submit and monitor computational biology jobs, manage datasets, run structure prediction and inverse-folding pipelines, and download results — all from your terminal. -**Version:** 0.1.0 · **Package:** `dyno-phi` · **Requires:** Python ≥ 3.11 +**Version:** 0.2.0 · **Package:** `dyno-phi` · **Requires:** Python ≥ 3.9 --- diff --git a/README.md b/README.md index c8ae9d6..e7f27f0 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Results and scores are viewable in the web dashboard at pip install dyno-phi ``` -Requires Python ≥ 3.11. +Requires Python ≥ 3.9. --- diff --git a/pyproject.toml b/pyproject.toml index 1f5411c..e8fc5dd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "dyno-phi" dynamic = ["version"] description = "Phi CLI and biomodals for the dyno protein design platform" readme = "README.md" -requires-python = ">=3.11" +requires-python = ">=3.9" license = { text = "MIT" } authors = [ { name = "Dyno Therapeutics" }, @@ -14,8 +14,11 @@ classifiers = [ "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Topic :: Scientific/Engineering :: Bio-Informatics", ] @@ -50,8 +53,8 @@ phi = "phi.cli:main" [project.urls] Homepage = "https://dynotx.com" -Repository = "https://github.com/dyno-tx/phi-cli" -Issues = "https://github.com/dyno-tx/phi-cli/issues" +Repository = "https://github.com/dynotx/phi-cli" +Issues = "https://github.com/dynotx/phi-cli/issues" [build-system] requires = ["hatchling"] @@ -65,7 +68,7 @@ packages = ["src/phi", "biomodals"] # ── Ruff ────────────────────────────────────────────────────────────────────── [tool.ruff] -target-version = "py311" +target-version = "py39" line-length = 100 [tool.ruff.lint] @@ -93,7 +96,7 @@ ignore = [ # ── MyPy ────────────────────────────────────────────────────────────────────── [tool.mypy] -python_version = "3.11" +python_version = "3.9" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true diff --git a/src/phi/_version.py b/src/phi/_version.py index 485f44a..d3ec452 100644 --- a/src/phi/_version.py +++ b/src/phi/_version.py @@ -1 +1 @@ -__version__ = "0.1.1" +__version__ = "0.2.0" diff --git a/src/phi/api.py b/src/phi/api.py index b7a61f2..63e0de4 100644 --- a/src/phi/api.py +++ b/src/phi/api.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import json import os import time diff --git a/src/phi/commands/filter.py b/src/phi/commands/filter.py index af5030a..d54e384 100644 --- a/src/phi/commands/filter.py +++ b/src/phi/commands/filter.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import argparse import contextlib diff --git a/src/phi/commands/jobs.py b/src/phi/commands/jobs.py index dedd0e3..947d5ea 100644 --- a/src/phi/commands/jobs.py +++ b/src/phi/commands/jobs.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import argparse import json from pathlib import Path diff --git a/src/phi/commands/research.py b/src/phi/commands/research.py index 09947fb..c356c0f 100644 --- a/src/phi/commands/research.py +++ b/src/phi/commands/research.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import argparse import json from pathlib import Path diff --git a/src/phi/commands/structure.py b/src/phi/commands/structure.py index 6fcc4e7..aeca492 100644 --- a/src/phi/commands/structure.py +++ b/src/phi/commands/structure.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import argparse from pathlib import Path diff --git a/src/phi/config.py b/src/phi/config.py index d6e6c2e..360d246 100644 --- a/src/phi/config.py +++ b/src/phi/config.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import argparse import json import os diff --git a/src/phi/display.py b/src/phi/display.py index 0e4c990..bc0b2bd 100644 --- a/src/phi/display.py +++ b/src/phi/display.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import csv import io import sys diff --git a/src/phi/download.py b/src/phi/download.py index d805afb..d11e329 100644 --- a/src/phi/download.py +++ b/src/phi/download.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import argparse import json import urllib.request diff --git a/src/phi/polling.py b/src/phi/polling.py index a09a598..411b965 100644 --- a/src/phi/polling.py +++ b/src/phi/polling.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import time from collections.abc import Callable diff --git a/src/phi/research.py b/src/phi/research.py index 774a018..b30167b 100644 --- a/src/phi/research.py +++ b/src/phi/research.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import json import urllib.parse import urllib.request