Another Writer's Den window is open on the same data. Saving here may overwrite unsaved changes in the other window.
Looks like you're on mobile — Writer's Go is optimised for small screens.
{{ currentDoc.title }} ({{ project.language }})
{{ statusMessage }}
Updated elsewhere — click to reload
Selection Mode
{{
getModeEmoji(writingMode) }}
{{ writingMode }}
{{searchMsg}}
{{ dynamicMasterView.projectName }} — Dynamic Master · read-only
{{ getDynamicMasterForProject(dynamicMasterView.projectId)?.wordCount.toLocaleString() }} words
AI Usage Log
{{ filteredUsageLog.length }} entries
Calls
{{ usageLogStats.calls.toLocaleString() }}
Tokens In
{{ usageLogStats.totalIn.toLocaleString() }}
{{ formatCost(usageLogStats.avgCostPerMIn) }}/M
Tokens Out
{{ usageLogStats.totalOut.toLocaleString() }}
{{ formatCost(usageLogStats.avgCostPerMOut) }}/M
Total Tokens
{{ usageLogStats.totalTokens.toLocaleString() }}
Est. Cost
{{ formatCost(usageLogStats.totalCost) }}
{{ mdl.split('/').pop() }}
{{ cnt.total.toLocaleString() }}t / {{ cnt.calls }}x
{{ formatCost(cnt.cost) }}
| Time | Context | Project | Model | In | Out | Total | Cost |
|---|---|---|---|---|---|---|---|
| No entries for this period. | |||||||
| {{ formatLogTs(e.ts) }} | {{ e.context || '—' }} | {{ e.project || '—' }} | {{ e.model ? e.model.split('/').pop() : '—' }} | {{ (e.in||0).toLocaleString() }} | {{ (e.out||0).toLocaleString() }} 🧠{{ (e.thinking/1000).toFixed(1) }}K | {{ (e.total||0).toLocaleString() }} | {{ formatCost(e._cost) }} |
{{ secondaryDoc?.title }}
{{ currentDoc ? currentDoc.title : 'Side Chat' }}
Ask about the current document.
Select text first to quote it as context.
Select text first to quote it as context.
Selection
{{ msg.selection }}
Thinking…
{{ sideChat.pendingCapture.selection.length > 60
? sideChat.pendingCapture.selection.slice(0,60) + '…'
: sideChat.pendingCapture.selection }}