Finish Phase 22: the half of Petal that works with the tunnel down
Grammar lite, the false-friend list, the daily invitation and the offline miscollocations — the four remaining §5–§6 items, all client-side and all alive on a box that cannot reach the model. The offline collocations forced a schema change. `type` had been doubling as the answer to "which engine found this" — `mechanics` meant offline — and that stops being true the moment an offline rule proposes a collocation. Migration 0013 adds `source` (llm | local) and every pass now scopes its DELETE by engine; without it the coach silently wiped every offline chunk on the page. Existing rows backfill by type, so a pre-0013 collocation row is claimed as the coach's, which it was: the offline list did not exist yet. The rule pack is hand-curated rather than mined, and the entries left out are the point — `married with` is wrong until "married with children", `arrive to` wants at or in depending on the noun. A pack running on every keystroke must not correct correct writing. Claude-Session: https://claude.ai/code/session_016y6gyuHkQXPiEuW8RGQyua
This commit is contained in:
@@ -307,6 +307,18 @@ export default function App() {
|
||||
[currentDoc, patchSummary, schedule],
|
||||
)
|
||||
|
||||
// She took the kitten up on its daily invitation. The prompt becomes the
|
||||
// blank page's title, so the question she agreed to answer stays in front of
|
||||
// her while she answers it — rather than being said once and then gone the
|
||||
// moment the bubble fades.
|
||||
const handleAcceptInvitation = useCallback(
|
||||
(prompt: string) => {
|
||||
if (!currentDoc) return
|
||||
handleTitleChange(prompt)
|
||||
},
|
||||
[currentDoc, handleTitleChange],
|
||||
)
|
||||
|
||||
const handleEditorChange = useCallback(
|
||||
(change: EditorChange) => {
|
||||
setWordCount(change.word_count)
|
||||
@@ -597,6 +609,8 @@ export default function App() {
|
||||
editTick={editTick}
|
||||
acceptTick={acceptTick}
|
||||
text={docText}
|
||||
blankPage={wordCount === 0 && docText.trim() === ''}
|
||||
onAcceptInvitation={handleAcceptInvitation}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user