Feature/i os/campaigns#377
Merged
jitvarpatil merged 53 commits intoMay 28, 2026
Merged
Conversation
- Move sdk/flutter/*.mdx → sdk/flutter/v4/ (53 files) - Move sdk/flutter/v5/*.mdx → sdk/flutter/ (51 files) - Update docs.json: v5 first in dropdown (default), v4 second - Update all navigation paths accordingly - Remove all beta references from v5 docs - Version 5.0.0 stable Committed-by: kiro-bot
- Remove empty <Warning></Warning> tags from overview.mdx and setup.mdx - Replace all /sdk/flutter/v5/ links with /sdk/flutter/ (4 files) Committed-by: kiro-bot
- update Flutter push notifications sample link to app_credentials.dart - replace broken Tenor dashboard link with tenor.com - remove nonexistent workflow links from the Mastra frontend actions guide - repoint backend workflow reference to the orchestrator workflow example - add follow-up notes for Mastra repo/doc gaps - mark the first broken-link CSV pair as completed in link-triage tracking
- replace broken websocket lifecycle images in sdk docs - add shared automatic and manual websocket flow images - fix react native ai chat history image reference - fix ios message header trail image filename - add alt text for websocket lifecycle images
…remove beta references
Added ai assistant and conversation search docs
Message Composer: - Remove deprecated richTextConfiguration prop and RichTextConfiguration / RichTextToolbarMode / RichTextFormatterManager / RichTextFormatType types - Add layout (CometChatComposerLayout: singleLine | doubleLine) + Layout section - Add enableRichTextFormatting, showRichTextFormattingOptions, hideRichTextFormattingOptions (Set<FormatType>) flat props - Add FormatType enum reference table (bold, italic, underline, strikethrough, inlineCode, codeBlock, link, bulletList, orderedList, blockquote) - Update richTextToolbarView to new 2-arg signature (context, controller) - Update onRichTextFormatApplied to use FormatType - Add onKeyboardDiagnostics debug hook - Rewrite Rich Text Formatting section end-to-end - Drop resizeToAvoidBottomInset: false from Scaffold example (auto-resize is the new default) Message List: - Add hideFlagOption, hideFlagRemarkField, flagReasonLocalizer props - Add Flag / Report a message and Mark as Unread sections under Common Patterns
…-default # Conflicts: # docs.json
…ll platforms - remove beta labels and warning blocks - update install versions to stable releases - fix iOS method name casing (unmuteAudio, unpinParticipant, pinParticipant params)
# Conflicts: # docs.json
…anch added react v6 as default branch
Mintlify's integrations.gtm injection fires GTM (and GA4) on every page load with no consent check, before the existing cookie banner can be shown or interacted with. This is an immediate kill switch in response to a California privacy notice; GTM will be re-introduced via a Mintlify custom-script that wires Google Consent Mode v2 to the HubSpot banner, so GA only fires after the user clicks Accept All. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Mintlify auto-injects any .js file in the content tree on every page (same mechanism that loads assets/version-aligner.js). This file is the sole loader of GTM-59ZJRV2 now that `integrations.gtm` is removed from docs.json, and it does three things before GTM is fetched: 1. Sets Google Consent Mode v2 defaults to `denied` for all four storage types so GA4 (G-M5KZ2NFCYL) cannot fire `collect` requests until the user grants consent. 2. Restores any previously-saved choice from localStorage so returning visitors do not re-see the banner act as a tracking gate. 3. Hooks the HubSpot cookie banner via `_hsp.addPrivacyConsentListener` (HubSpot's documented privacy API) and pushes consent updates on Accept All / Decline All / X. GTM is then loaded inline at the end of the IIFE so ordering is guaranteed regardless of where Mintlify positions the script tag. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Verifying the preview revealed that HubSpot's _hsp.addPrivacyConsentListener fires immediately on registration with HubSpot's *implicit* consent state. On domains where HubSpot decides no banner is needed (mintlify.app preview, regions without consent requirements, anywhere not in HubSpot's banner-required list), that implicit state is allowed:true — so the previous bridge auto-flipped to granted with no user action, no banner shown, and GA fired with gcs=G111. Replace with capture-phase DOM event delegation matching the banner's known selectors (#hs-eu-confirmation-button, #hs-eu-decline-button) and visible text labels. Consent is now strictly tied to user intent: - If banner shows and user clicks Accept All → consent granted, GA fires. - If banner shows and user clicks Decline All → consent stays denied. - If banner does not show at all → no click, no grant, GA never fires. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Strict-mode rewrite. Zero requests to analytics.google.com,
googletagmanager.com, or any GTM-loaded tracker fire on page load.
GTM is only injected after the user clicks Accept All on a banner
rendered by this script.
Flow:
- First visit: gtag default-deny is set, then a fixed bottom-bar
banner is rendered with verbatim HubSpot copy + Accept All /
Decline All buttons. No analytics scripts load.
- Accept All: gtag('consent','update','granted'), GTM loads inline,
choice persisted as localStorage.cc_consent='granted',
document.documentElement[data-cc-consent='granted'].
- Decline All: gtag('consent','update','denied'), GTM never loads,
choice persisted as localStorage.cc_consent='denied'.
- Return visit: prior choice restored from localStorage; no banner.
GTM loads only if previously granted.
HubSpot's own banner is suppressed via a CSS rule keyed on the
documentElement[data-cc-consent] attribute, so once the user has
made a choice HubSpot can't double-prompt them after GTM loads it.
Banner UI is plain DOM + inline CSS, scoped under #cc-consent-banner,
with dark-mode support via prefers-color-scheme. No external CSS or
fonts. role=dialog + aria-label for accessibility. Mobile-friendly
single-column layout under 880px viewport.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Gate analytics behind an explicit Accept All click
Docs/docs gap 2
jitvarpatil
approved these changes
May 28, 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.
Description
Related Issue(s)
Type of Change
Checklist
Additional Information
Screenshots (if applicable)