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) }}
{{ formatLogModel(mdl) }}
{{ cnt.total.toLocaleString() }}t / {{ cnt.calls }}x
{{ formatCost(cnt.cost) }}
| Time | Context | Project | Model | Provider | In | Out | Total | Cost |
|---|---|---|---|---|---|---|---|---|
| No entries for this period. | ||||||||
| {{ formatLogTs(e.ts) }} | {{ e.context || '—' }} ×{{ e._group.count }} | {{ e.project || '—' }} | {{ formatLogModel(e.model) }} | {{ formatProvider(e.provider) }} | {{ (e.in||0).toLocaleString() }} | {{ (e.out||0).toLocaleString() }} 🧠{{ (e.thinking/1000).toFixed(1) }}K | {{ (e.total||0).toLocaleString() }} | {{ formatCost(e._cost) }} |
| {{ formatLogTs(sub.ts) }} | ↳ individual call | {{ (sub.in||0).toLocaleString() }} | {{ (sub.out||0).toLocaleString() }} | {{ (sub.total||0).toLocaleString() }} | {{ formatCost(sub._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… — {{ aiCallNote }}
{{ aiModelLabel }}
{{ sideChat.imagePickerAllProject ? 'No images in this project yet.' : 'No images in this document.' }}
{{ sideChat.pendingCapture.selection.length > 60
? sideChat.pendingCapture.selection.slice(0,60) + '…'
: sideChat.pendingCapture.selection }}
Fuzzy Find
{{ fuzzyFindStatusText }}
{{ Math.round(r.probability * 100) }}%
{{ r.focusText }}
{{ r.snippet }}