feat: one tree of pages, and an agent that remembers what you keep asking for - #16
Merged
Conversation
…king for Three corrections, and they are the same correction. **Writing the follow-up email was not a feature.** It had a panel of its own with four shapes and three tones, which could only ever be wrong for the fifth thing somebody wanted. It is one of the things people ask for, and what comes back is a note. So `compose.rs`, its two routes, its prompt shapes and its panel are gone, replaced by a sentence box on the note itself. 470 lines deleted, and the thing it did still works — through the agent, which was always the right path for it. **Everything is a note.** A recording is a note that has audio and a transcript attached; that is the model the vault has always had, and the interface kept contradicting it by filing recordings in one place and typed notes in another. The sidebar now lists pages of both kinds in the folders the user made, the way pages sit in Notion: expand a folder, see what is in it, click to open, `+` to make one there or at the root. Unfiled pages sit at the top level rather than being invisible until somebody files them. **The agent remembers what you keep asking for.** `summo_agent::habits` writes down every instruction given to an agent — the date, the words, the note it was about. Anything asked twice becomes a habit: offered back as a button so the fourth report costs a click instead of a paragraph, and given to the model so the fourth report *looks* like the first three, which is the actual complaint people have about assistants. It is `vault/agents/HABITS.md`, ordinary Markdown, one bullet per ask. Delete a line and the habit is forgotten — asserted in a browser test, because a memory the user cannot delete is the kind nobody wants. Two is the threshold: one is a Tuesday, five arrives long after the person has given up and started doing it by hand. What is stored is what they typed, never a conclusion about them — a file of guesses nobody can check would quietly steer every answer afterwards. Notes also became linkable (`/notes?open=`), which is what lets the tree open one at all. Verified: full Rust suite, 297 web tests, 18 browser suites including a new `pages.mjs` that drives the tree, makes a page from it, and checks that a deleted line is a forgotten habit.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three corrections, which turn out to be one.
Writing the email was never a feature
It had a panel of its own — four shapes, three tones — and that shape was wrong for the job. Drafting the follow-up is one of the things a person asks for, and what comes back is a note. A fixed menu of four could only ever be wrong for the fifth thing somebody wanted.
compose.rs, its two routes, its prompt shapes, its client and its panel are deleted: ~470 lines. What it did still works, through the agent, which was the right path for it from the start. In its place, on the note itself: a sentence box.Everything is a note
A recording is a note that happens to have audio and a transcript attached. That is what the vault has always stored; the interface kept saying otherwise by filing recordings in one place and typed notes in another.
The sidebar now lists pages of both kinds inside the folders the user made:
+on a folder, orTrang mớiat the bottom, makes a page there;Notes became linkable (
/notes?open=) along the way — without that the tree could list every page and open none of them.The agent remembers what you keep asking for
summo_agent::habitswrites down every instruction given to an agent: the date, the words as typed, the note it was about. Asked twice, it becomes a habit, and then two things happen:vault/agents/HABITS.md, ordinary Markdown, one bullet per ask. Delete a line and the habit is forgotten — asserted in the browser suite, because a memory the user cannot delete is the kind nobody wants.Two is the threshold: one is a Tuesday; five arrives long after the person has given up and started doing it by hand. Only what they typed is stored, never a conclusion about them — a file of guesses nobody can check would quietly steer every answer afterwards.
Verified
Full Rust suite, 297 web tests, 18 browser suites including a new
pages.mjsthat expands the tree, opens a page, makes one, sees a habit offered after two asks and not after one, and confirms a deleted line is forgotten.🤖 Generated with Claude Code