feat: a teaser's card references the drop it announced and the piece's variants (4402, 4401)
The operator's problem: a Patreon teaser is a pointer, and its card showed the censored crop plus a text link while the content it pointed at sat on another card. The fix is a REFERENCE, not an absorption: "the nested items on the unified post are a duplicate or reference of existing content". Nothing is written. Discord posts keep their own rows, dates and places in the feed. - post_unification: for each teaser with a linked association, the drop's images and text, plus its variant family: Discord images sharing the seed's gated LEADING working name, or a phash near-duplicate, within a window of the teaser. One hop only, oldest first. - Measured on artist 8 before writing it: of 121 message pairs 2-60 days apart that share a gated token, 106 share the leading name and all read as real families. Of the 15 sharing only a trailing word, 14 are sibling pieces and one is a plain collision (`bottom`, 56 days). The family cap is 8, not the pairing cap of 6, because `tentacooler` and `0-k1` (6 posts each) are real families. - The feed drops a linked drop's own card only within discord_link_fold_hours of its teaser (default 24): "only hidden from the post view they're posted the same day". Older referenced posts stay where they landed. - post_association.linked_by records whether FC or a person made the link, so the card can say so. Undo is the existing dismiss. - `image0` (gallery-dl's fallback name) becomes a stopword. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LVjrnpQjRgHdvq95rASoiR
This commit is contained in:
@@ -158,6 +158,31 @@ class ImportSettings(Base):
|
||||
server_default="true",
|
||||
)
|
||||
|
||||
# The unified card (#4402). A linked Discord drop is NOT absorbed into its
|
||||
# teaser — it keeps its own post, date and provenance, and the teaser's card
|
||||
# shows it by REFERENCE. Operator, 2026-09-24: *"discord 'posts' land as
|
||||
# normal and only hidden from the post view they're posted the same day."*
|
||||
#
|
||||
# So the drop's own card leaves the feed only when it sits within this many
|
||||
# hours of the teaser that references it — the adjacency that reads as the
|
||||
# same thing twice. Hours rather than a calendar day: a teaser at 23:00 and
|
||||
# its drop at 01:00 are one release, and "the same day" has no timezone
|
||||
# the server can know.
|
||||
discord_link_fold_hours: Mapped[float] = mapped_column(
|
||||
Float, nullable=False, default=24.0,
|
||||
server_default="24",
|
||||
)
|
||||
# How far from the teaser the card reaches for the rest of a piece's
|
||||
# variants — the wips, alts and censor passes a creator trickles out under
|
||||
# one working name (#4401). Measured on artist 8: named families spread a
|
||||
# median 5 days and up to 44, while every name collision found spreads
|
||||
# over 500. A reference, not a regrouping, so a generous value costs one
|
||||
# extra thumbnail at worst — never a post moved or hidden.
|
||||
discord_family_window_days: Mapped[float] = mapped_column(
|
||||
Float, nullable=False, default=60.0,
|
||||
server_default="60",
|
||||
)
|
||||
|
||||
# #830 off-platform file-host downloads — per-host enable lever (default on,
|
||||
# rule #26). Column names are extdl_<host>_enabled so the worker reads them
|
||||
# via getattr(settings, f"extdl_{host}_enabled", True).
|
||||
|
||||
Reference in New Issue
Block a user