Copy polish: posh Reginald, no em-dashes, no self-referential clutter #63

Merged
christian merged 3 commits from chore/posh-reginald-no-emdashes into main 2026-07-12 02:03:53 +00:00
21 changed files with 76 additions and 94 deletions
Showing only changes of commit 2f4a0a114a - Show all commits

View File

@@ -112,7 +112,7 @@ export function CalibrationScreen({ onBack, data }: { onBack: () => void; data?:
<circle key={i} cx={X(e) + ((i % 5) - 2) * 3} cy={Y(a)} r="3" fill="var(--accent)" opacity="0.55" /> <circle key={i} cx={X(e) + ((i % 5) - 2) * 3} cy={Y(a)} r="3" fill="var(--accent)" opacity="0.55" />
))} ))}
</svg> </svg>
<p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: '8px 0 0' }}>estimated (x) vs actual days (y) · actuals inferred from git events, never tracked</p> <p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: '8px 0 0' }}>estimated (x) vs actual days (y)</p>
</Card> </Card>
<div style={{ display: 'flex', flexDirection: 'column', gap: 14 }}> <div style={{ display: 'flex', flexDirection: 'column', gap: 14 }}>

View File

@@ -289,7 +289,7 @@ export function CaptureScreen({ onDone }: { onDone: () => void }) {
{live ? filedCount : tickets.length} issues opened in gitea with <span style={{ font: 'var(--text-data)' }}>est/*</span> and <span style={{ font: 'var(--text-data)' }}>p/*</span> labels, nothing else touched. {live ? filedCount : tickets.length} issues opened in gitea with <span style={{ font: 'var(--text-data)' }}>est/*</span> and <span style={{ font: 'var(--text-data)' }}>p/*</span> labels, nothing else touched.
</p> </p>
<p style={{ font: 'var(--text-agent)', color: 'var(--ink-2)', margin: 0 }}> <p style={{ font: 'var(--text-agent)', color: 'var(--ink-2)', margin: 0 }}>
Elapsed {clock}, under budget. No bot comments, no synthetic issues; your repo remains yours. Elapsed {clock}.
</p> </p>
<Button iconRight="arrow-right" onClick={onDone}>To morning service</Button> <Button iconRight="arrow-right" onClick={onDone}>To morning service</Button>
</div> </div>

View File

@@ -96,7 +96,7 @@ export function ConnectScreen({ onConnected, existing }: { onConnected: () => vo
</span> </span>
</div> </div>
<p style={{ font: 'var(--text-body)', color: 'var(--ink-2)', margin: '0 0 18px' }}> <p style={{ font: 'var(--text-body)', color: 'var(--ink-2)', margin: '0 0 18px' }}>
Connect your Gitea. Your token is stored encrypted on this machine and never leaves it. Connect your Gitea.
</p> </p>
<div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}> <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>

View File

@@ -115,10 +115,6 @@ export function DirectivesScreen() {
</div> </div>
</Card> </Card>
)} )}
<p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: 0 }}>
Entries are never edited. Corrections are new entries; the ledger remembers everything, politely.
</p>
</div> </div>
) )
} }

View File

@@ -335,12 +335,6 @@ export function IssueScreen({
</div> </div>
)} )}
</div> </div>
{/* provenance note */}
<div style={{ padding: '10px 20px 14px', borderTop: '1px solid var(--line-1)' }}>
<p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: 0 }}>
Lives in pm-state. Your repo never sees any of it.
</p>
</div>
</div> </div>
</Card> </Card>
</div> </div>

View File

