Add More → Unpublish directly in the source editor, disabled while dirty, saving or already unpublishing. No modal, confirmation step, success banner or extra navigation.
Show Published as a link, Unpublishing… while pending and Unpublished as plain text afterward.
Reuse error-banner styles and keep cleanup errors independent of publication status. Preserve newer drafts during refresh.
Reuse the existing API/SSE reader through a small Unpublish-specific client: one submission, own-job observation, no conflicting-job adoption, reconnect or recovery controls.
Include a web patch changeset and focused transport/render tests.
Final editor integration for #133; worker and authenticated API are already merged. No backend, dependency, schema or user-facing documentation changes.
Validation
Fresh code review found one navigation-refresh race; guarded with navigating.to and independently closed. Readability review is clear.
1,917 web tests passed. Typecheck: 0 errors, 17 existing warnings.
Web build, lint and tracked/new-file whitespace checks passed after the bounded race/format fix.
Owner reports the inline UX works well. Read-only dev-data inspection of a two-piece publish/one-piece Unpublish run confirmed the intended public/search/asset removal, preserved source/core hashes and other publication, and OG deletion in local assets and the configured dev CDN (local rclone backend).
No assistant browser lifecycle, cloud/CDN-cache, attachment or production-image acceptance claim; no E2E or remote deletion commands executed here.
Eight files, one focused commit. Local Git commit and SSH push with owner author/committer verified; all archive edits and both new manual-test pieces excluded and preserved.
## Summary
- Add **More → Unpublish** directly in the source editor, disabled while dirty, saving or already unpublishing. No modal, confirmation step, success banner or extra navigation.
- Show **Published** as a link, **Unpublishing…** while pending and **Unpublished** as plain text afterward.
- Reuse error-banner styles and keep cleanup errors independent of publication status. Preserve newer drafts during refresh.
- Reuse the existing API/SSE reader through a small Unpublish-specific client: one submission, own-job observation, no conflicting-job adoption, reconnect or recovery controls.
- Include a web patch changeset and focused transport/render tests.
Final editor integration for #133; worker and authenticated API are already merged. No backend, dependency, schema or user-facing documentation changes.
## Validation
- Fresh code review found one navigation-refresh race; guarded with `navigating.to` and independently closed. Readability review is clear.
- **1,917 web tests passed.** Typecheck: **0 errors, 17 existing warnings**.
- Web build, lint and tracked/new-file whitespace checks passed after the bounded race/format fix.
- Owner reports the inline UX works well. Read-only dev-data inspection of a two-piece publish/one-piece Unpublish run confirmed the intended public/search/asset removal, preserved source/core hashes and other publication, and OG deletion in local assets and the configured dev CDN (local rclone backend).
- No assistant browser lifecycle, cloud/CDN-cache, attachment or production-image acceptance claim; no E2E or remote deletion commands executed here.
Eight files, one focused commit. Local Git commit and SSH push with owner author/committer verified; all archive edits and both new manual-test pieces excluded and preserved.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Final editor integration for #133; worker and authenticated API are already merged. No backend, dependency, schema or user-facing documentation changes.
Validation
navigating.toand independently closed. Readability review is clear.Eight files, one focused commit. Local Git commit and SSH push with owner author/committer verified; all archive edits and both new manual-test pieces excluded and preserved.