Skip to content

fix(computer): keep app_data.get's original call, pausing the app inside it, so apps exported before 0.9.1457 still boot - #527

Merged
earakely-scale merged 2 commits into
mainfrom
fix/app-data-get-keeps-its-call
Nov 7, 2026
Merged

earakely-scale merged 2 commits into
mainfrom
fix/app-data-get-keeps-its-call

Conversation

@earakely-scale

@earakely-scale earakely-scale commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Computer apps exported before 0.9.1457 no longer boot on 0.9.1457 or later. Their generated app code calls app_data.get(self.paths, write_namespace). The browser data plane (#512) changed the signature to get(paths, paused, write_namespace). So data/get raises get() missing 1 required positional argument: 'write_namespace', and the computer's first-boot probe fails.

This restores the original signature, and keeps #512's behaviour without callers passing anything:

  • get(paths, write_namespace) is back as it was before feat(website-browser): the browser's data plane, data/add, data/get and data/reset (FD-4942) #512.
  • get freezes the app itself while it copies the files. It calls a new module-level app_runtime.paused_app(), which stops the launched app's process group with SIGSTOP and continues it after; it does nothing when no app is running.
  • AppRuntime.paused now delegates to paused_app(), so the website browser's use of it is unchanged.
  • The data plane no longer passes paused.

Every caller now gets the one-moment copy #512 introduced, including exported apps' own data/get hooks.

Test plan

  • New test: get(paths, None), called directly as exported apps do, returns the file and pauses and continues the running app.
    • On main it fails with the TypeError above.
    • On this PR's first commit, where the pause was an optional keyword, it fails because nothing is paused.
  • test_an_export_copies_the_paths_with_the_app_paused_and_sends_the_copy_once_it_runs_again still passes.
  • packages/agentenv-protocol/tests: 1298 passed, 1 skipped.
  • ruff check is clean.

🤖 Generated with Claude Code

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; no blocking issue was found.

Summary

Restores the two-argument app_data.get(paths, write_namespace) call used by older exported apps.

  • Older computer app exports can request files without breaking startup.

Reviews (2) · Last reviewed commit: "fix(computer): get pauses the running ap..." · Reviewed by Greptile

…ore 0.9.1457 still boot

The browser data plane made `paused` get's second positional parameter, ahead
of `write_namespace`. Computer apps exported earlier call
`get(self.paths, write_namespace)`, so on 0.9.1457 and later their data/get
fails and the first-boot probe fails with "get() missing 1 required positional
argument". `paths` and `write_namespace` are positional again, and `paused` is
a keyword the data plane passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@earakely-scale
earakely-scale requested a review from a team as a code owner November 7, 2026 17:00
…paused argument

`get(paths, write_namespace)` takes back its original signature and freezes the
app this server launched while it copies the files, through a module-level
`paused_app()` that `AppRuntime.paused` now delegates to. Exported apps' own
data/get hooks, which call get with two arguments, get the same one-moment copy
as the built-in data plane.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@earakely-scale earakely-scale changed the title fix(computer): keep app_data.get's earlier call, so apps exported before 0.9.1457 still boot fix(computer): keep app_data.get's original call, pausing the app inside it, so apps exported before 0.9.1457 still boot Nov 7, 2026
@earakely-scale
earakely-scale merged commit 3ab531b into main Nov 7, 2026
35 of 36 checks passed
@earakely-scale
earakely-scale deleted the fix/app-data-get-keeps-its-call branch November 7, 2026 23:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant