Skip to content

Queue Preview

The Queue Preview page shows approved posts and their export status.

Accessing Queue Preview

Click Queue in the main navigation.

Queue Status Overview

At the top, see counts for each queue state:

  • 🟨 Pending: Approved, waiting to be processed
  • πŸ”΅ Reserved: Currently being processed by consumer
  • 🟒 Delivered: Successfully exported (active count + all-time total shown)
  • πŸ”΄ Error: Failed (review error reason)

A non-zero error count indicates posts that failed export.

All-time delivered and pending counts include posts that have been removed by the cleanup job, so figures remain accurate even after old posts are pruned from the database.

Queue States

Pending (🟨)

Post is approved and ready for export. Consumer will fetch it next.

Reserved (πŸ”΅)

Consumer has fetched this post and is processing it (e.g., reblogging). Waits for ack/nack/error response.

Delivered (🟒)

Consumer successfully processed the post. Terminal stateβ€”won't be exported again.

Error (πŸ”΄)

Consumer reported permanent failure. Post will never be exported automatically. Error reason stored for investigation.

Browsing Posts

The table shows all approved posts with:

  • Author: Account that posted
  • Content: First 100 characters of post text
  • Hashtags: Up to 3 hashtags (with +N for more)
  • Media: Thumbnail images with count
  • Score: Spam score at approval time
  • Status: Queue state (pending/reserved/delivered/error)
  • Details: Eligibility status or error reason

Error Reasons

Posts in Error status display the error reason in the Details column (e.g., "Post was deleted on remote instance").

View Attachment Images

Click any attachment thumbnail to open a modal viewer: - View full-size images - Navigate with Previous/Next buttons - Use arrow keys to navigate - Press Escape to close

Sorting and Filtering

Use the Status filter to show only posts in a specific queue state (all, pending, reserved, delivered, error).

Use the Sort controls to order by review date, spam score, author, error time, or reserved time.

Queue Maintenance

Cleanup Delivered Posts

Click the Cleanup button on the Queue page to delete delivered posts older than 7 days. Stats are preserved β€” the all-time delivered count is not affected. Cleanup also runs automatically once per day in the background.

Trim Pending Posts

FenLiu automatically trims the pending queue when it grows to more than twice the recent daily delivery rate. Older posts, low-engagement posts, and posts from prolific authors are most likely to be removed. This keeps the queue focused on fresh, high-quality content.

Managing Errored Posts

Re-queue a Post

If an error was transient and is now resolved:

  1. Click the Re-queue button in the Details column
  2. Post moves back to Pending status
  3. Will be re-presented to consumer on next fetch

Use this for: - Temporary network outages (now resolved) - Instance downtime (now back online) - Rate limits (now reset)

Don't re-queue for permanent issues: - Post deleted - Account suspended - Content violates policy

Exclusion Reasons

Posts may show an exclusion reason in the Details column even if pending:

  • Blocked user: Author is in "Don't Reblog" users list
  • Blocked hashtag: Post contains a blocked hashtag
  • Missing attachments: Attachments-only mode enabled but post has no media

These posts won't be offered to the consumer by /api/v1/curated/next despite being approved.

Queue Lifecycle

  1. You approve a post in Review interface
  2. Post enters queue as Pending
  3. Consumer calls GET /api/v1/curated/next
  4. Post moves to Reserved (in-flight)
  5. Consumer processes post (e.g., reblogs)
  6. Consumer calls POST /api/v1/curated/{id}/ack
  7. Post moves to Delivered (complete)

Or if failure: 1. Consumer calls POST /api/v1/curated/{id}/error with reason 2. Post moves to Error (terminal) 3. Manual re-queue available if issue is resolved

API Access

Get queue data programmatically:

# Get next post (reserves it)
curl -H "X-API-Key: your-api-key" \
  http://localhost:8000/api/v1/curated/next

# List all approved posts
curl http://localhost:8000/api/v1/posts?approved=true

See Curated Queue API Documentation for complete endpoint details.

Next Steps