All notable changes to www.metadot.com will be documented in this file.
- Upgraded dependencies to their latest compatible versions via
pnpm upgrade(patch/minor only, within existing semver ranges):@next/mdxand@next/third-parties16.2.10 → 16.2.12,@radix-ui/react-accordion1.2.16 → 1.2.20,lucide-react1.24.0 → 1.28.0,@tailwindcss/postcssandtailwindcss4.3.2 → 4.3.3,@types/react19.2.17 → 19.2.18,@types/react-dom19.2.3 → 19.2.4.next,react, andreact-domare pinned to exact versions and were left untouched. Production build and lint pass.
- Replaced the entire
/privacy-policypage content with the legal-approved language from support ticket #56959887. The page now opens with a two-paragraph overview, adds Metadot Apps Workspace to the product list, and adds a SOC 2 Type II attestation-letter note. Reworded the SOC 2, AI Features, Information We Collect, How We Protect Your Data, Hosting, Cookies, Analytics, Third-Party Services, Google User Data, and When We Share Information sections to match the supplied text. Softened the HIPAA/BAA wording ("provide one upon request for eligible products" rather than asserting an executed AWS BAA) and named Stripe as the PCI DSS-compliant payment processor. - Replaced the expanded "Your Data Subject Rights" section (added in 2.1.4.2) with the shorter, more general "Your Privacy Rights" language from the ticket document, per requester instruction to use the document verbatim.
- Retitled the page from "Privacy Policy & GDPR" to "Privacy Policy" and updated the "Last updated" date to July 2026 to match the source document.
- Added a site-wide
zoom-domain-verificationmeta tag to the root layout (src/app/layout.tsx), so it renders in the<head>of every page. This lets the Zoom App Marketplace verify ownership of the metadot.com domain.
- Expanded the "Your Rights" section of
/privacy-policyinto "Your Data Subject Rights" to meet Zoom App Marketplace privacy-policy requirements. It now enumerates each GDPR/CCPA-CPRA data subject right (access, rectification, erasure, portability, restriction/objection, withdraw consent, non-discrimination) as a list and adds a "How to exercise your rights" paragraph covering thesupport@metadot.comrequest path, identity verification, the ~30-day response window, no fee for reasonable requests, third-party (Google) account revocation, and the right to lodge a complaint with a supervisory authority.
- Unified all legal/compliance contact emails to
support@metadot.com. Replacedlegal@metadot.comon/terms-of-service;privacy@metadot.comon/privacy-policy(Your Rights, Data Processing Agreement, and Changes to This Policy sections);compliance@metadot.comon/hipaa(BAA request and FAQ) and/soc2(report request); andaccessibility@metadot.comon/accessibility. Both themailto:link and the visible address were updated in each spot.
- New
/pricingpage (src/app/pricing/page.tsx) presenting three Metadot Apps plans — Free ($0, up to 2 apps / 5 users), Pro ($15/user/mo, 30-day trial), and Pro Unlimited ($200/mo flat, 60-day trial) — as a three-column comparison with a "Book a demo" footer. Each plan's CTA links to the matching signup flow: Free →https://metadot.net/signup, Pro →?plan=pro, Pro Unlimited →?plan=pro-unlimited. - "Pricing" link added to the primary header nav (
src/layout/Header.tsx) and the footer's Company column (src/layout/Footer.tsx), so visitors can reach the new page from anywhere on the site.
/apps-overviewreframed from Mojo Helpdesk toward teams broadly: hero eyebrow "Productivity apps for Mojo Helpdesk" → "Productivity apps for teams"; three-apps heading "3 productivity apps to boost your help desk" → "3 productivity apps to boost team efficiency" with the subhead now "Unlimited users, unlimited projects, unlimited possibilities." (src/app/apps-overview/page.tsx).- The onboarding CTA band (
src/app/apps-overview/OnboardingCta.tsx) now reads "Used by hundreds of teams — large and small, high-tech, K12 schools and small businesses" and offers "View pricing" and "Sign me up" (tohttps://metadot.net/signup) buttons in place of the "Log in to Mojo" button. - The booking CTA button label changed from "Schedule your onboarding" to "Schedule a demo" (
src/app/apps-overview/BookingCta.tsx).
- Privacy policy now hosts an explicit "Limited Use Disclosure" subsection under "Google User Data" (
src/app/privacy-policy/page.tsx), affirming that Metadot's use and transfer of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements, and that the use and transfer of raw or derived user data received from Google Workspace APIs adheres to the same policy. Required by Google OAuth verification (Project ID: metadot-net). Public-facing athttps://www.metadot.com/privacy-policy.
- Privacy policy "Last updated" date bumped from May 2026 to June 2026 to reflect the Limited Use disclosure.
/apps-overviewsynced to match the live Mojo apps page (riverdaleschool.mojohelpdesk.com/sso/metadot/apps). The "Your Mojo subscription just got better" onboarding CTA band now sits above the three-apps section instead of at the bottom of the page (src/app/apps-overview/page.tsx). Hero eyebrow changed from "Productivity apps for teams" to "Productivity apps for Mojo Helpdesk"; apps-section heading from "Start using these 3 apps today" to "3 productivity apps to boost your help desk"; CTA band body to "Metadot Apps is on for your help desk. Jump in, or book a quick session and we'll walk you through everything."; second CTA button from "Continue in Mojo Helpdesk" to "Log in to Mojo"; and the Stackr "due date changes" bullet to "due-date changes".
- The hero "Onboarding Mojo customers now" scroll link on
/apps-overview, along with its now-unusedOnboardingLink.tsxandScrollLink.tsxcomponents and the orphaned.onboarding-linkCSS insrc/app/globals.css.
- Home hero secondary button relabeled from "Join the Beta" to "Just launched: Metadot Apps" (
src/sections/Hero.tsx). Still links to/apps-overview.
/apps-overviewonboarding CTA band now has a "Continue in Mojo Helpdesk" button (solid orange, links tohttps://www.mojohelpdesk.com/login) alongside the existing "Schedule your onboarding" button. The two sit side by side on desktop and stack on mobile.
/apps-overview"Schedule your onboarding" button restyled from solid accent to an orange outline (#f0a500border + text), making the new "Continue in Mojo Helpdesk" the primary action.
/apps-overviewnow honors a?hideCtaquery param for chrome-free embedding: it removes the "Your Mojo subscription just got better" onboarding CTA band (#onboarding) and the hero "Onboarding Mojo customers now" link that scrolls to it. Implemented client-side in newOnboardingCta.tsx/OnboardingLink.tsxso the page still renders both server-side by default. Shares theuseQueryFlaghook (src/lib/useQueryFlag.ts) with the site?hideHeader/?hideFooterflags.
- Any page can now be embedded chrome-free via query params:
?hideHeaderremoves the site header and?hideFooterremoves the footer (combine them, e.g.?hideHeader&hideFooter). Intended for embedding pages inside another app via iframe. Implemented insrc/layout/Chrome.tsxby reading the flags client-side, so normal pages still render header and footer server-side with no behavior change. Note: because pages are statically rendered, an embedded page briefly shows the chrome before it's removed on hydration.
/apps-overview— "Start using these 3 apps today" subhead reworded from "Now included with your Mojo Helpdesk subscription at no extra cost" to "Integrated with Mojo Helpdesk, ready to use at no extra cost", and its bottom margin increased (mb-8→mb-12) for more space above the app cards.
/betanow permanently redirects (308) to/apps-overviewvianext.config.ts. The standalone/betapage was removed; its internal links (Footer "Beta Program", Hero "Join the Beta") now point straight at/apps-overview.
/apps-overviewis now indexable. Removed itsrobots: { index: false, follow: false }metadata and dropped it from thenext-sitemapexclude/robots.txtdisallow lists, so it appears in the sitemap and is crawlable. It had been noindexed during testing./apps-overview— onboarding CTA subhead reworded from "Integrated with Mojo Helpdesk. Zero extra cost." to "Now included with your Mojo Helpdesk subscription at no extra cost", and both the "Start using these 3 apps today" heading and that subhead are now center-aligned.
- Deleted the testing-only mockup pages
/apps-mockupand/preview-mockup(and theirnext-sitemapexclude /robots.txtdisallow entries). Deleted the/betapage in favor of the redirect above.
- Apex (
metadot.com) now serves/.well-known/microsoft-identity-association.jsondirectly with a200instead of redirecting to www. Microsoft's publisher-domain verification fetches the apex literally and rejects redirects. Added a host-scopednext.config.tsredirect that canonicalizes every other apex path to www (308) while passing the verification file through. Paired with removing the platform-level apex→www redirect in the Vercel project domain config.
/.well-known/microsoft-identity-association.json— static file for Microsoft identity / Azure AD app domain verification, served at the site root. Returns theassociatedApplicationspayload for application ID53ce0dc5-a652-4a02-9e4f-a4d1c9c9bc94.
/apps-overview— trimmed the onboarding CTA copy: the lead line is now "Now included with your Mojo subscription." (dropped "3 new apps your team can start using today").
/apps-overview— new "Start using these 3 apps today." section under the tour video. Three cards (Stackr / BookMe / Changelog) on asm:grid-cols-3grid, each with a colored Lucide icon (Kanban/CalendarClock/Megaphone), app name, tagline, and three feature bullets. Subhead reads "Integrated with Mojo Helpdesk. Zero extra cost." Card name/tagline use an inlinemarginBottom: 0to override the unlayered globalp { margin-bottom: 1rem }rule.
/apps-overview— refreshed the metadescriptionto "See how Metadot Apps brings project management, CRM, appointment scheduling, tickets, and AI into one connected workspace." ("scheduling" → "appointment scheduling", dropped the trailing "Watch the overview.").
/apps-overview— reworked the hero copy: headline is now two lines ("Metadot Apps" / "The All-in-One Workspace"); the tagline became "Onboarding Mojo customers now", a smooth-scroll link (ScrollLink, 600ms eased) down to the onboarding CTA box; supporting copy reads "appointment scheduling", drops "Take a quick look", and is bumped totext-lg md:text-xlon a widermax-w-[720px]container./apps-overview— removed the "Like what you saw?" eyebrow from the CTA box and gave the section anid="onboarding"(withscroll-mt-20) as the scroll target..onboarding-link(globals.css) — dedicated unlayered link style so white-default → orange (#f0b93c) + underline-on-hover wins the Tailwind v4 cascade over the globalareset (layered utilities were being overridden).smoothScroll()— added an optionaldurationInMsargument (defaults to 200ms, so the homepage Hero is unchanged).
/apps-overview#book— URL-hash trigger that auto-opens the BookMe booking popup on load and onhashchange, giving the Wistia end-of-video CTA a linkable URL. Closing (✕/backdrop/Escape) clears the#bookhash so the popup can be reopened.
/apps-overview— swapped the tour video to the new "Metadot Apps Overview" cut (Wistiadlc5eorlvu, replacing the oldqk060qfgke)./apps-overview— capitalized the "The Search Is Over" tagline and bumped it totext-xl md:text-2xlso it stands out above the supporting copy.
- Google Analytics 4 (
G-KPMNGE3HVZ) site-wide via the official@next/third-parties<GoogleAnalytics>component insrc/app/layout.tsx. Loads gtag with Next.js-optimized strategy and firespage_viewon App Router navigations. The privacy policy already disclosed Google Analytics usage, so this brings the implementation in line with the stated policy.
/apps-overview— tightened the CTA-box copy: dropped "current" and "Helpdesk" so it reads "your Mojo subscription", and split "Book a quick session..." onto its own line.
/apps-overview— Metadot Apps overview landing page for the apps win-back email campaign. Frames the Wistia tour video (qk060qfgke) in a rounded, dark-themed player and drives a single CTA that opens an embedded onboarding-booking calendar in a modal (Escape/backdrop-dismiss, scroll-lock,role="dialog").src/app/apps-overview/BookingCta.tsx— client component for the CTA button + booking modal.
next-sitemap.config.js— exclude/apps-overviewfrom the sitemap and add arobots.txtdisallow. The page also carries anoindex, nofollowrobots meta tag, so it is reachable by emailed recipients but kept out of search results.
/privacy-policy— "Google User Data" section covering Google API Services data: scopes accessed (account email, calendar list, free/busy, app-created events, Meet info), usage limited to scheduling/calendar features, no-sale/sharing terms, TLS + encrypted-token storage, and retention/deletion on disconnect orsupport@metadot.comrequest. Satisfies Google OAuth verification disclosure requirements.
/privacy-policy— Metadot Corporation privacy policy and GDPR statement/terms-of-service— Terms governing use of Metadot products/hipaa— HIPAA posture, BAA availability, and FAQ/soc2— SOC 2 Type II program overview with six-pillar security grid/accessibility— WCAG 2.1 Level AA conformance statement, VPAT request path- Footer "Compliance" column linking the five new pages
src/components/legal/LegalPage.tsx— shared layout for compliance pages.legal-contenttypography rules inglobals.css
- Footer grid widened to 5 columns at
lg, 2 atmd, 1 at mobile conductor.jsonrun script now passes--port $CONDUCTOR_PORTso multiple workspaces can run dev servers in parallel; addedrunScriptMode: "concurrent"pnpm-workspace.yamlapproves build scripts forsharpandunrs-resolver(resolves pnpm 11ERR_PNPM_IGNORED_BUILDSthat blocked the Conductor Run button)
/apps-mockupstray/* Constellation network… */comment no longer leaks as visible text above the orbit (was unwrapped JSX-adjacent text instead of a{/* */}block)/apps-mockupSafari: hero benefit pills no longer leak the colored bubble outside the rounded edge — addedclip-path: inset(0 round 9999px)to force clipping that Safari skips foroverflow:hidden+rounded-full+backdrop-blur
/apps-mockupStackr project icon swapped fromLayoutListtoKanban(lucide-react)
/apps-mockupconnection animation rebuilt as a constellation network: every app sits statically on the ellipse and is permanently wired to the central workspace via slate L- or Z-shaped paths (every line has at least one 90° turn — no straight spokes); 2–3 colored dots per wire travel through with linear easing, mixed inbound/outbound, glowing drop-shadow/apps-mockupconnection animation no longer pauses on hover or modal — the network keeps animating regardless of interaction state
/apps-mockuporbitingorbitLooprotation and the previous comet-tail trail rendering
/apps-mockupSafari: app icons no longer shift to the start on hover — scale transform applied directly to the SVG instead of aninline-flexwrapper that Safari mis-centered inside the grid cell
/apps-mockupapp modal: replaced the bottom prev/next/"x of x apps" footer and standalone close button with a single top-right button group (← / → / ✕)/apps-mockup"Stackr" renamed to "Stackr project"
/apps-mockupapp set: orbit now shows the production app lineup — Assets, BookMe, Changelogs, CRM, Inventory, Knowledge base, Polls, Stackr, Suppliers, Tickets, Workflows (11 apps, was 10)/apps-mockupicons: every app tile now uses alucide-reacticon (Monitor, CalendarCheck, FileText, Handshake, Package, BookOpen, BarChart3, LayoutList, Truck, Ticket, Zap) instead of an emoji; same icon also renders inside the modal header so the orbit and detail view stay visually consistent/apps-mockupcolor palette refreshed to match the new icon set (rose CRM, emerald BookMe/Suppliers, amber Tickets, etc.)
lucide-reactdependency for icon components
/apps-mockuporbit (mobile): tight 120px circle replaces the wide 656×406 ellipse so all 10 apps now fit on a phone instead of being clipped byoverflow-hidden; center logo becomes a clean circle on mobile and stays an oval on desktop/apps-mockuporbit: removed the three concentric dashed rings on every breakpoint for a cleaner stage/apps-mockuporbit (mobile): added a "now showing" pill at the bottom that cycles through apps every 5s and opens that app's modal when tapped/apps-mockuprotation slowed from 60s to 90s per revolution
/apps-mockupconnection streaks: small color-coded line segments flow between each app and the central workspace, communicating that the apps "talk to" the workspace; each app's streak does both directions per cycle (out then in, with idle gaps), randomized per app for an organic feel; about two streaks visible at any moment/apps-mockupworkspace pulse: two staggered radial-gradient rings breathe outward from the center "m" logo, anchoring it as the active hub
/apps-mockuporbit: new "Projects" app tile (violet, 🗂️) with planning, kanban, timeline, and reporting bullets — brings the orbit to 10 apps
/apps-mockuphero: removed the "Connected Workspace." subline so the headline ends on "Metadot Apps"; the "Everything you need to run your business…" tagline now stays on a single line onsm:and up/apps-mockupbenefit pills: each badge now has a soft colored bubble glow plus a colored dot (blue / pink / amber) for visual rhythm/apps-mockuporbit hover: app tiles now show a pointer cursor, get a soft white halo, brighten 10%, and the emoji scales up 25% for clearer affordance/apps-mockupmodal: CTA changed from "Join private beta →" to "Discover it in private beta" (no arrow); fixed the "X of Y apps" counter so it vertically centers with the prev/next arrow buttons/apps-mockupCTA copy: header and bottom buttons now read "Join the private beta"; all/betalink buttons force white text to override the inherited link color
/apps-mockuporbit: hovering an app tile now reveals its name and pauses the animation automatically; the manual pause button has been removed/apps-mockupmodal: cleaned up copy ("Selected app" label removed, "Learn More" → "Join private beta" linked to/beta) and replaced the "Next App" button with compact previous/next arrows around the page indicator/apps-mockupCTA banner: header and bottom CTA now read "Join private beta"; removed the secondary "See How It Works" button
- New noindex mockup route at
/apps-mockupfor the Metadot Apps Connected Workspace concept (link-only, kept under the regular site header/footer) - Orbiting app tiles around the central "m" logo: 9 apps trace an animated elliptical path drawn with
@property+ CSScos()/sin(), with pause/resume control that freezes both the apps and the dashed ring - Click any app tile to open a modal with its description, feature bullets, and "Learn More" / "Next App" actions; closes via ✕, backdrop click, or Escape
- Floating CTA header that emerges as you scroll, with a "Join the Private Beta" button on the right
- Sitemap and robots.txt now exclude
/apps-mockupand/preview-mockupso neither route gets indexed
- Beta page: "How many tools is your team running?" cost-band section with tool chips (Project mgmt, Scheduling, CRM, Automation, Change tracking)
- Beta page: "Put your work on autopilot." workflows section with 3 automation cards (CRM→Stackr, BookMe→CRM, Stackr→Changelog)
- Beta page: "AI that does the work, not just answers questions." section with 4 examples
- Beta page hero: simplified subcopy to "Project management, CRM, scheduling, tickets, and more." with new "Connected apps. Powered by AI." tagline
- Beta page: "Built by the team behind Mojo Helpdesk" line and the "Why it exists" pain-points section
- Beta page hero: updated heading to "Productivity apps for teams." with new tagline and description
- Beta page "Why it exists" section: updated heading to "Built for teams that want to move faster."
- Stackr Projects and Changelog app descriptions refreshed with clearer product positioning
- Beta page metadata (description, OpenGraph) updated to match new copy
- Removed "Beta" link from header navigation (desktop and mobile)
- Text contrast sitewide: replaced
#475569(slate-600, ~3.3:1 ratio) with#94a3b8(slate-400, ~6.7:1) on all section labels, footer copyright, blog page labels, beta page labels, BlogCard quote text, and product tag badge text and border - Blog post reading well: replaced white background (
#fff) with dark card (#1e293b) — consistent with the site's existing card pattern, eliminates jarring light-on-dark contrast transition - Product tag badge border updated for visibility (1.93:1 → 5.71:1 contrast)
tsconfig.jsonjsx mode set topreserve(required by Next.js 16 SWC transform)
- Redesigned
/betapage to match updated mockup: SVG icons with pastel backgrounds, color-matched badges per app, increased border radius on cards, consistent section label styling, and "Metadot Apps" eyebrow above hero
/betalanding page for Metadot Apps private beta (#26)- Deploy configuration for Vercel in CLAUDE.md
- Skill routing rules in CLAUDE.md
- Migrated deploy platform from Netlify to Vercel
- Moved 12 legacy Hugo blog redirects from
netlify.tomltonext.config.ts
netlify.toml(replaced by Next.js redirects + Vercel)
- Upgraded MDX package to version 6
- Ensured app can be built after dependency updates
- Regenerated sitemap, updated
.gitignorefor.gstack
- Removed legacy Hugo HTML files from
public/blog/
- Complete rewrite from Hugo to Next.js 16 (App Router) + React 19 + Tailwind CSS 4
- MDX-based blog system with filesystem routing
- Sitemap generation via
next-sitemap - Legacy blog URL redirects (301s)
- SVG favicon replacing legacy PNGs
- Hero CTA from "USE IT WITH CAUTION" to "EXPLORE OUR PRODUCTS"
- Product names use
h3for proper heading hierarchy - Added focus-visible styles and 44px minimum touch targets
- Typo "louging" → "lounging" in blog alt text
- Mojo HelpDesk typo
- Initial Hugo-based website
- Blog posts covering remote work, team culture, and productivity
- Metadot capabilities statement
- 404 page