Report a recording: per-voice review link, desk, and lifecycle
Every recording card links to /report/<digest>. Filing opens a redoal_reports record; the Reports desk decides — Remove it acts for real (the relay deletes the recording everywhere), Keep it closes with the voice in place. Pins portal v0.3.17 for markdown in cards. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y42TyF8Zu7NGRR2893vNcZ
This commit is contained in:
co-authored by
Claude Fable 5
parent
02d3901610
commit
c2f2fdb546
@@ -18,7 +18,7 @@ on:
|
||||
- .gitea/workflows/deploy.yml
|
||||
|
||||
env:
|
||||
PORTAL_RELEASE: v0.3.16
|
||||
PORTAL_RELEASE: v0.3.17
|
||||
INSTANCE: redoal-portal
|
||||
|
||||
jobs:
|
||||
|
||||
@@ -26,3 +26,15 @@ aggregates:
|
||||
transitions:
|
||||
pending: [open, unsubscribed]
|
||||
open: [unsubscribed]
|
||||
# Reports on recordings. The relay watches this bucket: a record
|
||||
# moved to "removed" deletes the recording from its store, the varde
|
||||
# pin, and discovery. "kept" closes the report with the recording in
|
||||
# place. Decisions are human, never automatic.
|
||||
- bucket: redoal_reports
|
||||
initial: open
|
||||
states:
|
||||
open: { event: reported }
|
||||
removed: { event: removed }
|
||||
kept: { event: kept }
|
||||
transitions:
|
||||
open: [removed, kept]
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
# One recording, held up for human review: /report/<digest>. Reached
|
||||
# from the place page's per-recording link. Filing creates an open
|
||||
# record in redoal_reports; the desk decides, and a removal decision
|
||||
# deletes the recording from the relay, varde, and discovery.
|
||||
name: Should this stay?
|
||||
description: >
|
||||
Every voice here was left by a person, and a person looks at every
|
||||
report. Tell us what you heard and why it needs eyes on it — the
|
||||
recording stays reachable until someone has listened and decided.
|
||||
alternatives:
|
||||
- name: Ask for a review
|
||||
description: >
|
||||
Goes straight to the review desk. If the recording breaks
|
||||
something — a person's privacy, the law, basic decency — it is
|
||||
removed everywhere this network keeps it.
|
||||
action: /reported
|
||||
consequence: [Send it to review]
|
||||
record_as: redoal_reports
|
||||
encouragements:
|
||||
- A person will listen.
|
||||
features:
|
||||
- name: What you heard
|
||||
description: >
|
||||
A sentence or two is plenty. Leave an email if you want to
|
||||
hear what was decided.
|
||||
icon: lucide:flag
|
||||
requirements:
|
||||
- name: digest
|
||||
label: Recording
|
||||
type: hidden
|
||||
value: "{digest}"
|
||||
- name: reason
|
||||
label: Why
|
||||
type: textarea
|
||||
placeholder: What is wrong with this recording?
|
||||
- name: email
|
||||
label: Email
|
||||
type: email
|
||||
optional: true
|
||||
- name: Go back to listening
|
||||
description: >
|
||||
The place you came from holds the rest of its voices.
|
||||
features:
|
||||
- name: Nothing sent
|
||||
description: >
|
||||
Leaving this page files nothing — only the button does.
|
||||
icon: lucide:undo-2
|
||||
@@ -0,0 +1,10 @@
|
||||
# Landing after filing a report.
|
||||
name: What happens now?
|
||||
description: >
|
||||
Your report is on the review desk. A person listens, decides, and
|
||||
the decision acts everywhere this network keeps the recording.
|
||||
alternatives:
|
||||
- name: Draw another
|
||||
description: >
|
||||
The paper keeps listening.
|
||||
action: /
|
||||
@@ -52,6 +52,30 @@ alternatives:
|
||||
bucket: redoal_voices
|
||||
requires_group: owners
|
||||
|
||||
- name: Reports
|
||||
description: >
|
||||
Recordings a visitor asked a person to listen to. "Remove it"
|
||||
acts for real: the relay watches this bucket and deletes the
|
||||
recording from its store, the varde pin, and discovery. "Keep
|
||||
it" closes the report with the voice in place.
|
||||
action: /review
|
||||
consequence: [Decide]
|
||||
features:
|
||||
- name: ""
|
||||
description: ""
|
||||
resource:
|
||||
source:
|
||||
kind: kv
|
||||
bucket: redoal_reports
|
||||
requires_group: owners
|
||||
transitions:
|
||||
- from: open
|
||||
to: removed
|
||||
label: Remove it
|
||||
- from: open
|
||||
to: kept
|
||||
label: Keep it
|
||||
|
||||
- name: Watchers
|
||||
description: >
|
||||
Who asked to hear from one exact address. Unsubscribing is
|
||||
|
||||
@@ -25,7 +25,7 @@ alternatives:
|
||||
empty: Nothing has been left at this address yet — yours could be the first voice here.
|
||||
jq: >
|
||||
.recordings[] | {name: ((.duration_ms / 1000 | round | tostring) + " seconds of voice"),
|
||||
description: ("sealed by " + .author[0:8] + "…"),
|
||||
description: ("sealed by " + .author[0:8] + "… · [have it reviewed](/report/" + .digest + ")"),
|
||||
audio: ("https://relay.redoal.com" + .audio)}
|
||||
|
||||
- name: Leave your voice here
|
||||
|
||||
Reference in New Issue
Block a user