zudo-text

検索したい単語を入力

いつでも検索バーを開ける

Published Items

Published Items is the account-wide view of pages you have published. It includes retained page records from every workspace, so you can find a public URL or recover a published snapshot even when you are no longer editing the note that produced it.

Opening Published Items

Open the command palette (Mod+K) and choose Published Items. You can also assign an optional shortcut to Published Items in Settings → Shortcuts (publishedItems).

The dialog header shows the number of published pages and the total number of active page records. The default Published view shows only pages that are online. All also shows active records that are currently unpublished. Archived records are not mixed into either view; the Archives button has its own count and drawer.

Active records and Archives

An active record is either Published (its public URL is online) or Unpublished (the record is retained but its public URL is offline). Use the editor's Unpublish action, or the API's unpublish route, when you only want to take a page offline while keeping it in the active list.

Archive is the reversible lifecycle action in Published Items. It takes the page offline and moves the retained record into Archives in one operation. The archive notification offers Undo, which restores the record to the active list as unpublished. Closing or reopening the dialog does not republish it.

Open Archives to see archived records. The drawer explains that archived pages are offline and provides Copy note to…, Restore, and Delete. Restore clears the archive marker but deliberately leaves the page Unpublished; publish it again explicitly when it should become public.

Permanent deletion is available only inside Archives. Delete one record after the confirmation, or choose Empty archives… and confirm the count-aware warning. This removes the retained record and its saved publish snapshot and cannot be undone. Active rows never offer permanent deletion.

What each row shows

Rows are ordered by most recently updated. Each row contains:

  • Title — the title stored with the published page.

  • Public URL — the canonical URL for the page. Use Copy URL beside it to copy the URL to the clipboard.

  • StatusPublished or Unpublished.

  • Source — the source workspace, Note Tray directory, and note name when provenance is available. A resolution hint indicates whether the recorded note still exists, was found by a unique slug match, or is missing.

  • Activity — when the page was published and last updated. The displayed values are relative times; hover them for the full local date and time.

Pages published before source provenance was recorded are shown with Unknown source. The dialog does not infer their workspace from a coincidental slug match, although it can still use a unique match in the current workspace to help open the note.

Filtering the list

The filter bar provides four ways to narrow the rows:

  • Text searches the title, slug, public URL, and recorded source path.

  • Workspace selects one workspace, all workspaces, or Unknown.

  • Tray selects a Note Tray directory, all trays, or Unknown.

  • Status switches between Published and All. Published is the default; All also shows pages that have been unpublished.

Use Clear filters to restore the defaults. Text search is applied after a short debounce so the list remains responsive while you type.

Row actions

Each active row can have these actions:

  • Copy URL copies the public URL.

  • Open page opens the public page in a new browser tab or window.

  • Password: On/Off opens the per-page password settings when the row is active. Archived rows retain their password metadata for restore but do not expose password settings in the Archives drawer.

  • Copy note to… copies the retained published snapshot into a Note Tray.

  • Archive takes the page offline and moves its retained record to Archives.

  • Open source note opens the note that produced the page.

Archived rows have Copy note to…, Restore, and Delete. The Delete action is never shown for an active row.

Source-note behavior depends on where the source lives:

  • A source in the current workspace opens directly when the recorded path exists. If the note moved, a unique note with the same slug can be used instead; an unresolved or ambiguous match leaves the action disabled.

  • A source in another workspace can be opened from the ROOT app: the app switches to the owning workspace and then opens the note. The action is disabled in a LEAF app because LEAF cannot switch workspaces; open the source from ROOT instead.

  • An unknown source, or a source whose workspace is no longer available, has no usable source-note action.

Source provenance and moved notes

When a page is published, zudo-text records the source workspace ID and the workspace-relative note path together. These two values are always both set or both absent. Moving a note does not rewrite the stored provenance. When the dialog resolves a source in the current workspace, it checks the recorded path first and then looks for one unique note with the page's slug.

After a completed publish-again operation, zudo-text refreshes the recorded source pair. This is the way to update Published Items after moving a note or changing which note owns the page; the normal publish request still requires the explicit decision described below when an existing row is involved.

