Skip to content

feat(bots): always-on bots you can chat with from web and mobile - #21

Open
vkpdeveloper wants to merge 4714 commits into
mainfrom
feat/bots
Open

vkpdeveloper wants to merge 4714 commits into
mainfrom
feat/bots

Conversation

@vkpdeveloper

@vkpdeveloper vkpdeveloper commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner

I wanted always-on assistants like Grok's bots: give one a name, a face, a model and a machine, then just talk to it from web or my phone. Today every chat is a throwaway thread tied to a repo, so there was no place for that.

A bot is now a project with one long-lived session on the computer you pick. Create it from the Bots sidebar (web) or the new Bots tab (mobile, replaces Usage, which moves into Settings).

Bots sidebar / Bots tab
  New bot  -> createBot RPC -> project (kind: bot) + its single thread on the chosen computer
  Bot chat -> normal turn pipeline, bot header (face + name), no git / New task
  Details  -> Details | Artifacts (folders, file icons, download) | Computer
  Replies  -> mobile push with the final reply text
  • Server: createBot is retry-safe and cleans up on failure. Migration 078_ProjectionProjectBot stores the avatar and model.
  • Client runtime: shared bot list state, avatar shapes and colours, and the commands. The list shows each bot's last message and unread replies.
  • Web: Grok-style sidebar, a bot page, a New bot dialog using the composer model picker, and animated avatars that blink and glance. The Artifacts tab browses the bot's folders and downloads files to Downloads.
  • Mobile: Bots tab, New bot form with avatar, model and machine pickers, a bot details sheet, and push notifications for bot replies.

New bot form
Bot artifacts tab

Note: a bot can only be created on a computer running this build. Older servers lack the createBot RPC and fail with "An error occurred".

Validation: vp run check:changed passes (format, lint, knip, typecheck, tests, React Compiler). Tested in the web app at desktop and phone widths, and on Android.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Nov 2, 2026
@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for cd6ac93.

This comment will update automatically after the next completed run.

flamboh and others added 27 commits November 12, 2026 15:20
Move the focused chat into a new workspace above the first workspace, while keeping a lone chat in place.
…overview

Keep the workspace pill attached to the focused pane during workspace motion and show it after overview closes.
Skip pane slides whose movement rounds to zero device pixels, avoiding synchronous animation completion during entry initialization.
Keep focus stable during background tab insertion so normalization preserves the focused empty workspace. Retain existing valid pane focus restoration.
Ignore wheel and pinch gestures from portaled layers in the overview, so the command palette keeps its own scrolling.
Send layout-tab visits only when the corresponding thread is on screen, keeping finished off-screen work unread until it becomes visible.
flamboh and others added 30 commits November 12, 2026 22:08
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 2b16d1e)
… in an unmount effect

The closing pane's copy is now taken by a layout store subscription in paneMotion, while the pane is still drawn and before React tears it down, and handed to its ghost once the pane leaves the stage. This removes useKeepClosingPane's layout effect from SurfaceHost and covers every path that removes a tab, since all of them change the layout store.

Made with Claude Opus 5.5 in Claude Code.

(cherry picked from commit a86691f)
The context strip measured each chip from its HTML children, so a chip's SVG icon,
gap, padding and border went uncounted. The env chip read 36px narrower than it
was, the strip kept its labels while the row no longer fit, and the model chip
shrank to an ellipsis instead.

Chips that do not grow are now measured by their own box. The model chip and the
env chip no longer shrink, so the branch is the only label that can ellipsize,
and the unused squeezed-picker minimum width is gone.

Made with Claude Opus 5.5 in Claude Code.

(cherry picked from commit 55fef02)
Carries the rest of pingdotgg#31401 as its author resolved it against the rebased
stack: below the 620px composer cutoff the mode, effort and model labels
collapse as one step, and the run-on chip takes the footer gap and
no-shrink rules that the deleted environment selector used to carry.

(cherry picked from commit e5356eb)
…he same frame

Drop the per-frame ResizeObserver effect. The patched LegendList takes
immediateWebShrinks, and the timeline turns it on while a disclosure
toggle settles or the working history collapses, so the list's own
measurement no longer lags a frame.

Claude Opus 5.5 in Claude Code (T3 Code).

(cherry picked from commit 6752e17)
…imeline

The banner's Retry sends the failed run's prompt again as a new message.
That message now carries retryOfRunId, and web and mobile timelines,
thread search, and find-in-thread leave it out, so the prompt shows once.

(cherry picked from commit bda78d4)
A running turn now keeps following its end while the work history is
open and after it collapses. The timeline only holds still while the
history opens or collapses. If opening pushes the end more than a
screen away, follow is released so the scroll-to-end pill shows.

Smooth follow also catches growth that lands mid-scroll: when the
smooth scroll ends, or when content grows while no scroll is running,
the timeline scrolls to the new end instead of waiting for the list's
next 500 ms retry or the turn's settle.

(cherry picked from commit 0ad5124)
Reuse the redesign status model, semantic typography and native row surfaces while preserving its workspace integration and scheduled layout reads.

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit aef6c56)
Cover row text beneath finite reflow animations and clear the moving marker when the animation ends or is cancelled.

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
(cherry picked from commit 6c8d610)
Measure the source before dnd-kit has populated its first rectangle, then constrain the destination-sized preview with its grab offset already applied. Keep displaced pins opaque while sorting.

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
(cherry picked from commit ce9a0db)
The tile markup came from the previous integration's port of pingdotgg#30016. The rebased stack's thread rows are buttons in tab order and read their time from resolveThreadActivityTimestamp, which pingdotgg#30016's latest head also uses.

(cherry picked from commit 92318ea)
…tion state

pingdotgg#31521 renamed workingHistoryCollapsing to workingHistoryMoving; the
recorder that Maria's Nov 12 stack added still read the old name.
Upstream pingdotgg#33994 shows zero seconds in minute durations, so the pingdotgg#32465
running timer reads "for 1h 2m 0s".
… main into feat/bots

Brings in integrate/redesign-20261112b: Maria's stack tip fb2762f,
the fix PRs that were closed today (re-applied by Vaibhav's decision),
pingdotgg#35317, and upstream main fd8e386.

Restores contextStripMeasurement's browser test now that pingdotgg#31401 brings
the module back.
…ress

Tailscale Serve now targets the bound address (pingdotgg#34741), but that change also
moved the T3 Connect tunnel origin off loopback, so link proofs rejected it.
Serve keeps the bound host; Connect goes back to the loopback origin.
…ails card

The redesign moved the machine and workspace chips from the composer into the
thread details card, so mod+shift+H and mod+shift+X looked for a button that was
no longer there. They now open the card and that row's menu, like the branch
shortcut. Each panel row answers only its own shortcut.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants