Skip to content

Releases: AutoIDM/pdt

v0.1.12

Choose a tag to compare

@github-actions github-actions released this 20 Oct 19:01
7b1fe66

Summary

  • pdt run APP --deployed --follow starts a run and prints its log until the run ends.
  • pdt logs APP --list lists each run log, and pdt storage APP ls shows the number of files and the size of each folder.
  • --open on pdt logs, pdt runs, and pdt storage opens the folder, the log file, or Task Scheduler on Windows, and the console page on AWS, Azure, and Google Cloud, signed in to the right account or tenant.
  • Each Windows Task Scheduler run writes a success or failure event to the Windows Application log.
  • Alerts can go to Microsoft Teams, and console alerts print as one [alert] line.
  • On Azure, following the first run after a deploy no longer prints a 404 warning.
  • Google Cloud jobs no longer log a 403 warning for each storage call, and --follow prints Google Cloud lines in time order.
  • Yes/no questions ask again until the answer is y or n, and the verify workflow builds again.

It includes #208, #209, #210, #227, #229, #237, #238, #257, #259, #260 and #261.

Features

  • feat: add --open, logs --list, run --follow, and storage sizes (#257)
  • feat(alerts): print console alerts as one [alert] sentence (#227)
  • feat(alerts): name webhook entries by webhook ID, not a typed channel (#210)
  • feat(alerts): add a Microsoft Teams alerts type (#209)
  • feat(cli): suggest pdt logs --follow after pdt run --deployed (#237)

Fixes

  • fix(gcloud): stop the 403 storage warnings and order live log lines (#260)
  • fix(deploy): build an app that installs a local wheel (#261)
  • fix(alerts): start setup from pdt.yml, ask before the test, add console (#208)
  • fix(logs): follow a new Azure run's live log without a 404 (#229), by @visch
  • fix: ask yes/no questions again until the answer is y or n (#238)

Tests

  • test(cli): make the pdt health order test independent of thread timing (#259)

CI and release

  • chore(release): 0.1.12 (#262)

Full changelog: v0.1.11...v0.1.12

v0.1.11

Choose a tag to compare

@github-actions github-actions released this 20 Oct 14:25
9c63625

Summary

  • Windows has a per-user installer, pdt-windows-x64.msi, on the release page. It needs no administrator rights, sets up Python and pdt during the install with a progress bar, adds pdt to the PATH, and is signed by AutoIDM.
  • A deploy skips the image build when nothing in the app folder changed.
  • pdt destroy --all removes every app, and --all commands skip the apps you decline.
  • pdt health checks the apps in parallel, and the Azure deploy plan reads its state in parallel.
  • New powershell-hello-world example and a quick start that uses only commands.
  • On Windows Task Scheduler, pdt reads config files that start with a BOM, follows run logs live, and checks schedules before the deploy.
  • After a failed command, pdt prints a help line that points to autoidm.com/discord.
  • The package, winget, and README links point to AutoIDM.

Includes #92, #200, #225, #230, #239, #241, #245, #247, #248, #251 and #253.

Features

  • feat(release): build a per-user Windows MSI with WiX from source (#248)
  • feat: print a pdt Discord help line after a failed command (#245)
  • feat(cli): add pdt destroy --all and skip declined apps in --all (#200)
  • feat(examples): add powershell-hello-world and a commands-only quick start (#241), by @visch

Fixes

  • fix(windows): reread the log when the task ends during the status check (#254)
  • fix(windows): drop the PATH explanation from the plan uv line (#253)
  • fix: point the pdt help line at autoidm.com/discord (#251)
  • fix(windows): read BOM config, follow logs live, validate schedules (#247)

Performance

  • perf(deploy): skip the image build when the build context is unchanged (#239)
  • perf(azure): read the deploy plan state in parallel over ARM (#225)
  • perf(deploy): check the apps of pdt health in parallel (#230)

CI and release

  • chore(release): 0.1.11 (#255)
  • build: point package, winget, and README links at AutoIDM (#92)

Full changelog: v0.1.10...v0.1.11

v0.1.10

Choose a tag to compare

@github-actions github-actions released this 16 Oct 14:02
dbbb67e

Summary

  • pdt deploy asks how often an app should run when it has no schedule, and saves the answer in the app's config.yml (creating the file when it is missing), instead of stopping with an error.
  • After every deploy at a terminal, pdt asks whether to start a run, on every provider.
  • A redeploy with no change is much faster: on Azure about 25 s instead of 78 s, and on AWS about 13 s instead of 25 s, because pdt skips job updates and permission checks that already match.
  • Code and config changes rebuild the image in seconds, because the app's dependencies install before the app is copied in.
  • Tab completion for pdt is about three times faster.
  • New intune-export example: a weekly Intune export through IntuneManagement v4, and PowerShell apps now get their config: section as PDT_CONFIG_JSON.
  • Google Cloud and Azure no longer list and prune old secret versions on a deploy that did not change a secret.
  • Release notes now group merged PRs by type under a written summary.

Bumps the version to 0.1.10 in the same four files as the 0.1.9 release (#204): pyproject.toml, uv.lock, the run.py example in README.md, and the usage line in scripts/render_winget_manifests.py. It includes #174, #189, #199, #211, #212, #213, #214, #215, #216 and #221.

🤖 Generated with Claude Code

Features

  • feat(cli): make pdt new APP create a hello-world app (#217)
  • feat(examples): add a weekly Intune export through IntuneManagement v4 (#189)
  • feat(deploy): ask for a schedule and save it when the app has none (#221), by @visch
  • feat(deploy): always offer to start a run after an interactive deploy (#212)

Fixes

  • fix(aws): set up an SSO profile and sign in without the AWS CLI (#188)
  • fix: clean up old secret versions only after a secret write (#211)

Performance

  • perf(deploy): keep list prices and exchange rates for 72 hours (#233)
  • perf(azure): make cheaper role checks and skip repeated az calls (#216)
  • perf(azure): skip the job update when the Container Apps job matches (#213)
  • perf(aws): reuse a passed permission check for 24 hours (#215)
  • perf(deploy): install app dependencies before copying the app (#214)
  • perf(cli): skip the command imports during tab completion (#199)

CI and release

  • chore(release): 0.1.10 (#226), by @visch
  • ci(release): group release notes by type under a written summary (#174)

Full changelog: v0.1.9...v0.1.10

v0.1.9

Choose a tag to compare

@github-actions github-actions released this 14 Oct 13:52
cbe2b72

What's Changed

  • fix(logs): print one heading and no wait for an ended run with --follow by @autoidm-jon in #181
  • feat(logs): stream running runs live on Google Cloud and AWS by @autoidm-jon in #193
  • feat(lifecycle): print lifecycle events for runs, deploys and pauses by @autoidm-jon in #194
  • feat(alerts): send alerts to Slack and add pdt alerts setup and test by @autoidm-jon in #197
  • fix(aws): install awscrt for aws login profiles where a wheel exists by @autoidm-jon in #202
  • chore(release): 0.1.9 by @autoidm-jon in #204

Full Changelog: v0.1.8...v0.1.9

v0.1.8

Choose a tag to compare

@github-actions github-actions released this 13 Oct 16:11
be4c86f

What's Changed

  • fix(aws): retry throttled AWS calls in standard mode by @autoidm-jon in #175
  • feat(deploy): Use docker if it's available and if not, build on the cloud. Removes auto-install of docker. Adds a config setting docker-build allowing auto, local, cloud options. @autoidm-jon in #185
  • chore(release): 0.1.8 by @autoidm-jon in #191

Full Changelog: v0.1.7...v0.1.8

v0.1.7

Choose a tag to compare

@github-actions github-actions released this 12 Oct 18:48
6fdb398

Summary

pdt 0.1.7 builds every cloud image with Docker on your computer, and it now gets Docker ready for you.

  • Docker setup. A cloud deploy starts an installed Docker that is not running. When no Docker engine is installed, pdt lists the steps, asks once (--yes skips the question), and installs one: Colima on macOS, Rancher Desktop on Windows x64, or Docker Engine on Linux.
  • Local image builds (breaking). AWS, Azure, and Google Cloud now build the image with local Docker and forward your SSH agent into the build, so an app can install a private git dependency. A cloud deploy now needs Docker on the deploying computer.
  • First run after a deploy. When an app has no successful run, pdt deploy offers to start one and show its log. --run starts it with no question.
  • Logs. pdt logs --follow prints lines in the order the job wrote them on every provider, ends soon after the run ends, and reads Azure jobs from their live log stream. Google Cloud logs are no longer cut at 5000 lines.
  • Dashboard and run control. pdt gui opens a local dashboard. pdt pause, pdt unpause, and pdt run APP --deployed are new.
  • Clearer output. pdt says what it found and why before it acts, prints values you can copy in bold, and prints only JSON on stdout with --json.
  • PowerShell apps. pdt run installs the modules an app needs before a local run.

Breaking changes

  • feat(deploy)!: build every provider's image with local Docker (#66)

Features

  • feat(deploy): install and start Docker for the user when it is missing (#162)
  • feat(deploy): offer to start the first run and follow its log (#166)
  • feat(gui): add pdt gui, pause and unpause, and pdt run --deployed (#84)
  • feat(cli): say what pdt found and why before it acts (#151)
  • feat(console): bold every value pdt prints (#161)
  • feat(deploy): forward the SSH agent into local docker builds (#76)

Fixes

  • fix(logs): follow a running job from its live stream and print lines in time order (#167)
  • fix(run): install the PowerShell modules an app needs before a local run (#155)
  • fix(examples): install the pdt-cli apps extra in the starter and verify apps (#170)
  • fix(console): print names and ids plain bold (#165)
  • fix(cli): print only JSON on stdout for every --json path (#154)
  • fix(completion): never offer file names where pdt expects an app (#150)
  • fix(storage): release the state lock when a run fails (#64)
  • fix(aws): run jobs in a pdt security group, not the VPC default group (#96)
  • fix(console): name a shared-symbol currency only on the cost total line (#145)

Examples

  • Add azure-license-waste PowerShell example (#160), by @visch

Documentation

  • docs: say that a deploy starts or installs Docker (#173)
  • docs: match the docs and hints to the current commands (#159)
  • docs(agents): a run.py pin does not keep a job on an old pdt (#147)

Tests

  • test(completion): check that PowerShell Tab completion writes no error (#172)
  • test(completion): check app-name completion in bash and zsh (#157)

Refactoring

  • refactor(config): write enabled: through save_app_key (#158)

CI and release

  • ci(verify): run on main and by hand, and deploy the commit's own pdt (#141)
  • ci(verify): add a script that writes the verify:aws role policy (#100)
  • ci(release): generate release notes from merged PR titles (#142)
  • chore(release): 0.1.7 (#156)

Full changelog: v0.1.6...v0.1.7

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 08 Oct 20:36
b7609c8

0.1.5 was tagged but never published to PyPI. This release contains everything since 0.1.4.

Upgrade notes

  • A missing env var now stops a run before the app starts. pdt treats each env var that an app reads as required, as if config.yml listed it under env: required:. For a PowerShell app, that is each $env:NAME read. For a Python app, it is each os.environ["NAME"] read; os.environ.get("NAME") and os.getenv("NAME") count as optional. A name that config.yml lists keeps its listing. pdt run, pdt validate, pdt deploy, pdt secrets, and the deployed job all check the list, and the error names the variable, the file and line that reads it, and the fix. pdt deploy also sends these variables to the job. (#139)
  • The first deploy of a project with no region asks for one. pdt suggests a region from this computer's time zone, then from the provider CLI's settings, then a fixed default, and saves your answer to pdt.yml. --yes takes the suggestion. A run with no terminal and no --yes stops and prints the line to add. (#139)
  • A deployed job runs the pdt-cli version that its run.py pins. Apps pinned to 0.1.4 get the job-side fixes below only after you change the pin to pdt-cli==0.1.6 and deploy again.

New

  • Cost estimates show the currency of this computer's regional setting. pdt uses the cloud's own price in that currency, then the cloud's exchange rate, then the ECB daily rate, and otherwise USD with a note. (#139)
  • pdt logs --follow prints a run's lines as they arrive. pdt logs says when a run is still running, or when the cloud log store may not show the last lines yet (up to 5 minutes on AWS, Azure, and Google Cloud). (#139)
  • A mistyped command, option, or app name gets a "Did you mean" suggestion. (#139)
  • pdt prints a line before each slow step, including the first install of the AWS, Azure, or Google Cloud CLI. (#139)
  • pdt completion prints the line that turns on completion in the current shell, for PowerShell, bash, zsh, and fish. On Windows, it offers to set the PowerShell execution policy so the profile loads. (#139, fixes #133)

Fixes

  • A local store folder with a space in its name no longer gets a literal %20. (#139)
  • Azure commands run the Azure CLI inside pdt's process. Six calls took 13.96 s before and 1.12 s after, on a Windows test computer. (#139)
  • A PowerShell app's image pins the pdt-cli version that deployed it; before, it pinned 0.0.0.dev0, which is not on PyPI, and the build failed. (#136)
  • Output that a PowerShell module prints when it loads no longer breaks the script scan. (#135)
  • The README install steps put uv and pdt on the PATH in the current PowerShell window. (#139)

What's Changed

  • Keep a module's load-time output out of the PowerShell scan by @visch in #135
  • Pass pdt's version to the provider script by @visch in #136
  • fix(windows): fix problems found on Windows by @autoidm-jon in #139
  • chore(release): 0.1.6 by @visch in #138

Full Changelog: v0.1.4...v0.1.6

v0.1.5

v0.1.5 Pre-release
Pre-release

Choose a tag to compare

@visch visch released this 08 Oct 14:27
ecc1e90

Not published to PyPI. Use 0.1.6, which contains these changes.

What's Changed

  • Keep a module's load-time output out of the PowerShell scan by @visch in #135
  • Pass pdt's version to the provider script by @visch in #136

Full Changelog: v0.1.4...v0.1.5

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 08 Oct 13:40
61e45c5

Upgrade notes

  • Azure: every job gets a new name on its next deploy. The name is pdt-<app>-<7 hex characters>, with a maximum of 32 characters. The deploy plan shows delete Container Apps Job <old> (its name is now <new>). destroy, pdt secrets, pdt runs, and pdt logs still find a job that has the old name. (#80)
  • Azure: set again each secret that you set with pdt secrets <app> set in 0.1.3 or earlier. Those versions stored the value under the app name, not under the variable name. (#87)

New

  • A folder of .ps1 files with no run.py is an app. pdt installs PowerShell 7 and the modules that the scripts need, and runs the scripts through a built-in wrapper. run.ps1, run_scripts, continue_on_error, and pdt new APP --from-scripts control it. A cloud image builds from a separate Dockerfile that installs the modules at build time. (#120)
  • pdt -h shows the commands in groups. (#82)
  • A command that takes an app name uses the current app folder when you leave the name off. (#117)

Fixes

  • AWS: pdt starts the pinned AWS CLI from the uv cache with --offline after the first install. A failed request to GitHub no longer stops the command. (#103)
  • deploy --all, and a run.py started from the project root, read the .env of each app. (#124)
  • Off Windows, every windows provider command stops with one error. (#119)

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 30 Sep 20:10
v0.1.3