> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pup.run/llms.txt
> Use this file to discover all available pages before exploring further.

# Suggestions

> Collect, review and publish member suggestions with accessible voting.

Members use `/suggest` to enter text and optionally attach one file. Pup shows a private preview
before asking for explicit consent. The preview explains that designated reviewers can identify the
author for abuse handling, whether the author will be named on publication, and the configured
retention period. Attachments are available only to reviewers in the queue and are never copied into
the public approval post. Nothing is published before staff approval.

## Configuration

Open **Suggestion settings** below the review queue in **Dashboard → Suggestions**. Choose a text destination, a designated reviewer role, optional
eligibility role, cooldown, daily limit, preview expiry and retention period. Preview expiry is
bounded to 1–60 minutes; retained suggestions are bounded to 1–365 days. Author identity is staff-only by default. If public
attribution is enabled, the published card includes the author's Discord ID.

Optionally choose a separate private text channel for reviewer notifications. Pup verifies that it
is a current text channel and never lets it be the public approval destination. Configure that
channel's Discord permissions so only the appropriate staff can read it. On consent, Pup posts a
generic queue notification with no author identity, suggestion text, or attachment; recovery notices
use the same private route. The channel is snapshotted with the confirmed suggestion, so later
settings changes do not redirect its recovery notice.

Choose whether attachments are disabled, limited to images, or allow images and documents. One
attachment can be submitted with each suggestion. Image mode accepts GIF, JPEG, PNG, and WebP;
the document option additionally accepts PDF and plain text. Set the maximum file size from 1 KB to
8 MB. This policy is checked before the private preview is created; changing it later does not alter
an already-confirmed review record.

Choose one voting pair: thumbs up/down, check/cross, or up/down arrows. Each pair has distinct shapes
and names rather than relying on color alone. Voting can also be disabled. Approved cards use the
configured hexadecimal color; an unset value falls back to neutral slate.

## Review and recovery

Reviewers can search the queue, inspect text and reviewer-only attachment links, move submissions through
**submitted**, **considered**, **approved**, **rejected**, **duplicate**, and **implemented**, and
page through older suggestions and export all matching results. The export includes every matching page. Rejection and duplicate decisions require a reason. Reviewers
can attach a discussion link, search for and select the original suggestion by its text, or reopen any decided
suggestion for consideration. Optimistic revisions reject conflicting updates instead of overwriting
another reviewer's decision.

Every state change is appended to an immutable decision log with its actor, time, reason, discussion
link, and duplicate target. The current decision and full log are visible in the dashboard and export.
Approval creates a fresh Pup message using the destination and author visibility accepted when the author confirmed the preview. Later settings changes do not alter those promises. Older suggestions without saved publication consent require a new submission before publication. Pup
adds the voting reactions, records its provider message ID, and privately notifies the author when
Discord permits direct messages. Lifecycle notifications contain the state and review context but do
not expose staff-only author context in public channels. Rejected, duplicate, and implemented
suggestions are retained for the same review window.

Moderation and publication have separate statuses. A definite failed send offers **Retry failed publication**. An uncertain send is never automatically retried: check the original destination and use **Link existing publication** with a Discord message link. Only confirm no post exists after checking carefully; an overlooked post can lead to a duplicate. Interrupted sends must be at least five minutes old before reconciliation. Entries display the server-configured retention deadline; database backups
remain the operator's recovery boundary.

## Dashboard review

The review queue opens on **Needs attention** for submitted or considered suggestions and failed or uncertain publication. Record a decision using the suggestion actions; the decision log keeps the outcome and reason. Choose **All suggestions** to browse completed decisions. Search and pagination apply to the selected view, including exports.

Settings are grouped into publishing and review, appearance and attachments, and limits and retention. Save applies the whole settings draft; discard restores all fields.
