Skip to main content

Publication workflow

Drafts and publication states solve different problems. A draft is a private working copy. The saved entry has its own state.

Saved states

  • Unpublished: saved but absent from public routes and listings.
  • Published: public immediately when the current account may publish directly.
  • Pending review: submitted by an author when site moderation is required.
  • Scheduled: private until its future activation time is reached and processed.
  • Trash: removed from public output and retained only when Trash retention is enabled.

Publishing with a future timestamp does not schedule an entry. A future-dated entry explicitly saved as Published is public immediately for compatibility. Select Scheduled when delayed publication is required.

Dates and timezones

Publication instants are stored in UTC and displayed in the current user’s timezone, falling back to the site timezone and then UTC. Changing a timezone changes display, not the stored instant.

Composer rejects nonexistent or ambiguous local times during daylight-saving transitions. Correct the local time before saving; tinymash does not guess which instant was intended.

Scheduled publishing

A scheduled post or page needs a valid future publication time. It remains absent from direct routes, listings, navigation, tags, feeds, search, sitemaps, static exports, and outbound publication integrations until activation.

Run this command every minute:

php8.4 bin/tinymash.php content:publish-due

CLI housekeeping also processes due content, but the web-cron fallback does not publish scheduled entries. The dedicated one-minute command provides predictable timing.

Moderation

When moderation is enabled, an author’s publish action sends the entry to Pending review. A superadmin can approve or reject it from the moderation queue. Superadmins can publish or schedule directly.

Rejection returns the content to an unpublished state for further work. Approval uses the publication details checked during review.

Trash and recovery

With a positive Trash retention, deleting saved content moves it to Trash. Restore returns it as Unpublished for safety. A conflicting active slug or missing parent page must be resolved before restoration.

When retention is 0, deletion is immediate. Housekeeping permanently removes Trash entries older than the configured retention.