[pull] master from mattermost:master#696
Merged
Merged
Conversation
* feat: include connection id in the plugin context * refactor: group ConnectionId next to SessionId in plugin Context Addresses review feedback to keep related identifier fields adjacent. * fix(files): forward Connection-Id on file uploads to plugin hooks The webapp uploadFile XHR didn't attach the Connection-Id header, so FileWillBeUploaded plugin hooks always received an empty ConnectionId. Read it from the websocket selector and set it on the request, matching how drafts and channel bookmarks already do it. Adds a server-side test asserting the connection id propagates through pluginContext. * fix(lint): reorder file_actions imports to satisfy import/order * Document ConnectionId on request.Context
Wire Microsoft's local Azure Blob Storage emulator into the dev/CI docker-compose stack so an upcoming Azure FileBackend driver and its tests have a target to run against, without requiring an Azure account. * Define the azurite service in docker-compose.common.yml (used by both the local-dev and CI compose files). * Add azurite to the makefile + main docker-compose.yml service maps, and to docker-compose-generator so callers can include it via ENABLED_DOCKER_SERVICES. * Auto-include azurite in `make start-docker` (mirrors how minio is auto-included today), so existing local workflows keep working without any per-developer config change. * Add azurite to the CI start_dependencies wait set so CI brings it up alongside postgres/minio. * Set CI_AZURITE_HOST / CI_AZURITE_PORT in dotenv/test.env, mirroring the CI_MINIO_* pattern. No production filestore changes — this PR is mergeable in isolation with no user-visible behavior. ------ AI assisted commit
* Update API docs * Coderabbit comments * Address feedback * Address feedback * Coderabbit feedback
… via WS (#36006) * fix(channels): update sidebar icon when channel converted via mmctl The handleChannelConvertedEvent WebSocket handler hardcoded type as PRIVATE_CHANNEL, so private-to-public conversions were silently ignored. Now the server includes channel_type in the channel_converted WS event and the frontend reads it. Ref: MM-68233 * test(channels): add tests for channel_converted WS event Add server-side tests verifying the WebSocket event payload includes channel_type for both private→public and public→private conversions. Add frontend tests for handleChannelConvertedEvent covering both conversion directions, backwards compatibility fallback when channel_type is absent, and edge cases. Ref: MM-68233 * test(channels): add E2E test for channel privacy WS icon update Playwright E2E tests verify that the sidebar channel icon updates in real-time when channel privacy is changed via the API (simulating mmctl). Tests both public→private and private→public directions. Ref: MM-68233 * refactor: review feedback on channel_converted fix Narrow channel_type WS field to 'O' | 'P' union type instead of string. Drop hardcoded channel names in E2E tests to let pw.random.channel() generate unique names and avoid collisions. Ref: MM-68233 * fix(e2e): provide name + unique flag for channel creation pw.random.channel() requires a name field — server rejects channels without a valid lowercase alphanumeric name. Use unique: true to append a random suffix for test isolation. Ref: MM-68233 * refactor(channels): use channel type constants in channel_converted code Address review feedback: replace inlined 'O'/'P' string literals with predefined constants. websocket_messages.ts now types channel_type as ChannelType (already imported); websocket_actions tests use Constants.OPEN_CHANNEL / Constants.PRIVATE_CHANNEL. --------- Co-authored-by: Mattermost Build <build@mattermost.com>
* Add benchmarks for image transformation functions Covers GeneratePreview, GenerateThumbnail, GenerateMiniPreviewImage, FillCenter, and MakeImageUpright — all functions that delegate to the external imaging library. Baseline before/after the library swap. * Replace anthonynsimon/bild with boxes-ltd/imaging Reverts the imaging library swap from PR #29657 (disintegration/imaging → anthonynsimon/bild) and replaces it with github.com/boxes-ltd/imaging, the maintained fork of disintegration/imaging with the same API. - emoji.go: restore direct use of imaging.Fit with Lanczos filter - orientation.go: restore FlipH/FlipV/Rotate90/180/270/Transpose/Transverse - preview.go: restore imaging.Resize calls with Lanczos filter - utils.go: remove bild-based Resize/Fit/CropCenter helpers; restore the original FillCenter using imaging.Fill - Remove tests and test images added for the bild-specific helpers - Regenerate orientation test expected images (2,3,6,7,8) and GIF thumbnail to match boxes-ltd/imaging output https://claude.ai/code/session_012f5wLSCRQrQeRraPj282sT * gofmt imaging package files * Add tests and fixtures for the boxes-ltd/imaging-backed functions Cover MakeImageUpright across all 8 EXIF orientations, GeneratePreview, GenerateMiniPreviewImage, and FillCenter against fixtures regenerated under the new library. * Contain boxes-ltd/imaging behind the local imaging wrapper Add a Fit wrapper alongside FillCenter and route emoji.go through the local package so boxes-ltd/imaging is only imported from channels/app/imaging. * Add TestFit to cover the local Fit wrapper Dimensional checks for the Fit wrapper used by emoji.go, mirroring TestGenerateThumbnail. Pixel correctness is covered by the upstream boxes-ltd/imaging tests; this guards against wrapper-level mistakes (transposed args, wrong filter). * Address CodeRabbit nits in TestFillCenter and TestFit Decode a fresh source image per TestFillCenter subtest so cases stay isolated even if the wrapper ever mutates input. Rename the TestFit "smaller than bounds (clone)" case to "no resize when smaller than bounds" since the assertion only checks dimensions, not clone semantics. * Revert per-subtest decode in TestFillCenter imaging.Fill never mutates its input — it always returns a fresh *image.NRGBA — so re-decoding the source for every subtest was unnecessary work. Decode once, share across subtests. * Compare decoded pixels instead of raw PNG/JPEG bytes in tests image/png isn't byte-stable across Go versions, so comparing re-encoded byte streams against checked-in fixtures is brittle to toolchain bumps and re-encoding. Decode both sides and compare RGBA pixels via a shared requireSameImage helper. Fixtures stay on disk unchanged. Covers TestFillCenter, TestGeneratePreview, TestGenerateMiniPreviewImage, and TestMakeImageUpright. TestFillImageTransparency is left alone since its byte-comparison pattern predates this branch. * Report total diff rate when requireSameImage fails Walk every pixel before failing instead of stopping at the first mismatch. The failure message now includes how many pixels differ, the percentage of the image that's off, and the first divergence. --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Mattermost Build <build@mattermost.com>
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )