componentsfix(agenda): the opening divider is a node now, not a decoration
The rule between the agenda's opening and its first section was a widget
decoration anchored to whatever the first heading happened to be. Pressing
Enter at the start of a heading splits it into an empty paragraph plus the
heading, the decoration re-anchored, and the new line landed ABOVE the rule;
Backspace could never remove it, because there was nothing in the document to
remove.
It is a real `horizontalRule` node now — `---` in the grammar, both directions,
on the client and the server. The PARSER writes it rather than the agent, which
keeps the reason it was derived in the first place (one less token to forget,
misplace or emit twice) while making it something the user owns: the caret sits
beside it, Enter splits below it, Backspace deletes it, and a deletion sticks.
Opt-in per surface, because the conversation agenda shares this grammar and has
no opening half for a seam to separate. The three no-rule cases still fall out
rather than being special-cased. Existing agendas gain it the next time markdown
becomes JSON — the round-trip is the migration, as it is for taskGroupSection.
Co-Authored-By: Claude Opus 5 (1M context) <<email>>Sep 2, 2026, 3:13 PMdeepDebuggerrefactor(debugger): suffix all debugger tabs with DebuggerTab
Rename every tab in the debugger module from XxxTab to XxxDebuggerTab so
they no longer collide by name with real feature tabs (e.g. the
conversations timeline TimelineTab).
Co-Authored-By: Claude Opus 4.8 (1M context) <<email>>Jun 15, 2026, 1:02 PMtypesrefactor: remove unused cedar-os slices\Feb 26, 2026, 11:06 PMindex.tsrefactor(debugger): suffix all debugger tabs with DebuggerTab
Rename every tab in the debugger module from XxxTab to XxxDebuggerTab so
they no longer collide by name with real feature tabs (e.g. the
conversations timeline TimelineTab).
Co-Authored-By: Claude Opus 4.8 (1M context) <<email>>Jun 15, 2026, 1:02 PM