Skip to content

Commit

Permalink
Merge tag 'v3.48.0' into sc
Browse files Browse the repository at this point in the history
* Remove Piwik support ([\matrix-org#8835](matrix-org#8835)).
* Move New Search Experience out of beta ([\matrix-org#8859](matrix-org#8859)). Contributed by @justjanne.
* Switch video rooms to spotlight layout when in PiP mode ([\matrix-org#8912](matrix-org#8912)). Fixes element-hq/element-web#22574.
* Live location sharing - render message deleted tile for redacted beacons ([\matrix-org#8905](matrix-org#8905)). Contributed by @kerryarchibald.
* Improve view source dialog style ([\matrix-org#8883](matrix-org#8883)). Fixes element-hq/element-web#22636. Contributed by @luixxiul.
* Improve integration manager dialog style ([\matrix-org#8888](matrix-org#8888)). Fixes element-hq/element-web#22642. Contributed by @luixxiul.
* Implement MSC3827: Filtering of `/publicRooms` by room type ([\matrix-org#8866](matrix-org#8866)). Fixes element-hq/element-web#22578.
* Show chat panel when opening a video room with unread messages ([\matrix-org#8812](matrix-org#8812)). Fixes element-hq/element-web#22527.
* Live location share - forward latest location ([\matrix-org#8860](matrix-org#8860)). Contributed by @kerryarchibald.
* Allow integration managers to validate user identity after opening ([\matrix-org#8782](matrix-org#8782)). Contributed by @Half-Shot.
* Create a common header on right panel cards on BaseCard ([\matrix-org#8808](matrix-org#8808)). Contributed by @luixxiul.
* Integrate searching public rooms and people into the new search experience ([\matrix-org#8707](matrix-org#8707)). Fixes element-hq/element-web#21354 and element-hq/element-web#19349. Contributed by @justjanne.
* Bring back waveform for voice messages and retain seeking ([\matrix-org#8843](matrix-org#8843)). Fixes element-hq/element-web#21904.
* Improve colors in settings  ([\matrix-org#7283](matrix-org#7283)).
* Keep draft in composer when a slash command syntax errors ([\matrix-org#8811](matrix-org#8811)). Fixes element-hq/element-web#22384.
* Release video rooms as a beta feature ([\matrix-org#8431](matrix-org#8431)).
* Clarify logout key backup warning dialog. Contributed by @notramo. ([\matrix-org#8741](matrix-org#8741)). Fixes element-hq/element-web#15565. Contributed by @MadLittleMods.
* Slightly improve the look of the `Message edits` dialog ([\matrix-org#8763](matrix-org#8763)). Fixes element-hq/element-web#22410.
* Add support for MD / HTML in room topics ([\matrix-org#8215](matrix-org#8215)). Fixes element-hq/element-web#5180. Contributed by @Johennes.
* Live location share - link to timeline tile from share warning ([\matrix-org#8752](matrix-org#8752)). Contributed by @kerryarchibald.
* Improve composer visiblity ([\matrix-org#8578](matrix-org#8578)). Fixes vector-im/element-web#22072 and element-hq/element-web#17362.
* Makes the avatar of the user menu non-draggable ([\matrix-org#8765](matrix-org#8765)). Contributed by @luixxiul.
* Improve widget buttons behaviour and layout ([\matrix-org#8734](matrix-org#8734)).
* Use AccessibleButton for 'Reset All' link button on SetupEncryptionBody ([\matrix-org#8730](matrix-org#8730)). Contributed by @luixxiul.
* Adjust message timestamp position on TimelineCard in non-bubble layouts ([\matrix-org#8745](matrix-org#8745)). Fixes element-hq/element-web#22426. Contributed by @luixxiul.
* Use AccessibleButton for 'In reply to' link button on ReplyChain ([\matrix-org#8726](matrix-org#8726)). Fixes element-hq/element-web#22407. Contributed by @luixxiul.
* Live location share - enable reply and react to tiles ([\matrix-org#8721](matrix-org#8721)). Contributed by @kerryarchibald.
* Change dash to em dash issues fixed ([\matrix-org#8455](matrix-org#8455)). Fixes element-hq/element-web#21895. Contributed by @goelesha.
* Make invite dialogue fixed height ([\matrix-org#8945](matrix-org#8945)).
* Correct issue with tab order in new search experience ([\matrix-org#8919](matrix-org#8919)). Fixes element-hq/element-web#22670. Contributed by @justjanne.
* Clicking location replies now redirects to the replied event instead of opening the map ([\matrix-org#8918](matrix-org#8918)). Fixes element-hq/element-web#22667.
* Keep clicks on pills within the app ([\matrix-org#8917](matrix-org#8917)). Fixes element-hq/element-web#22653.
* Don't overlap tile bubbles with timestamps in modern layout ([\matrix-org#8908](matrix-org#8908)). Fixes element-hq/element-web#22425.
* Connect to Jitsi unmuted by default ([\matrix-org#8909](matrix-org#8909)).
* Maximize width value of display name on TimelineCard with IRC/modern layout ([\matrix-org#8904](matrix-org#8904)). Fixes element-hq/element-web#22651. Contributed by @luixxiul.
* Align the avatar and the display name on TimelineCard ([\matrix-org#8900](matrix-org#8900)). Contributed by @luixxiul.
* Remove inline margin from reactions row on IRC layout ([\matrix-org#8891](matrix-org#8891)). Fixes element-hq/element-web#22644. Contributed by @luixxiul.
* Align "From a thread" on search result panel on IRC layout ([\matrix-org#8892](matrix-org#8892)). Fixes element-hq/element-web#22645. Contributed by @luixxiul.
* Display description of E2E advanced panel as subsection text ([\matrix-org#8889](matrix-org#8889)). Contributed by @luixxiul.
* Remove inline end margin from images on file panel ([\matrix-org#8886](matrix-org#8886)). Fixes element-hq/element-web#22640. Contributed by @luixxiul.
* Disable option to `Quote` when we don't have sufficient permissions ([\matrix-org#8893](matrix-org#8893)). Fixes element-hq/element-web#22643.
* Add padding to font scaling loader for message bubble layout ([\matrix-org#8875](matrix-org#8875)). Fixes element-hq/element-web#22626. Contributed by @luixxiul.
* Set 100% max-width to display name on reply tiles ([\matrix-org#8867](matrix-org#8867)). Fixes element-hq/element-web#22615. Contributed by @luixxiul.
* Fix alignment of pill letter ([\matrix-org#8874](matrix-org#8874)). Fixes element-hq/element-web#22622. Contributed by @luixxiul.
* Move the beta pill to the right side and display the pill on video room only ([\matrix-org#8873](matrix-org#8873)). Fixes element-hq/element-web#22619 and element-hq/element-web#22620. Contributed by @luixxiul.
* Stop using absolute property to place beta pill on RoomPreviewCard ([\matrix-org#8872](matrix-org#8872)). Fixes element-hq/element-web#22617. Contributed by @luixxiul.
* Make the pill text single line ([\matrix-org#8744](matrix-org#8744)). Fixes element-hq/element-web#22427. Contributed by @luixxiul.
* Hide overflow of public room description on spotlight dialog result ([\matrix-org#8870](matrix-org#8870)). Contributed by @luixxiul.
* Fix position of message action bar on the info tile on TimelineCard in message bubble layout ([\matrix-org#8865](matrix-org#8865)). Fixes element-hq/element-web#22614. Contributed by @luixxiul.
* Remove inline start margin from display name on reply tiles on TimelineCard ([\matrix-org#8864](matrix-org#8864)). Fixes element-hq/element-web#22613. Contributed by @luixxiul.
* Improve homeserver dropdown dialog styling ([\matrix-org#8850](matrix-org#8850)). Fixes element-hq/element-web#22552. Contributed by @justjanne.
* Fix crash when drawing blurHash for portrait videos PSB-139 ([\matrix-org#8855](matrix-org#8855)). Fixes element-hq/element-web#22597. Contributed by @andybalaam.
* Fix grid blowout on pinned event tiles ([\matrix-org#8816](matrix-org#8816)). Fixes element-hq/element-web#22543. Contributed by @luixxiul.
* Fix temporary sync errors if there's weird settings stored in account data ([\matrix-org#8857](matrix-org#8857)).
* Fix reactions row overflow and gap between reactions ([\matrix-org#8813](matrix-org#8813)). Fixes element-hq/element-web#22093. Contributed by @luixxiul.
* Fix issues with the Create new room button in Spotlight ([\matrix-org#8851](matrix-org#8851)). Contributed by @justjanne.
* Remove margin from E2E icon between avatar and hidden event ([\matrix-org#8584](matrix-org#8584)). Fixes element-hq/element-web#22186. Contributed by @luixxiul.
* Fix waveform on a message bubble ([\matrix-org#8852](matrix-org#8852)). Contributed by @luixxiul.
* Location sharing maps are now loaded after reconnection ([\matrix-org#8848](matrix-org#8848)). Fixes element-hq/element-web#20993.
* Update the avatar mask so it doesn’t cut off spaces’ avatars anymore ([\matrix-org#8849](matrix-org#8849)). Contributed by @justjanne.
* Add a bit of safety around timestamp handling for threads ([\matrix-org#8845](matrix-org#8845)).
* Remove top margin from event tile on a narrow viewport ([\matrix-org#8814](matrix-org#8814)). Contributed by @luixxiul.
* Fix keyboard shortcuts on settings tab being wrapped ([\matrix-org#8825](matrix-org#8825)). Fixes element-hq/element-web#22547. Contributed by @luixxiul.
* Add try-catch around blurhash loading ([\matrix-org#8830](matrix-org#8830)).
* Prevent new composer from overflowing from non-breakable text ([\matrix-org#8829](matrix-org#8829)). Fixes element-hq/element-web#22507. Contributed by @justjanne.
* Use common subheading on sidebar user settings tab ([\matrix-org#8823](matrix-org#8823)). Contributed by @luixxiul.
* Fix clickable area of advanced toggle on appearance user settings tab ([\matrix-org#8820](matrix-org#8820)). Fixes element-hq/element-web#22546. Contributed by @luixxiul.
* Disable redacting reactions if we don't have sufficient permissions  ([\matrix-org#8767](matrix-org#8767)). Fixes element-hq/element-web#22262.
* Update the live timeline when the JS SDK resets it ([\matrix-org#8806](matrix-org#8806)). Fixes element-hq/element-web#22421.
* Fix flex blowout on image reply ([\matrix-org#8809](matrix-org#8809)). Fixes element-hq/element-web#22509 and element-hq/element-web#22510. Contributed by @luixxiul.
* Enable background color on hover for chat panel and thread panel ([\matrix-org#8644](matrix-org#8644)). Fixes element-hq/element-web#22273. Contributed by @luixxiul.
* Fix #20026: send read marker as soon as we change it ([\matrix-org#8802](matrix-org#8802)). Fixes element-hq/element-web#20026. Contributed by @andybalaam.
* Allow AppTiles to shrink as much as necessary ([\matrix-org#8805](matrix-org#8805)). Fixes element-hq/element-web#22499.
* Make widgets in video rooms immutable again ([\matrix-org#8803](matrix-org#8803)). Fixes element-hq/element-web#22497.
* Use MessageActionBar style declarations on pinned message card ([\matrix-org#8757](matrix-org#8757)). Fixes element-hq/element-web#22444. Contributed by @luixxiul.
* Expire video member events after 1 hour ([\matrix-org#8776](matrix-org#8776)).
* Name lists on invite dialog ([\matrix-org#8046](matrix-org#8046)). Fixes element-hq/element-web#21400 and element-hq/element-web#19463. Contributed by @luixxiul.
* Live location share - show loading UI for beacons with start timestamp in the future ([\matrix-org#8775](matrix-org#8775)). Fixes element-hq/element-web#22437. Contributed by @kerryarchibald.
* Fix scroll jump issue with the composer ([\matrix-org#8788](matrix-org#8788)). Fixes element-hq/element-web#22464.
* Fix the incorrect nesting of download button on MessageActionBar ([\matrix-org#8785](matrix-org#8785)). Contributed by @luixxiul.
* Revert link color change in composer ([\matrix-org#8784](matrix-org#8784)). Fixes element-hq/element-web#22468.
* Fix 'Logout' inline link on the splash screen ([\matrix-org#8770](matrix-org#8770)). Fixes element-hq/element-web#22449. Contributed by @luixxiul.
* Fix disappearing widget poput button when changing the widget layout ([\matrix-org#8754](matrix-org#8754)).
* Reduce gutter with the new read receipt UI ([\matrix-org#8736](matrix-org#8736)). Fixes element-hq/element-web#21890.
* Add ellipsis effect to hidden beacon status ([\matrix-org#8755](matrix-org#8755)). Fixes element-hq/element-web#22441. Contributed by @luixxiul.
* Make the pill on the basic message composer compatible with display name in RTL languages ([\matrix-org#8758](matrix-org#8758)). Fixes element-hq/element-web#22445. Contributed by @luixxiul.
* Prevent the banner text from being selected, replacing the spacing values with the variable ([\matrix-org#8756](matrix-org#8756)). Fixes element-hq/element-web#22442. Contributed by @luixxiul.
* Ensure the first device on a newly-registered account gets cross-signed properly ([\matrix-org#8750](matrix-org#8750)). Fixes element-hq/element-web#21977. Contributed by @duxovni.
* Hide live location option in threads composer ([\matrix-org#8746](matrix-org#8746)). Fixes element-hq/element-web#22424. Contributed by @kerryarchibald.
* Make sure MessageTimestamp is not hidden by EventTile_line on TimelineCard ([\matrix-org#8748](matrix-org#8748)). Contributed by @luixxiul.
* Make PiP motion smoother and react to window resizes correctly ([\matrix-org#8747](matrix-org#8747)). Fixes element-hq/element-web#22292.
* Prevent Invite and DevTools dialogs from being cut off ([\matrix-org#8646](matrix-org#8646)). Fixes element-hq/element-web#20911 and undefined/matrix-react-sdk#8165. Contributed by @justjanne.
* Squish event bubble tiles less ([\matrix-org#8740](matrix-org#8740)).
* Use random widget IDs for video rooms ([\matrix-org#8739](matrix-org#8739)). Fixes element-hq/element-web#22417.
* Fix read avatars overflow from the right chat panel with a maximized widget on bubble message layout ([\matrix-org#8470](matrix-org#8470)). Contributed by @luixxiul.
* Fix `CallView` crash ([\matrix-org#8735](matrix-org#8735)). Fixes element-hq/element-web#22394.
  • Loading branch information
su-ex committed Jul 7, 2022
2 parents 2ec6602 + 5a1ed59 commit 6333212
Show file tree
Hide file tree
Showing 433 changed files with 10,506 additions and 6,589 deletions.
148 changes: 148 additions & 0 deletions .github/workflows/cypress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
# Triggers after the layered build has finished, taking the artifact and running cypress on it
name: Cypress End to End Tests
on:
workflow_run:
workflows: [ "Element Web - Build" ]
types:
- completed
jobs:
# This job cannot have a pretty name due to https://github.com/haya14busa/action-workflow_run-status/issues/158
cypress:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
permissions:
actions: read
statuses: write
issues: read
pull-requests: read
environment: Cypress
steps:
# Wire up the status check for this workflow_run action
- uses: haya14busa/action-workflow_run-status@967ed83efa565c257675ed70cfe5231f062ddd94 # v1.0.0

- id: prdetails
if: github.event.workflow_run.event == 'pull_request'
uses: matrix-org/pr-details-action@v1.1
with:
owner: ${{ github.event.workflow_run.head_repository.owner.login }}
branch: ${{ github.event.workflow_run.head_branch }}

- uses: actions/checkout@v2
with:
# XXX: We're checking out untrusted code in a secure context
# We need to be careful to not trust anything this code outputs/may do
# We need to check this out to access the cypress tests which are on the head branch
repository: ${{ github.event.workflow_run.head_repository.full_name }}
ref: ${{ github.event.workflow_run.head_sha }}
persist-credentials: false

# There's a 'download artifact' action, but it hasn't been updated for the workflow_run action
# (https://github.com/actions/download-artifact/issues/60) so instead we get this mess:
- name: 📥 Download artifact
uses: dawidd6/action-download-artifact@v2
with:
workflow: element-build-and-test.yaml
run_id: ${{ github.event.workflow_run.id }}
name: previewbuild
path: webapp

- name: Get commit details
if: github.event.workflow_run.event == 'pull_request'
uses: actions/github-script@v5
with:
script: |
const response = await github.rest.git.getCommit({
owner: context.repo.owner,
repo: context.repo.repo,
commit_sha: "${{ github.event.workflow_run.head_sha }}",
});
core.exportVariable("COMMIT_INFO_MESSAGE", response.data.message);
core.exportVariable("COMMIT_INFO_AUTHOR", response.data.author.name);
core.exportVariable("COMMIT_INFO_EMAIL", response.data.author.email);
# Only run Percy when it is demanded or on develop
- name: Disable Percy if not needed
if: |
github.event.workflow_run.event == 'pull_request' &&
!contains(fromJSON(steps.prdetails.outputs.data).labels.*.name, 'X-Needs-Percy')
run: |
echo "PERCY_ENABLE=0" >> $GITHUB_ENV
- name: Run Cypress tests
uses: cypress-io/github-action@v2
with:
# The built-in Electron runner seems to grind to a halt trying
# to run the tests, so use chrome.
browser: chrome
start: npx serve -p 8080 webapp
wait-on: 'http://localhost:8080'
record: true
command-prefix: 'yarn percy exec --'
env:
# pass the Dashboard record key as an environment variable
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
# tell Cypress more details about the context of this run
COMMIT_INFO_BRANCH: ${{ github.event.workflow_run.head_branch }}
COMMIT_INFO_SHA: ${{ github.event.workflow_run.head_sha }}
COMMIT_INFO_REMOTE: ${{ github.repositoryUrl }}

# pass the Percy token as an environment variable
PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }}
# Use existing chromium rather than downloading another
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true
PERCY_BROWSER_EXECUTABLE: /usr/bin/chromium-browser
# tell Percy more details about the context of this run
PERCY_BRANCH: ${{ github.event.workflow_run.head_branch }}
PERCY_COMMIT: ${{ github.event.workflow_run.head_sha }}
PERCY_PULL_REQUEST: ${{ steps.prdetails.outputs.pr_id }}
# pass GitHub token to allow accurately detecting a build vs a re-run build
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# make Node's os.tmpdir() return something where we actually have permissions
TMPDIR: ${{ runner.temp }}

- name: Upload Artifact
if: failure()
uses: actions/upload-artifact@v2
with:
name: cypress-results
path: |
cypress/screenshots
cypress/videos
cypress/synapselogs
- name: Upload Benchmark
uses: actions/upload-artifact@v2
with:
name: cypress-benchmark
path: cypress/performance/measurements.json
retention-days: 1

store-benchmark:
needs: cypress
runs-on: ubuntu-latest
if: |
github.event.workflow_run.event != 'pull_request' &&
github.event.workflow_run.head_branch == 'develop' &&
github.event.workflow_run.head_repository.full_name == github.repository
permissions:
contents: write
steps:
- uses: actions/checkout@v2

- name: Download benchmark result
uses: actions/download-artifact@v3
with:
name: cypress-benchmark

- name: Store benchmark result
uses: matrix-org/github-action-benchmark@jsperfentry-6
with:
name: Cypress measurements
tool: 'jsperformanceentry'
output-file-path: measurements.json
# The dashboard is available at https://matrix-org.github.io/matrix-react-sdk/cypress/bench/
benchmark-data-dir-path: cypress/bench
fail-on-alert: false
comment-on-alert: false
github-token: ${{ secrets.GITHUB_TOKEN }}
auto-push: ${{ github.event.workflow_run.event != 'pull_request' }}
125 changes: 0 additions & 125 deletions .github/workflows/element-build-and-test.yaml

This file was deleted.

52 changes: 52 additions & 0 deletions .github/workflows/element-web.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Produce a build of element-web with this version of react-sdk
# and any matching branches of element-web and js-sdk, output it
# as an artifact and run integration tests.
name: Element Web - Build
on:
pull_request: { }
push:
branches: [ develop, master ]
repository_dispatch:
types: [ upstream-sdk-notify ]
env:
# These must be set for fetchdep.sh to get the right branch
REPOSITORY: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
jobs:
build:
name: "Build Element-Web"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- uses: actions/setup-node@v3
with:
cache: 'yarn'

- name: Fetch layered build
id: layered_build
run: |
scripts/ci/layered.sh
JSSDK_SHA=$(git -C matrix-js-sdk rev-parse --short=12 HEAD)
REACT_SHA=$(git rev-parse --short=12 HEAD)
VECTOR_SHA=$(git -C element-web rev-parse --short=12 HEAD)
echo "::set-output name=VERSION::$VECTOR_SHA-react-$REACT_SHA-js-$JSSDK_SHA"
- name: Copy config
run: cp element.io/develop/config.json config.json
working-directory: ./element-web

- name: Build
env:
CI_PACKAGE: true
VERSION: "${{ steps.layered_build.outputs.VERSION }}"
run: yarn build
working-directory: ./element-web

- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: previewbuild
path: element-web/webapp
# We'll only use this in a triggered job, then we're done with it
retention-days: 1
26 changes: 6 additions & 20 deletions .github/workflows/pull_request.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,9 @@ on:
types: [ opened, edited, labeled, unlabeled, synchronize ]
concurrency: ${{ github.workflow }}-${{ github.event.pull_request.head.ref }}
jobs:
changelog:
name: Preview Changelog
if: github.event.action != 'synchronize'
runs-on: ubuntu-latest
steps:
- uses: matrix-org/allchange@main
with:
ghToken: ${{ secrets.GITHUB_TOKEN }}

enforce-label:
name: Enforce Labels
runs-on: ubuntu-latest
permissions:
pull-requests: read
steps:
- uses: yogevbd/enforce-label-action@2.1.0
with:
REQUIRED_LABELS_ANY: "T-Defect,T-Enhancement,T-Task"
BANNED_LABELS: "X-Blocked"
BANNED_LABELS_DESCRIPTION: "Preventing merge whilst PR is marked blocked!"
action:
uses: matrix-org/matrix-js-sdk/.github/workflows/pull_request.yaml@develop
with:
labels: "T-Defect,T-Enhancement,T-Task"
secrets:
ELEMENT_BOT_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
22 changes: 0 additions & 22 deletions .github/workflows/sonarqube.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,30 +8,8 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event.workflow_run.head_branch }}
cancel-in-progress: true
jobs:
prdetails:
name: ℹ️ PR Details
if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request'
uses: matrix-org/matrix-js-sdk/.github/workflows/pr_details.yml@develop
with:
owner: ${{ github.event.workflow_run.head_repository.owner.login }}
branch: ${{ github.event.workflow_run.head_branch }}

sonarqube:
name: 🩻 SonarQube
needs: prdetails
# Only wait for prdetails if it isn't skipped
if: |
always() &&
(needs.prdetails.result == 'success' || needs.prdetails.result == 'skipped') &&
github.event.workflow_run.conclusion == 'success'
uses: matrix-org/matrix-js-sdk/.github/workflows/sonarcloud.yml@develop
with:
repo: ${{ github.event.workflow_run.head_repository.full_name }}
pr_id: ${{ needs.prdetails.outputs.pr_id }}
head_branch: ${{ needs.prdetails.outputs.head_branch || github.event.workflow_run.head_branch }}
base_branch: ${{ needs.prdetails.outputs.base_branch }}
revision: ${{ github.event.workflow_run.head_sha }}
coverage_workflow_name: tests.yml
coverage_run_id: ${{ github.event.workflow_run.id }}
secrets:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
Loading

0 comments on commit 6333212

Please sign in to comment.