Changelog
What changed in NoClick: the SDK, the API and the app, newest first.
A site's backend gets the full SDK
Code in an app's backend can now call the whole SDK and message your agents, signed in as its deployment, with no key to keep. It reads and writes only what it made itself, never another app's resources. Each app has a monthly budget, budget_usd_per_month ($10 unless you set another): once it's used, the app keeps serving pages and reading its data, while its paid calls fail with noclick.SpendCapExceeded.
Check a deployment before it's live
Deployment.check loads pages of a deployment in a browser and reports each one's status, load time, console errors and a screenshot. Give an app check_paths and a promote is checked where it serves before production switches: a failed check leaves production as it was. Every promote bookmarks the app's databases first, so undoing it restores them too.
checked = preview.check(["/", "/book"]).wait()
for page in checked.paths:
print(page.path, page.status, page.problem)Each preview branch gets its own data
An app whose preview_resources is branch gives each preview branch its own copy of the databases, buckets, dicts and queues its code names, made at the branch's first write. Until then its reads reach production, read-only, so a branch that only reads makes nothing. Inside an app, Database.from_name finds the app's own database for the environment it runs in.
Edge or container, decided per commit
An app's runtime is auto by default: each deployment reads the commit it builds and runs where it says. A wrangler config, a JavaScript framework or plain files run on the edge; a Dockerfile, or a server in another language, runs in a container. Set edge or container to pin it.
Agents can't force-push your default branch
An agent's push is checked before it lands: the default branch only fast-forwards and can't be deleted. A branch an agent rewrites or deletes is kept for 30 days; list them with Repo.backups and make one a branch again with Repo.restore_backup.
Sign in with Google, Apple and Microsoft, with nothing to set up
app.sign_in commits sign-in code into an app's repo, with its users in the app's own database. Google, Apple and Microsoft now sign people in through NoClick, so they work as soon as the operation ends, with no client to register at the provider. GitHub still uses your own client.
app = noclick.Project.from_name("booking")
setup = app.sign_in.enable(providers=["email", "google", "apple"]).wait()
print(setup.managed_providers) # ['google', 'apple']A repo's commit history
Repo.commits lists a branch's history, newest first, and each commit's page in Resources shows its changes, file by file.
Improvements and fixes1
Taking a published app down now finishes the job before the app leaves your list: the API key is revoked, the files are deleted, and the CDN cache is cleared. If any of that does not complete, the app stays listed so you can try again instead of vanishing while the page is still reachable.