Feat/2464 - #492
Open
conradmugabe wants to merge 10 commits into
Open
Conversation
CHANGELOG.md is not prettier-clean on main, and the pre-commit hook runs `prettier --write .` followed by `git add -u`. Left alone, that sweeps the reformat into whichever feature commit happens to land first. Isolating it here keeps the rest of this branch's diff to real changes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FjkuYcvJoTRReFEYcy2yQa
Pure helpers that turn chat messages into a downloadable plain-text transcript: `flattenMarkdown` strips formatting while preserving line structure, and the two builders assemble either a whole conversation or a single message. `flattenMarkdown` is deliberately separate from canvas-utils' `stripMarkdownFormatting`, which collapses all whitespace to single spaces — right for a filename, but it would destroy a transcript's paragraphs, lists, and code blocks. System messages and messages flagged `visible: false` are excluded so the transcript matches what the user actually saw. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FjkuYcvJoTRReFEYcy2yQa
Adds the `chatAiMessageDownload` namespace across all four catalogs: the control's label and tooltip, the dialog title, the two scope options with their descriptions, and the transcript's own header and role labels. The dialog title is title-cased in English only — Spanish and French use sentence case for titles, and Chinese has no letter case. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FjkuYcvJoTRReFEYcy2yQa
A download button for AI replies, styled to match the neighbouring share control. It opens a dialog offering two radio options — the entire conversation (preselected) or just the selected reply — each with a short description, and a single Download action. Cancel is deliberately absent: the dialog already dismisses via its close button and Escape, so a third button earned nothing. The choice resets to the default every time the dialog opens rather than remembering the last one used. The radio's accent is set with explicit colour utilities rather than the `.ibl-outline-primary` class, because tailwind-merge can only drop the item's built-in `border-primary`/`text-primary` when the override is a real utility; against a custom class it would silently fall back to stylesheet order. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FjkuYcvJoTRReFEYcy2yQa
Renders the download button beside share in the AI reply's action toolbar, behind the same gate: hidden while viewing a shared chat and while chat privacy is active, so it never offers to export a conversation the user is only borrowing or one deliberately kept ephemeral. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FjkuYcvJoTRReFEYcy2yQa
The merge from origin/main brought in release notes that are not prettier-clean, and the pre-commit hook reformats them and stages the result. Isolating that here again keeps the E2E commits to real changes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FjkuYcvJoTRReFEYcy2yQa
`sendMessage` located the composer with `getByRole('textbox', …)`, but the
textarea renders `role="combobox"` whenever the current mentor has skills
enabled — so the method shared by nearly every journey silently matched
nothing against any such mentor.
The repo already had `getComposerTextarea()` (`#chat-input-textarea`, a
stable production id) and already worked around this ad-hoc in journeys
29, 42, 54, and 67; `sendMessage` was simply never updated. This widens
only the lookup inside `sendMessage`, which has no reason to care about
the composer's ARIA role. `chatInput` itself is untouched, so journey 43,
which deliberately asserts role and name behaviour, is unaffected.
Also adds the download-dialog locators and helpers the chat download
checkpoints need.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FjkuYcvJoTRReFEYcy2yQa
Journey 12 gains sh-07 through sh-10: the dialog opens with the whole conversation preselected and both descriptions shown; the default choice downloads a chat-*.txt carrying both turns; picking "This message only" downloads a message-*.txt that excludes the earlier user message; and Escape dismisses without a download. The download assertions read the file's contents rather than only its name — a name check alone would pass on an empty transcript. Timestamps are deliberately not asserted, since they would flake. Journey 50 gains cp-chat-10, mirroring cp-chat-09 for the download control: hidden in private mode, where there is no durable session. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FjkuYcvJoTRReFEYcy2yQa
Adds sh-07 … sh-10 and cp-chat-10 to the coverage manifest and its companion document, and lists the download component and transcript builders among the chat-sharing journey's source files. Total covered checkpoints move from 711 to 716. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FjkuYcvJoTRReFEYcy2yQa
conradmugabe
requested review from
michael-on-code,
razasaddiqi and
sonegillis1
September 7, 2026 17:48
Contributor
PR E2E - FAILEDFull report, traces and screenshots
|
michael-on-code
approved these changes
Sep 7, 2026
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.
Checklist
Changes
Screenshots
Screencast.from.2026-09-07.18-02-37.mp4