feat(composer): avertissement de contenu avec presets (#151) - #163
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexte
Le voile spoiler existe déjà à la lecture (
report_detail.htmlmasque une scène derrière soncontent_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 surRapport.Changements
_composer.html, mode feed uniquement) : champ texte librecontent_warningdans 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.preventpour ne pas soumettre le form.open_new_scene) : nouveau paramètrecontent_warning: str = "", écrit surReport.objects.create. ConstanteCW_PRESETS(gettext_lazy) injectée dans le contexte du composer.composer_views) : litcontent_warningdu POST et le transmet.i18n
Réutilise les msgids CW existants (« Content warning », « e.g. Violence, dark themes », « If filled… »). Nouveaux msgids : les 4 presets. fr/en +
.morecompilés.Tests & vérification
test_open_new_scene_persists_content_warning,…_defaults_empty) + vue (test_composer_post_opens_scene_with_content_warning).pytestcomposer : 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