Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/2319-bubble-image-delegate.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
An image in a chat bubble shows its picture again instead of only the alt text: the bubble's Markdown is no longer wrapped in a delegate of its own, so the host's image resolver and file opener reach it again and a local `[x](path#L12)` link keeps its chip. A link is still taken by FlyBot's own browser panel, now from a capture-phase click on the bubble or on the person's own line, while a mention, a file link and a modified or middle click are left to the host (#2319).
77 changes: 42 additions & 35 deletions core/client.js

Large diffs are not rendered by default.

108 changes: 57 additions & 51 deletions core/src/client/cells.js

Large diffs are not rendered by default.

418 changes: 353 additions & 65 deletions core/test/chat-link-open.test.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/subsystems/core-client.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ The browser side of the patched `ds-bot` core (`core/`): sources in `core/src/cl
- Chat context rows: a tool the plugin registers at install draws one `tool-addition` row, and `cells.js` keeps every name in `TEAM_TOOLS` out of the chat (`SILENT_REGISTRATION_TOOLS`, #1101) — the Project Assistant's `project_digest` joins them (#1712), so its 09:00 Session shows the digest, not its registration.
- A Settings dialog takes focus when it opens (`useDialogFocus` in `core/src/client/overlay-hooks.js`; the `.bt-settings` dialog carries `tabIndex -1` and a ref) and gives it back to the still-connected opener when it closes; it is not a focus trap, so Tab can still leave the dialog for the page behind the scrim (#2251). It is drawn for `DIALOG_EXIT_MS` (160 ms) with `pointer-events: none` on the leaving layer, so the unmount restores focus only while the dialog still holds it (or nothing does) — a click on the page during that window keeps its focus (#2270).
- Settings → Feedback's error list (`feedback.js`) still titles the block with the whole log (`Recent errors · 60`) but lists only the newest eight, so when the report holds more rows one `Show more` control (`aria-expanded`) sits under them and draws every loaded error, folding back to `Show less`; a report of eight or fewer draws no control (#2266).
- A link picked in a chat message opens in FlyBot's own panel: `cells.js` scopes the bubble's Markdown in `MarkdownDelegateProvider`, whose `openExternalLink` puts a tab in the panel's browser view (the globe button's view) with `actions.browserNewTab` and carries the URL with `actions.browserNavigate`; `browserNewTab` answers `null` for a Bot outside the roster and the navigation is skipped; without the Desktop bridge there is no panel and the page opens in the window itself. Left to the host the click opened a tab in the host's right sidebar, which this panel's fixed layer covers, so the content area looked blank (#2201). Tests: `core/test/chat-link-open.test.js`.
- A link picked in a chat message opens in FlyBot's own panel: a capture-phase click handler on each bubble and on the person's own line (`bubbleLinkClick` in `cells.js`; a group card's container carries none, so a reply's link opens the tab of the Bot that spoke) takes an `http(s)` anchor before the host's delegate does, puts a tab in the panel's browser view (the globe button's view) with `actions.browserNewTab` and carries the URL with `actions.browserNavigate`; `browserNewTab` answers `null` for a Bot outside the roster, and with no tab — or no Desktop bridge — the page opens in the window itself. A mention, a file link and a modified or middle click are left alone, and the bubble renders bare `MarkdownText` so the host's `openFile`/`fileImages` reach it: a nested `MarkdownDelegateProvider` replaces the host's capabilities, and one that lacked `fileImages` drew every bubble image as its alt text (#2319). Left to the host a click opened a tab in the host's right sidebar, which this panel's fixed layer covers, so the content area looked blank (#2201). Tests: `core/test/chat-link-open.test.js`.

## Does not own

Expand Down
151 changes: 71 additions & 80 deletions patches/ds-bot/0003-flybot-api-client.patch

Large diffs are not rendered by default.

2,382 changes: 1,147 additions & 1,235 deletions patches/ds-bot/0008-client-bundle.patch

Large diffs are not rendered by default.

418 changes: 353 additions & 65 deletions patches/ds-bot/files/test/chat-link-open.test.js

Large diffs are not rendered by default.

Loading