Changelog
- d5b75ab: A connection with no conn_type is not a connection (@schnie)
- bb03fc8: Add --build-secret to astro local start, restart and package (@jlaneve)
- 420a174: Add --output json to astro deployment variable list, create and update (@schnie)
- 7ed43c8: Add --output json to the v2 deploy path (@jlaneve)
- 9444557: Add --wait to deployment hibernate and wake-up, and drop the logs epoch (@jlaneve)
- d666af6: Add --with-workspace to local run and shell (@jlaneve)
- ebe6ddb: Add [tool.astro] packages: OS packages for v2 projects (@jlaneve)
- 938fef4: Add
astro local check: DAG parse, import errors, integrity (@jlaneve) - 6dd6353: Add
astro local envfor local env values (@jlaneve) - 02b5d26: Add
astro packagefor v2 projects (@jlaneve) - 17b8a10: Add a deadcode gate and delete what it found (@schnie)
- 4bd69c3: Add a shared text helper to cliout, and render three families with it (@schnie)
- 3262827: Add an example project and a manifest reference (@jlaneve)
- 4c7e363: Add an opt-in release channel for the next major version (#2266) (@jlaneve)
- bc6bff8: Add astro login --signup (@jlaneve)
- 51ed9d5: Add astro organization cluster list (@jroachgolf84)
- af6bef3: Add delete to deployment pool, airflow-variable and connection (@jlaneve)
- 511d20e: Add pkg/airflowapi, a client for the Airflow REST API (@jlaneve)
- 00c8ee7: Add project discovery and per-user local state (local/38) (@jlaneve)
- 4622a1b: Add target-aware pre-flight checks to astro local check (@jlaneve)
- 2a4ac4c: Add the query commands: dags, runs, tasks, assets, connections, variables, pools (@jlaneve)
- ff9d5d5: Add the v2 documentation (@schnie)
- fcf39ce: Add v2 image deploys (@jlaneve)
- 3172674: Add, remove and annotate project env declarations through one shared writer (@schnie)
- 4a63ee7: Add, remove and mark default deployment links through one shared writer (@schnie)
- 7fc42af: Align Python fallback, target config checks and the package env checklist with Astro Desktop (@schnie)
- 94e9154: Align the astro env and astro local env help, and cut it down (@schnie)
- 61c7d9b: Ask Airflow 2 for a task log as text, so it reads as lines (@jlaneve)
- cccdd9c: Ask Airflow 3 for every DAG's stats by leaving dag_ids off (@jlaneve)
- d922428: Ask a running Airflow the four questions, on one start (@schnie)
- c9851ef: Ask deploy's and astro local's deployment questions through pkg/picker (@schnie)
- f1e48f1: Ask every numbered-table picker through one helper, pkg/picker (@schnie)
- 1e0dfe5: Ask the container engines once per listing, not once per record (@schnie)
- 8b7b700: Ask the container whether the manifest happened (@schnie)
- d5c2d7c: Ask the filesystem which directory it is (@schnie)
- 70aaaf7: Assert a failed start leaves nothing behind (@schnie)
- dcce385: Assert what Ctrl-C does to a start (@schnie)
- b2349b1: Bracket the expiry the login test asserts, instead of racing the clock (@jlaneve)
- 4003fff: Bring astro local api up to af api, and log in on Airflow 3 with --url and a username (@schnie)
- 8e8a695: Bring the deployment family's help up to the style guide (@schnie)
- e1d6a45: Bring the remaining commands' help up to the style guide (@schnie)
- c7c05f3: Build a generated image on the Python requires-python asks for (@jlaneve)
- 9f49624: Build deploy and package images from one shared manifest rule, and resolve a patch Airflow pin to its series (@schnie)
- 68b5b7b: Build every tree-wide test's trees from one table, and lint help across all of them (@schnie)
- 126eccc: Build the interpreter a check needs, instead of asking for it (@schnie)
- 62c08d9: Build the mwaa and composer package targets (@jlaneve)
- cbf1e32: CLI Release: update godownloader to v1.46.0 (#2267) (@octo-sts[bot])
- d21f18a: Carry a v1 project's connections and Variables into the manifest and the vault when it converts (@schnie)
- 24bb6bf: Carry a v1 project's dependencies, packages and Airflow version into the manifest (@schnie)
- b83297b: Carry a v1 project's env schema into the manifest when it converts (@schnie)
- 1d725ca: Change a project's Airflow version in pyproject.toml without disturbing the rest of the file (@schnie)
- afd5a48: Check a Docker-mode project's DAGs without starting Airflow (@schnie)
- 38c3af7: Check a declared value's type when the value is empty (@schnie)
- 4ac6097: Check a real Airflow: e2e tier 1, and packaging moved down to tier 0 (@schnie)
- 273ffd9: Check a value against the type it was declared with, and say so at start (@schnie)
- 9fcb568: Check every command's --output json stdout end to end, and fail bare groups as usage under json (@schnie)
- f6714ce: Check the two builds agree about the same Dockerfile (@schnie)
- d35cbf4: Clean the record whose project is gone, which is the one --clean is for (@schnie)
- 52941dc: Clear a stale record when reserving, not when claiming (@schnie)
- 09ea1d9: Collapse
astro envcreate and update into oneset(@schnie) - 465cd52: Collect the check environments, because nothing was collecting them (@schnie)
- 943bf19: Connections and variables that reach a project are available in it without declaring them (@schnie)
- 4759df8: Content-address the build context, and stop two paths disagreeing about a declared Dockerfile (@schnie)
- 0f0f0a8: Copy a Deployment with astro deployment create --clone (@schnie)
- fd2b7cb: Count every element before appending, so a conversion cannot delete one (@schnie)
- 3410647: Count the runs instead of the rows in the health report (@schnie)
- 4f6a01d: Cover the command surfaces tier 0 still listed (@schnie)
- e3cd21f: Cover the conversion that rewrites somebody's repository (@schnie)
- aa8d27e: Create local DAGs unpaused (@schnie)
- 20e30a4: Cross-PR cleanup and localrt contract completions from the merged-tree review (@jlaneve)
- 669d4a4: Decide the proxy is unnecessary and stop it under one lock (@schnie)
- 2ec2afe: Declarations say secret, and conversion stops reading the old desktop env schema (@schnie)
- b035415: Declare Airflow pools in the manifest and create them at local start (@jlaneve)
- 96b9826: Declare, annotate and undeclare project env names with astro local env (@schnie)
- 93bdc6e: Default astro login to the sign-up screen (@jlaneve)
- 8a4583e: Define the local Airflow 2 admin account once (@schnie)
- 580a083: Delete the astro dev code nothing in v2 reaches (@schnie)
- 54cff6e: Delete the constraints fetcher, which nothing can call (@schnie)
- 1b1d336: Delete the pytest suite the e2e suite replaced (@schnie)
- d7ba35b: Delete the v1 dev command tree, which nothing has mounted since v2 (@jlaneve)
- 93c8a92: Delete the v1 standalone engine, which nothing has called since v2 (@jlaneve)
- 0dc3c7f: Deleting a declared value says what's left, and --undeclare removes the declaration too (@schnie)
- 5b5ca18: Deploy a v2 project with the login for its manifest domain (@jlaneve)
- b579dee: Deploy always asks, and astro api airflow adopts deployment resolution (local/82) (@jlaneve)
- 78268a6: Deploy guard, a strict manifest parse, and the targets rename (@jlaneve)
- 37046cc: Detect changed paths with git diff instead of the PR files API (@jlaneve)
- 52477d8: Do not let the ambient environment pick the interpreter or skip TLS (@schnie)
- 96c8a91: Docker mode: run local Airflow via compose (local/43) (@jlaneve)
- 12ab4ec: Document and test how local Airflow keeps its secrets (@schnie)
- b21ae0d: Don't let
astro env ... deleteremove an object outside the scope you named (@schnie) - 610ceaa: Don't let an environment token replace your saved Astro login (@schnie)
- 4eaaad7: Draw every help page through one renderer, and lint what goes into them (@schnie)
- fb758eb: Drop podman machine management; docker mode honors container.binary (@schnie)
- 3756396: Drop the flags v1 marked deprecated (@schnie)
- 30582e8: Env schema: bindings, validator, codecs, and local resolution (local/45 part 2) (@jlaneve)
- 412182e: Exit non-zero when a 1.x deploy is refused for uncommitted changes (@schnie)
- 4650f6f: Explain a failed start on a database a newer Airflow upgraded, and point at reset (@schnie)
- 55b222d: Export the record-aware prune predicate for a consumer with its own store (@schnie)
- 18254c8: Fail an MWAA target check on a constraints conflict (@jlaneve)
- f6d8cd0: Fix a cmd/api test flake, and refuse a --scheduler-size that is not a size (@schnie)
- 2d15797: Fix astro local check on Airflow 3 by reading the parse result from a file (@jlaneve)
- 53f3534: Fix flaky dev-image tag and proxy stale-PID false positive (@jlaneve)
- 3ac19d1: Fix help text for the workspace, organization, team and user commands (@schnie)
- a946b61: Fix local Airflow start/stop lifecycle bugs in astro local v2 (@jlaneve)
- 1f01c52: Fix logout and ^C gaps in the login reuse flow (@jlaneve)
- 4859a1c: Fix output-consistency and correctness bugs in astro local (@jlaneve)
- aa95755: Fix residual review findings in astro local v2 (@jlaneve)
- 2ee7498: Fix six bugs and test gaps from the v2 polish round (@schnie)
- 62953f0: Fix the URL-removal commit: failing test and stray worktree gitlinks (@jlaneve)
- b836387: Fix the dev stub integration test after the doc field removal (@jlaneve)
- 4dc5193: Fix the object-export panics and pool export, delete UpgradeTest, and keep unit tests off the network (@schnie)
- cb2cf71: Fix the text quirks pr/450 pinned in the workspace and organization token families (@schnie)
- b81a5b2: Fix the text quirks pr/455 pinned in the workspace and organization user and team commands (@schnie)
- 2e9e44b: Fix the three deployment token quirks pr/434 pinned (@schnie)
- 413be1d: Fix three commands that could not see a v2 project, and group the root help (@jlaneve)
- 6b695a3: Free -o on audit-logs export, and give it --output text|json (@schnie)
- ba148be: Free runner disk before the nightly's Docker tier (@schnie)
- c90779b: Gate the integration tests on the event, not on a branch name (@schnie)
- 8a5a4f1: Give APC deploy and the deployment family --output json (@schnie)
- 8ca440f: Give
astro envthe cross-kind listastro local envalready has (@schnie) - cc9abaa: Give
astro local envthe nounsastro envalready uses (@schnie) - 5d25545: Give a declaration's refusal a code, so the sentence can stay a sentence (@schnie)
- 0d4a5a1: Give a manifest's refusals codes too, and tell shape from rule (@schnie)
- e3e53d6: Give a new project a DAG to start from (@schnie)
- f45122e: Give astro api ls and describe -o, tombstone 1.x's --json, and refuse a bad -o before any pre-run (@schnie)
- 26690ec: Give astro dbt deploy, delete, cleanup and remote deploy --output json (@schnie)
- e4bf484: Give astro ide project list, import and export -o json (@schnie)
- bd05dc2: Give cmd/apc a schema golden tree before its commands gain -o json (@schnie)
- 8567a46: Give context, config, telemetry and auth token -o json (@schnie)
- 4d6bb71: Give deployment create, update, delete, hibernate and wake-up -o json (@schnie)
- 5600e42: Give deployment worker-queue and logs -o json (@schnie)
- eb2fc3c: Give the APC user, team and service-account commands --output json (@schnie)
- 4c73eb9: Give the APC workspace commands --output json (@schnie)
- 5e93e94: Give the atomic write one retry policy, tested, and use it everywhere (@schnie)
- dba7f44: Give the core tree's help examples, and spell its arguments in capitals (@schnie)
- 510ef51: Give the deployment token commands --output json (@schnie)
- 2133bc4: Give the deployment user and team commands -o json (@schnie)
- 671e617: Give the rest of astro env -o json (@schnie)
- 52b410f: Give the second project of the same name a name of its own (@schnie)
- 4c137e6: Give the shared vault a key grammar both tools can address (@schnie)
- 962f42e: Give the shared vault one location, and refuse to re-key it over live values (@schnie)
- c927b1a: Give the workspace and organization token families -o json (@schnie)
- d6c68c5: Give the workspace and organization user and team commands -o json (@schnie)
- f883517: Give unusable directory names a working hostname (@jlaneve)
- 2503775: Give workspace create, update, delete and switch, organization switch and role list -o json (@schnie)
- ce2cff8: Hand out the project environment, and provision one without starting it (@schnie)
- 8e588d9: Harden docker mode in astro local v2 (@jlaneve)
- 86a01f7: Have the concurrent-renewal test's IdP issue a JWT, as the real one does (@schnie)
- 6202c03: Have the suite check what it left on the machine (@schnie)
- ad0d8fb: Hide the local aliases, and catch a command left out of a group (@jlaneve)
- 1a868d4: Hold standalone Airflow to Astronomer's build through [tool.uv] (@jlaneve)
- 0fe2c30: Hold the new cosmosboost code to v2's lint bar (@schnie)
- 3206116: Honor the project's .env in local check and in the dev defaults (@jlaneve)
- 46b95fa: Import a plain-Airflow repo with astro init --from (@jlaneve)
- e2f6944: Insert [project] and [tool.astro] at the top when adopting (@jlaneve)
- 7c6936f: Install dependencies into a running environment without restarting it (@schnie)
- 4a51fd8: Install private git packages into a generated image with the netrc secret (@jlaneve)
- 75e4d10: Keep CI/CD enforcement on a Workspace update, and ask before a delete (@schnie)
- a06aa8c: Keep Python's bytecode out of a bucket artifact (@schnie)
- 869dba5: Keep a project's local Airflow database when it moves off astro dev (@schnie)
- c11ae83: Keep new projects and check environments off SQLAlchemy 2.1 (@schnie)
- 9ced935: Keep packages added to a running project within its declared constraints (@schnie)
- 259c610: Keep per-machine files out of images built from a project's own Dockerfile (@jlaneve)
- 1fa9521: Keep pull-request e2e runs off live PyPI, and fix an order-dependent emenv test (@schnie)
- 057f908: Keep registry tokens out of debug logs and off the docker login command line (@jlaneve)
- f33a5b3: Keep remote execution on a file update, and echo a deployment file's result through the one encoder (@schnie)
- 2c798b5: Keep secret values off the docker command line when checking Dags (@schnie)
- 3d1b569: Keep the browser's Host when proxying to a project (@schnie)
- db876b7: Keep the name a v1 project calls itself (@schnie)
- 2fb22c1: Keep the suite's records out of the developer's cache (@schnie)
- 49dccfd: Land --yes, --deployment and --workspace (pr/426) and their messages (pr/428) on v2 (@schnie)
- e7826b0: Let Ctrl-C cancel a command instead of killing the process (@schnie)
- 0f0b719: Let a caller say how long a start waits (@schnie)
- afc1e02: Let a caller say what environment the DAGs are imported under (@schnie)
- 1f411f9: Let a consumer deliver environment without persisting it (@schnie)
- 6164c91: Let a consumer leave the AWS and Google auth doors out (@schnie)
- 687f61d: Let a project be opened without moving the credentials it committed (@schnie)
- ef9ade8: Let a project bring its own Dockerfile to docker mode (@schnie)
- b045ca4: Let a project declare its build secrets in pyproject.toml (@jlaneve)
- 2dda697: Let a project declare its own Dockerfile (@schnie)
- f72cb9d: Let a project describe the environment it expects, not just name it (@schnie)
- cd82386: Let a second host supply the proxy's transport, error page, and generated pages (@schnie)
- ce50c58: Let a tool that supervises Airflow itself publish a runtime record (@schnie)
- 256ff0d: Let an embedder point uv at its own binary, cache and config policy (@schnie)
- 3f31ef3: Let astro deploy take a Deployment id as its argument in a v2 project (@jlaneve)
- e62e4d8: Let astro local reset work on a project that is already stopped (@schnie)
- 4581fe7: Let consumers speak the contract without linking the runtime (@schnie)
- 2e4e01d: Let help wrap every Long's prose instead of wrapping it by hand (@schnie)
- 7055e96: Let other tools word the missing build secret advice (@schnie)
- b7b132a: Let the resolution order speak for itself in
astro local envhelp (@schnie) - d3b9da1: Lift the image builder into internal/imagebuild (@jlaneve)
- cc0e8af: Limit a global secret to specific projects with astro local env … link (@schnie)
- 9fe3745: Link deployments and a workspace from the command line with astro link (@schnie)
- 6d1b05c: Lint pkg/manifest in CI, which it never was (@schnie)
- e792083: Lint that every help example names a real command, flags and arguments (@schnie)
- 3d0d3f1: Lint the ten pkg modules nothing was linting (@schnie)
- d4cc1f0: List every [tool.astro.env] problem, and say where one pass ends (@schnie)
- 00241f5: Make -o/--output the format for astro env, as everywhere else (@schnie)
- fd385b6: Make Emit the single output path it says it is (@schnie)
- a9ac0f3: Make a version-gated APC command fail, and say what it needs (@jlaneve)
- dfda3eb: Make astro env and astro deployment follow the project's workspace and links (@jlaneve)
- 7f5a88f: Make astro init work in the repo you already have (@jlaneve)
- a3067d9: Make pkg/localrt run local Airflow, so Astro Desktop can use it (@schnie)
- d7a3cbd: Make the apache-airflow requirement a project's only Airflow version (@schnie)
- 69ecff0: Make the proxy's published record a shared contract (@schnie)
- 75b5845: Make the shared uv client safe for an embedder to drive (@schnie)
- b10ce51: Make the test suite order-independent and drop a live network call (@jlaneve)
- fe6984f: Manifest links for MWAA, Composer, and plain URLs, with an auth table (@jlaneve)
- d22b051: Map a manifest to its image fields in one place (@schnie)
- a8e4bb1: Mark global env values a project doesn't declare, and add a post-init checklist (@jlaneve)
- 607f389: Mark the pre-v2 vault reader and upgrade sweep for retirement (@schnie)
- 9b7947d: Merge docker-compose.override.yml in Docker mode, as v1 did (@jlaneve)
- c6cb176: Merge main into v2 (@schnie)
- 7c012ba: Merge main into v2 (@schnie)
- d57f1ae: Merge main into v2 (#2270) (@schnie)
- 2bfc347: Merge pull request #2272 from astronomer/sync/record-main-merge (@schnie)
- 28999a8: Merge pull request #2273 from astronomer/sync/main-into-v2-2 (@schnie)
- 4d8ea9f: Merge pull request #2274 from astronomer/sync/main-into-v2-3 (@schnie)
- ef2317a: Merge remote-tracking branch 'origin/main' into v2 (@jlaneve)
- d83f278: Merge upstream main: multiple build secrets (@jlaneve)
- d330f1c: Merge upstream main: rename software to APC (@schnie)
- 3ad363a: Move airflow_settings.yaml variable values to the vault, and remove the file when nothing is left in it (@jlaneve)
- fbe3d54: Move the APC platform and its transport under internal/platform (@jlaneve)
- 2aba7db: Move the AWS and Google auth doors into a package a consumer can decline (@schnie)
- af241a6: Move the Astro platform under internal/platform (@jlaneve)
- c0878b9: Move the build-secret checks into pkg/imagebuild (@schnie)
- d21e06e: Move the environment grammar's rules onto the type that has to obey them (@schnie)
- a44c899: Move the generated API clients under the Astro platform (@jlaneve)
- 4a8fb5e: Name a command that works when the check has no interpreter (@schnie)
- daf783a: Name an unsupplied build secret again when the Dockerfile build fails (@jlaneve)
- 5baa57f: Name the failure, not just describe it (@schnie)
- a2e8158: Name the fpath line in the completion help for Apple Silicon Macs (@schnie)
- 141581d: Name the group when an ExceptionGroup carries more than one failure (@schnie)
- 1d7b2c1: Name the manifest a refused init tells you to edit (@schnie)
- a2d24d1: Never write a config this process could not read (@schnie)
- 12fb7b9: New projects keep per-machine Astro files out of git (@schnie)
- d2d6ba5: New projects start on Airflow 3.3 (@schnie)
- fc27cd1: New projects start on the newest supported Airflow release (@schnie)
- 9058b40: One directory reached two ways is one project (@schnie)
- 6776adb: One safe write path for pyproject.toml edits (@schnie)
- 7831506: Only mention .astro/config.yaml when it names a Deployment (@schnie)
- 7b0b9e4: Order the interrupt against the wait instead of against the clock (@schnie)
- b60315f: Otto launched with astro otto can query your warehouses (@schnie)
- 244ed12: Page af listings past Airflow's page cap, and fix two init and env list hints (@jlaneve)
- a0cbe64: Parse -o in one place, with extras a command declares (@schnie)
- c7d5f1a: Pass shell-only env values through to docker-mode Airflow (@jlaneve)
- b799360: Pick a Deployment from a menu with astro use, and trim its report (@schnie)
- 3cb625b: Pick a context from a table when astro context switch names none (@schnie)
- 89fdce0: Pin a project's image to one Astro Runtime build, and refuse a Dockerfile that runs a different Airflow (@schnie)
- 286c7b3: Pin an interpreter the project's Airflow can actually run under (@schnie)
- 9586e16: Pin cmd/astro's json shapes with schema goldens, and assert meaning in its tests (@schnie)
- 59d6dde: Pin requires-python to a kept Dockerfile's Python, and write lists one per line (@jlaneve)
- 97aff24: Pin the JSON payloads, which nothing was holding (@schnie)
- ca4cd54: Pin the astro env json shapes, and assert meaning in the token tests (@schnie)
- 6504d9e: Point af connections and variables at values set as environment variables (@jlaneve)
- f375069: Point removed 1.x commands at their replacements (@schnie)
- b677b67: Point the removed deployments-as-code flags at what replaced them (@schnie)
- 3ae5a9a: Point v1 commands and init notes at what a converted project needs (@jlaneve)
- 08c0c00: Point v1 projects and bare directories at astro init (@schnie)
- 925baa8: Preview runtime fixes, carry values the project already holds, and one Variable key rule (@schnie)
- 5894538: Print a chained traceback the way Python prints it (@jlaneve)
- 9d7b308: Print an empty astro env list as [] in json, not null (@schnie)
- b0f5840: Print json results pretty on a terminal and compact when piped (@schnie)
- c995efc: Promote instances to pkg, with the two auth doors as their own modules (@schnie)
- 1cdd087: Promote scaffold out of internal/ so other tools can call it (@schnie)
- 556f300: Promote the Composer environment lookup to a shared module (@schnie)
- b7c2982: Promote the manifest env parser out of internal/, so a second consumer can read it (@schnie)
- d630151: Promote the offline DAG check to a shared module (@schnie)
- d3bc77a: Publish a hidden astro env secret value as null, not "" (@schnie)
- 682475b: Publish astro af dags stats and config in the standalone af's shapes (@schnie)
- 9202ec0: Publish astro env lists under a named key, not as a bare array (@schnie)
- 70d9e0e: Publish astro local and astro api JSON in snake_case, lists under named keys (@schnie)
- 814874d: Publish every local and af list as one object under a named key (@schnie)
- 73a897b: Publish snake_case keys from astro env's json (@schnie)
- 91740ed: Publish snake_case keys from the cloud list commands (@schnie)
- dfd998d: Publish the config file whole, so a process starting during a save cannot read it empty (@schnie)
- 55f0119: Pull Otto from a release channel, default next (@jlaneve)
- e4c3203: Put a dev build on your PATH with make install (@schnie)
- 47b99a0: Put the Airflow commands under
astro af(@jlaneve) - e859217: Re-parse each DAG file every 3s in local dev, not in a tight loop (@jlaneve)
- 34ebc9c: Reach MWAA, Composer, and token-minting Airflows (local/81) (@jlaneve)
- 9d01cad: Read --output's validated value instead of parsing it twice (@schnie)
- 67dabc7: Read ASTRO_HOME the way the rest of the CLI reads it (@schnie)
- 4a3274f: Read AstroRuntimeVersion on the deploy paths, not the deprecated field (@jlaneve)
- baf8df9: Read Environment Manager objects through the shared policy (@schnie)
- cbaa672: Read a connection URI the way Airflow does (@schnie)
- 3d03ae7: Read a connection's id from its env-var key, without a placeholder value (@schnie)
- 80c108b: Read a v1 instance's deployment id from its auth table for the link command (@jlaneve)
- 3a7be50: Read and write the local vault shared with Astro Desktop (@schnie)
- a86eae9: Read back the Airflow pin this scaffold writes (@schnie)
- 683ce81: Read no context, rather than panic, before the home config is loaded (@schnie)
- dbc9aea: Read the component off a log line Airflow actually colored (@schnie)
- 1580b96: Record main as merged into v2 (@schnie)
- 2fbbaa9: Record the git commit on v2 deploys, as v1 does (@jlaneve)
- 4c95302: Record which projects a global vault entry reaches (@schnie)
- 211ceea: Refuse a bad answer to the APC workspace switch, instead of panicking (@schnie)
- d6e0390: Refuse a connection with no conn_type, and declare a URI one as its scheme (@schnie)
- c0b913b: Refuse a declared Dockerfile docker mode cannot run (@schnie)
- 05e576c: Refuse a v2 image deploy to an older runtime before building (@jlaneve)
- 4b7e712: Refuse empty af arguments, take DAG_ID on runs list and dags stats, add --input to local api (@jlaneve)
- c53956c: Refuse every prompt under --output json, as input_required (@schnie)
- 554b438: Refuse four more deploy flags a v2 project silently drops (@jlaneve)
- 5457652: Refuse sensitive under connections, as the reference already says we do (@schnie)
- 90edffc: Refuse the deploy flags a v2 project silently drops (@jlaneve)
- 169b81b: Refuse to delete a context the config does not hold, instead of panicking (@schnie)
- df5d18a: Regenerate the cloud list goldens for pr/439's snake_case keys (@schnie)
- 4f2dff5: Register the proxy route before the health wait, as docker mode does (@schnie)
- 7434c6d: Reject tampered or planted values in the local secrets vault (@schnie)
- 249eb4b: Remove an unused cause helper (@schnie)
- 521394e: Remove an unused legacy schema reader (@schnie)
- c60a1bd: Remove an unused workspace key helper (@schnie)
- c57e2b9: Remove astro deployment connection, airflow-variable and pool (@schnie)
- 3572b25: Remove deployment --deployment-file and inspect --template (@schnie)
- 0fb9d16: Remove the committed test lock file and gitignore it (@jlaneve)
- a0cf0d8: Remove the invented dev-mapping URL (@jlaneve)
- 8a8a66f: Remove the release workflow from v2 (@jlaneve)
- fa8ab12: Remove the tag-creation workflow from v2 (@jlaneve)
- fcde9aa: Remove the v1 files a conversion has finished with (@schnie)
- 39d4ea0: Remove two exports nothing calls (@schnie)
- f4fcd34: Rename cmd/cloud to cmd/astro (@jlaneve)
- b534d06: Rename the cloud-named import aliases to astro (@jlaneve)
- 3c8b2af: Rename the v1/v2 identifiers pr/421 left for a 1.x project and the manifest path (@schnie)
- 6b2a570: Report a duplicate dag_id as a duplicate, not as an import error (@schnie)
- a3fd66e: Report a slow or duplicated DAG at a path the user can open (@schnie)
- a9221bc: Report every command's failure by the output contract, from the root (@schnie)
- 969c9fc: Report standalone omissions from the local runtime (@schnie)
- 1ad126d: Report the cause uv gave, not the line that happened to be last (@schnie)
- 33ae0cc: Report the exception that closed the traceback, and keep check's exit contract (@schnie)
- 737f997: Report the manifest before the environment, and the exception before the frames (@schnie)
- 6e52058: Report the sync retry, and retry only when a clean tree would help (@schnie)
- d120b3b: Report workspace value causes in the same words as Astro Desktop (@schnie)
- 83c35bf: Require a target for astro api airflow instead of localhost:8080 (@jlaneve)
- 61ac734: Require the space after the colon before calling a line an exception (@schnie)
- ad51dcf: Reset a docker project that has no record left (@schnie)
- 72c3935: Reset the stream flag around the cliout tests that depend on it (@schnie)
- c3b215f: Resolve deployment-link defaults at parse time (@jlaneve)
- 16de370: Resolve e2e packages as of 2026-10-05 (@github-actions[bot])
- bd31a09: Resolve which Airflow a command acts on, with astro use and astro instance list (@jlaneve)
- 25fa50f: Resolve workspace connections, and workspace values in docker mode (@schnie)
- 59fe355: Resolve workspace-source local env values from Environment Manager (@jlaneve)
- 20c2f82: Retire the ~/.astro/env global file (@schnie)
- a35534f: Retire v1/v2 as names for the project layout and the code generation (@schnie)
- 5c059cd: Return an error when the login callback cannot bind (@jlaneve)
- cc1539c: Return what a variable change did, instead of printing it (@jlaneve)
- 92e92d9: Reuse a working saved login in astro login and context switch (@jlaneve)
- 6b51c51: Revive the local proxy daemon for astro v2 (@jlaneve)
- 19bf087: Revive the skipped deployment create and update tests (@schnie)
- c691ac7: Revive the skipped hosted create-from-file tests (@schnie)
- a5d9c45: Rework pkg/proxy: routes Store, shared server core, daemon start race fix (@jlaneve)
- b92f79d: Rewrite the v2 docs as current-state documentation (@schnie)
- b3e7898: Route astro deploy by project type and add v2 dags-only deploy (@jlaneve)
- e12d9c2: Route deploy and deployment inspect json through the one encoder (@schnie)
- 91445aa: Run Airflow 2 projects in docker mode (@jlaneve)
- 9319836: Run local DAGs only when triggered, in standalone and docker mode (@jlaneve)
- e298214: Run local commands with Airflow stopped, and make stop idempotent (@jlaneve)
- 82e0605: Run push CI on v2 instead of main (@jlaneve)
- 7ad8a7e: Run the pkg/* sub-module tests on Windows too (@schnie)
- 6b9aad9: Say CLI settings are global in a pyproject.toml project, and add config list (@jlaneve)
- be854a2: Say how to wake a hibernating Deployment on deploy, and fix the 1-1 prompt (@jlaneve)
- a3fdd32: Say migrated rather than carried (@schnie)
- b33eea7: Say that the conversion left the credential in the file (@schnie)
- 4e5ed02: Say that the health report's DAG count is DAGs with runs (@schnie)
- 874cd16: Say the v1 file was migrated, not carried, in the retirement label (@schnie)
- be4604c: Say what Airflow refused, not its whole problem document (@jlaneve)
- 55894a8: Say what an interrupted start did, not how it stopped (@schnie)
- 0e77555: Say what build this is, even when it was built without the -ldflags (@schnie)
- 8755f40: Say when astro af fails because the Deployment is hibernating (@jlaneve)
- 75da344: Say when deployments see an env change, and give the deploy URL a scheme (@jlaneve)
- a09ec4c: Scaffold a shorter AGENTS.md that points to the CLI for commands (@schnie)
- b8eafa7: Share one login across every host on the same auth tenant (@jlaneve)
- dd6a9e7: Share the check that runs before deleting with --undeclare (@schnie)
- edd2037: Share the policy behind reading Environment Manager objects (@schnie)
- 8616157: Share the test helpers the three instance modules were copying (@schnie)
- d0c5748: Show the remote execution API URL in deployment inspect (@chomipi88)
- 07cf61c: Show the traceback, list a run's tasks, and give api airflow a scheme (@jlaneve)
- adea21a: Simplify the env schema: string = default, table = supplied elsewhere (@jlaneve)
- ff55d19: Skip the blank entries in v1's stock airflow_settings.yaml, as v1 did (@jlaneve)
- 0babddb: Spell unrecognized the way the linter does (@schnie)
- 413bdfb: Split scaffold's Run into Plan and Apply (@schnie)
- 9cf2a4f: Split the connection value codec out from the env-var pair (@schnie)
- 43f64cd: Stand up an e2e suite that drives the built binary (@schnie)
- 58ece11: Standalone Airflow can import from include/ again (@schnie)
- aa39000: Standalone mode: run local Airflow from the project venv (local/42) (@jlaneve)
- 9d2e2f5: Standardize the cloud list commands on -o text|json (@schnie)
- f68a91a: Start Airflow 2 in Docker and ask who answered (@schnie)
- ce2fe6c: Start a project on a new local database instead of copying its astro dev one (@schnie)
- e647af8: Start a real Airflow and check it: e2e tier 2, nightly (@schnie)
- bc4a126: Start tier 3, and fix the feature it found broken (@schnie)
- 8c93159: Stop creating v1 config as a side effect of reading it (@schnie)
- 1f65652: Stop naming Astro Desktop when the CLI talks about the vault (@schnie)
- 65bbe5e: Stop platform-agnostic code importing a platform, and check it (@jlaneve)
- 824dcc2: Stop publishing Go field names in the missing-values payload (@schnie)
- 368047a: Stop racing two timers 1ms apart in the postgres-exit test (@schnie)
- 9179082: Stop saving warehouse passwords to disk for Otto (@schnie)
- 4847590: Stop telling someone to remove an orphan without saying how (@schnie)
- d89ed1c: Stop the index page from deleting what it lists (@schnie)
- 5c7eeb6: Stop the tests sleeping, and cache what CI builds (@jlaneve)
- a174d17: Stop waiting for an Airflow that has already exited (@schnie)
- 9adfbda: Stop writing a SQLAlchemy cap into new projects (@schnie)
- ae7308b: Store connections, Airflow variables and values declared sensitive in the vault (@schnie)
- b555524: Store your Astro login in the local secrets vault (@schnie)
- 2f5ecfd: Strip Bearer from the Docker API push token, and drop pycache from DAG bundles (@jlaneve)
- 265a8cc: Take -o text|json on deployment inspect and version (@schnie)
- d37f6fb: Take port 6563 from an astro 1.x proxy, and keep the fallback port stable (@jlaneve)
- 56d17d4: Take the containers back down when a docker start fails (@schnie)
- d01ee5c: Take the login link when stdin is not a terminal (@jlaneve)
- cd3c6ce: Take the proxy down with the last route, however it goes (@schnie)
- 7644669: Tell a blocked check what would unblock it (@schnie)
- 61df4da: Tell mapped task instances apart in af runs tasks (@jlaneve)
- 6603716: The CLI reads the workspace organization Astro Desktop records, and no longer has a link workspace command (@schnie)
- e990e75: The deployment noun, and the machine's own astro local surface (local/88) (@jlaneve)
- f0ba911: The review fixes that missed the merge of pr/203, pr/205 and pr/206 (@schnie)
- d55bd7d: Tighten lint config and burn down the errors it was hiding (@jlaneve)
- 6701abe: Treat a v1 project with a tools-only pyproject as v1, and fix the v1 deploy workspace check (@jlaneve)
- 494174c: Trim the env-schema comments to what the code does (@schnie)
- 15508fe: Turn on -race in the test suite (local/57) (@jlaneve)
- 228ed8d: Unhide the bundle commands and flags (#2264) (@jeremybeard)
- 6d8f24e: Upgrading a standalone project from Airflow 2 to 3 on macOS no longer breaks the Dag processor (@schnie)
- effc87a: Use generic placeholders in fixtures and tidy comments (@schnie)
- 49b5fb9: Use the project's Astro host for Astro deployment links (@jlaneve)
- 05fe693: Values are stored encrypted by default; --plain opts out (@schnie)
- 6ea5096: Warn about a slow DAG before Airflow gives up on it, not at the same moment (@schnie)
- 52ffd94: Warn before a build when the Dockerfile mounts a secret nobody gave (@jlaneve)
- 97bab37: Watch the door, now that everything goes through it (@schnie)
- c4d7651: Wire cmd/local to the plan builder and mount the v2 tree on the real root (local/39) (@jlaneve)
- 8594040: Word the workspace causes without em dashes (@schnie)
- 090ae11: Workspace links name their host, and a missing workspace value blocks the start (@schnie)
- 90c8de4: Write Deployment wait progress and update warnings to stderr; unexport deployment's internal helpers (@schnie)
- 4c9ff9b: Write down the -o json rollout rules, and rename pkg/scaffold.V1LinkName (@schnie)
- e629463: Your linked workspace's values reach local Airflow without declaring them (@schnie)
- c16d5e7: astro af can wait for a triggered run, diagnose failures and list import errors (@schnie)
- 0e28d45: astro env connection and airflow-variable gain link (@schnie)
- 2b166de: astro init links a converted project to its saved Deployment (@schnie)
- 37628fa: astro init: greenfield scaffold and AGENTS.md (local/40) (@jlaneve)
- 8a10b05: astro init: scaffold the Airflow dependency so a fresh project starts (@jlaneve)
- 973abb6: astro local check reports missing environment values, and astro package says what the image leaves out (@schnie)
- ecff5ca: astro local env list shows the value a start will use when .env and your shell both set a name (@schnie)
- b9a4bda: astro local list: cross-machine list, record-aware route pruning, stale GC (@jlaneve)
- d10b2e2: astro local start --docker builds the same image astro deploy does (@schnie)
- 7350eea: astro local upgrade airflow moves a project to a new Airflow (@schnie)
- dc53182: astro otto detects a v2 project's running local Airflow (@jlaneve)
- 940c773: chore(ci): add deadcode tooling to catch exported orphan funcs (#2127) (@schnie)
- 0112624: manifest: load, validate, and comment-preserving edit of pyproject.toml (local/37) (@jlaneve)
- 41447e9: pkg/secrets: keyring-backed store (local/45 part 1) (@jlaneve)
- b2a26ac: pkg/uv: uv discovery, venv/lock/sync/run, typed resolution errors (local/41) (@jlaneve)
- cb70328: v2 contracts: shared types, layer rules, and the architecture doc (@jlaneve)
- 4ee5757: v2 plumbing: composition root, cmd/local tree, dev stub, --output json (local/39 part 1) (@jlaneve)