@@ -155,11 +155,11 @@ export function OnboardingScreen({ onConnected }: { onConnected: (dest: 'focus'
<Frame footer={<Button iconRight="arrow-right" onClick={() => setStep(1)}>Begin</Button>}> <Frame footer={<Button iconRight="arrow-right" onClick={() => setStep(1)}>Begin</Button>}>
<h1 style={{ font: 'var(--text-title)', color: 'var(--ink-1)', margin: 0 }}>Good morning.</h1> <h1 style={{ font: 'var(--text-title)', color: 'var(--ink-1)', margin: 0 }}>Good morning.</h1>
<p style={{ font: 'var(--text-agent-lg)', color: 'var(--ink-2)', margin: 0 }}> <p style={{ font: 'var(--text-agent-lg)', color: 'var(--ink-2)', margin: 0 }}>
I am Reginald, your project manager. I interview you rather than trouble you with forms, I forecast in I am Reginald, your project manager. I interview you rather than trouble you with forms, and I forecast
honest ranges, and I never attempt the arithmetic myself; there is a scheduler for that. in honest ranges.
</p> </p>
<p style={{ font: 'var(--text-body)', color: 'var(--ink-2)', margin: 0 }}> <p style={{ font: 'var(--text-body)', color: 'var(--ink-2)', margin: 0 }}>
Your plans reside in your own Gitea as ordinary issues and labels. Dismiss me, and nothing human is lost. Your plans reside in your own Gitea as ordinary issues and labels.
</p> </p>
</Frame> </Frame>
) : null} ) : null}
@@ -196,7 +196,7 @@ export function OnboardingScreen({ onConnected }: { onConnected: (dest: 'focus'
type="password" type="password"
value={token} value={token}
placeholder="gitea PAT" placeholder="gitea PAT"
hint="Scopes: repo, issue. Nothing more." hint="Scopes: repo, issue."
onChange={(e) => { onChange={(e) => {
setToken(e.target.value) setToken(e.target.value)
setDiscovery('idle') setDiscovery('idle')
@@ -352,14 +352,11 @@ export function OnboardingScreen({ onConnected }: { onConnected: (dest: 'focus'
))} ))}
</div> </div>
</div> </div>
<p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: 0 }}>
No bot comments, no body frontmatter, no synthetic issues, ever. Labels are the only footprint.
</p>
</Frame> </Frame>
) : null} ) : null}
</div> </div>
<span style={{ font: '400 11px var(--font-mono)', color: 'var(--ink-3)' }}>first run · everything reversible</span> <span style={{ font: '400 11px var(--font-mono)', color: 'var(--ink-3)' }}>first run</span>
</div> </div>
) )
} }

View File

@@ -76,7 +76,6 @@ export function SettingsScreen({
<Icon name="layers" size={12} /> <Icon name="layers" size={12} />
sidecar: {connection.pmStateRepo ?? `${connection.repo}-pm-state`} sidecar: {connection.pmStateRepo ?? `${connection.repo}-pm-state`}
</Row> </Row>
<Note>Your token is stored encrypted on this machine. Delete the sidecar and resync; no truth is lost.</Note>
<Row style={{ gap: 8, marginTop: 2 }}> <Row style={{ gap: 8, marginTop: 2 }}>
<Button variant="secondary" size="sm" icon="settings-2" onClick={onReconnect}> <Button variant="secondary" size="sm" icon="settings-2" onClick={onReconnect}>
Reconfigure Reconfigure
@@ -105,11 +104,7 @@ export function SettingsScreen({
Reconciles on launch and after every write Reconciles on launch and after every write
</span> </span>
</Row> </Row>
<Note> <Note>Offline, the board reads from the last cached snapshot.</Note>
The board is a rebuildable index over gitea, the durable truth. When gitea is unreachable the last
snapshot is served from cache (the rail's dot turns red), and the next successful reconcile supersedes it.
No webhooks, no polling: reads are on demand.
</Note>
</div> </div>
</Card> </Card>
@@ -135,8 +130,7 @@ export function SettingsScreen({
</Row> </Row>
)} )}
<Note> <Note>
An OpenAI-compatible endpoint (set it in Reconfigure). Reginald names, negotiates and explains; it never An OpenAI-compatible endpoint (set it in Reconfigure).
does the arithmetic; the scheduler and Monte Carlo do that.
</Note> </Note>
</div> </div>
</Card> </Card>
@@ -154,7 +148,7 @@ export function SettingsScreen({
))} ))}
<Tag label="deadline/hard" /> <Tag label="deadline/hard" />
</Row> </Row>
<Note>Fixed sets, human-meaningful, visible in gitea. Not configurable: that is rather the point.</Note> <Note>The fixed label vocabulary, visible in gitea.</Note>
</div> </div>
</Card> </Card>

View File

@@ -198,9 +198,6 @@ export function ChatPanel({ onOpenDirectives, offline, onApplyChange }: ChatPane
<Icon name="send" size={14} /> <Icon name="send" size={14} />
</button> </button>
</div> </div>
<p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: '8px 2px 0' }}>
Chat is the write-path. Destructive changes are proposed, never assumed.
</p>
</div> </div>
</aside> </aside>
) )