Skip to content

Proposal: editor-only draft pages with public visibility filtering #1478

Description

@mrchypark

Problem

Editors sometimes need to save work in the wiki repository before a page is ready for readers. LeafWiki currently has no unpublished page state, so partially written or embargoed content must be kept outside the normal editing workflow.

I would like to agree on the smallest acceptable draft-page contract before proposing an implementation.

Proposed minimum scope

  • Draft state applies to leaf pages only and is persisted in frontmatter as draft: true.
  • Only authenticated editors and administrators can read or edit drafts.
  • Anonymous and non-editor readers cannot access a draft directly or discover it through the page tree, search, tags, properties, favorites, or link-derived views.
  • Publishing and returning a page to draft are explicit state transitions, separate from ordinary content edits.
  • Structural operations that could accidentally expose a draft, such as moving or converting it, remain unavailable while it is a draft.
  • The editor UI shows the current state and provides explicit publish/draft actions using the existing localization system.

Non-goals for the first version

  • Draft sections or inherited draft state for subtrees
  • Approval workflows or review assignments
  • Scheduled publishing
  • Per-user private drafts
  • Multiple workflow states beyond draft and published
  • General index or concurrency redesign

Visibility contract

The initial implementation should be end-to-end for the agreed minimum scope. It should not merge in a state where draft content is hidden from the main tree but still exposed through another public discovery endpoint.

Questions

  1. Is a leaf-page-only draft state acceptable for a first version?
  2. Should drafts be limited to editors/admins, or should any authenticated user be able to read them?
  3. Is draft: true in frontmatter the preferred persistence format?
  4. Which structural operations should remain available while a page is a draft?
  5. Are there additional public discovery surfaces that should be part of the initial privacy contract?

If this direction is acceptable, I can prepare a focused implementation against the current main branch.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    backlogThe card is in backlog and not planned for a release yetenhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions