[#174] Add NSFW flag and language to publish flow#175
Conversation
- Add language dropdown and NSFW checkbox to PreviewPanel genesis UI - Auto-detect language from structure.md (same pattern as genre) - Pass language and isNsfw through StoriesPage → route → publish lib → indexer - Include language in IPFS metadata - Update AGENTS.md with NSFW content guidance and language field docs Fixes #174 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: REQUEST CHANGES
Summary
The UI additions and field plumbing are mostly in place, but the backend path does not implement the required backwards-compatible defaults. Existing callers that omit the new fields will still send undefined to IPFS/indexing instead of English / false.
Findings
- [high] Missing backwards-compatible defaults for language and NSFW
- File:
app/lib/publish.ts:339 - Suggestion: Normalize at the publish boundary, e.g.
const normalizedLanguage = language || "English"andconst normalizedIsNsfw = isNsfw ?? false, then pass those normalized values to both IPFS metadata and the PlotLink indexer (isNsfw: String(normalizedIsNsfw)). As written, route/API callers that omit the new optional fields produce{ language: undefined, isNsfw: undefined }, which fails the issue acceptance criterion that missing fields default to English / not NSFW.
- File:
Decision
Requesting changes because one explicit acceptance criterion is not met. CI was still pending at review time.
Apply backwards-compatible defaults (English / false) at the start of publishStoryline and publishPlot so callers that omit the new optional fields still send valid values to IPFS metadata and the PlotLink indexer. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
String(false) produces "false" which is truthy. The indexer body goes through JSON.stringify so the boolean serializes correctly as-is. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: APPROVE
Summary
The requested defaults are now normalized at the publish boundary, and isNsfw is passed to the indexer as a boolean. The publish UI, route forwarding, IPFS metadata language field, and AGENTS.md guidance match the issue scope.
Findings
- None.
Decision
Approving. Note: gh pr checks currently reports no checks on the latest branch head, so I could not confirm CI from the review CLI output.
Summary
structure.md)languageandisNsfwthrough the full publish chain: PreviewPanel → StoriesPage → route → publish lib → IPFS metadata + PlotLink indexerTest plan
**language**: Koreanin structure.mdFixes #174
🤖 Generated with Claude Code