Field notebook: capture NPC lines, tear pages onto the board
A dialogue line gains a "✎ Note this" capture that saves it to a per-playthrough notebook (migration 035 + notebook endpoints). The inventory notebook lists captured pages in a handwriting font (Google "Reenie Beanie") and "✂ Tear to board" drops a page onto the current board as a note exhibit (reusing addNote), then removes the page. Board notes render handwritten too. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -516,6 +516,23 @@ app.post('/api/playthroughs/:id/utterances/:uid/reach', async (req, res, next) =
|
||||
result.ok ? res.json({ earned: result.earned ?? false }) : res.status(404).json({ error: 'Not found' })
|
||||
} catch (error) { next(error) }
|
||||
})
|
||||
// Field notebook: capture NPC lines during play, list them, and remove (on tear/discard).
|
||||
app.get('/api/playthroughs/:id/notebook', async (req, res, next) => {
|
||||
try { res.json(await narrative.notebookPages(String(req.params.id))) }
|
||||
catch (error) { next(error) }
|
||||
})
|
||||
app.post('/api/playthroughs/:id/notebook', async (req, res, next) => {
|
||||
try {
|
||||
const page = await narrative.addNotebookPage(String(req.params.id), String(req.body?.text || ''), req.body?.utteranceId ? String(req.body.utteranceId) : null)
|
||||
page ? res.status(201).json(page) : res.status(400).json({ error: 'Empty text or unknown playthrough' })
|
||||
} catch (error) { next(error) }
|
||||
})
|
||||
app.delete('/api/playthroughs/:id/notebook/:pageId', async (req, res, next) => {
|
||||
try {
|
||||
const ok = await narrative.removeNotebookPage(String(req.params.id), String(req.params.pageId))
|
||||
ok ? res.json({ ok: true }) : res.status(404).json({ error: 'Not found' })
|
||||
} catch (error) { next(error) }
|
||||
})
|
||||
// The phone tool: the directory available on the current node, and dialing a number.
|
||||
app.get('/api/playthroughs/:id/phone', async (req, res, next) => {
|
||||
try { res.json(await narrative.phoneDirectory(String(req.params.id))) }
|
||||
|
||||
Reference in New Issue
Block a user