Publishing again and choosing a target

The editor's note toolbar shows Published (N) when the note has more than one active exact-source publication. N counts only published rows whose recorded workspace ID and workspace-relative note path both exactly match the current note. A single match is shown as Published. Archived, unpublished, legacy, and slug-only matches do not count. The count is a status indicator, not an instruction to use the first row.

Normal Publish is classified by the server before it can change a page. If the request could match an existing publication, the server returns a decision dialog rather than guessing which row to overwrite. Exact-source candidates are shown as individual pages; when there is more than one, select the intended page explicitly.

  • Replace existing page keeps that page's ID, slug, public URL, original publishedAt, and existing password configuration. It refreshes the content and source snapshot, advances its publish revision, and reactivates an unpublished or archived row as published.

  • Publish as another page requires a unique alternate slug. It creates a separate page that starts without password protection and leaves the existing page untouched. A different-source or legacy/unknown-source conflict never enables replacement; it can only be resolved with another slug.

  • If the alternate slug is occupied, the dialog stays open and reports the collision inline. Choose another slug and retry; repeated collisions do not discard the note or create duplicate rows.

The decision belongs to an immutable snapshot of the account, workspace, note path, title, slug, content, and candidate revisions captured when publishing started. Editing the note or changing workspace while the dialog is open makes that choice stale, so start a new publish attempt. A replace also uses the candidate's compare-and-swap revision; if another action changes the page, the dialog refreshes its choices instead of overwriting the newer page.

Retries after a lost connection reuse the same operation key while the target, alternate slug, and candidate revision are unchanged. The server replays the same safe result and does not create a second page. A typed response followed by a changed target, slug, or revision gets a new request fingerprint and a new key, so it cannot accidentally replay the old operation.

The Open page, Copy URL, Unpublish, Share, and page-update paths also operate on an explicit page ID. If several active exact-source pages exist, the app asks which one to use; it never silently targets the first row or treats a coincidental slug as overwrite authority.

Copying a published snapshot

Copy note to… reads the owner-only snapshot stored with the published record. It does not require the live source note, so it remains available for a missing, moved, ambiguous, or legacy source. The dialog labels the source as Original Markdown when raw Markdown is available. For a legacy record that has only rendered HTML, it uses Published HTML fallback and adds a warning comment to the copied note so that HTML is not mistaken for editable Markdown.

Choose an editable title, a destination workspace, and a Note Tray. The title replaces the first H1 (outside fenced code) or is inserted after YAML frontmatter when there is no H1. The rest of the snapshot is preserved. The destination list contains Inbox and that workspace's configured Note Trays; Archives and any path below it are never valid copy destinations. You can optionally open the newly created note after the copy.

ROOT and LEAF handle workspace scope differently:

  • In ROOT, the workspace picker can target any workspace owned by the account. The snapshot is fetched before a cross-workspace switch. After you confirm the first stage, ROOT switches workspace, waits for that workspace's settings and Note Tray host, and presents a second confirmation where you choose the destination tray. This two-stage handoff avoids reading another encrypted workspace before it is unlocked and creates exactly one note.

  • In a LEAF, the destination workspace is fixed to the LEAF's bound workspace. LEAF cannot switch workspaces, so choose a destination there or run the copy from ROOT.

Shared-password protection

Password protection is independently scoped to each published page and does not change its public URL. Enable protection and Change password both ask for a new password and confirmation; the current password is never shown or recoverable. Changing it immediately invalidates visitor access issued with the previous password. Remove protection has an explicit confirmation and makes a currently published page public immediately; it also invalidates old visitor access.

The password is a shared preview password, not a named-user ACL. It cannot identify visitors, provide a visitor list or audit trail, or revoke one person without changing it for everyone. Anyone who knows it may forward it. Password input is 8–256 UTF-8 bytes (spaces are significant); the service rejects values outside that range.

Password controls are available for active records only. Archiving takes a page offline while retaining its password configuration; restoring keeps the page unpublished and preserves that configuration for a later publish.