Skip to content

Stop stalled uploads and refuse sync or network workspace folders - #18

Merged
hyperdrivebeep merged 1 commit into
mainfrom
public-20261023b
Oct 23, 2026
Merged

hyperdrivebeep merged 1 commit into
mainfrom
public-20261023b

Conversation

@hyperdrivebeep

Copy link
Copy Markdown
Owner

Stalled file uploads

  • A file upload had no progress deadline and no cancel button. stageFile now uses
    XMLHttpRequest with upload progress: if no bytes are sent for 2 minutes, the upload stops
    with a Korean and English message that no source was connected. A cancel button is shown
    while files are sent and while the server processes them; once all bytes are sent there
    is no automatic deadline.
  • Uploading several files now stages every file first and only then connects them, so a
    cancel or stall connects nothing. Progress shows the sent percentage, then a processing
    message. Staged but unconnected files are not registered as sources. Server RPCs are
    unchanged.

Workspace location policy

  • The workspace location is classified before the workspace lock and the database open.
    Known sync roots (cloud sync status, OneDrive and registry-registered sync roots),
    network shares and drives, and Windows-to-WSL bridges are refused. Locations that cannot
    be confirmed (including macOS for now) need a one-time confirmation that is bound to the
    folder identity and reasons and keeps a short warning visible. Removable drives confirmed
    not to be under a sync root are allowed with a warning; fixed local drives with no sync or
    network signal are allowed.
  • The CLI exits with 4 (refused) or 5 (needs confirmation) and asks only on an interactive
    terminal; serve and desktop check before taking the lock; HTTP returns 503 with the same
    text; hosted review mode is unchanged. A new accept-location command confirms or forgets
    a location, and 'thoth workspace' shows the assessment. Workspace IDs are unchanged.
  • This is a support policy, not a safety guarantee; README, INSTALL, KNOWN_LIMITATIONS and
    the RPC catalog say so.

Test reliability

  • The workspace runtime lock test's helper now publishes its PID marker atomically, so the
    test cannot read an empty marker under load.

Verification: full suite on the pre-fix tree - 5586 Python tests, 4 failures. Two were the
CLI help contract missing the new command, fixed here. Two were timing issues under load:
a browser close check that passes when run alone, and the runtime lock marker race fixed
here. After the fix the affected CLI, lock and location tests pass; web tests, lint,
typecheck, build, ruff, architecture and module budget checks, and the README quick-start
smoke test passed in the full run.

Stalled file uploads
- A file upload had no progress deadline and no cancel button. stageFile now uses
  XMLHttpRequest with upload progress: if no bytes are sent for 2 minutes, the upload stops
  with a Korean and English message that no source was connected. A cancel button is shown
  while files are sent and while the server processes them; once all bytes are sent there
  is no automatic deadline.
- Uploading several files now stages every file first and only then connects them, so a
  cancel or stall connects nothing. Progress shows the sent percentage, then a processing
  message. Staged but unconnected files are not registered as sources. Server RPCs are
  unchanged.

Workspace location policy
- The workspace location is classified before the workspace lock and the database open.
  Known sync roots (cloud sync status, OneDrive and registry-registered sync roots),
  network shares and drives, and Windows-to-WSL bridges are refused. Locations that cannot
  be confirmed (including macOS for now) need a one-time confirmation that is bound to the
  folder identity and reasons and keeps a short warning visible. Removable drives confirmed
  not to be under a sync root are allowed with a warning; fixed local drives with no sync or
  network signal are allowed.
- The CLI exits with 4 (refused) or 5 (needs confirmation) and asks only on an interactive
  terminal; serve and desktop check before taking the lock; HTTP returns 503 with the same
  text; hosted review mode is unchanged. A new accept-location command confirms or forgets
  a location, and 'thoth workspace' shows the assessment. Workspace IDs are unchanged.
- This is a support policy, not a safety guarantee; README, INSTALL, KNOWN_LIMITATIONS and
  the RPC catalog say so.

Test reliability
- The workspace runtime lock test's helper now publishes its PID marker atomically, so the
  test cannot read an empty marker under load.

Verification: full suite on the pre-fix tree - 5586 Python tests, 4 failures. Two were the
CLI help contract missing the new command, fixed here. Two were timing issues under load:
a browser close check that passes when run alone, and the runtime lock marker race fixed
here. After the fix the affected CLI, lock and location tests pass; web tests, lint,
typecheck, build, ruff, architecture and module budget checks, and the README quick-start
smoke test passed in the full run.
@hyperdrivebeep
hyperdrivebeep merged commit 65640d4 into main Oct 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant