Skip to content

Feat/2464 - #492

Open
conradmugabe wants to merge 10 commits into
mainfrom
feat/2464
Open

Feat/2464#492
conradmugabe wants to merge 10 commits into
mainfrom
feat/2464

Conversation

@conradmugabe

@conradmugabe conradmugabe commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Checklist

  • Tests were added/updated according to the feature/bugfix/change made
  • Version was rolled according to semver requirements
  • API endpoints openapi schema was updated if applicable

Changes

Screenshots

Screencast.from.2026-09-07.18-02-37.mp4

conradmugabe and others added 10 commits September 7, 2026 16:30
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 conradmugabe self-assigned this Sep 7, 2026
@conradmugabe conradmugabe added the run-tests Trigger PR validation pipeline label Sep 7, 2026
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

PR E2E - FAILED

Full report, traces and screenshots

result FAILED
central run 34149681817
commit 54f93c22
suite mentor - mode full - env stg1
tested against prod release 1.178.0 (env was synced to it first)
failed 3
new failures 2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-tests Trigger PR validation pipeline

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants