chat: one list of twenty-two tips, said two ways — home rotates, a conversation ranks - #1389
Open
ZeroPoint95 wants to merge 36 commits into
Open
ZeroPoint95 wants to merge 36 commits into
ZeroPoint95 wants to merge 36 commits into
Conversation
The surface stopped treating two spaces over an empty box as the home door on 2026-09-17 (TestDoubleSpaceNoLongerNavigates pins it, and home's tests press esc), but five passages across keys, home, places and running-on-another-machine still taught the old gesture. They now say esc, and the places section over --host keeps the old words in its heading so the question still finds it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…oxes Home never drew an earned tip: the picker refused the page outright and its gap was measured in turns home does not have. The blank directly above the rule over home's box is now the tip row — drawn only over an idle box with no list, layer or exchange up, one cell in, dim, in the key-then-what-it-does grammar the conversation's foot keeps. The table is one table for both boxes. Each hint row says where it may draw (the conversation's foot, home's row, or both), retirement is shared through the same notices.json ledger, and the surface refuses to build on a note row that names a box or a row filed under home's slot. Twenty-three lines join the seven that were here, each retired by a real seam: /ask and alt+enter, /task, ctrl+enter, ctrl+r, the @ list, /attach and /image, /folder, /export, the model list, /crew, /budget, the spend and search places, steering and ctrl+q, ctrl+t, alt+1..7, /remember, /subharness, /connect, and a media call beginning. `/ shows every command` retires: both feet say `/ commands`. Home rotates rather than ranks: every eligible tip has its turn in table order, moving on every visit and every two minutes at rest on the beat home already runs, and a tip that has come round six times is taken as read. A board test pins the ring, a lab test pins the row over the frame, and a new gate holds the hints page to every line in the table word for word. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…he project moves to the keys row The owner's placing (2026-09-22). Home's tip row is right-aligned to end one cell in from the edge, led by a bulb and closed by a cross a pointer can press: the cross puts the tip away until the next visit to home or the row's own two-minute turn, and writes nothing down, because a tip put away is not a tip learned. The bulb is an emoji by the owner's word, against the vocabulary's own no-emoji-in-chrome law, and hometip.go says so where it is spelled. The project left home's rule for the right end of the keys row under the box, right-justified. The keys keep their room: a long path is cut on the right, one ellipsis, and goes entirely where the keys leave it less than a word. It is still the door onto the folder chooser, and the pointer and the hover read its columns off the row it was drawn on. A conversation's seam still names its workspace at the right. The row that silences the tips is `disable hints` on the Workspace tab, off by default. The key underneath is still ui.hints meaning shown — a persisted identifier keeps its bytes — and internal/config inverts once, on the way in and out, so the panel and `codeaf config` say the same word. The manual's home, places, keys, asking-from-home, choosing-a-folder and commands pages stop drawing the project on the rule, and the hints page describes the bulb, the cross and the new row. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…are, /image is gone, two tips swapped Reviewing the tips against the surface turned up four bugs, all fixed here. The @ list on home. Home's box never opened the completion every conversation's box has; the hint promised it. homeat.go binds the same completion to home's box, drawn as rows of home's column like the slash list, walking the folder the next conversation opens in, offering files and folders and never tasks. Enter puts the path in after the @, a picture comes out of the sentence and onto home's tray, esc closes the list, and the command list wins when both could open. A quoted or escaped path. /attach '/Users/me/Screenshot 2026-09-18 at 1.35.20 PM.png' — the shape Finder and a terminal drop hand you — answered `no such file`. resolvePath now reads a path the way the shell it was copied from would: matching quotes come off, a backslash before a space is the space, and anything else is left as typed. /attach bare on home opens the browser aimed at the next conversation's folder, as a bare /folder does, and a file chosen there lands on home's tray; it used to say `type the path after /attach`. /image is gone. It was a second word for /attach that took only a picture and refused everything else; /attach already told a picture from a file by its name. The command table, the dispatch, home's gate and the path completion's argument list no longer know the word, and typing it is answered as every unknown word is. Two tips changed. `alt+enter sends what you typed off as a task` is cut: on home the chord asks rather than sending a task. `ctrl+r spells out …` is cut: the chord works only in a conversation and only over a making-shaped sentence, so on home it named a key that did nothing. `/manual answers any question about codeaf from its own manual` and `ctrl+shift+t reopens the tab you just closed` take the seats, each retired by its own seam, and the table stays at thirty. Eight manual pages stop naming /image and describe the list on home, the quoted-path rule and the bare /attach browser. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…quiet minute, the project on both keys rows, /attach opens the browser from the list, search by name with memory off The tip table is one set now: every hint draws over home's box and a conversation's, in the table's order, round and round, and a tip that has just become true jumps the ring. The priority numbers, the per-row place and the conversation's turn gap are gone. A showing is a visible change of hands on either row, six of them retire a tip. A conversation says its tips the way home does — the row over the rule, right-aligned, bulb and cross — but only after a minute with no key pressed and no turn ending, on one self-sustaining clock started at Init; a key hides it again. The keys row no longer carries a tip. The project came off both seams to the right end of the keys row under the box, cut on the right where the keys leave it no room, and it is the folder door there in a conversation as it is on home. Enter on /attach in the command list opens the browser at once, the way /folder does: the bare row is its own row, the <path> row stays for a typed path. A path with a raw apostrophe in its name is no longer read as a shell quote. With memory off the search place matches conversations by name and project, the way home's box does, and says so, instead of refusing. The picture-and-media tip gave its seat to ctrl+b copy mode. The manual follows on every point, with four new probes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…s home too, the reopen-tab tip names the conversation tab /manual used to print the manual's pages as written, with no model call, and on home that note landed in the conversation behind the screen — typing it looked like nothing happening. It is a turn now: the words go to the model told to answer from the manual tool and to name the page, the transcript keeps what was typed, and on home a conversation opens at the target first. The as-written reading stays at the terminal's `codeaf manual`. ctrl+b on home was the emacs left while the merged tip list promised a freeze there. Home freezes its own rows now the way a room does, the keys row names the reader's keys, a tip never draws over it, and esc gives home back as it was. The ctrl+shift+t tip reads "reopens the last closed conversation tab". Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…es what the old count spent, ctrl+b leaves home, /autonomy takes the copy tip's seat Every visible change of hands counted as a showing, and every road home is one: an afternoon of stepping through home spent all thirty tips in flashes nobody read, and the owner's row went blank. A showing is now a tip that stood twenty seconds on a row somebody could see, counted when it leaves. The ledger carries a rule number, and a ledger from the old rule is read once with the rows that rule spent forgiven, keeping retired the ones a gesture retired. The home freeze from the previous commit goes back out: ctrl+b on home is the caret key again, and the tip that taught the freeze gives its seat to /autonomy. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The frozen viewport with v, a and y, its status word, its keys row, the /copy command and every gate the surface kept on it are removed, on the owner's judgement that it was no use beside the drag. The clipboard wire stays: ctrl+s hands the pointer over, the sweep copies on release, and both leave through OSC 52 (copymode.go becomes clipboard.go). ctrl+b is bound to nothing in a conversation and stays the caret's left on home. The keys, commands, screen, tasks, sessions, home and what-i-can-do pages say so, and three probes reach them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The cross on a tip row meant "put this away" and did two things nobody asked for: it counted the standing as a showing, and it left the row blank until the slot next changed hands — so on home the same tip was back on the next visit with one of its six showings gone. It now means NOT THIS ONE: the row rotates to the next tip on the very next frame, and the tip put away is charged nothing and comes round again. Only with one eligible tip left does the row go blank, as it always did. /folder meant two different things depending on which screen it was typed on: give THIS conversation a folder, or pin the folder the NEXT conversation opens in. The pin is /project now, home's alone — `/project <path>` takes the path and opens nothing, a bare /project opens the browser aimed at the target, and in a conversation it says which screen it lives on. /folder means one thing everywhere, so on home it opens a conversation first like /files and /compact. Also: every door onto the context sheet fires its own notice event rather than the sheet deciding off the folder-door flag, which used to retire both /attach tips when somebody opened the sheet to pick a project. The table is thirty-one hints: /project's is armed on home alone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The owner's ruling: "do not show another hint until the user comes back to the home tab after leaving it". The cross answered with a second sentence on the very screen somebody had just asked it to stop talking on, which is the surface arguing. A crossed row now draws nothing at all, and ONE thing lifts it: the row going out of view. On home that is leaving home — the cross is lifted in dropHome, so it holds for the whole of the visit it was pressed on, and coming back brings a different tip. In a conversation it is the next key taking the row away and the next quiet minute returning it. Neither the two-minute beat nor an event re-deciding the slot lifts it any more; those were the two roads a tip came back on. The tip put away still keeps its whole allowance: the standing is thrown away rather than counted, and the slot is asked to advance so the row that comes back is a different one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Nine changes, all the owner's: - `@ completes a file, a folder or a task into your message` becomes `type @ to quickly attach files in the current project` - `/attach takes a picture too, or paste a screenshot in` becomes `/attach lets browse anywhere for files` - `/export writes this whole conversation to a file` becomes `/export writes the current conversation to a file` - `/budget caps what today may cost` becomes `/budget sets the spending cap for the day` - `/connect links Google, Slack or another model service` becomes `/connect links Notion, Slack and other services` - the steer row and the queue row become one, retired by the queue: `using enter stops and steers conversations, use ctrl+q to queue` - `alt+3`, `alt+1`–`alt+7`, `/search` and `/subharness` come off the list altogether — four doors the tab bar and the `/` list already put in front of somebody, which is the argument that kept `alt+p` and `/` off it in the first place Thirty-one rows become twenty-six. The five respelled rows KEEP their ids, because the gesture each teaches has not changed and a new id would say the tip again to everybody who has already retired it; the folded row takes a new id, `steer-and-queue`, because somebody who retired one of the pair has not been told the other half. The events behind the four cut rows stay: nothing retires on them now, which is already true of `task-started`, and they are what an arming rule reads. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The line went in as `/attach lets browse anywhere for files` and was missing its "you". Same id, same gesture, one word. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…me off The owner's read, item by item: - `/ask answers right here without opening a conversation` comes off ahead of the door it teaches. The command is untouched. - `/folder picks the folder codeaf works in` comes off because it was NOT TRUE. /folder never moves the directory codeaf stands in — that is fixed for the life of a conversation — it registers a directory the conversation is ABOUT, which is what a folder after /attach already does, through the same seam. The command, and /place and /dir with it, is untouched. - `/attach sends a file along with your message` becomes `/attach sends a file or folder with your message`, which is what that command has done since the folder branch landed. - `/attach lets you browse anywhere for files` comes off: one command, one row. - `/project sets the folder the next conversation opens in` becomes `/project sets the project folder for the next conversation`. - the steer-and-queue row becomes `using enter steers conversations · use ctrl+q to queue` — the owner wrote it with a hyphen, and a hyphen is not what joins two clauses on this surface. - `ctrl+t starts a fresh chat in this folder` becomes `ctrl+t starts a fresh chat in this project`. Twenty-six rows become twenty-three, and /project is the only row armed on home alone now that /ask's has gone. The five ids that only changed their words keep those ids; nothing is reused. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…anism The owner's ruling: put the conversation's hints back where they were and trigger them the way they were triggered, keeping the new content. So the two boxes diverge again, deliberately — a conversation is a screen you sit in and home is a screen you pass through, and the tip worth saying differs. A CONVERSATION, as it was before this wave: - the tip is the LOWEST RUNG OF THE KEYS ROW at the foot, under every state's own keys, taking the slot from the rest state - it is decided by the events that prove what is happening, ranked by the table's own order — the first eligible row wins, and the table's order is what the old per-row `priority` column said in numbers - the slot changes hands slowly: a different line may take it only once `noticeGap` turns have passed, so three tips arming in three turns are read one at a time - a showing is one SESSION, counted when the slot takes the tip - no clock, no quiet minute, no rotation, no cross HOME keeps everything this wave gave it: the row over the rule, the bulb and the cross, the rotation on every visit and every two minutes, and a showing that is twenty seconds of standing where it could be seen. So `pick` forks into `rank` (the conversation) and `rotate` (home), and `take` counts on arrival for one and on departure for the other. Gone with the conversation's clock: hintTickMsg, noticeArmIdle, noticeIdleBeat, noticeTouched, chatHintIdle, the board's touched/due/idleArmed/idleGen, chromeTip and tipClosePress. One list still feeds both, so a row armed only on home — /project — is simply never a candidate in a conversation, and using a gesture on either box retires its tip on both. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`from its own manual` was the interesting half to whoever wrote the row and the uninteresting half to whoever reads it: somebody who has not used /manual wants to know they can ask, not where the answer comes from. Same id, same gesture. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`type @ to quickly attach files in the current project` named the wrong half of what the list does: it completes a file, a folder or a task INTO the sentence being written, and attaching is /attach's job on the tray. `find paths` is what a person is actually doing when they reach for it. Same id, same gesture. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Both rows said "keeps", which taught a person that the two commands were one thing in two spellings: /standing keeps something always true /remember keeps one thing across conversations They are not. A standing order is a CONDITION the work has to honour — it rides into a task's brief under its own heading, and the worker reports when it cannot meet one. A memory is a fact carried forward as context, binding nothing. So the two rows now say which is which, and the memory one names the way back out: /standing turns a sentence into a rule work must follow /remember carries a fact forward, /forget drops it Same ids, same gestures. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The owner read the whole list a third time and took `ctrl+. sees every task this project has run` off it. The chord, `/history` and the task page are untouched; only the tip is gone, and `eventTaskStarted` and `eventTaskPageOpened` are still fired at their seams for a later row to wait on. The tip was this suite's fixture on both boxes — a row armed by something that happens mid-session and retired by a different gesture — so the tests move to `/files finds everything made for you`, armed by an export landing and retired by `/files`. Three comments in notice.go still described the machinery the conversation's row had for one build and no longer has: a quiet minute, an idle beat and a rotation. They now say what the file does — a conversation ranks, home takes turns. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
What a reader of this repository now believes wrongly: copy mode and /image existed, /folder chose the project, home had no tip row and no @ list, /manual printed pages without a model call, and a showing was any change of hands. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`ctrl+enter sends your message as something to keep true` was the third row about a standing order and the only one still spelling it the old way — "keep true" is exactly what /standing's row was taken off for, since it made a rule and a memory look like one thing. The two rows retire on the same event, so they are one lesson told twice; they now tell it in the same words: /standing turns a sentence into a rule work must follow ctrl+enter makes your message a rule instead of a request Same id, same gesture. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
dev landed #1384, the shared working-logo animation, which taught copy mode to freeze a page without the transient activity row. This branch deletes copy mode whole, so the three conflicts all resolve the same way: the freeze goes, the logo stays. - copymode.go: deleted, as this branch has it. dev's change to it was the freeze-without-the-row rule, which has nothing left to rule over. - room.go: `freezeRoom` goes with it. dev's other two changes to the file — the `workActivity` field on taskRoom and its `Start` in `newRoom` — are kept, because they are the logo and not the freeze. - roomscroll_test.go: `TestFreezingAFoldedRoomKeepsTheCopyCursorInBounds` goes; dev's only change to that file was inside it. Two more that git merged cleanly and the compiler caught: - worklogo.go guarded both visibility rules with `!a.copy.on`. There is no copy mode to hide from, so the guards go. - worklogo_test.go's C1 and C2 tested the freeze itself. They go, and a comment in their place says what they held and where copying lives now. And the manual: dev's new working-indicator page said the logo steps aside in copy mode. It now says that it used to, and points at the keys page for the mouse. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…jobs codex/restore-home-shortcuts gives back the two Home gestures #1071 took: two spaces in an empty box open home, and esc returns to being the interrupt, the layer peel and the arming half of rewind. It also removes /ask, whose tip this branch had already taken off the table, and puts `ask here` back over home's box. THE TIPS. One row changes its words: `/rewind takes back an earlier message` becomes `esc esc takes back the last message`, which is #1388's own edit and the right one — the chord is the half a person cannot discover, and either door still retires the row. No row is added for two spaces: the foot advertises `space space home` outright, and a tip for something the keys row already names is the one rule this table has always kept. Twenty-two rows, unchanged in number. ESC ON HOME NOW PEELS THREE LAYERS, and the @ list this branch added is the innermost: the list, then the box, then the screen. It has to be that order — clearing the box first would take the half-typed token the list was opened for along with it. #1388's own esc test typed `@x`, which opens that list, so it walks all three layers now and says so in its name. Three tests here opened home by pressing esc. They go through the door a person uses, `goHome`, which presses space twice. Copy mode meets this merge twice more: esc arming rewind no longer asks whether a frozen page is up (rewind.go), and background.go's note about the keys that are not for sale named ctrl+b beside it. The manual: the hints page's opening now shows the keys row's live states with `esc interrupt` in them, the roads home are two spaces rather than esc, the rewind row is respelled, the `/ask` note says the door followed its tip out, home.md keeps #1388's restored ask-here frame with this branch's project on the keys row, and the rewind page's list of states that refuse to arm drops copy mode. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The owner's word, 2026-09-23: "we don't need a hint, but don't remove the feature." So b91a391 is reverted whole. ctrl+b freezes the viewport again, v/a/y and y-on-a-mark work in it, /copy opens it, the status word and the mode's own keys row are back, and copymode.go has its name back. THE TIP DOES NOT COME BACK. `ctrl+b freezes the screen so you can read and copy from it` stays off the table, /autonomy keeps the seat it took, and the table stays at twenty-two rows. The row in notice.go that explains that seat now says so outright, because it was the one place a reader could conclude the feature had gone with its tip. Three things the revert could not know about, because they landed after it on this branch: - #1384's working logo. It taught both freeze doors to lay the page out after copy mode owns it, so the animated row and its private blank never become frozen transcript. That edit went into copymode.go and room.go, both of which the removal had deleted, so it is applied by hand here — along with its two tests and the room freeze's transient-row arithmetic. - The guards. worklogo.go asks `!a.copy.on` on both visibility rules again, and rewindReady counts a frozen page among the states that refuse to arm. - #1388's esc. The revert wanted background.go and keys.md to say `ctrl+c` interrupts; esc does. Both say `ctrl+b is copy mode and esc interrupts`, which is what #1388 itself wrote. The manual: the pages the removal edited are reverted with it, the working-indicator page says the logo steps aside in copy mode again, the rewind page counts copy mode among the states that refuse to arm, and the hints page notes that the feature works while its tip does not exist. The three probes about copy mode now ask about it working rather than about it being gone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
#1388 respelled this row from `/rewind takes back an earlier message` to `esc esc takes back the last message`, and it arrived here in that merge rather than by anybody's choice on this branch. The owner read it back and did not recognise it. Either spelling teaches half of it. `esc esc` is the half nobody discovers. `/rewind` is the half that survives: a person who read only the chord has no word to type into `/`, no word to ask the manual, and nothing to search for a week later. So the row names both: esc esc or /rewind takes back an earlier message `an earlier message` rather than `the last` because both doors walk back further than one turn — the chord through the drawn blocks, the command through the whole conversation. Same id, same gesture; eventRewound already fires from both doors. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The owner's read of the list, row by row. Every id and every retiring
gesture is unchanged, so nobody who has already used one of these is told
about it again.
/files finds everything made for you
→ /files finds files codeaf wrote for you
/standing turns a sentence into a rule work must follow
→ /standing turns a message into a rule work must follow
/task starts work you can walk away from
→ /task starts a single-shot task on the side
ctrl+shift+t reopens the last closed conversation tab
→ ctrl+shift+t reopens the last conversation tab
/project sets the project folder for the next conversation
→ /project sets the project folder for a new conversation
/model lists every model, /model <slug> switches at once
→ /model lets you see and choose models and providers
using enter steers conversations · use ctrl+q to queue
→ using enter steers conversations · use ctrl+q to queue messages
THE COMMAND IS `/files` AND THE ROW SAYS SO. The owner wrote `/file`. The
table has no such command and no such alias (commands.go), and a tip
naming a word that answers `there is no command called /file` teaches a
dead end — which is what the `/folder` row was taken off for.
`on the side` rather than `one the side`, under the owner's standing
order to fix grammar without asking.
The manual follows on every line, including the three quoted frames on
the home and places pages and the two examples in the hints page's own
prose. notice_test.go's fixture tip follows /files.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The owner met it: after `/project <path>` home's keys row was gone,
replaced by `project · ~/Code/deep-swe`, and it stayed that way until
they pressed a key.
Home's sentence is the REFUSAL SLOT. It is drawn IN PLACE OF the keys row
(homephone.go's [app.homeBar]: "a refusal outranks the bar") and stands
until the next keystroke clears it. That is right for a refusal — it is a
fact about a door somebody just tried, and nothing else on the screen
carries it. It is wrong for a success, and this one was wrong twice over:
- it hid the keys row for as long as it stood, which is what the owner
saw and had no way to read as anything but a stuck screen;
- the row it was covering already said the same thing. The pin is a
string on this window, so `project: <path>` is at the right end of
those keys from the very next frame. The comment two lines above the
call said exactly that and the call contradicted it.
The browser road has never said anything, for this reason (folderact.go's
[app.targetFolderConfirm]), so the typed road was also the odd one out.
Both refusals still speak: `no folder there · <path>`, and the connection
one over --host.
The probe that found it: home's foot after `/project` read
` → options · project · /var/…` and after one keystroke
` → options · alt+p project · / commands project: /var/…`. It now reads
the second on both sides of the command.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The owner's word, 2026-09-23: undo it. With no conversation store behind the window the place says `there is no index of this machine's conversations behind this window, so nothing can be searched from here.` and searches nothing, which is what it did until 2026-09-22. Gone with it: `byName`, `searchByName`, `searchByNameWord` and `searchNothingNamed`. `noIndex` is back, and it is again `a.searchStore == nil && !a.hosted()` — the hosted case has its own sentence naming WHOSE index is missing, which is the better one where it applies. `searchTick` stops reading the world and just puts the waiting flag down. WHY THE REFUSAL IS THE RIGHT ANSWER, written down where the flag is read: a place called `search` that quietly searches something narrower than it says reads exactly like a whole search that found nothing. The refusal is a fact a person can act on; half a search is one they cannot see. The `places` page says the refusal, says why, and points at home's box for finding a conversation by name — which is the door that has never needed the index. The `commands` page's `/search` paragraph follows. The test that held the by-name search now holds the refusal: nothing is drawn under the words, no store read goes out, and the page never claims nothing was said. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ZeroPoint95
marked this pull request as ready for review
September 23, 2026 13:33
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.
One list of tips, two boxes, two rules. Home rotates through them; a conversation ranks them. All are eventually retired.
Every tip retires eventually - even if not used - after 6 showings in rotation.
Users also have the option to disable hints altogether:
rm ~/.codeaf/notices.json— wipes your ledger so every tip is new againbin/codeaf. The dim line above the rule on home, with a bulb and a cross, is the tip rownote - this branch includes: #1388 (
space spaceand? ask/+ newrevival)The twenty-two tips
One table, both boxes. Row 13 is the only home-only row. "always" means from the first minute on home, and after the first exchange in a conversation.
/compact summarizes the conversation now/compactfinishes/cost says what this conversation has spent/costansweredesc esc or /rewind takes back an earlier message/files finds files codeaf wrote for you/filesreached for/resume opens an earlier conversation/resumereached for/standing turns a message into a rule work must follow/task starts a single-shot task on the side/tasktypedctrl+enter makes your message a rule instead of a request/manual answers any question about codeaf/manualreached forctrl+shift+t reopens the last conversation tabtype @ to find paths in the current project@list opens/attach sends a file or folder with your message/project sets the project folder for a new conversation/projectreaches a folder/export writes the current conversation to a file/model lets you see and choose models and providers/crew sets the models codeaf uses on its own behalf/crewanswered/budget sets the spending cap for the day/budgetansweredusing enter steers conversations · use ctrl+q to queue messagesctrl+t starts a fresh chat in this project/remember carries a fact forward, /forget drops it/rememberruns/connect links Notion, Slack and other services/autonomy sets how questions are handled while you are away/autonomyreached forRows 6 and 8 teach the same door and retire together: use
/standingonce and both go.Added
/project, home only. With a path it pins and opens nothing; bare, it opens the browser@on home — files and folders, ranked as you type, enter puts the path in.escpeels the list, then the box, then the screen/attachtakes a folder, not just a file. Bare on home it opens the browserChanged — commands
/foldermeans one thing everywhere: a folder the conversation is about. It never moves the working directory/manualis a turn — the question goes to the model.codeaf manualstill prints the pages/projectwith a path says nothing now. Its confirmation was drawn in the refusal slot, which hides home's keys row until the next keystroke — and those keys already end withproject: <path>. Both refusals still speak/attachin the command list opens the browser at onceChanged — other
prioritycolumn. Every row draws on both boxes, and a gesture on either retires it on bothRenamed
disable hintson the Workspace tab, off by default. The stored key keeps its bytes asui.hints;internal/configinverts onceRemoved
/image—/attachalready tells a picture by its namectrl+.,alt+1–alt+7,/search,/subharness: the foot and the/list already name them.ctrl+b's came off while copy mode stayed./ask's came off first, then Restore double-space Home navigation and ask-here choices #1388 removed/ask./folder's was untrue. The second/attachrow was one too manyFixed
/folder picks the folder codeaf works inwas false. It never did@tip promised a list home did not haveno such file/attachon home saidtype the path after /attach/attachtipsInternal
eventTaskStartedandeventTaskPageOpenedstill fire. Nothing waits on them yethints-and-tips.mdto every line in the table, word for worddev(feat(tui): share randomized working-logo animations across chat and tasks #1384, the working logo). A freeze lays the page out after copy mode owns it — kept on both doorsescis the interrupt again,/askis gone,ask hereis back. No tip for two spaces: the foot saysspace space homeoutright. If Restore double-space Home navigation and ask-here choices #1388 lands first, this copy merges away to nothingProof
make pr-ready— the laws and the light gate, then freshconfig,manual,e2eandtui3internal/provider'sTestTheWarmTranscriptEncodeCostsTheSameAtEightyTurnsAsAtEight/breakpointsis red ondevtoo, imports nothing this branch changes, and is outside the touched set.🤖 Generated with Claude Code