Skip to content

feat(composer): avertissement de contenu avec presets (#151) - #163

Merged
RebelliousSmile merged 1 commit into
mainfrom
claude/plan-derniere-issue-l94t6x
Jul 21, 2026
Merged

feat(composer): avertissement de contenu avec presets (#151)#163
RebelliousSmile merged 1 commit into
mainfrom
claude/plan-derniere-issue-l94t6x

Conversation

@RebelliousSmile

Copy link
Copy Markdown
Owner

Contexte

Le voile spoiler existe déjà à la lecture (report_detail.html masque une scène derrière son content_warning), et la page de composition longue offre le champ. Mais le composer rapide (mode feed / nouvelle scène) ne l'exposait pas — impossible d'avertir « Violence » en ouvrant une scène depuis le fil. L'issue #151 demande cette option de prévention.

Option A (décision utilisateur) : exposer le champ scène existant Report.content_warning, sans ajouter de CW par post sur Rapport.

Changements

  • Composer (_composer.html, mode feed uniquement) : champ texte libre content_warning dans la sheet d'envoi, avec presets rapides un-clic — Violence, Thèmes sombres, Contenu sexuel, Mort. Le champ reste libre pour tout le reste ; un clic sur un preset le pré-remplit (re-clic = efface). Comparaison d'état via $el.dataset, jamais de valeur interpolée dans le JS Alpine. @keydown.enter.prevent pour ne pas soumettre le form.
  • Service (open_new_scene) : nouveau paramètre content_warning: str = "", écrit sur Report.objects.create. Constante CW_PRESETS (gettext_lazy) injectée dans le contexte du composer.
  • Vue (composer_views) : lit content_warning du POST et le transmet.
  • Frozen guard : le CW ne s'applique qu'à la nouvelle scène (feed) — jamais en mode frozen (ajout d'un post à une scène existante), le CW étant une propriété de scène.
  • Aucun champ modèle ajouté → 0 migration.

i18n

Réutilise les msgids CW existants (« Content warning », « e.g. Violence, dark themes », « If filled… »). Nouveaux msgids : les 4 presets. fr/en + .mo recompilés.

Tests & vérification

  • Tests service (test_open_new_scene_persists_content_warning, …_defaults_empty) + vue (test_composer_post_opens_scene_with_content_warning).
  • pytest composer : 75 passed.
  • ruff check . + ruff format --check . (repo-wide) · mypy suddenly/ · makemigrations --check = No changes · design lint _composer.html = clean.

Closes #151

🤖 Generated with Claude Code


Generated by Claude Code

Le voile spoiler existait déjà à la lecture, mais le composer rapide
(mode feed / nouvelle scène) n'offrait aucun moyen d'avertir. Cette
option de prévention manquait.

- Champ texte libre `content_warning` + presets rapides (Violence,
  Thèmes sombres, Contenu sexuel, Mort) dans la sheet d'envoi, mode
  feed uniquement — c'est une propriété de scène (Report), pas de post.
- Presets un-clic = toggle ; comparaison d'état via $el.dataset (jamais
  de valeur interpolée dans le JS Alpine).
- `open_new_scene` accepte `content_warning` et l'écrit sur la scène ;
  `composer_views` lit le POST. Aucun champ modèle ajouté → 0 migration.
- Réutilise les msgids CW existants ; un preset = un nouveau msgid.
- Tests service + vue ; i18n fr/en + .mo recompilés.

Closes #151

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YBRFVUtmBW3YSP8Yd2uNpB
@RebelliousSmile
RebelliousSmile merged commit 31758a9 into main Jul 21, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

violence

1 participant