-
Notifications
You must be signed in to change notification settings - Fork 14
feat(APP-998): support chat side panel, email escape hatch, centralized copy #1242
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
tyhonchik
wants to merge
7
commits into
main
Choose a base branch
from
app-998-polish-chat-assistant-ux-and-centralize-chat-copy
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
61a8f97
feat(APP-998): replace support chat overlay with resizing side panel
tyhonchik f555806
feat(APP-998): replace support portal links in the chat with a suppor…
tyhonchik 5c5672e
refactor(APP-998): centralize chat and assistant copy
tyhonchik 91d74b5
chore(APP-998): add changesets
tyhonchik d6f93c7
chore(APP-998): align assistant release flow with the app release pat…
tyhonchik 6aa73d2
chore(APP-998): centralize release scopes and validate changesets aga…
tyhonchik fae492f
fix(APP-998): make the fullscreen chat drawer modal for keyboard and …
tyhonchik File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@aragon/assistant": patch | ||
| --- | ||
|
|
||
| Move the static Linear ticket texts into chat/prompts/issueTexts.ts so all service copy lives under chat/prompts/ |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@aragon/assistant-chat": minor | ||
| --- | ||
|
|
||
| Chat escape hatches point to support@aragon.org instead of the support portal; all widget copy is centralized in a single copy module |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| "@aragon/app": minor | ||
| --- | ||
|
|
||
| Support chat opens as a side panel the layout resizes around (toggled from the navigation bar) instead of a blur overlay |
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| name: Generate Version Summary | ||
| description: Generates a per-package bump summary (new version + changelog section) for the scoped packages; run after `changeset version`, before committing. | ||
|
|
||
| inputs: | ||
| scope: | ||
| description: Name of a release scope in .github/release-scopes.yml whose packages are inspected for uncommitted version bumps | ||
| required: true | ||
|
|
||
| outputs: | ||
| summary: | ||
| description: Generated summary markdown (one section per bumped package) | ||
| value: ${{ steps.summary.outputs.summary }} | ||
|
|
||
| runs: | ||
| using: composite | ||
| steps: | ||
| - id: summary | ||
| shell: bash | ||
| env: | ||
| SCOPE: ${{ inputs.scope }} | ||
| run: | | ||
| set -euo pipefail | ||
| node .github/workflows/scripts/generateVersionSummary.js |
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| # Central package→release-scope mapper: each scope lists the packages one release flow versions | ||
| # together (the `scope` input of the changeset-version action names an entry here). A changeset | ||
| # must never mix packages from different scopes — `changeset version --ignore` refuses mixed | ||
| # changesets, which breaks every scoped flow. CI enforces this via `pnpm validate:changesets`. | ||
| # When a new workspace lands, add it to a scope HERE — flows and validation read this file. | ||
|
|
||
| app: | ||
| - "@aragon/app" | ||
|
|
||
| assistant: | ||
| - "@aragon/assistant" | ||
| - "@aragon/assistant-contracts" | ||
| - "@aragon/assistant-chat" | ||
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,123 @@ | ||
| # The "Assistant Release Start" workflow prepares the assistant release pull request ON DEMAND | ||
| # (trunk-based: merging to main never starts a release by itself). Dispatching it applies | ||
| # `changeset version` scoped to the assistant domain packages, pushes the bump to a timestamped | ||
| # release/assistant/* branch and opens a "Release @aragon/assistant@x.y.z" PR whose description | ||
| # lists every bumped package with its new changelog. Merging that PR is the release act — the | ||
| # finalize workflow (assistant-release-pr-finalize.yml) tags the merge commit and the tag triggers | ||
| # the production deploy. | ||
|
|
||
| name: Assistant Release Start | ||
|
|
||
| on: | ||
| workflow_dispatch: | ||
| inputs: | ||
| base_commit: | ||
| description: 'Commit SHA to start release from (default: main HEAD)' | ||
| required: false | ||
| type: string | ||
|
|
||
| permissions: | ||
| contents: write | ||
| pull-requests: write | ||
|
|
||
| jobs: | ||
| prepare-release: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Load secrets | ||
| id: load-secrets | ||
| uses: 1password/load-secrets-action@3a12b0ab99d9cd590a3e9b5a90ea017210ed9556 # v4.0.0 (https://github.com/1Password/load-secrets-action/releases/tag/v4.0.0) | ||
| with: | ||
| export-env: false | ||
| env: | ||
| OP_SERVICE_ACCOUNT_TOKEN: '${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}' | ||
| GPG_PASSPHRASE: op://kv_app_infra/arabot-1_SIGN_CERTS/credential | ||
| GPG_PRIVATE_KEY: op://kv_app_infra/arabot-1_SIGN_CERTS/private_key | ||
| ARABOT_PAT: op://kv_app_infra/ARABOT_PAT/credential | ||
|
|
||
| - name: Checkout actions | ||
| uses: actions/checkout@v7.0.0 | ||
| with: | ||
| fetch-depth: 1 | ||
| sparse-checkout: | | ||
| .github/actions/setup | ||
|
|
||
| - name: Setup | ||
| uses: ./.github/actions/setup | ||
| with: | ||
| token: ${{ steps.load-secrets.outputs.ARABOT_PAT }} | ||
| fetch-depth: 0 | ||
| ref: ${{ inputs.base_commit || 'main' }} | ||
|
|
||
| - name: Import GPG key | ||
| uses: crazy-max/ghaction-import-gpg@2dc316deee8e90f13e1a351ab510b4d5bc0c82cd # v7.0.0 (https://github.com/crazy-max/ghaction-import-gpg/releases/tag/v7.0.0) | ||
| with: | ||
| gpg_private_key: ${{ steps.load-secrets.outputs.GPG_PRIVATE_KEY }} | ||
| passphrase: ${{ steps.load-secrets.outputs.GPG_PASSPHRASE }} | ||
| git_user_signingkey: true | ||
| git_commit_gpgsign: true | ||
|
|
||
| # This flow owns the "assistant" release scope (see .github/release-scopes.yml): the | ||
| # service plus its version-only packages. App-scoped packages are versioned by the app | ||
| # release flow (app-release-start.yml), which symmetrically owns the "app" scope. | ||
| - name: Update version and changelog | ||
| uses: ./.github/actions/changeset-version | ||
| with: | ||
| scope: assistant | ||
| prettier_changelog: "true" | ||
| github_token: ${{ steps.load-secrets.outputs.ARABOT_PAT }} | ||
|
|
||
| # Versioning runs before the release branch exists so a dispatch without pending | ||
| # changesets exits here without leaving an empty branch or PR behind. | ||
| - name: Detect version changes | ||
| id: changes | ||
| run: echo "dirty=$([ -n "$(git status --porcelain)" ] && echo true || echo false)" >> $GITHUB_OUTPUT | ||
|
|
||
| - name: Get package version | ||
| if: steps.changes.outputs.dirty == 'true' | ||
| id: package-version | ||
| uses: martinbeentjes/npm-get-version-action@3cf273023a0dda27efcd3164bdfb51908dd46a5b # v1.3.1 (https://github.com/martinbeentjes/npm-get-version-action/releases/tag/v1.3.1) | ||
| with: | ||
| path: apps/assistant | ||
|
|
||
| # Per-package tag in the changesets-native format: @aragon/assistant@0.2.0. The tag anchors | ||
| # on the deployable service; the version-only packages ship inside their consumers untagged. | ||
| - name: Compute release tag | ||
| if: steps.changes.outputs.dirty == 'true' | ||
| id: release-tag | ||
| run: echo "name=@aragon/assistant@${{ steps.package-version.outputs.current-version }}" >> $GITHUB_OUTPUT | ||
|
|
||
| - name: Generate version summary | ||
| if: steps.changes.outputs.dirty == 'true' | ||
| id: version-summary | ||
| uses: ./.github/actions/generate-version-summary | ||
| with: | ||
| scope: assistant | ||
|
|
||
| - name: Generate release branch name | ||
| if: steps.changes.outputs.dirty == 'true' | ||
| id: branch-name | ||
| run: echo "name=release/assistant/$(date +'%Y-%m-%d_%H-%M')" >> $GITHUB_OUTPUT | ||
|
|
||
| - name: Commit and push release branch | ||
| if: steps.changes.outputs.dirty == 'true' | ||
| run: | | ||
| git checkout -b ${{ steps.branch-name.outputs.name }} | ||
| git add --all | ||
| git commit -m "Release ${{ steps.release-tag.outputs.name }}" | ||
| git push origin ${{ steps.branch-name.outputs.name }} | ||
|
|
||
| - name: Ensure Pull Request | ||
| if: steps.changes.outputs.dirty == 'true' | ||
| uses: ./.github/actions/gh-ensure-pr | ||
| with: | ||
| base: main | ||
| head: ${{ steps.branch-name.outputs.name }} | ||
| title: Release ${{ steps.release-tag.outputs.name }} | ||
| body: | | ||
| Merging this PR releases `${{ steps.release-tag.outputs.name }}`: the merge commit is | ||
| tagged and the tag triggers the production deploy to assistant.aragon.org. The | ||
| version-only packages below ship inside their consumers and get no tag of their own. | ||
|
|
||
| ${{ steps.version-summary.outputs.summary }} | ||
| token: ${{ steps.load-secrets.outputs.ARABOT_PAT }} |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@aragon/assistant-chatships inside the app bundle (@aragon/appdepends on it and the app release filter includespackages/assistant-chat/**), but this maps it only to the assistant release scope. That means an app release can deploy assistant-chat changes without consuming the assistant-chat changeset/version/changelog; the package version would move later through an assistant flow that doesn't deploy the widget.Can we either put app-bundled packages in the app scope, or make the coupled release behavior explicit so the tag that deploys the app also consumes the widget changeset it ships?