<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link href="https://www.tomsguide.com/feeds/tag/software" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ Latest from Tom's Guide in Software ]]></title>
                <link>https://www.tomsguide.com/computing/software</link>
        <description><![CDATA[ All the latest software content from the Tom's Guide team ]]></description>
                                    <lastBuildDate>Mon, 07 Sep 2026 08:00:00 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ I spoke to the Microsoft PM rebuilding Windows 11 for Nvidia RTX Spark: The radical reinvention building the first true MacBook Pro threat ]]></title>
                                                                                                <dc:content><![CDATA[ <p>For eight grueling months leading up to the end of last year, engineers from Microsoft and Nvidia worked side by side from the silicon bootstrap level upward. And the goal? Making Windows 11 play nice with an unprecedented architectural shift: an Arm-based CPU sharing massive unified memory with a desktop-class Nvidia RTX GPU.</p><p>And then, the first <a href="https://www.tomsguide.com/computing/laptops/nvidias-rtx-spark-n1x-drops-this-october-why-apple-silicon-should-be-terrified-and-our-price-predictions">RTX Spark</a> machine finally booted. The red LED lit up, and as Microsoft's Principal Product Manager, Peter Dawoud, recalls it: “half of Santa Clara was jumping.” This was a huge undertaking, but now the real work begins: fine-tuning everything.</p><p>RTX Spark isn’t just another laptop sticker; it pushed Microsoft to fundamentally overhaul five foundational subsystems inside Windows 11 to bridge the gap between low-power Arm efficiency, top-tier AAA gaming, and local agentic AI.</p><p>I spoke to Dawoud about the software underpinning Team Green’s hardware because, as he said, “Windows kind of had to get all these subsystems right all at the same time, so that you can enjoy an RTX Spark device and take the most advantage out of it.”</p><h2 id="a-prism-emulator-overhaul">A Prism Emulator overhaul</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oWfTLRd5NPjKy6jDQeEsq4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/oWfTLRd5NPjKy6jDQeEsq4.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Take it from someone who has watched the many attempts to run Windows on ARM chips (and covered the Snapdragon X Elite launch): emulation has always had an Achilles’ heel when it comes to gaming: micro-stuttering and frame pacing.</p><p>“When you're playing video games, it's not just about your average FPS. 1% lows, stuttering is really critical, and your CPU actually plays a very big role in stuttering control,” Dawoud explained.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VPJcvprGffc9FfD2cHiytJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/VPJcvprGffc9FfD2cHiytJ.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While average frame rates look acceptable, CPU timing can get erratic when you try to emulate a game and play it at the same time, which can make fast-paced gaming feel jerky. When somebody buys an Nvidia laptop in October, the chances are likely that they will want to play games on it — it’s an RTX GPU after all.</p><p>So work needed to be done, and Microsoft has overhauled the Prism emulation layer for RTX Spark’s pipelines. By shoring up how tasks are assigned to each of the CPU’s threads, frame rates are much more stable in my testing, and the improvement over past versions is night and day.</p><h2 id="ui-polish-amp-the-agentic-future">UI polish & the agentic future</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2570px;"><p class="vanilla-image-block" style="padding-top:66.65%;"><img id="4fF35LQYkV4jpZNrPUKxZg" name="win11improvedsearchg" alt="Windows 11 Improved Search in action" src="https://cdn.mos.cms.futurecdn.net/4fF35LQYkV4jpZNrPUKxZg.jpg" mos="" align="middle" fullscreen="" width="2570" height="1713" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>If you’re going to make what I believe could be a MacBook Pro killer, you need to make sure the UI is ready for power users as well as casual users. And the mission in Dawoud’s mind to do this is clear: “make the OS kind of get out of the way, for you to do the work that you want to do.”</p><p>Microsoft is cleaning up Windows 11 for this kind of user: native taskbar customization, customizable notifications, killing unwanted widgets, and remembering displays you connect to—to preserve specific screen layout settings.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kANGCbHE3KTdGdR5xZVvD4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/kANGCbHE3KTdGdR5xZVvD4.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then we turn our attention to the “reinvent the PC” part of the RTX Spark, which comes down to local agentic AI. I saw a demo of Hermes Agent connected to a user’s Google account that acted like his personal chief of staff: setting an agenda for the day, drafting email responses in Gmail, and updating a project tracker in Google Docs. And it all happened on-device without a single bit of cloud AI.</p><p>But without guardrails, this could get scary. “Having an agent that you can't control is probably the thing you don't want,” he stated. So the answer is Microsoft Extension Containers (MXC) — isolated sandboxes for your local models to act across your desktop securely without sensitive system control leaking.</p><h2 id="killing-oem-bloatware">Killing OEM bloatware</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mcY3VEDiPviihsNtyMMVY4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/mcY3VEDiPviihsNtyMMVY4.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s always been a dream of mine to have a laptop that doesn’t come packed with OEM-specific power management software or an antivirus scanner. While this may not fix the latter, it goes a long way toward killing the need for the former.</p><p>Dawoud emphasized the need to eliminate the clunky tug-of-war between Windows and external software. Currently, there are several ways to tweak power management across different apps, but RTX Spark uses the open-source Modern Power and Thermal Framework—letting Windows natively control all thermal and power tuning.</p><p>“Users, when they want to set the best performance, they can do it in Windows, and they'll know that the OEM's tuning for best performance has now been set,” he said. “They don't need to go to another app and be like, 'Okay, is that app saying good performance and Windows is saying good performance at the same time?'”</p><p>This also helps these laptops maintain the same performance on and off the charger.</p><h2 id="the-uma-secret">The UMA secret</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WudXrWFBDRvTr4BfJPKW3T" name="RTX Spark" alt="RTX Spark" src="https://cdn.mos.cms.futurecdn.net/WudXrWFBDRvTr4BfJPKW3T.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On paper, a Unified Memory Architecture (UMA) sounds great — a big pool for both the CPU and monstrous GPU to dip into at leisure, and take however much (or little) they need. But in reality, CPUs and GPUs digest memory completely differently.</p><p>CPUs crave small memory chunks (4-kilobyte pages) to distribute tasks across their many cores. They take a pizza, pull all the ingredients off of it, and share them around. GPUs, however, take that entire pizza, fold it in half, and eat it taco-style. They need massive blocks (up to 2-megabyte pages) to plow through parallel 3D rendering or AI tasks.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rVysSsvNTgqPQr98uY9uY4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/rVysSsvNTgqPQr98uY9uY4.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>“RTX Spark has a very powerful GPU, so making sure that we give it as much memory as possible when it needs it, but also give it the right page sizes, is really critical,” Dawoud commented.</p><p>So Microsoft's fix is to add variable page sizing directly to the memory manager. This is a bit complex, but it means Windows can dynamically read the pages of data flowing through and send them to the right places—the 2MB to the GPU and 4KB to the CPU simultaneously.</p><p>“Optimizing that is the way you can weaponize the entire stack to get the most performance out of it,” He emphasized.</p><h2 id="taming-nvidia-s-custom-cpu-cores">Taming Nvidia’s custom CPU cores</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NC4Vevw7coKXAFTkqRDdYP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unlike Qualcomm’s standardized Snapdragon X chips, Nvidia’s 18- and 20-core Grace CPUs use a proprietary cluster arrangement of performance and efficiency cores to maximize speed while delivering all-day battery life.</p><p>Dawoud explained that Nvidia's core configuration is entirely unique, and “previous Arm cores that have run on Windows are not like that.”</p><p>Now, historically, supporting an exotic CPU layout required rewriting the entire kernel underpinning Windows — a risky move for sure. But Windows 11 has a new profiling stack that can tune itself dynamically on the fly, meaning the scheduler that throws tasks everywhere can adapt to Nvidia’s unique chip here without breaking legacy compatibility.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e4EgZW"></div>                            </div>                            <script src="https://kwizly.com/embed/e4EgZW.js" async></script><h2 id="the-pc-has-finally-grown-up">The PC has finally grown up</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GVxdiZGjWNreCjxARYdq74" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/GVxdiZGjWNreCjxARYdq74.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The 14-year partnership between Microsoft and Nvidia finally feels like it is paying off. Dawoud pointed out that this wasn't a sudden alliance — the journey started over a decade ago with the Tegra-powered Surface RT.</p><p>But this specific launch represents a fundamental shift in how the two giants collaborate. By letting Microsoft engineers rebuild the OS from the silicon bootstrap level upward, RTX Spark gave Windows the foundation it needed to finally make Arm-based PC gaming a reality.</p><p>Microsoft and Nvidia haven’t just bolted a GPU onto an Arm processor; they’ve rewritten the rulebook beneath the surface. This is a huge moment for both companies, and if Windows on Arm succeeds where previous attempts faltered, it will all be traced back to that one moment Microsoft spent eight agonizing months building the foundation to make it feel effortless.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/laptops/macbook-pro-14-inch-vs-asus-proart-p14-nvidia-rtx-spark">I held the Asus ProArt P14 next to my MacBook Pro 14 — and Apple should be genuinely terrified of Nvidia’s RTX Spark</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-acers-wild-flip-and-swivel-handheld-why-project-dualplay-mini-is-the-ultimate-netbook-love-letter">I tested Acer's wild Project DualPlay Mini — and it's a gaming handheld and laptop in one gadget</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/i-tested-the-real-dlss-5-forget-the-leaked-mods-its-not-an-ai-filter-this-is-nvidias-photorealistic-game-changer">I wanted to hate Nvidia’s DLSS 5 ‘AI filter’ — but the real DLSS 5 is photorealistic black magic</a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=laptops&min_discount_ratio=0.95&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&bg_color=transparent" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters {      display: flex;      gap: 12px;      justify-content: center;      flex-wrap: wrap;    }    .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);      display: -webkit-box;      -webkit-line-clamp: 2;      -webkit-box-orient: vertical;      overflow: hidden;    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    .tg-df-container .tg-df-card-cta.tg-df-cta-savings-squad {      background-color: #3c8d0d;    }    .tg-df-card:hover .tg-df-card-cta.tg-df-cta-savings-squad,    .tg-df-card-cta.tg-df-cta-savings-squad:hover {      background-color: #2b6509;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 0;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 0 16px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }            .tg-df-filters {        width: calc(100% + 32px);        margin: 0 -16px;        padding: 0 16px 4px 16px;        display: flex;        justify-content: flex-start;        gap: 8px;        flex-wrap: nowrap;        overflow-x: auto;        -webkit-overflow-scrolling: touch;        scrollbar-width: none;      }      .tg-df-filters::after {        content: "";        display: block;        flex: 0 0 8px;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }            .tg-df-sort-wrapper {        flex: 0 0 max(42%, 130px);        min-width: 0;      }      .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;        -webkit-line-clamp: 3;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        -webkit-line-clamp: 3;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 16px;      text-align: center;      width: 100%;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }        .tg-df-container .tg-df-carousel-scroll-left,    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-left { left: 8px; }    .tg-df-container .tg-df-carousel-scroll-right { right: 8px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left { left: 0px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right { right: 0px; }    .tg-df-carousel-filters-outer { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }    @container tg-df (max-width: 599px) { .tg-df-carousel-filters-outer { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; } }        .tg-df-container .tg-df-carousel-scroll-left:hover,    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right {      background-color: rgba(255, 255, 255, 0.4);      border: none;      box-shadow: none;      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right { right: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-right { right: 0; }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left:hover,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);      border: none;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-carousel-roundels::after {      content: "";      flex: 0 0 32px;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;      transition: font-weight 0.2s;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-label {      font-weight: 700;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;      display: inline-flex;      align-items: center;      justify-content: center;      min-height: 36px;      box-sizing: border-box;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::after {      content: "";      flex: 0 0 32px;    }    .tg-df-grid-wrapper {      position: relative;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card {      flex: 0 0 auto;      width: 100px;      border-radius: 15px;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      border: 2px solid #1e293b;      background: white;      color: #1e293b;      display: flex;      flex-direction: column;      justify-content: center;      align-items: center;      font-weight: 600;      font-size: 14px;      cursor: pointer;      padding: 16px;      text-align: center;      transition: all 0.2s;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card:hover {      background: #1e293b;      color: white;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.45);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #5aaf0b; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a9109; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-roundels">            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>          \x3C/div>          \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-outer" style="position: relative;">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>        \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3C/div>    \x3C/div>    \x3C/div>      \x3C!-- Search & Filter Controls --\x3E    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">      \x3Cdiv class="tg-df-top-bar">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>                \x3Cdiv class="tg-df-settings-wrapper">          \x3Cbutton type="button" class="tg-df-settings-btn" aria-label="Settings" id="tg-df-settings-toggle">            \x3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20">                \x3Cpath d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.73 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .43-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.49-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>            \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-settings-dropdown-backdrop" id="tg-df-settings-backdrop">\x3C/div>          \x3Cdiv class="tg-df-settings-dropdown" id="tg-df-settings-panel">            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Search Region\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-region-select">                \x3Coption value="auto">🌍 Auto-detect\x3C/option>                \x3Coption value="US">🇺🇸 United States (US)\x3C/option>                \x3Coption value="GB">🇬🇧 United Kingdom (UK)\x3C/option>                \x3Coption value="CA">🇨🇦 Canada (CA)\x3C/option>                \x3Coption value="AU">🇦🇺 Australia (AU)\x3C/option>                \x3Coption value="DE">🇩🇪 Germany (DE)\x3C/option>                \x3Coption value="FR">🇫🇷 France (FR)\x3C/option>                \x3Coption value="IT">🇮🇹 Italy (IT)\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Retailer\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-retailer-select">                \x3Coption value="">All Retailers\x3C/option>                \x3Coption value="Amazon">Amazon\x3C/option>                \x3Coption value="Walmart">Walmart\x3C/option>                \x3Coption value="Best Buy">Best Buy\x3C/option>                \x3Coption value="Target">Target\x3C/option>                \x3Coption value="John Lewis">John Lewis\x3C/option>                \x3Coption value="Currys">Currys\x3C/option>                \x3Coption value="Argos">Argos\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Offer Type\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-offer-type-select">                \x3Coption value="">All Offers\x3C/option>                \x3Coption value="amazon_prime">Amazon Prime\x3C/option>                \x3Coption value="recommended_promo">Recommended Promo\x3C/option>                \x3Coption value="amazon_lightning">Amazon Lightning Deal\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Result Count\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-rows-select">                \x3Coption value="3">3 Items\x3C/option>                \x3Coption value="4">4 Items\x3C/option>                \x3Coption value="6">6 Items\x3C/option>                \x3Coption value="12" selected>12 Items\x3C/option>                \x3Coption value="24">24 Items\x3C/option>                \x3Coption value="48">48 Items\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Deal Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Only show products with active offers or previous prices (was_price)\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-deal-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Editor Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Enable multi-select to copy deals to CMS\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-editor-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">View Mode\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-view-mode-select">                \x3Coption value="auto">Auto Collection\x3C/option>                \x3Coption value="carousel">Carousel\x3C/option>                \x3Coption value="savings_squad">Savings Squad\x3C/option>                \x3Coption value="grid">Grid (Columns)\x3C/option>                \x3Coption value="row">Row (List)\x3C/option>              \x3C/select>            \x3C/div>          \x3C/div>        \x3C/div>      \x3C/div>      \x3Cdiv class="tg-df-filters">        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-category-filter-wrapper" style="display: none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-category-filter" aria-label="Category">            \x3Coption value="all">All Categories\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-multiselect-container" id="tg-df-brand-filter-wrapper" style="display:none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"/>          \x3C/svg>          \x3Cdiv class="tg-df-filter-select tg-df-multiselect-trigger" id="tg-df-brand-trigger" tabindex="0">            Any Brand          \x3C/div>          \x3Cdiv class="tg-df-multiselect-dropdown" id="tg-df-brand-dropdown">            \x3C!-- Populated via script --\x3E          \x3C/div>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z"/>          \x3C/svg>          \x3Cselect class="tg-df-sort-select" aria-label="Sort Deals">            \x3Coption value="date_desc">Newest First\x3C/option>            \x3Coption value="best_match">Sort by: Match\x3C/option>            \x3Coption value="price_asc">Price Low to High\x3C/option>            \x3Coption value="price_desc">Price High to Low\x3C/option>            \x3Coption value="discount_desc">Biggest Discount\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-price-range-wrapper" id="tg-df-custom-price-wrapper" style="display: flex; align-items:center; justify-content:center; padding: 10px 20px; gap: 8px; border: 1px solid var(--tg-df-border); border-radius: 100px; background-color: var(--tg-df-bg);">          \x3Cspan style="font-size:14px; font-weight:500; color:var(--tg-df-text-primary);">Price\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-min" placeholder="Min" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">          \x3Cspan style="color:var(--tg-df-text-muted)">-\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-max" placeholder="Max" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices">            \x3Coption value="all">All Prices\x3C/option>            \x3Coption value="under50">Under $50\x3C/option>            \x3Coption value="50_100">$50 - $100\x3C/option>            \x3Coption value="100_200">$100 - $200\x3C/option>            \x3Coption value="200_500">$200 - $500\x3C/option>            \x3Coption value="over500">Over $500\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount">            \x3Coption value="all">Any discount\x3C/option>            \x3Coption value="5">Min 5%\x3C/option>            \x3Coption value="10">Min 10%\x3C/option>            \x3Coption value="15">Min 15%\x3C/option>            \x3Coption value="20">Min 20%\x3C/option>            \x3Coption value="25">Min 25%\x3C/option>            \x3Coption value="30">Min 30%\x3C/option>            \x3Coption value="40">Min 40%\x3C/option>            \x3Coption value="50">Min 50%\x3C/option>            \x3Coption value="60">Min 60%\x3C/option>            \x3Coption value="70">Min 70%\x3C/option>          \x3C/select>        \x3C/div>      \x3C/div>    \x3C/div>    \x3C!-- Deals Grid Wrapper --\x3E    \x3Cdiv class="tg-df-grid-wrapper tg-df-carousel-cards-wrapper" id="tg-df-grid-wrapper">      \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>      \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>    \x3C/div>        \x3C!-- Vouchers Modal --\x3E    \x3Cdiv class="tg-df-modal-backdrop" id="tg-df-vouchers-modal">      \x3Cdiv class="tg-df-modal">        \x3Cdiv class="tg-df-modal-header">          \x3Ch3 class="tg-df-modal-title" id="tg-df-vouchers-title">Available Coupons & Deals\x3C/h3>          \x3Cbutton class="tg-df-modal-close" id="tg-df-vouchers-close">            \x3Csvg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">              \x3Cline x1="18" y1="6" x2="6" y2="18">\x3C/line>              \x3Cline x1="6" y1="6" x2="18" y2="18">\x3C/line>            \x3C/svg>          \x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-modal-body" id="tg-df-vouchers-content">          \x3C!-- Vouchers injected here --\x3E        \x3C/div>      \x3C/div>    \x3C/div>  \x3C/div>`;      if (!template) {        template = document.createElement('template');        template.innerHTML = rawTemplate;      }      let shadowRoot = null;      if (hostContainer && template) {        hostContainer.setAttribute('data-initialized', 'true');        shadowRoot = hostContainer.attachShadow({ mode: 'open' });        shadowRoot.appendChild(template.content.cloneNode(true));      }      class DealsFinderWidget {        constructor(config) {          this.rootNode = config.rootNode || document;          this.hostContainer = config.hostContainer || null;          this.rootId = config.rootId || 'signal-deals-finder-root';          this.root = this.rootNode.querySelector('#' + this.rootId);          if (!this.root) return;          this.widgetId = (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'widget-' + Date.now() + '-' + Math.random().toString(36).slice(2);          this.grid = this.root.querySelector('#tg-df-grid');          this.tagsContainer = this.root.querySelector('#tg-df-tags-container');          this.categoryFilter = this.root.querySelector('#tg-df-category-filter');          this.categoryFilterWrapper = this.root.querySelector('#tg-df-category-filter-wrapper');          this.searchInput = this.root.querySelector('.tg-df-search-input');          this.autocompleteDropdown = this.root.querySelector('#tg-df-autocomplete');          this.sortSelect = this.root.querySelector('.tg-df-sort-select');          this.searchBtn = this.root.querySelector('.tg-df-search-btn');                    this.settingsToggle = this.root.querySelector('#tg-df-settings-toggle');          this.settingsPanel = this.root.querySelector('#tg-df-settings-panel');          this.settingsBackdrop = this.root.querySelector('#tg-df-settings-backdrop');          this.regionSelect = this.root.querySelector('#tg-df-region-select');          this.retailerSelect = this.root.querySelector('#tg-df-retailer-select');          this.offerTypeSelect = this.root.querySelector('#tg-df-offer-type-select');          this.viewModeSelect = this.root.querySelector('#tg-df-view-mode-select');          this.rowsSelect = this.root.querySelector('#tg-df-rows-select');          this.dealModeToggle = this.root.querySelector('#tg-df-deal-mode');          this.editorModeToggle = this.root.querySelector('#tg-df-editor-mode');          this.priceFilter = this.root.querySelector('#tg-df-price-filter');          this.discountFilter = this.root.querySelector('#tg-df-discount-filter');                    this.editorBar = this.root.querySelector('#tg-df-editor-bar');          this.editorSelectedCount = this.root.querySelector('#tg-df-selected-count');          this.editorCopyBtn = this.root.querySelector('#tg-df-editor-copy');          this.editorClearBtn = this.root.querySelector('#tg-df-editor-clear');                    this.apiUrl = 'https://search-api.fie.future.net.uk/widget.php';          this.deals = [];          this.displayLimit = 12;          this.airedaleArticles = null;          this.airedaleTags = [];          this.airedaleTagCounts = {};          this.activeDealTag = null;          this.selectedBrands = [];          this.currentQuery = '';          this.editorMode = this.hostContainer ? this.hostContainer.hasAttribute('data-editor-mode') : false;          this.viewModeOverride = this.hostContainer ? this.hostContainer.getAttribute('data-view-mode') : null;          this.selectedDeals = new Map();                    this.brandFilterWrapper = this.root.querySelector('#tg-df-brand-filter-wrapper');          this.brandTrigger = this.root.querySelector('#tg-df-brand-trigger');          this.brandDropdown = this.root.querySelector('#tg-df-brand-dropdown');                    this.customPriceWrapper = this.root.querySelector('#tg-df-custom-price-wrapper');          this.customPriceMin = this.root.querySelector('#tg-df-custom-price-min');          this.customPriceMax = this.root.querySelector('#tg-df-custom-price-max');          this.legacyPriceWrapper = this.root.querySelector('#tg-df-legacy-price-wrapper');          this.discountFilterWrapper = this.root.querySelector('#tg-df-discount-filter-wrapper');          this.initResizeObserver();          this.init();            if (['carousel', 'carousel-compact', 'auto', 'grid', 'row'].includes(this.getViewMode())) { this.loadCarouselSpreadsheet(); }        }        getViewMode() {          if (this.viewModeOverride && (!this.editorMode || !this.viewModeSelect)) {            return this.viewModeOverride;          }          return (this.viewModeSelect && this.viewModeSelect.value) ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');        }        applyLayoutMode() {          if (!this.grid) return;          const mode = this.getViewMode();          this.grid.classList.remove('layout-row', 'layout-grid', 'tg-df-grid-auto', 'carousel-compact', 'layout-replica-1', 'layout-replica-2');                    const carouselHost = this.root.querySelector('#tg-df-carousel-host');          const controlsDiv = this.root.querySelector('#tg-df-controls');          if (mode === 'carousel' || mode === 'auto' || mode === 'grid' || mode === 'row') {             if (mode === 'carousel') this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container') && mode === 'carousel') {               this.root.classList.add('is-carousel');             } else if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          }          if (mode === 'grid') {            this.grid.classList.add('layout-grid');          } else if (mode === 'row') {            this.grid.classList.add('layout-row');          } else if (mode === 'savings_squad') {            this.grid.classList.add('tg-df-grid-auto', 'savings-squad-cards');          } else if (mode !== 'carousel') {            this.grid.classList.add('tg-df-grid-auto');          }                    const settingsWrapper = this.root.querySelector('.tg-df-settings-wrapper');          if (settingsWrapper) {            settingsWrapper.style.display = mode === 'auto' ? 'none' : 'block';          }          if (this.customPriceWrapper) {             this.customPriceWrapper.style.display = mode === 'auto' ? 'flex' : 'none';          }          if (this.legacyPriceWrapper) {             this.legacyPriceWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }          if (this.discountFilterWrapper) {             this.discountFilterWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }        }        initResizeObserver() {          try {            if (window.parent === window) return;          } catch (e) {            // cross origin frame check threw          }          const emitHeight = () => {            try {              const height = document.documentElement.scrollHeight || document.body.scrollHeight;              const msg = { type: 'embed-size', height: height };              if (window.parent && window.parent !== window) {                window.parent.postMessage(msg, '*');                window.parent.postMessage(JSON.stringify({ ...msg, sentinel: 'amp' }), '*');              }            } catch (e) {}          };                    if (window.ResizeObserver) {            try {              const ro = new ResizeObserver(() => emitHeight());              ro.observe(document.body);              if (this.root) ro.observe(this.root);            } catch(e){ console.warn(e); }          }          window.addEventListener('resize', emitHeight);          setTimeout(emitHeight, 300);        }        initCountdown() {          this.cdWrapper = this.root.querySelector('#tg-df-countdown-wrapper');                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          this.showCountdown = params.get('show_countdown') === 'true';          const showHeaderDetails = params.get('show_header_details') !== 'false';          const eyebrow = this.root.querySelector('.tg-df-carousel-box-eyebrow');          const title = this.root.querySelector('.tg-df-carousel-box-title');          const subtitle = this.root.querySelector('.tg-df-carousel-box-subtitle');          if (!showHeaderDetails) {            let containerElement = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (containerElement) containerElement.classList.add('hide-header-details');            if (eyebrow) eyebrow.style.display = 'none';            if (title) title.style.display = 'none';            if (subtitle) subtitle.style.display = 'none';          }          if (!this.cdWrapper) return;          this.cdTitle = this.root.querySelector('#tg-df-countdown-title');          this.cdDays = this.root.querySelector('#tg-df-cd-days');          this.cdHrs = this.root.querySelector('#tg-df-cd-hrs');          this.cdMin = this.root.querySelector('#tg-df-cd-min');          this.cdSec = this.root.querySelector('#tg-df-cd-sec');          this.updateCountdown();          this.cdInterval = setInterval(() => this.updateCountdown(), 1000);        }        updateCountdown() {          if (!this.cdWrapper) return;          if (!this.showCountdown) {            this.cdWrapper.style.display = 'none';            return;          }          const area = this.getAreaCode();          let offset = '-04:00';          if (['DE', 'FR', 'IT', 'ES', 'NL'].includes(area)) {             offset = '+02:00';          } else if (['GB', 'IE', 'UK'].includes(area)) {             offset = '+01:00';          }          const startTime = new Date('2026-06-23T00:00:00' + offset).getTime();          const endTime = new Date('2026-06-26T00:00:00' + offset).getTime();          const now = Date.now();          let targetTime = 0;          if (now < startTime) {             targetTime = startTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day starts in';             this.cdWrapper.style.display = 'flex';          } else if (now < endTime) {             targetTime = endTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day ends in';             this.cdWrapper.style.display = 'flex';          } else {             this.cdWrapper.style.display = 'none';             if (this.cdInterval) clearInterval(this.cdInterval);             return;          }          const diff = Math.max(0, targetTime - now);          const d = Math.floor(diff / (1000 * 60 * 60 * 24));          const h = Math.floor((diff / (1000 * 60 * 60)) % 24);          const m = Math.floor((diff / 1000 / 60) % 60);          const s = Math.floor((diff / 1000) % 60);          if (this.cdDays) this.cdDays.textContent = d;          if (this.cdHrs) this.cdHrs.textContent = h;          if (this.cdMin) this.cdMin.textContent = m;          if (this.cdSec) this.cdSec.textContent = s;        }        init() {          this.initCountdown();          try {            initAnalytics();          } catch (e) {            console.warn('Deals Widget Analytics Error:', e);          }                    this.bindEvents();                    let initialQuery = '';                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          let initialViewMode = params.get('view_mode');          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Everything';             if (this.discountFilter && !params.has('min_discount_ratio')) {               this.discountFilter.value = '5';             }          }          const website = params.get('website') || 'tomsguide';          this.website = website;          if (website === 'techradar') {            const squadHeader = this.root.querySelector('.tg-df-savings-squad-header');            if (squadHeader) {               const pic = squadHeader.querySelector('picture');               if (pic) pic.style.display = 'none';            }            const style = document.createElement('style');            style.innerHTML = `              .tg-df-container .hawk-affiliate-link-deal-button, .tg-df-container .tg-df-card-cta { background-color: #5DAF08 !important; }              .tg-df-container .hawk-affiliate-link-deal-button:hover, .tg-df-container .tg-df-card-cta:hover { background-color: #4a8c06 !important; }            `;            this.root.appendChild(style);          }                    if (this.regionSelect) {            this.regionSelect.value = params.get('region') || 'auto';            this.updatePriceDropdownCurrency();          }                    if (this.retailerSelect && params.has('retailer')) {            this.retailerSelect.value = params.get('retailer');          }                    if (params.has('brands')) {            const b = params.get('brands');            if (b) {              this.selectedBrands = b.split(',');            }          }                    if (this.offerTypeSelect && params.has('offer_type')) {            this.offerTypeSelect.value = params.get('offer_type');          }          if (params.has('bg_color')) {            const bg = params.get('bg_color');            if (bg === 'white') {              this.root.style.setProperty('background-color', '#ffffff', 'important');            } else if (bg === 'transparent') {              this.root.style.setProperty('background-color', 'transparent', 'important');            } else if (bg === 'light_blue') {              this.root.style.setProperty('background-color', '#E7F0FF', 'important');            }          } else {             this.root.style.removeProperty('background-color');          }                    if (params.has('view_mode')) {            if (this.viewModeSelect) {              this.viewModeSelect.value = params.get('view_mode');            } else {              this.viewModeOverride = params.get('view_mode');            }          }          if (this.rowsSelect && params.has('rows')) {            this.rowsSelect.value = params.get('rows');          }          if (params.has('price')) {            const priceVal = params.get('price');            if (this.priceFilter) {               // Try assigning it directly to select. If it's not present implicitly ignores               this.priceFilter.value = priceVal;            }            if (priceVal.includes('_')) {               const parts = priceVal.split('_');               if (this.customPriceMin && parts[0]) this.customPriceMin.value = parts[0];               if (this.customPriceMax && parts[1]) this.customPriceMax.value = parts[1];            }          }          if (this.discountFilter && params.has('min_discount_ratio')) {            // Need to convert back from ratio (e.g. 0.8) to select value (e.g. "20")            const ratioStr = params.get('min_discount_ratio');            const ratioFloat = parseFloat(ratioStr);            if (!isNaN(ratioFloat)) {               const percentage = Math.round((1 - ratioFloat) * 100);               this.discountFilter.value = percentage.toString();            }          }          if (this.sortSelect) {            this.sortSelect.value = params.get('sort') || 'discount_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }                    // Re-apply layout after params have updated control values          this.applyLayoutMode();                    if (params.get('search')) {            initialQuery = params.get('search');          } else if (params.get('q')) {            initialQuery = params.get('q');          } else if (params.get('query')) {            initialQuery = params.get('query');          }                    this.currentQuery = initialQuery;          if (this.searchInput) {            this.searchInput.value = this.currentQuery;          }                    if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {            this.fetchDeals(this.currentQuery);          } else {            this.render();          }        }        updatePriceDropdownCurrency() {          if (!this.priceFilter || !this.regionSelect) return;          const currencySymbols = {            'US': '$',            'GB': '£',            'CA': '$CA',            'AU': '$AU',            'DE': '€',            'FR': '€',            'IT': '€',          };          const area = this.getAreaCode();          const cur = currencySymbols[area || 'US'] || '$';                    const options = this.priceFilter.options;          for (let i = 0; i < options.length; i++) {            const opt = options[i];            if (opt.value === 'all') {              opt.innerText = 'All Prices';            } else if (opt.value === 'under50') {              opt.innerText = `Under ${cur}50`;            } else if (opt.value === '50_100') {              opt.innerText = `${cur}50 - ${cur}100`;            } else if (opt.value === '100_200') {              opt.innerText = `${cur}100 - ${cur}200`;            } else if (opt.value === '200_500') {              opt.innerText = `${cur}200 - ${cur}500`;            } else if (opt.value === 'over500') {              opt.innerText = `Over ${cur}500`;            }          }        }        populateBrandDropdown(values) {          if (!this.brandDropdown || !this.brandFilterWrapper) return;          this.brandFilterWrapper.style.display = 'flex'; // show the wrapper                    let html = '';          const allChecked = this.selectedBrands.length === 0 ? 'checked' : '';          const _div = '<' + '/div>';          const _span = '<' + '/span>';          html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="" ${allChecked} class="tg-df-brand-chk"> Any Brand${_div}`;                    values.forEach(v => {             if (!v.formatted_value || v.formatted_value === 'Any Brand') return;             const isChecked = this.selectedBrands.includes(v.formatted_value) ? 'checked' : '';             html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="${this.escapeHTML(v.formatted_value)}" ${isChecked} class="tg-df-brand-chk"> ${this.escapeHTML(v.formatted_value)} \x3Cspan style="color:var(--tg-df-text-muted);font-size:12px">(${v.count || 0})${_span}${_div}`;          });                    this.brandDropdown.innerHTML = html;                    // Re-bind listeners          const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');          chks.forEach(chk => {            chk.addEventListener('change', (e) => {              const val = e.target.value;              if (val === '') {                this.selectedBrands = [];              } else {                if (e.target.checked) {                   if (!this.selectedBrands.includes(val)) this.selectedBrands.push(val);                } else {                   this.selectedBrands = this.selectedBrands.filter(b => b !== val);                }              }                            if (this.selectedBrands.length === 0) {                 this.brandTrigger.innerText = 'Any Brand';              } else if (this.selectedBrands.length === 1) {                 this.brandTrigger.innerText = this.selectedBrands[0];              } else {                 this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;              }                            // Only call API if changed from UI interactions              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.updateURLParams();                 this.fetchDeals(this.currentQuery);              }            });          });                    // Update button text on load          if (this.selectedBrands.length === 0) {             this.brandTrigger.innerText = 'Any Brand';          } else if (this.selectedBrands.length === 1) {             this.brandTrigger.innerText = this.selectedBrands[0];          } else {             this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;          }        }        updateURLParams() {          const url = new URL(window.location);          if (this.currentQuery && this.currentQuery !== 'Gaming laptops') {            url.searchParams.set('q', this.currentQuery);          } else {            url.searchParams.delete('q');            url.searchParams.delete('search');            url.searchParams.delete('query');          }                    if (this.regionSelect && this.regionSelect.value !== 'auto') {            url.searchParams.set('region', this.regionSelect.value);          } else {            url.searchParams.delete('region');          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.set('retailer', this.retailerSelect.value);          } else {            url.searchParams.delete('retailer');          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.set('brands', this.selectedBrands.join(','));          } else {            url.searchParams.delete('brands');          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.set('offer_type', this.offerTypeSelect.value);          } else {            url.searchParams.delete('offer_type');          }                    if (this.viewModeSelect && this.viewModeSelect.value !== 'auto') {            url.searchParams.set('view_mode', this.viewModeSelect.value);          } else {            url.searchParams.delete('view_mode');          }                    if (this.rowsSelect && this.rowsSelect.value !== '12') {            url.searchParams.set('rows', this.rowsSelect.value);          } else {            url.searchParams.delete('rows');          }                    const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             url.searchParams.set('price', `${min}_${max}`);          } else if (this.priceFilter && this.priceFilter.value !== 'all') {            url.searchParams.set('price', this.priceFilter.value);          } else {            url.searchParams.delete('price');          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {               const ratio = (100 - v) / 100;               url.searchParams.set('min_discount_ratio', ratio.toString());            }          } else {            url.searchParams.delete('min_discount_ratio');          }                    if (this.sortSelect && this.sortSelect.value !== 'discount_desc') {            url.searchParams.set('sort', this.sortSelect.value);          } else {            url.searchParams.delete('sort');          }                    if (this.dealModeToggle && this.dealModeToggle.checked) {            url.searchParams.set('deal_mode', 'true');          } else {            url.searchParams.delete('deal_mode');          }                    window.history.replaceState({}, '', url);        }        bindEvents() {          const roundels = this.root.querySelectorAll('.tg-df-carousel-cat.original-hardcoded');          roundels.forEach(r => {             r.addEventListener('click', () => {                const q = r.getAttribute('data-query');                const pr = r.getAttribute('data-pr');                if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: q,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = q;                const label = this.root.querySelector('#tg-df-carousel-title-label');                if (label) label.textContent = 'Best ' + q;                if (this.priceFilter) this.priceFilter.value = pr || 'all';                if (this.discountFilter) this.discountFilter.value = '5';                if (this.searchInput) this.searchInput.value = q;                                roundels.forEach(ro => ro.classList.remove('active'));                r.classList.add('active');                this.fetchDeals(this.currentQuery);             });          });          const discBtns = this.root.querySelectorAll('.tg-df-carousel-filter-btn');          discBtns.forEach(b => {             b.addEventListener('click', () => {                const d = b.getAttribute('data-d');                const pr = b.getAttribute('data-pr');                const ot = b.getAttribute('data-ot');                let label = b.innerText ? b.innerText.trim() : '';                let filterType = 'unknown';                let filterVal = 'unknown';                if (d !== null) { filterType = 'discount'; filterVal = d; }                else if (pr !== null) { filterType = 'price'; filterVal = pr; }                else if (ot !== null) { filterType = 'offertype'; filterVal = ot; }                if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-${filterType}-${filterVal}`, name: 'Filter Button', label: label });                                if (d !== null) {                   if (this.discountFilter) this.discountFilter.value = this.discountFilter.value === d ? '0' : d;                } else if (pr !== null) {                   if (this.priceFilter) this.priceFilter.value = this.priceFilter.value === pr ? 'all' : pr;                } else if (ot !== null) {                   if (this.offerTypeSelect) this.offerTypeSelect.value = this.offerTypeSelect.value === ot ? 'all' : ot;                } else {                   if (this.discountFilter) this.discountFilter.value = '0';                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.offerTypeSelect) this.offerTypeSelect.value = 'all';                }                if (d === null && pr === null && ot === null && b.getAttribute("data-type") !== "custom") {                   discBtns.forEach(ro => ro.classList.remove('active'));                   b.classList.add('active');                } else if (b.getAttribute("data-type") !== "custom") {                   // Only operate on hardcoded buttons (those without data-type)                   discBtns.forEach(ro => {                      if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active');                   });                                      let makeActive = true;                   if (d !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-d') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (pr !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-pr') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (ot !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-ot') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   }                                      if (makeActive) b.classList.add('active');                                      // Check if anything is active, if not activate "All"                   let anyActive = false;                   discBtns.forEach(ro => { if (ro.classList.contains('active') && ro.getAttribute('data-type') !== 'custom') anyActive = true; });                   if (!anyActive) {                       discBtns.forEach(ro => { if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.add('active'); });                   }                }                                this.fetchDeals(this.currentQuery);             });          });          if (this.brandTrigger && this.brandDropdown) {            this.brandTrigger.addEventListener('click', () => {              this.brandDropdown.classList.toggle('active');            });            document.addEventListener('click', (e) => {              if (this.brandFilterWrapper && !e.composedPath().includes(this.brandFilterWrapper)) {                this.brandDropdown.classList.remove('active');              }            });          }          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              if (this.getViewMode() === 'savings_squad' && this.autocompleteDropdown && this.airedaleTags && query.length > 0) {                 const matches = this.airedaleTags.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase()).slice(0, 5);                 if (matches.length > 0) {                    this.autocompleteDropdown.innerHTML = matches.map(m => `\x3Cdiv class="tg-df-autocomplete-item" data-tag="${this.escapeHTML(m)}">${this.escapeHTML(m)}<` + `/div>`).join('');                    this.autocompleteDropdown.classList.add('active');                 } else {                    this.autocompleteDropdown.classList.remove('active');                 }              } else if (this.autocompleteDropdown) {                 this.autocompleteDropdown.classList.remove('active');              }              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  this.deals = [];                  this.render();                }              }, 400);            });            this.searchInput.addEventListener('keypress', (e) => {              if (e.key === 'Enter') {                if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');                clearTimeout(debounceTimer);                const query = e.target.value.trim();                this.currentQuery = query;                this.activeDealTag = null;                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   this.fetchDeals(query);                }              }            });          }          if (this.autocompleteDropdown) {             this.autocompleteDropdown.addEventListener('click', (e) => {                const item = e.target.closest('.tg-df-autocomplete-item');                if (item) {                   const tag = item.getAttribute('data-tag');                   this.currentQuery = tag;                   if (this.searchInput) this.searchInput.value = tag;                   this.activeDealTag = tag;                   this.autocompleteDropdown.classList.remove('active');                   this.updateURLParams();                   this.fetchDeals(tag);                }             });             document.addEventListener('click', (e) => {               if (this.autocompleteDropdown && this.searchInput && !e.composedPath().includes(this.searchInput) && !e.composedPath().includes(this.autocompleteDropdown)) {                 this.autocompleteDropdown.classList.remove('active');               }             });          }          if (this.searchBtn) {            this.searchBtn.addEventListener('click', () => {              if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');              clearTimeout(debounceTimer);              const query = this.searchInput.value.trim();              trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });              this.activeDealTag = null;              this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.fetchDeals(query);              }            });          }          if(this.sortSelect) this.sortSelect.addEventListener('change', () => {            trackElementInteraction({ id: `sort-option-${this.sortSelect.value}`, name: 'Sort', label: `Sort: ${this.sortSelect.options[this.sortSelect.selectedIndex].text}` });            this.updateURLParams();            if (this.deals.length > 0) {              this.sortData();              this.render();            }          });                    const priceFilter = this.root.querySelector('#tg-df-price-filter');          if (priceFilter) {            this.priceFilter = priceFilter;            this.priceFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-price-${this.priceFilter.value}`, name: 'Price', label: this.priceFilter.options[this.priceFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          const updateCustomPrice = () => {             this.updateURLParams();             if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);             } else {                this.render();             }          };          if (this.customPriceMin) {             this.customPriceMin.addEventListener('change', updateCustomPrice);             this.customPriceMin.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          if (this.customPriceMax) {             this.customPriceMax.addEventListener('change', updateCustomPrice);             this.customPriceMax.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          const discountFilter = this.root.querySelector('#tg-df-discount-filter');          if (discountFilter) {            this.discountFilter = discountFilter;            this.discountFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-discount-${this.discountFilter.value}`, name: 'Discount', label: this.discountFilter.options[this.discountFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          if (this.categoryFilter) {            this.categoryFilter.addEventListener('change', (e) => {               const val = e.target.value === 'all' ? null : e.target.value;               this.activeDealTag = val;               this.fetchSavingsSquad();            });          }                    if (this.settingsToggle) {            this.settingsToggle.addEventListener('click', () => {              const o = this.settingsPanel.classList.toggle('active');              this.settingsBackdrop.classList.toggle('active');              if (o) trackElementInteraction({ id: 'filter-open', name: 'Filters', label: 'Open filters' });            });          }                    if (this.settingsBackdrop) {            this.settingsBackdrop.addEventListener('click', () => {              this.settingsPanel.classList.remove('active');              this.settingsBackdrop.classList.remove('active');            });          }                    if (this.regionSelect) {            this.regionSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-region-${this.regionSelect.value}`, name: 'Region', label: this.regionSelect.options[this.regionSelect.selectedIndex].text });              this.updateURLParams();              this.updatePriceDropdownCurrency();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.retailerSelect) {            this.retailerSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-merchant-${this.retailerSelect.value}`, name: 'Retailer', label: this.retailerSelect.options[this.retailerSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.offerTypeSelect) {            this.offerTypeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-offertype-${this.offerTypeSelect.value}`, name: 'Offer Type', label: this.offerTypeSelect.options[this.offerTypeSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.viewModeSelect) {            this._prevViewMode = this.viewModeSelect.value;            this.viewModeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-viewmode-${this.viewModeSelect.value}`, name: 'View Mode', label: this.viewModeSelect.options[this.viewModeSelect.selectedIndex].text });                            // Reset all active toggles and filters to prevent config carry-over              this.selectedBrands = [];              if (this.brandTrigger) this.brandTrigger.innerText = 'Select Brands';              if (this.brandDropdown) {                const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                chks.forEach(chk => { chk.checked = false; });              }              if (this.priceFilter) this.priceFilter.value = 'all';              if (this.customPriceMin) this.customPriceMin.value = '';              if (this.customPriceMax) this.customPriceMax.value = '';              if (this.sortSelect) this.sortSelect.value = this.viewModeSelect.value === 'savings_squad' ? 'date_desc' : 'discount_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }          this.setupScrollListeners();        }        setupScrollListeners() {          const containers = [             this.root.querySelector('.tg-df-carousel-roundels'),             this.root.querySelector('.tg-df-carousel-filters-wrap'),             this.root.querySelector('#tg-df-grid')          ];                    containers.forEach(container => {             if (!container) return;                          const checkScroll = () => {                if (!container.parentElement) return;                const leftBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-left');                const rightBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-right');                                if (leftBtn) {                   if (container.scrollLeft <= 5) leftBtn.style.display = 'none';                   else leftBtn.style.display = 'flex';                }                                if (rightBtn) {                   if (container.scrollWidth <= container.clientWidth) {                       rightBtn.style.display = 'none';                   } else if (container.scrollLeft >= container.scrollWidth - container.clientWidth - 5) {                       rightBtn.style.display = 'none';                   } else {                       rightBtn.style.display = 'flex';                   }                }             };                          container.addEventListener('scroll', checkScroll);             checkScroll();                          window.addEventListener('resize', checkScroll);                          const observer = new MutationObserver(checkScroll);             observer.observe(container, { childList: true, subtree: true, characterData: false });          });        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        getRowsLimit() {          if (this.rowsSelect && this.rowsSelect.value) return parseInt(this.rowsSelect.value, 10);          let configSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {             configSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {             configSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(configSource);          if (params.has('rows')) return parseInt(params.get('rows'), 10) || 12;          return 12;        }        getAreaCode() {          if (this.regionSelect && this.regionSelect.value) {            if (this.regionSelect.value === 'auto') return null;            return this.regionSelect.value;          }          let area = null;          try {            const locale = window.navigator.language || window.navigator.userLanguage;            if (locale && locale.includes('-')) {              area = locale.split('-')[1].toUpperCase();            } else if (locale && locale.length === 2) {              if (locale.toUpperCase() === 'EN') { area = 'US'; }              else { area = locale.toUpperCase(); }            }          } catch (e) { /* Ignore */ }                    // Map to known valid options or fallback to US          const valid = ['US', 'GB', 'CA', 'AU', 'DE', 'FR', 'IT'];          if (area === 'UK') area = 'GB';          if (valid.includes(area)) {             return area;          }          return 'US';        }                async loadCarouselSpreadsheet() {          try {              const parseCSVRow = (str) => {                  let result = [], cur = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (inQuotes) {                          if (char === '"') {                              if (str[i + 1] === '"') { cur += '"'; i++; }                              else { inQuotes = false; }                          } else { cur += char; }                      } else {                          if (char === '"') { inQuotes = true; }                          else if (char === ',') { result.push(cur); cur = ''; }                          else { cur += char; }                      }                  }                  result.push(cur); return result;              };              const parseCSV = (str) => {                  const rows = []; let curRow = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (char === '"') inQuotes = !inQuotes;                      if ((char === '\n' || char === '\r') && !inQuotes) {                          if (char === '\r' && str[i+1] === '\n') i++;                          if (curRow) rows.push(parseCSVRow(curRow));                          curRow = '';                      } else { curRow += char; }                  }                  if (curRow) rows.push(parseCSVRow(curRow));                  return rows;              };              const preloadedCSV = decodeURIComponent(escape(atob("LCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQ0KUm91bmRlbCB0ZXh0LEFsbCxUVnMsRm9vdHdlYXIsQXBwYXJlbCxNYXR0cmVzZXMsQXBwbGlhbmNlcyxXZWFyYWJsZSB0ZWNoLEhlYWRwaG9uZXMsU21hcnQgSG9tZSxTcGVha2VycyxMYXB0b3BzLFRhYmxldHMsQ29tcHV0aW5nLFBob25lcyxHYW1pbmcsTGVnbw0KUm91bmRlbCBpbWFnZSxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2FpLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3R2cy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvN2IzYTIyNGIwNzk2M2M2MjdiNmI5MDliZDc4MzM4MzZlMDJmZjgxOS5qcGcud2VicCxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy84NGRhYzVkNDhlZDJkNDQ4NTU5ZWJhNjdhY2U4MzE0Y2M2N2NjZDk0LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvbWF0dHJlc3Nlcy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvNzY4ZTk3Y2ViMDcxODAxZmFlMjA5MTBkMDgyMGIxNmY3NDdhZjkzOS5qcGcud2VicCxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3dlbGxuZXNzLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2hlYWRwaG9uZXMuanBnLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzg5NTM1YmVlYmUyMGRiYmQ0YTM0NmQ2ZDZiZGZlOTFkOGE4ODRhMjEuanBnLndlYnAsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9hdWRpby5qcGcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9sYXB0b3BzLmpwZyxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy8yMzk3NTY0ZWQ3YTVmZjk0N2U5YjZiMzBlNTRmNDc0OTRiODQxZjg5LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvY29tcHV0aW5nLmpwZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3Bob25lcy5wbmcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9nYW1pbmcucG5nLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzRmNmM2MjFjYWMwYmMxYTg1ZDU5M2UzNTk0YmE1YjM0OWVmZmQyOTIuanBnLndlYnANClNlYXJjaCBRdWVyeSxFdmVyeXRoaW5nLFRlbGV2aXNpb25zLCJTbmVha2VycywgcnVubmluZyBzaG9lcywgc2FuZGFscyIsQ2xvdGhpbmcsTWF0dHJlc3NlcyxIb21lIEFwcGxpYW5jZXMsV2VhcmFibGVzICYgRml0bmVzcyBUZWNoLEhlYWRwaG9uZXMsSG9tZSBUZWNoLFNwZWFrZXJzLExhcHRvcHMsVGFibGV0cyxDb21wdXRpbmcsUGhvbmVzLEdhbWluZyxDb25zdHJ1Y3Rpb24gVG95cw0KRGlzY291bnQgQW1vdW50LG1pbiA1JSxtaW4gMTAlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUNClByaWNlIFJhbmdlLCwsLCxtaW4gJDQwMCwsLCxtaW4gJDI1LCxtaW4gJDMwMCwsLG1pbiAkMTAwLCwNCkJyYW5kIFNlbGVjdGlvbiwsLCwsLCwsLCwsLCwsLCwNCkZpbHRlciBidXR0b25zLCwsLCwsLCwsLCwsLCwsLA0KMSxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMNCjIsQW1hem9uIGRlYWxzLFVuZGVyICQxMDAwLDUwJSBvZmYsQWRpZGFzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsNTAlIG9mZixBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscw0KMyxPdmVyICQ0MDAsVW5kZXIgJDUwMCxIb2thLE5pa2UsU2FhdHZhLE5pbmphLDQwJSBvZmYsSkxhYiwsSkJMLERlbGwsLEFzdXMsQXBwbGUsQ29uc29sZXMsU3RhciBXYXJzDQo0LFVuZGVyICQxMDAwLDUwJSBvZmYsU2tlY2hlcnMsVW5kZXIgQXJtb3VyLEhlbGl4LFNoYXJrLEdhcm1pbixBbmtlciBTb3VuZGNvcmUsUmluZyxTb25vcyxBcHBsZSxBcHBsZSxUUC1saW5rLFNhbXN1bmcsQWNjZXNzb3JpZXMsVW5kZXIgJDI1DQo1LFVuZGVyICQ1MDAsTEcsQXNpY3MsQ29sdW1iaWEsRHJlYW1DbG91ZCxLZXVyaWcsQXBwbGUsU29ueSxHb3ZlZSxUcmliaXQsTGVub3ZvLFNhbXN1bmcsRWVybyxHb29nbGUsR2FtZXMsVW5kZXIgJDUwDQo2LDUwJSBvZmYsU2Ftc3VuZyxOaWtlLFBhdGFnb25pYSxOZWN0YXIsRGUnTG9uZ2hpLEFtYXpmaXQsQXBwbGUsS2FzYSBzbWFydCxTb255LEFsaWVud2FyZSxUQ0wsTmV0Z2VhcixNb3Rvcm9sYSxOaW50ZW5kbyxCb3RhbmljYWxzDQo3LEFtYXpvbixIaXNlbnNlLE5ldyBCYWxhbmNlLEFyYyd0ZXJ5eCxUZW1wdXItcGVkaWMsRHlzb24sRml0Yml0LEJlYXRzLFBoaWxpcHMgSHVlLEFua2VyLEFjZXIsT25lUGx1cyxEZWxsLE9uZVBsdXMsU29ueSxEaXNuZXkNCjgsQXBwbGUsVENMLEFkaWRhcyxDYXJoYXJ0dCxCZWFyLEJpc3NlbGwsU2Ftc3VuZyxFYXJmdW4sQmxpbmssQmVhdHMsTVNJLE1pY3Jvc29mdCxBY2VyLE5vdGhpbmcsWGJveCxNYXJ2ZWwNCjksLFNvbnksU2F1Y29ueSxUaGUgTm9ydGggRmFjZSxTaWVuYSxOdXRyaWJ1bGxldCxPdXJhLFNhbXN1bmcsR29vZ2xlIE5lc3QgLE1hcnNoYWxsLFNhbXN1bmcsTGVub3ZvLExlbm92bywsLFBva2Vtb24NCjEwLCxSb2t1LEJpcmtlbnN0b2NrLENSWiBZb2dhLFdpbmtCZWRzLEJsYWNrIGFuZCBEZWNrZXIsUmluZ2Nvbm4sQ01GLEV1ZnksU2Ftc3VuZyxNaWNyb3NvZnQsUmVNYXJrYWJsZSxBbGllbndhcmUsLCwNCjExLCwsQnJvb2tzLFRoZSBHeW0gUGVvcGxlLEJyb29rbHluIGJlZGRpbmcsTmVzcHJlc3NvLCwxTW9yZSxBcmxvLCxSYXplciwsQ29yc2FpciwsLA0KMTIsLCxDcm9jcywsRWlnaHQgU2xlZXAsQ3Vpc2luYXJ0LCxKQkwsLCwsLEhQLCwsDQpOb3RlcywsLCwsLCwsLCwsLCwsLCwNCiwsIlByaW9yaXRpc2UgYmlnZ2VzdCAlLyQgZGlzY291bnQsIFR2cyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiB0aGUgbW9zdCBwb3B1bGFyIGV2ZW4gaWYgdGhleSBhcmUgc3RpbGwgZXhwZW5zaXZlIiwiTm8gcGF0dGVybiB0byBwcmljaW5nL2Rpc2NvdW50LCByZWFkZXJzIG1haW5seSBzaG9wIGJ5IGJyYW5kL3JlY29nbmlzYWJsZSBzaG9lcyIsIk5vIHBhdHRlcm4gdG8gcHJpY2luZy9kaXNjb3VudCwgcmVhZGVycyBtYWlubHkgc2hvcCBieSBicmFuZCIsIkEgbGFiZWwgd2lsbCBkZWZpbml0ZWx5IGhlbHAgaGVyZSBlLmcuIGJlc3QgZm9yIHNpZGUgc2xlZXBlciwgYmVzdCBtZW1vcnkgZm9hbSIsIkFwcGxpYW5jZXMgaXMgYSBiaWcgY2F0ZWdvcnksIGlzIGl0IHBvc3NpYmxlIHRvIHNwbGl0IGludG8ga2l0Y2hlbiBhcHBsaWFuY2VzLCBmbG9vcmNhcmUsIGFpciBoZWFsdGgvY29vbGluZz8gT3Igc2ltaWxhciIsIkZvY3VzIG9uIHZhbHVlIGZvciBtb25leSwgR2FybWlucyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiBwb3B1bGFyIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0aWxsICQ1MDAiLCwsLCxJbmNsdWRlIEtpbmRsZXMsSSB3b3VsZCBpbmNsdWRlIHdpZmkgcm91dGVycyBoZXJlIGluc3RlYWQgb2Ygc21hcnQgaG9tZSxDYW4gd2Ugc3VyZmFjZSBwaG9uZSBwcm92aWRlciBkZWFscz8gVC1tb2JpbGUgYW5kIHZlcml6b24gd291bGQgbWFrZSBhIGxvdCBtb3JlIG1vbmV5IHRoYW4gQW1hem9uLCwNCiwsaGF2aW5nIGEgJ2Jlc3QgZm9yJyBsYWJlbCB3b3VsZCBiZSBoZWxwZnVsIGUuZy4gYmVzdCBmb3IgYnJpZ2h0IHJvb20sQ2FuIHdlIHN0b3Aga2lkcyBzaG9lcyBmcm9tIHB1bGxpbmcgdGhyb3VnaD8sIldpbGwgdGhpcyBpbmNsdWRlIGFjY2Vzc29yaWVzIGUuZy4gY2FwcywgYmFncywgaWYgc28gbWFrZSBzdXJlIHRoZXNlIGFyZSBtaXhlZCB0aHJvdWdob3V0IGNsb3RoaW5nIGRlYWxzIixXaWxsIHRoaXMgaW5jbHVkZSB0b3BwZXJzIGFuZCBwaWxsb3dzPyBTZWVpbmcgbW9yZSBtb21lbnR1bSB3aXRoIHRoaXMgY2F0ZWdvcnkgcmVjZW50bHkgc28gYSBiZWRkaW5nIHRhYiBtaWdodCB3b3JrLCwiTmVlZCB0byBtYWtlIHN1cmUgYmFuZHMsIHNjcmVlbiBwcm90ZWN0b3JzIGV0Yy4gZG9uJ3QgcHVsbCBpbnRvIGhlcmUiLCwsLCwsLCwsDQosLCJQcmlvcml0aXNlIDY1JycgYW5kIDU1JyBpbmNoIFRWcywgdGhlbiBiaWdnZXIgc2NyZWVucyBiZWZvcmUgdGhlIHNtYWxsZXIgc2l6ZXMiLCwsUXVlZW4gaXMgdGhlIG1vc3QgcG9wdWxhciBzaXplIGluIHRoZSBVUyAtIHByaW9yaXRpc2UgZGVhbHMgZm9yIHRoaXMgc2l6ZSwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpDYXRlZ29yaWVzIHRvIGNvbnNpZGVyLCxQcm9kdWN0cyBpbmNsdWRlZCwsLCwsLCwsLCwsLCwsDQpVbmRlciAkNTA/LCxBaXIgdGFncywsLCwsLCwsLCwsLCwsDQosLFBvcnRhYmxlIGNoYXJnZXJzL3dpcmVsZXNzIGNoYXJnZXJzLCwsLCwsLCwsLCwsLCwNCiwsIldhdGVyIGJvdHRsZXMgKHN0YW5sZXlzLCBPd2FsYSwgSHlkcm8gZmxhc2ssIFlldGkpIiwsLCwsLCwsLCwsLCwsDQosLEhhbmQgaGVsZCBmYW5zLCwsLCwsLCwsLCwsLCwNCiwsLCwsLCwsLCwsLCwsLCwNCmhvbWUgb2ZmaWNlLCxvZmZpY2UgY2hhaXJzLCwsLCwsLCwsLCwsLCwNCiwsc3RhbmRpbmcgZGVza3MsLCwsLCwsLCwsLCwsLA0KLCxtb25pdG9ycywsLCwsLCwsLCwsLCwsDQosLEtleWJvYXJkcywsLCwsLCwsLCwsLCwsDQosLGRvY2tpbmcgc3RhdGlvbiwsLCwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpHYW1pbmcsLENvbnNvbGVzLCwsLCwsLCwsLCwsLCwNCiwsQWNjZXNzb3JpZXMsLCwsLCwsLCwsLCwsLA0KLCxHYW1lcywsLCwsLCwsLCwsLCwsDQosLENvdWxkIGluY2x1ZGUgTGVnbz8sLCwsLCwsLCwsLCwsLA==")));              const text = preloadedCSV;              const parsed = parseCSV(text);                            const rowsByName = {};              let filterStart = -1;              parsed.forEach((rc, i) => {                 if (rc && rc.length > 0 && rc[0]) rowsByName[rc[0]] = rc;                 if (rc && rc.length > 0 && rc[0] === 'Filter buttons') filterStart = i;              });                            const cols = [];              if(rowsByName['Roundel text']) {                const headerRow = rowsByName['Roundel text'];                for(let col = 1; col < headerRow.length; col++) {                   let label = headerRow[col];                   if (!label) continue;                                      let q = rowsByName['Search Query'] && rowsByName['Search Query'][col] ? rowsByName['Search Query'][col] : '';                   let img = rowsByName['Roundel image'] && rowsByName['Roundel image'][col] ? rowsByName['Roundel image'][col] : '';                   let ds = rowsByName['Discount Amount'] && rowsByName['Discount Amount'][col] ? rowsByName['Discount Amount'][col] : '';                   let pr = rowsByName['Price Range'] && rowsByName['Price Range'][col] ? rowsByName['Price Range'][col] : '';                   let rt = rowsByName['Retailer'] && rowsByName['Retailer'][col] ? rowsByName['Retailer'][col] : '';                   let ot = rowsByName['Offer Type'] && rowsByName['Offer Type'][col] ? rowsByName['Offer Type'][col] : '';                                      let filters = [];                   if(filterStart > 0) {                     for(let r = filterStart + 1; r < parsed.length; r++) {                         if(!parsed[r] || parsed[r][0] === 'Notes' || parsed[r][0] === 'Categories to consider') break;                         let f = parsed[r][col];                         if(f) filters.push(f);                     }                   }                   cols.push({ label, img, q, ds, pr, rt, ot, filters });                }              }              this.carouselData = cols;              if (this.carouselData && this.carouselData.length > 0) {                 const isMatched = this.carouselData.some(c => c.q === this.currentQuery || c.label === this.currentQuery);                 if (!isMatched) {                    const first = this.carouselData[0];                    this.currentQuery = first.q || first.label;                    if (this.priceFilter) this.priceFilter.value = 'all';                    if (this.customPriceMin) this.customPriceMin.value = '';                    if (this.customPriceMax) this.customPriceMax.value = '';                    let dPr = first.pr || 'all';                    if (typeof dPr === 'string' && dPr !== 'all') {                       let prLower = dPr.toLowerCase();                       if (prLower.includes('min') || prLower.includes('over')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else if (prLower.includes('max') || prLower.includes('under')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       }                    }                    let dAm = '0';                    if(first.ds && typeof first.ds === 'string') {                       let m = first.ds.match(/(\d+)/);                       if(m) dAm = m[1];                    }                    if (this.discountFilter) this.discountFilter.value = dAm;                    if (this.offerTypeSelect) this.offerTypeSelect.value = first.ot || '';                    if (this.retailerSelect) this.retailerSelect.value = first.rt || '';                    this.selectedBrands = [];                    if (this.brandDropdown) {                        const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                        chks.forEach(chk => chk.checked = false);                    }                    if (this.searchInput) this.searchInput.value = this.currentQuery;                 }              }              this.renderCarouselUI();          } catch(e){ console.warn(e); }        }                renderCarouselUI() {           const roundelWrapper = this.root.querySelector('.tg-df-carousel-roundels');           if(!roundelWrapper || !this.carouselData) return;                      let html = '';           this.carouselData.forEach(r => {              const q = r.q || r.label;              const isActive = (this.currentQuery === q || this.currentQuery === r.label) ? 'active' : '';              const imgHtml = r.img ? `\x3Cimg src="${r.img}" alt="${r.label}" />` : `\x3Csvg width="32" height="32" fill="#1F69FF" viewBox="0 0 24 24">\x3Cpath d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\x3C/svg>`;              html += `                \x3Cdiv class="tg-df-roundel tg-df-carousel-cat ${isActive}" data-label="${this.escapeHTML(r.label)}">                  \x3Cdiv class="tg-df-roundel-img-box">${imgHtml}\x3C/div>                  \x3Cspan class="tg-df-roundel-label">${this.escapeHTML(r.label)}\x3C/span>                \x3C/div>              `;           });           roundelWrapper.innerHTML = html;                      // Rebind clicks           const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');           roundels.forEach(rNode => {             rNode.addEventListener('click', () => {                const r = this.carouselData.find(c => c.label === rNode.getAttribute('data-label'));                 if(!r) return;                                  if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: r.label,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = r.q || r.label;                const labelTitle = this.root.querySelector('#tg-df-carousel-title-label');                if (labelTitle) labelTitle.textContent = 'Best ' + this.currentQuery;                if (this.priceFilter) this.priceFilter.value = 'all';                if (this.customPriceMin) this.customPriceMin.value = '';                if (this.customPriceMax) this.customPriceMax.value = '';                let dPr = r.pr || 'all';                if (typeof dPr === 'string' && dPr !== 'all') {                   let prLower = dPr.toLowerCase();                   if (prLower.includes('min') || prLower.includes('over')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMin) this.customPriceMin.value = m[1];                   } else if (prLower.includes('max') || prLower.includes('under')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMax) this.customPriceMax.value = m[1];                   }                }                                let discountAmount = '0';                if(r.ds && typeof r.ds === 'string') {                   let m = r.ds.match(/(\d+)/);                   if(m) discountAmount = m[1];                }                if (this.discountFilter) this.discountFilter.value = discountAmount;                if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                                // Clear brands                    this.selectedBrands = [];                    if (this.brandDropdown) {                    const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                    chks.forEach(chk => chk.checked = false);                }                                if (this.searchInput) this.searchInput.value = this.currentQuery;                                roundels.forEach(ro => ro.classList.remove('active'));                if (rNode) rNode.classList.add('active');                                this.renderCarouselFilters(r);                this.fetchDeals(this.currentQuery);             });           });                      // Auto-highlight active           const activeR = this.carouselData.find(c => c.q === this.currentQuery || c.label === this.currentQuery);           if(activeR) this.renderCarouselFilters(activeR);        }                renderCarouselFilters(r) {           const filtersWrap = this.root.querySelector('.tg-df-carousel-filters-wrap');           if(!filtersWrap) return;                      let html = `\x3Cbutton class="tg-df-carousel-filter-btn" data-type="all">All\x3C/button>`;                      r.filters.forEach(f => {              let fL = f.toLowerCase();              let icon = '';              let logic = `data-type="custom" data-v="${this.escapeHTML(f)}"`;              if (fL === 'amazon deals' || fL === 'prime deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>`;              } else if (fL === 'lightning deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>`;              } else {                 if (fL.includes('lightning')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap">\x3Cpolygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2">\x3C/polygon>\x3C/svg>`;                 } else if (fL.includes('% off')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>`;                 } else if (fL.includes('under') || fL.includes('min ')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>`;                 }                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>${icon} ${this.escapeHTML(f)}\x3C/button>`;              }           });                      filtersWrap.innerHTML = html;                      const btns = filtersWrap.querySelectorAll('button');           btns.forEach(b => {             b.addEventListener('click', () => {                const type = b.getAttribute('data-type');                if (type === 'custom') {                   const v = b.getAttribute('data-v');                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-custom-${(v||'').toLowerCase().replace(/[^a-z0-9]+/g, '-')}`, name: 'Custom Filter', label: v });                }                if (type === 'all') {                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: 'filter-clear-all', name: 'Clear all', label: 'Clear all filters' });                   // reset everything                   btns.forEach(btn => btn.classList.remove('active'));                   b.classList.add('active');                                      // Reset prices                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   if (this.brandDropdown) {                     const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                     chks.forEach(chk => chk.checked = false);                   }                } else {                   const v = b.getAttribute('data-v');                   const fL = v.toLowerCase();                                      let mapRet = ['amazon', 'walmart', 'best buy', 'target', 'john lewis', 'currys', 'argos'];                   const getCategory = (s) => {                      if (s === 'lightning deals' || s === 'amazon deals' || s === 'prime deals') return 'offer';                      if (s.includes('% off')) return 'discount';                      if (s.includes('under') || s.includes('over') || s.includes('min') || s.includes('max')) return 'price';                      if (mapRet.includes(s)) return 'retailer';                      return 'brand';                   };                   const cat = getCategory(fL);                   const wasActive = b.classList.contains('active');                   if (cat !== 'brand') {                      btns.forEach(btn => {                          if (btn === b) return;                          if (btn.getAttribute('data-type') === 'all') return;                          const bV = btn.getAttribute('data-v');                          if (!bV) return;                          if (getCategory(bV.toLowerCase()) === cat) btn.classList.remove('active');                      });                   }                   if (wasActive) b.classList.remove('active');                   else b.classList.add('active');                   let anyActive = Array.from(btns).some(btn => btn !== btns[0] && btn.classList.contains('active'));                   if (!anyActive) {                       btns[0].click();                       return;                   } else {                       btns[0].classList.remove('active');                   }                                      if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   btns.forEach(btn => {                       if (!btn.classList.contains('active') || btn.getAttribute('data-type') === 'all') return;                       const vv = btn.getAttribute('data-v');                       const vl = vv.toLowerCase();                                              if (vl === 'lightning deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_lightning';                       } else if (vl === 'amazon deals' || vl === 'prime deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_prime';                       } else if (vl.includes('% off')) {                          let m = vl.match(/(\d+)%/);                          if (m && this.discountFilter) this.discountFilter.value = m[1];                       } else if (vl.includes('under') || vl.includes('max')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       } else if (vl.includes('min') || vl.includes('over')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else {                          let foundR = mapRet.find(x => x === vl);                          if (foundR) {                             let realR = ['Amazon', 'Walmart', 'Best Buy', 'Target', 'John Lewis', 'Currys', 'Argos'].find(x => x.toLowerCase() === vl);                             if (this.retailerSelect) this.retailerSelect.value = realR;                          } else {                             this.selectedBrands.push(vv);                          }                       }                   });                                      if (this.brandDropdown) {                       const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                       chks.forEach(c => c.checked = this.selectedBrands.includes(c.value));                   }                                      if (r.pr && typeof r.pr === 'string') {                       let prL = r.pr.toLowerCase();                       if (prL.includes('under $')) {                           let m = prL.match(/under \$(\d+)/i);                           if (m && this.customPriceMax && !this.customPriceMax.value) this.customPriceMax.value = m[1];                       }                   }                }                                this.fetchDeals(this.currentQuery);             });           });                      // default to highlighting first           btns[0].classList.add('active');        }async fetchDeals(query, append = false) {          if (!append) {             this.showLoading();             this.deals = [];             this.displayLimit = this.getRowsLimit();          } else {             this.displayLimit += this.getRowsLimit();          }                    try {            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad(append);            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query, append);               } else {                 await this.fetchHawkDeals(query, append);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query, append);                 }               }            }          } catch (error) {            console.warn("[Tom's Guide Widget] Fetch error:", error);            this.showError();          }        }        async fetchSavingsSquad() {          let topArticles = this.airedaleArticles;          if (!topArticles) {            const airedaleUrl = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`;            let res;            try {               res = await fetch(airedaleUrl);            } catch(e) {               try { res = await fetch(`https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`); } catch (err) { console.warn("Fallback fetch failed", err); return; }            }            if (!res.ok) throw new Error('Airedale API Error');            const articles = await res.json();            topArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);            this.airedaleArticles = topArticles;                        let tagCounts = {};            topArticles.forEach((a) => {              let articleTags = new Set();              if (a.articlecategory && Array.isArray(a.articlecategory)) {                 a.articlecategory.forEach((t) => articleTags.add(t));              }              articleTags.forEach(t => {                 tagCounts[t] = (tagCounts[t] || 0) + 1;              });            });                        this.airedaleTags = Object.keys(tagCounts).sort((a, b) => tagCounts[b] - tagCounts[a]);            this.airedaleTagCounts = tagCounts;          }                    let targetArticles = topArticles;          if (this.activeDealTag) {             const cleanTag = this.activeDealTag.toLowerCase().replace(/&/g, '').replace(/[^a-z0-9]+/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');             const encodedTag = encodeURIComponent(cleanTag);             const url = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50&articleCategoryHandle=${encodedTag}`;             try {                const res = await fetch(url);                if (res.ok) {                   const articles = await res.json();                   targetArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);                }             } catch(e) {                console.warn("Failed to fetch by activeDealTag", e);             }          }          let extractedDeals = [];          let dynamicBrandsCounts = {};                    targetArticles.forEach((article) => {             if (!article.articlepage) return;                          let pageData = [];             try {                pageData = JSON.parse(article.articlepage[0]);             } catch(e){ console.warn(e); }                          const savingsSquad = pageData.filter((p) => p.type === 'deal' || p.type === 'featured-product');                          savingsSquad.forEach((block, idx) => {                const data = block.data || {};                const isFeatured = block.type === 'featured-product';                                const link = data.link || {};                const priceObj = data.price || {};                const image = data.image || {};                                if (data.brand) {                   data.brand = data.brand.replace(/^\d+\.\s*/, '').trim();                   dynamicBrandsCounts[data.brand] = (dynamicBrandsCounts[data.brand] || 0) + 1;                }                const externalUrl = isFeatured ? data.url : (link.href || null);                let summaryTitle = isFeatured ? (data.name || data.brand) : (data.productName || link.label || article.articlename);                let description = isFeatured ? (data.strapline || '') : (data.text || '');                                if (!isFeatured && !data.productName && data.text) {                   const brSplit = data.text.split(new RegExp('\x3Cbr\\s*\\/?\\x3E', 'i'));                   if (brSplit.length > 1) {                     summaryTitle = brSplit[0].replace(/<[^>]+>/g, '').trim();                     description = brSplit.slice(1).join(' ').replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim();                   } else {                     const match = data.text.match(/\x3Cstrong>(.*?)<\/strong>/);                     if (match) {                       summaryTitle = match[1].replace(/<[^>]+>/g, '').trim();                       if (summaryTitle.endsWith(':')) summaryTitle = summaryTitle.slice(0, -1);                     }                   }                }                                let imageUrl = isFeatured ? image.mos : (image.src || null);                if (imageUrl && imageUrl.startsWith('//')) imageUrl = 'https:' + imageUrl;                                description = description.replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').replace(/View Deal$/i, '').trim();                                let merchantName = data.retailer || '';                if (!merchantName && externalUrl) {                   try {                     merchantName = new URL(externalUrl).hostname.replace('www.', '').split('.')[0];                     merchantName = merchantName.charAt(0).toUpperCase() + merchantName.slice(1);                   }catch(e){ console.warn(e); }                }                if (!merchantName) merchantName = 'Retailer';                const q = (this.currentQuery || '').toLowerCase();                const activeTagLogic = (this.activeDealTag || '').toLowerCase();                if (q.length > 2 && q !== activeTagLogic) {                   const searchTarget = `${summaryTitle || ''} ${description || ''}`.toLowerCase();                   if (!searchTarget.includes(q)) return;                }                let rawPrice = 0;                let rawMsrp = 0;                let currencyStr = '$';                if (isFeatured) {                   rawPrice = typeof data.salePrice === 'number' && data.salePrice > 0 ? data.salePrice : (typeof data.price === 'number' ? data.price : 0);                   rawMsrp = typeof data.salePrice === 'number' && typeof data.price === 'number' && data.price > data.salePrice ? data.price : 0;                   currencyStr = data.currency === 'GBP' ? '£' : '$';                } else {                   rawPrice = priceObj.amount ? parseFloat(priceObj.amount) : 0;                   rawMsrp = priceObj.amountWas ? parseFloat(priceObj.amountWas) : 0;                   currencyStr = priceObj.currency === 'GBP' ? '£' : '$';                }                                let savingAmt = 0;                let savingLabel = '';                if (rawPrice > 0 && rawMsrp > rawPrice) {                   savingAmt = parseFloat((rawMsrp - rawPrice).toFixed(2));                   savingLabel = `Save ${currencyStr}${savingAmt}`;                }                                // Apply Brand filter                if (this.selectedBrands && this.selectedBrands.length > 0) {                   const itemBrand = (data.brand || '').toLowerCase();                   const hasMatch = this.selectedBrands.some(sb => sb.toLowerCase() === itemBrand);                   if (!hasMatch) return;                }                // Apply Price filter                let priceFilterVal = null;                const min = this.customPriceMin ? this.customPriceMin.value : '';                const max = this.customPriceMax ? this.customPriceMax.value : '';                if (min || max) {                   priceFilterVal = `${min}_${max}`;                } else if (this.priceFilter && this.priceFilter.value !== 'all') {                   priceFilterVal = this.priceFilter.value;                }                if (priceFilterVal && rawPrice > 0) {                   if (priceFilterVal === 'under50' && rawPrice >= 50) return;                   if (priceFilterVal === 'over50' && rawPrice <= 50) return;                   if (priceFilterVal === 'over30' && rawPrice <= 30) return;                   if (priceFilterVal === 'over500' && rawPrice <= 500) return;                   if (priceFilterVal.includes('_')) {                      const parts = priceFilterVal.split('_');                      const min = parseFloat(parts[0]);                      const max = parseFloat(parts[1]);                      if (!isNaN(min) && rawPrice < min) return;                      if (!isNaN(max) && rawPrice > max) return;                   }                }                // Apply Discount filter                if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {                   const requiredDiscount = parseInt(this.discountFilter.value);                   if (!isNaN(requiredDiscount) && requiredDiscount > 0) {                      if (!rawMsrp || rawMsrp <= rawPrice) return;                      const ratio = Math.round((1 - (rawPrice / rawMsrp)) * 100);                      if (ratio < requiredDiscount) return;                   }                }                                extractedDeals.push({                   id: `airedale-${article.id || Math.random()}-${idx}`,                   url: externalUrl,                   image: imageUrl,                   fallbackImage: imageUrl,                   title: summaryTitle,                   brand: data.brand || '',                   productName: data.productName || '',                   merchant: merchantName,                   rawPrice: rawPrice,                   rawMsrp: rawMsrp,                   price: rawPrice > 0 ? rawPrice.toString() : '',                   msrp: rawMsrp > 0 ? rawMsrp.toString() : '',                   currency: currencyStr,                   isCheckPrice: !rawPrice,                   savingLabel: savingLabel,                   savingType: rawMsrp > rawPrice ? 'amount' : 'none',                   isPrime: false,                   starRating: null,                   description: description,                   text: data.text || ''                });             });          });                    const airedaleBrandsList = Object.keys(dynamicBrandsCounts).map(b => ({              formatted_value: b,              count: dynamicBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query, append = false) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    if (append && this.deals.length > 0) {            url.searchParams.append('offset', this.deals.length.toString());          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.append('filter_merchant_name', this.retailerSelect.value);          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.append('filter_label[text_brand]', this.selectedBrands.join(','));          }                    let priceVal = null;          const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             priceVal = `${min}_${max}`;          } else if (this.priceFilter && this.priceFilter.value !== 'all') {             priceVal = this.priceFilter.value;          }          if (priceVal) {            if (priceVal === 'under50') {              url.searchParams.append('filter_max_price', '50');            } else if (priceVal === 'over50') {              url.searchParams.append('filter_min_price', '50');            } else if (priceVal === 'over30') {              url.searchParams.append('filter_min_price', '30');            } else if (priceVal === 'over500') {              url.searchParams.append('filter_min_price', '500');            } else if (priceVal.includes('_')) {              const parts = priceVal.split('_');              if (parts[0]) url.searchParams.append('filter_min_price', parts[0]);              if (parts[1]) url.searchParams.append('filter_max_price', parts[1]);            }          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {              const ratio = (100 - v) / 100;              url.searchParams.append('min_discount_ratio', ratio.toString());            }          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.append('offer', this.offerTypeSelect.value);          }                    url.searchParams.append('filter_product_types', 'deals');                    url.searchParams.append('rows', this.getRowsLimit().toString());          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = this.getRowsLimit();          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : (this.getViewMode() === 'savings_squad' ? 'date_desc' : 'discount_desc');          if (sortVal === 'price_asc') {            this.deals.sort((a, b) => a.rawPrice - b.rawPrice);          } else if (sortVal === 'price_desc') {            this.deals.sort((a, b) => b.rawPrice - a.rawPrice);          } else if (sortVal === 'discount_desc') {            this.deals.sort((a, b) => {              const aDiscount = a.rawMsrp > a.rawPrice ? (a.rawMsrp - a.rawPrice) : 0;              const bDiscount = b.rawMsrp > b.rawPrice ? (b.rawMsrp - b.rawPrice) : 0;              return bDiscount - aDiscount;            });          } else if (sortVal === 'date_desc') {             this.deals.sort((a, b) => {                let dateA = 0;                let dateB = 0;                if (a && a.modifiedDate) {                   const valA = Array.isArray(a.modifiedDate) ? a.modifiedDate[0] : a.modifiedDate;                   dateA = new Date(valA).getTime();                   if (isNaN(dateA)) dateA = 0;                }                if (b && b.modifiedDate) {                   const valB = Array.isArray(b.modifiedDate) ? b.modifiedDate[0] : b.modifiedDate;                   dateB = new Date(valB).getTime();                   if (isNaN(dateB)) dateB = 0;                }                return dateB - dateA;             });          }        }        getFilteredDeals() {          let filteredDeals = [...this.deals];                    if (this.dealModeToggle && this.dealModeToggle.checked) {            filteredDeals = filteredDeals.filter(d => d.hasWasPrice || (d.msrp && d.rawMsrp > d.rawPrice));          }                    return filteredDeals;        }        showLoading() {          const _div = '<' + '/div>';          const skeletonCardHtml = `            \x3Cdiv class="tg-df-card">              \x3Cdiv class="tg-df-card-image-box">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-img">${_div}              ${_div}              \x3Cdiv class="tg-df-card-body">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-card-footer mt-auto">                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="height:24px;">${_div}                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin-top:8px;">${_div}                ${_div}              ${_div}            ${_div}`;          this.grid.innerHTML = Array(4).fill(skeletonCardHtml).join('');        }        showError() {          const _div = '<' + '/div>';          this.grid.innerHTML = `\x3Cdiv class="tg-df-message">            An error occurred while finding deals. Please check your connection and try again.          ${_div}`;        }        escapeHTML(str) {          if (!str) return '';          return String(str).replace(/[&<>'"]/g, tag => ({              '&': '&', '<': '<', '>': '>', "'": ''', '"': '"'          }[tag] || tag));        }                bindCouponButtons() {          const btns = this.root.querySelectorAll('.tg-df-tag-coupons');          btns.forEach(btn => {            btn.addEventListener('click', (e) => {              e.preventDefault();              e.stopPropagation();              const merchant = btn.getAttribute('data-merchant');              this.openVouchersModal(merchant);            });          });                    const closeBtn = this.root.querySelector('#tg-df-vouchers-close');          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (closeBtn) {            closeBtn.onclick = () => this.closeVouchersModal();          }          if (backdrop) {            backdrop.onclick = (e) => {              if (e.target === backdrop) this.closeVouchersModal();            };          }        }                closeVouchersModal() {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (backdrop) backdrop.classList.remove('active');        }                async checkMerchantsCouponsBulk(merchants) {          if (!merchants || merchants.length === 0) return {};          const controller = new AbortController();          const timeoutId = setTimeout(() => controller.abort(), 4000);          try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchants.join(','));            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '120');            url.searchParams.append('origin', 'widgets-clientside');                        let res; try { res = await fetch(url.toString(), { signal: controller.signal }); } catch (e) { return {}; }            clearTimeout(timeoutId);            if (!res.ok) return {};            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        const foundMerchants = new Set();            offers.forEach(o => {              let mName = o.merchant_name || o.merchant || o.retailer;              if (mName && typeof mName === 'object') mName = mName.name;              if (mName) foundMerchants.add(String(mName).toLowerCase());            });            const resultMap = {};            merchants.forEach(m => {              if (m) resultMap[m] = foundMerchants.has(String(m).toLowerCase());            });            return resultMap;          } catch (e) {            return {};          }        }                async openVouchersModal(merchantName) {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          const title = this.root.querySelector('#tg-df-vouchers-title');          const content = this.root.querySelector('#tg-df-vouchers-content');                    if (!backdrop || !content) return;                    // HACK: Hide closing tags          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h4 = '<' + '/h4>';          const _svg = '<' + '/svg>';          const _circle = '<' + '/circle>';          const _polyline = '<' + '/polyline>';          const _rect = '<' + '/rect>';          const _path = '<' + '/path>';                    title.innerText = `${merchantName} Coupons & Deals`;          content.innerHTML = `\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}                               \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}`;          backdrop.classList.add('active');                    try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchantName);            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '50');            url.searchParams.append('origin', 'widgets-clientside');                        const res = await fetch(url.toString());            if (!res.ok) throw new Error('API Error');            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        if (offers.length === 0) {              content.innerHTML = `\x3Cdiv class="tg-df-message">No vouchers currently available for ${this.escapeHTML(merchantName)}.${_div}`;              return;            }                        content.innerHTML = offers.map((v, idx) => {              let offerObj = v;              if (v.offers && v.offers.offer) {                offerObj = Array.isArray(v.offers.offer) ? v.offers.offer[0] : v.offers.offer;              } else if (v.offer) {                offerObj = Array.isArray(v.offer) ? v.offer[0] : v.offer;              }              let logoUrl = v.logo_url || offerObj.logo_url || '';              if (!logoUrl && v.merchant) {                if (Array.isArray(v.merchant) && v.merchant.length > 0) logoUrl = v.merchant[0].logo_url || '';                else logoUrl = v.merchant.logo_url || '';              }                            const offerName = offerObj.name || offerObj.title || v.name || v.title || 'Special Offer';              const endTime = offerObj.end_time || v.end_time || '';              const linkUrl = offerObj.link || offerObj.url || v.link || v.url || '#';                            let foundVoucherCode = '';              const findVoucherCode = (obj) => {                if (!obj || typeof obj !== 'object') return;                if (obj.type === 'voucher_code' && obj.display_value) {                  foundVoucherCode = obj.display_value;                  return;                }                if (Array.isArray(obj)) {                  for (const item of obj) {                    findVoucherCode(item);                    if (foundVoucherCode) return;                  }                } else {                  for (const k in obj) {                    if (Object.prototype.hasOwnProperty.call(obj, k)) {                      findVoucherCode(obj[k]);                      if (foundVoucherCode) return;                    }                  }                }              };              findVoucherCode(offerObj);              if (!foundVoucherCode) findVoucherCode(v);                            const voucherCode = foundVoucherCode || offerObj.voucher_code || v.voucher_code || '';              const codeHtml = voucherCode ? `\x3Cspan class="tg-df-voucher-code" data-action="copy-code" data-code="${this.escapeHTML(voucherCode)}" title="Copy to clipboard">                \x3Cspan class="tg-df-voucher-code-text">${this.escapeHTML(voucherCode)}${_span}                \x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-left:6px;flex-shrink:0;" class="tg-df-voucher-copy-icon">                  \x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">${_rect}                  \x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">${_path}                ${_svg}              ${_span}` : '';                            const logoHtml = logoUrl                 ? `\x3Cimg src="${this.escapeHTML(logoUrl)}" alt="${this.escapeHTML(offerName)}" class="tg-df-voucher-logo" />`                 : `\x3Cdiv class="tg-df-voucher-logo" style="background:#e2e8f0;">${_div}`;                            let expiryHtml = '';              if (endTime) {                let dStr = endTime;                if (!isNaN(dStr) && String(dStr).length === 10) dStr = Number(dStr) * 1000;                const d = new Date(dStr);                if (!isNaN(d.getTime())) {                  const options = { year: 'numeric', month: 'short', day: 'numeric' };                  expiryHtml = `                    \x3Cdiv class="tg-df-voucher-expiry">                      \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                        \x3Ccircle cx="12" cy="12" r="10">${_circle}                        \x3Cpolyline points="12 6 12 12 16 14">${_polyline}                      ${_svg}                      Expires ${d.toLocaleDateString(undefined, options)}                    ${_div}`;                }              }              const revenueIdVal = generateRevenueId(linkUrl, offerName, merchantName, null);              const rewrittenLinkUrl = rewriteAffiliateLink(linkUrl, area, revenueIdVal);              return `                \x3Ca href="${this.escapeHTML(rewrittenLinkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item"                  data-action="voucher-click"                  data-product-name="${this.escapeHTML(offerName)}"                  data-merchant-name="${this.escapeHTML(merchantName)}"                  data-analytics-id="${this.escapeHTML(offerObj.offer_id || offerObj.id || v.id || '')}"                  data-price=""                  data-previous-price=""                  data-original-link="${this.escapeHTML(linkUrl)}"                  data-revenue-id="${revenueIdVal}"                  data-index="${idx}"                  data-total="${offers.length}"                  data-in-stock="true"                  data-currency="USD"                  data-model-id="${this.escapeHTML(offerObj.model_id || v.model_id || offerObj.id || v.id || '')}"                  data-merchant-id="${this.escapeHTML(offerObj.merchant_id || offerObj.merchant?.id || '')}"                >                  ${logoHtml}                  \x3Cdiv class="tg-df-voucher-content">                    \x3Ch4 class="tg-df-voucher-title">${this.escapeHTML(offerName)}${_h4}                    ${codeHtml}                    ${expiryHtml}                  ${_div}                ${_a}              `;            }).join('');                        // Attach copy functionality            const copyBtns = content.querySelectorAll('[data-action="copy-code"]');            copyBtns.forEach(btn => {              btn.addEventListener('click', async (e) => {                e.preventDefault();                e.stopPropagation();                                const code = btn.getAttribute('data-code');                if (!code) return;                                try {                  const copyToClipboard = async (text) => {                     if (window.navigator.clipboard && window.isSecureContext) {                        try { await window.navigator.clipboard.writeText(text); return; } catch (e) {}                     }                     const textArea = document.createElement("textarea");                     textArea.value = text;                     textArea.style.position = "fixed";                     document.body.appendChild(textArea);                     textArea.focus();                     textArea.select();                     document.execCommand('copy');                     textArea.remove();                  };                  await copyToClipboard(code);                                    // Visual feedback                  btn.classList.add('copied');                  const textSpan = btn.querySelector('.tg-df-voucher-code-text');                  const iconSvg = btn.querySelector('.tg-df-voucher-copy-icon');                                    const origText = textSpan.innerText;                  const origIcon = iconSvg.innerHTML;                                    textSpan.innerText = 'Copied!';                  iconSvg.innerHTML = `\x3Cpolyline points="20 6 9 17 4 12">${_polyline}`;                                    setTimeout(() => {                    if (btn) {                      btn.classList.remove('copied');                      if (textSpan) textSpan.innerText = origText;                      if (iconSvg) iconSvg.innerHTML = origIcon;                    }                  }, 2000);                                    trackElementInteraction({                    id: 'voucher-code-copy',                    name: 'Copy Voucher Code',                    label: `Copied ${code} for ${merchantName}`                  });                } catch (err) {                  console.warn('Failed to copy text: ', err);                }              });            });            // Attach voucher click tracking            const voucherBtns = content.querySelectorAll('[data-action="voucher-click"]');            voucherBtns.forEach(btn => {              btn.addEventListener('click', (e) => {                if (e.target.closest('[data-action="copy-code"]')) return;                                const productName = btn.getAttribute('data-product-name');                const merchantNameAttr = btn.getAttribute('data-merchant-name');                const productId = btn.getAttribute('data-analytics-id');                const price = parseFloat(btn.getAttribute('data-price')) || null;                const prevPriceStr = btn.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = btn.getAttribute('data-original-link');                const rewrittenLink = btn.getAttribute('href');                const revenueId = btn.getAttribute('data-revenue-id');                const index = parseInt(btn.getAttribute('data-index'), 10) || 0;                const inStock = btn.getAttribute('data-in-stock') === 'true';                const totalText = btn.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: btn.getAttribute('data-model-id') || null,                    matchId: btn.getAttribute('data-match-id') || null,                    brand: btn.getAttribute('data-model-brand') || null,                    parent: btn.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: btn.getAttribute('data-merchant-id') || null,                    network: btn.getAttribute('data-merchant-network') || null,                    url: btn.getAttribute('data-merchant-url') || null,                    name: merchantNameAttr                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: btn.getAttribute('data-currency') || 'USD'                };                if (typeof trackDealClick === 'function') {                  trackDealClick(trackingParams);                }              });            });                                  } catch (e) {            console.warn(e);            content.innerHTML = `\x3Cdiv class="tg-df-message">Failed to load vouchers.${_div}`;          }        }        render() {          try {            if (this.getViewMode() === 'savings_squad' && this.airedaleTags.length > 0) {              if (this.categoryFilterWrapper) {                 this.categoryFilterWrapper.style.display = 'flex';              }              if (this.categoryFilter) {                 const _option = '<' + '/option>';                 let optionsHtml = `\x3Coption value="all">All Categories${_option}`;                 this.airedaleTags.forEach(tag => {                    const isSelected = this.activeDealTag === tag ? 'selected' : '';                    optionsHtml += `\x3Coption value="${this.escapeHTML(tag)}" ${isSelected}>${this.escapeHTML(tag)} (${this.airedaleTagCounts[tag] || 0})${_option}`;                 });                 this.categoryFilter.innerHTML = optionsHtml;                 this.categoryFilter.value = this.activeDealTag || 'all';              }            } else {               if (this.categoryFilterWrapper) {                  this.categoryFilterWrapper.style.display = 'none';               }            }            const displayDeals = this.getFilteredDeals();          // HACK: Hide closing tags from the CMS HTML sanitizer so it doesn't strip them during in-page injection          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h3 = '<' + '/h3>';          const _p = '<' + '/p>';          const _strong = '<' + '/strong>';          const _sup = '<' + '/sup>';          const _button = '<' + '/button>';          if (displayDeals.length === 0) {            if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {              if (this.deals.length > 0) {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No deals match your selected filters.                ${_div}`;              } else if (this.getViewMode() === 'savings_squad' && this.currentQuery.length <= 2) {                 // Do not show "no exact matches" if query is empty for savings_squad                 this.grid.innerHTML = '';              } else {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No exact matches found for "\x3Cstrong>${this.escapeHTML(this.currentQuery)}${_strong}". Try adjusting your search term.                ${_div}`;              }            } else {              this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                Search product or category names to discover the best deals from across the web.              ${_div}`;            }            return;          }          let dealsHtml = displayDeals.slice(0, this.displayLimit).map((deal, index) => {            try {               const currencySym = this.escapeHTML(deal.currency);               const isoCurrencyCode = normalizeCurrency(currencySym);               const escapedPrice = this.escapeHTML(deal.price);               const escapedMsrp = this.escapeHTML(deal.msrp);               const areaCode = this.getAreaCode();                              const revenueId = generateRevenueId(deal.url, deal.title, deal.merchant, null);               const originalLink = deal.url;               const rewrittenLink = rewriteAffiliateLink(deal.url, areaCode, revenueId);                        const productCategoryName = 'deals';            const dataAttr = `              data-action="${deal.isCheckPrice ? 'view-similar-click' : 'deal-click'}"              data-analytics-id="${this.escapeHTML(deal.externalProductId || deal.id || '')}"              data-product-name="${this.escapeHTML(deal.title)}"              data-merchant-name="${this.escapeHTML(deal.merchant)}"              data-price="${deal.rawPrice || ''}"              data-previous-price="${deal.rawMsrp || ''}"              data-original-link="${this.escapeHTML(originalLink)}"              data-revenue-id="${revenueId}"              data-index="${index}"              data-total="${displayDeals.length}"              data-in-stock="${deal.inStock !== false}"              data-currency="${this.escapeHTML(isoCurrencyCode)}"              data-model-id="${this.escapeHTML(deal.modelId || '')}"              data-product-key="${this.escapeHTML(deal.productKey || '')}"              data-merchant-id="${this.escapeHTML(deal.merchantId || '')}"            `;                        let priceGroupHtml = '';            let isSavingsSquadMode = this.getViewMode() === 'savings_squad';            let ctaText = 'View Deal';            let formattedPrice = '';            let msrpHtml = '';                        if (deal.isCheckPrice) {              ctaText = isSavingsSquadMode ? 'View Deal' : 'Check Price';              if (isSavingsSquadMode) {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                  ${_div}                `;              } else {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                    \x3Cspan class="tg-df-card-price" style="font-size: 15px; font-weight: 500; font-style: italic;">See price at retailer${_span}                  ${_div}                `;              }            } else {              // Format Price              formattedPrice = escapedPrice.includes(currencySym)                 ? escapedPrice                 : `${currencySym}${escapedPrice}`;                              // Format MSRP              msrpHtml = deal.msrp && deal.rawMsrp > deal.rawPrice                ? `\x3Cspan class="tg-df-card-msrp">${escapedMsrp.includes(currencySym) ? escapedMsrp : currencySym + escapedMsrp}${_span}`                : '';                              priceGroupHtml = `                \x3Cdiv class="tg-df-card-merchant-wrapper">                  \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                ${_div}                \x3Cdiv class="tg-df-card-price-group">                  ${isSavingsSquadMode ? '' : `                  \x3Cspan class="tg-df-card-price">${formattedPrice}${_span}                  ${msrpHtml}                  `}                ${_div}              `;            }                        const discountBadgeHtml = deal.savingLabel && !deal.isCheckPrice              ? `\x3Cspan class="tg-df-card-discount-badge">${this.escapeHTML(deal.savingLabel)}${_span}`              : '';                          // HACK for CMS            const _button = '<' + '/button>';            const _svg = '<' + '/svg>';            const _path = '<' + '/path>';            const _rect = '<' + '/rect>';            const _circle = '<' + '/circle>';            const _polyline = '<' + '/polyline>';            const _line = '<' + '/line>';                        let badgesHtml = '';            const primeBadge = deal.isPrime ? `              \x3Cspan class="tg-df-tag tg-df-tag-prime">                \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="currentColor">                  \x3Cpath d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z">${_path}                ${_svg} Prime              ${_span}            ` : '';                        const couponsBadge = deal.merchant && deal.merchant.toLowerCase().includes('amazon') ? '' : `              \x3Cdiv class="tg-df-coupon-wrapper" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:inline-flex; align-items:center;">                \x3Cdiv class="tg-df-coupon-spinner">${_div}                \x3Cbutton type="button" class="tg-df-tag tg-df-tag-coupons" data-action="coupons-click" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:none;">                  \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                    \x3Cpath d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z">${_path}                    \x3Cline x1="7" y1="7" x2="7.01" y2="7">${_line}                  ${_svg} Coupons                ${_button}              ${_div}            `;                        // Note: We always add coupons badge if there's a chance, but to allow 3-line titles we check wrapper display state            badgesHtml = `              \x3Cdiv class="tg-df-card-badges">                ${primeBadge}                ${couponsBadge}              ${_div}            `;            const _linearGradient = '<' + '/linearGradient>';            const _polygon = '<' + '/polygon>';            const _stop = '<' + '/stop>';            const _defs = '<' + '/defs>';                        let starHtml = '';            if (deal.starRating) {              let rating = deal.starRating;                            if (rating > 0) {                const fullStars = Math.floor(rating);                const halfStar = (rating - fullStars) >= 0.5 ? 1 : 0;                const emptyStars = Math.max(0, 5 - fullStars - halfStar);                const blue = '#1f69ff'; // Tom's guide brand color from VIEW DEAL button                const gray = '#cbd5e1';                                const starSvgFull = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="${blue}" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                const gradId = 'half_grad_' + Math.floor(Math.random()*1000000);                const starSvgHalf = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cdefs>\x3ClinearGradient id="${gradId}" x1="0" x2="1" y1="0" y2="0">\x3Cstop offset="50%" stop-color="${blue}">${_stop}\x3Cstop offset="50%" stop-color="transparent">${_stop}${_linearGradient}${_defs}                  \x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26" fill="url(#${gradId})">${_polygon}${_svg}`;                                  const starSvgEmpty = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="${gray}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                let stars = [];                for (let i=0; i<fullStars; i++) stars.push(starSvgFull);                if (halfStar) stars.push(starSvgHalf);                for (let i=0; i<emptyStars; i++) stars.push(starSvgEmpty);                                starHtml = `\x3Cdiv class="tg-df-card-stars" style="display:flex;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--tg-df-text-muted);">                  \x3Cspan style="margin-right:6px;">Tom's Guide:${_span}                  \x3Cdiv style="display:flex;gap:2px;">                    ${stars.join('')}                  ${_div}                ${_div}`;              }            }            let htmlOutput = '';            if (isSavingsSquadMode) {              htmlOutput += `              \x3Cdiv class="hawk-deal-widget-container tg-df-mobile-only" data-collapsible="true">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''} style="margin-bottom: 10px;">` : ''}                \x3Cdiv class="hawk-deal-widget-wrap">                  \x3Cdiv class="hawk-deal-widget-image-container">                    \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" rel="sponsored noopener" target="_blank" class="hawk-affiliate-link-deal-widget" ${dataAttr}>                      \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="hawk-lazy-image-deal-widget" loading="lazy" width="140" height="160" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                    ${_a}                  ${_div}                  \x3Cdiv class="hawk-deal-widget-text-cta-container">                    \x3Cdiv class="hawk-deal-widget-text-body-container">                      \x3Cdiv class="hawk-deal-widget-text-body-main">                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          ${deal.isCheckPrice ? `                            \x3Cspan class="hawk-deal-widget-title-product-title">${this.escapeHTML(deal.title)}${_span}                          ` : `                            \x3Cspan class="hawk-deal-widget-title-product-title">${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_span}                          `}                        ${_a}                        ${!deal.isCheckPrice && deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan class="hawk-deal-widget-title-was-price">was ${currencySym}${escapedMsrp}${_span}                          ${_a}                        ` : ''}                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          \x3Cspan class="hawk-deal-widget-title-retailer-price">                            ${!deal.isCheckPrice ? `                              \x3Cspan class="hawk-deal-widget-title-price">now ${formattedPrice}${_span}                              \x3Cspan class="hawk-deal-widget-title-retailer"> at ${this.escapeHTML(deal.merchant)}${_span}                            ` : `                              \x3Cspan class="hawk-deal-widget-title-price">See price at ${this.escapeHTML(deal.merchant)}${_span}                            `}                          ${_span}                        ${_a}                        ${deal.description ? `\x3Cdiv class="hawk-deal-widget-text-body-description">\x3Cp>${this.escapeHTML(deal.description)}${_p}${_div}` : ''}                      ${_div}                    ${_div}                    \x3Cdiv class="hawk-deal-widget-footer">                      \x3Cdiv class="hawk-deal-widget-button-wrapper">                        \x3Cdiv class="hawk-deal-widget-preferred-partner-wrapper">                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-deal-button" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan>${deal.isCheckPrice ? 'Check Price' : 'View Deal'}${_span}                          ${_a}                        ${_div}                      ${_div}                    ${_div}                  ${_div}                ${_div}              ${_div}              `;            }            htmlOutput += `              \x3Cdiv class="tg-df-card ${isSavingsSquadMode ? 'tg-df-desktop-only' : ''}">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''}>` : ''}                \x3Cdiv class="tg-df-card-image-box">                  ${discountBadgeHtml}                  \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">                    \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="tg-df-card-image" loading="lazy" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                  ${_a}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cp style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 12px; line-height: 1.4;">${this.escapeHTML(deal.description)}${_p}` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${priceGroupHtml}                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta ${isSavingsSquadMode ? 'tg-df-cta-savings-squad' : ''}" style="text-decoration: none;">${ctaText}${_a}                  ${_div}                ${_div}              ${_div}            `;                        return htmlOutput;            } catch (e) {               console.log("Error rendering deal in map for index", index, typeof deal === 'object' ? JSON.stringify(deal) : deal, "MSG:", e.message);               return '';            }          }).join('');                    if (displayDeals.length > this.displayLimit || ((this.getViewMode() === 'carousel' || this.getViewMode() === 'auto') && displayDeals.length > 0 && displayDeals.length % ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12) === 0)) {            if (this.getViewMode() === 'carousel') {               dealsHtml += `                 \x3Cbutton type="button" class="tg-df-load-more-card tg-df-load-more">                   \x3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-bottom: 8px;">\x3Cpath d="M5 12h14">\x3C/path>\x3Cpath d="m12 5 7 7-7 7">\x3C/path>\x3C/svg>                   Load More                 ${_button}               `;            } else {               dealsHtml += `                 \x3Cdiv style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1;">                   \x3Cbutton type="button" class="tg-df-tag-outline tg-df-load-more" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer; display: flex; align-items: center;">Load More${_button}                 ${_div}               `;            }          }                    this.grid.innerHTML = dealsHtml;          // Inject JSON-LD          try {            let targetNode = this.hostContainer || document.head;            let jsonLdScript = targetNode.querySelector('#tg-df-json-ld-' + this.widgetId);            if (!jsonLdScript) {                jsonLdScript = document.createElement('script');                jsonLdScript.type = 'application/ld+json';                jsonLdScript.id = 'tg-df-json-ld-' + this.widgetId;                targetNode.appendChild(jsonLdScript);            }            const jsonLdData = {              "@context": "https://schema.org",              "@type": "ItemList",              "itemListElement": displayDeals.slice(0, this.displayLimit).map((deal, index) => {                 let isoCurrency = "USD";                 if (deal.currency === '£') isoCurrency = "GBP";                 else if (deal.currency === '€') isoCurrency = "EUR";                 else if (deal.currency === 'A$') isoCurrency = "AUD";                 else if (deal.currency === 'CA$') isoCurrency = "CAD";                 const areaCode = typeof this.getAreaCode === 'function' ? this.getAreaCode() : 'US';                 const revenueId = typeof generateRevenueId === 'function' ? generateRevenueId(deal.url, deal.title, deal.merchant, null) : '';                 const rewrittenLink = typeof rewriteAffiliateLink === 'function' ? rewriteAffiliateLink(deal.url, areaCode, revenueId) : deal.url;                 return {                   "@type": "ListItem",                   "position": index + 1,                   "item": {                     "@type": "Product",                     "name": deal.title,                     "image": deal.image || "",                     "description": deal.description || "",                     "brand": {                       "@type": "Brand",                       "name": deal.brand || ""                     },                     "offers": {                       "@type": "Offer",                       "priceCurrency": isoCurrency,                       "price": deal.rawPrice || 0,                       "url": rewrittenLink,                       "seller": {                         "@type": "Organization",                         "name": deal.merchant || ""                       }                     }                   }                 };              }).filter(item => item.item.name)            };            jsonLdScript.textContent = JSON.stringify(jsonLdData);          } catch(e) { console.warn("JSON-LD generation failed", e); }                    let gridWrapper = this.grid.parentElement;          if (gridWrapper && gridWrapper.classList.contains('tg-df-grid-wrapper')) {             let rightChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-right');             let leftChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-left');             if (this.getViewMode() === 'carousel') {                 // The observer set up in setupScrollListeners handles visibility.                 if (rightChevron) rightChevron.style.display = 'flex';                 if (leftChevron) leftChevron.style.display = 'none'; // reset correctly             } else {                 if (rightChevron) rightChevron.style.display = 'none';                 if (leftChevron) leftChevron.style.display = 'none';             }          }                    const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', async () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              if (displayDeals.length <= this.displayLimit) {                 loadMoreBtn.innerHTML = `                  <svg class="tg-df-spinner" style="width: 16px; height: 16px; display: inline-block; vertical-align: middle; margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M12 2v4m0 12v4M4.93 4.93l2.83 2.83m8.48 8.48l2.83 2.83M2 12h4m12 0h4M4.93 19.07l2.83-2.83m8.48-8.48l2.83-2.83"/></svg>                  Loading...                 `;                 loadMoreBtn.disabled = true;                 await this.fetchDeals(this.currentQuery, true);              } else {                 this.displayLimit += this.getRowsLimit();                 this.render();              }            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();                        // Allow hawklinks.js to discover and rewrite our widget links             // by appending the .article-body class and manually triggering processArticle.            let container = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (container && !container.classList.contains('article-body')) {               container.classList.add('article-body');            }            setTimeout(() => {               if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');               document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));            }, 50);          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/i-spoke-to-the-microsoft-pm-rebuilding-windows-11-for-nvidia-rtx-spark-the-radical-reinvention-building-the-first-true-macbook-pro-threat</link>
                                                                            <description>
                            <![CDATA[ “Half of Santa Clara was jumping.” An exclusive interview with Microsoft on rebuilding Windows 11 from the ground up for Nvidia’s RTX Spark silicon. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hT9VZpkvYjuDisFYQM8J85</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 07 Sep 2026 08:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX Spark]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX Spark]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX Spark]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>For eight grueling months leading up to the end of last year, engineers from Microsoft and Nvidia worked side by side from the silicon bootstrap level upward. And the goal? Making Windows 11 play nice with an unprecedented architectural shift: an Arm-based CPU sharing massive unified memory with a desktop-class Nvidia RTX GPU.</p><p>And then, the first <a href="https://www.tomsguide.com/computing/laptops/nvidias-rtx-spark-n1x-drops-this-october-why-apple-silicon-should-be-terrified-and-our-price-predictions">RTX Spark</a> machine finally booted. The red LED lit up, and as Microsoft's Principal Product Manager, Peter Dawoud, recalls it: “half of Santa Clara was jumping.” This was a huge undertaking, but now the real work begins: fine-tuning everything.</p><p>RTX Spark isn’t just another laptop sticker; it pushed Microsoft to fundamentally overhaul five foundational subsystems inside Windows 11 to bridge the gap between low-power Arm efficiency, top-tier AAA gaming, and local agentic AI.</p><p>I spoke to Dawoud about the software underpinning Team Green’s hardware because, as he said, “Windows kind of had to get all these subsystems right all at the same time, so that you can enjoy an RTX Spark device and take the most advantage out of it.”</p><h2 id="a-prism-emulator-overhaul">A Prism Emulator overhaul</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oWfTLRd5NPjKy6jDQeEsq4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/oWfTLRd5NPjKy6jDQeEsq4.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Take it from someone who has watched the many attempts to run Windows on ARM chips (and covered the Snapdragon X Elite launch): emulation has always had an Achilles’ heel when it comes to gaming: micro-stuttering and frame pacing.</p><p>“When you're playing video games, it's not just about your average FPS. 1% lows, stuttering is really critical, and your CPU actually plays a very big role in stuttering control,” Dawoud explained.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VPJcvprGffc9FfD2cHiytJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/VPJcvprGffc9FfD2cHiytJ.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While average frame rates look acceptable, CPU timing can get erratic when you try to emulate a game and play it at the same time, which can make fast-paced gaming feel jerky. When somebody buys an Nvidia laptop in October, the chances are likely that they will want to play games on it — it’s an RTX GPU after all.</p><p>So work needed to be done, and Microsoft has overhauled the Prism emulation layer for RTX Spark’s pipelines. By shoring up how tasks are assigned to each of the CPU’s threads, frame rates are much more stable in my testing, and the improvement over past versions is night and day.</p><h2 id="ui-polish-amp-the-agentic-future">UI polish & the agentic future</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2570px;"><p class="vanilla-image-block" style="padding-top:66.65%;"><img id="4fF35LQYkV4jpZNrPUKxZg" name="win11improvedsearchg" alt="Windows 11 Improved Search in action" src="https://cdn.mos.cms.futurecdn.net/4fF35LQYkV4jpZNrPUKxZg.jpg" mos="" align="middle" fullscreen="" width="2570" height="1713" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>If you’re going to make what I believe could be a MacBook Pro killer, you need to make sure the UI is ready for power users as well as casual users. And the mission in Dawoud’s mind to do this is clear: “make the OS kind of get out of the way, for you to do the work that you want to do.”</p><p>Microsoft is cleaning up Windows 11 for this kind of user: native taskbar customization, customizable notifications, killing unwanted widgets, and remembering displays you connect to—to preserve specific screen layout settings.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kANGCbHE3KTdGdR5xZVvD4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/kANGCbHE3KTdGdR5xZVvD4.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then we turn our attention to the “reinvent the PC” part of the RTX Spark, which comes down to local agentic AI. I saw a demo of Hermes Agent connected to a user’s Google account that acted like his personal chief of staff: setting an agenda for the day, drafting email responses in Gmail, and updating a project tracker in Google Docs. And it all happened on-device without a single bit of cloud AI.</p><p>But without guardrails, this could get scary. “Having an agent that you can't control is probably the thing you don't want,” he stated. So the answer is Microsoft Extension Containers (MXC) — isolated sandboxes for your local models to act across your desktop securely without sensitive system control leaking.</p><h2 id="killing-oem-bloatware">Killing OEM bloatware</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mcY3VEDiPviihsNtyMMVY4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/mcY3VEDiPviihsNtyMMVY4.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s always been a dream of mine to have a laptop that doesn’t come packed with OEM-specific power management software or an antivirus scanner. While this may not fix the latter, it goes a long way toward killing the need for the former.</p><p>Dawoud emphasized the need to eliminate the clunky tug-of-war between Windows and external software. Currently, there are several ways to tweak power management across different apps, but RTX Spark uses the open-source Modern Power and Thermal Framework—letting Windows natively control all thermal and power tuning.</p><p>“Users, when they want to set the best performance, they can do it in Windows, and they'll know that the OEM's tuning for best performance has now been set,” he said. “They don't need to go to another app and be like, 'Okay, is that app saying good performance and Windows is saying good performance at the same time?'”</p><p>This also helps these laptops maintain the same performance on and off the charger.</p><h2 id="the-uma-secret">The UMA secret</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WudXrWFBDRvTr4BfJPKW3T" name="RTX Spark" alt="RTX Spark" src="https://cdn.mos.cms.futurecdn.net/WudXrWFBDRvTr4BfJPKW3T.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On paper, a Unified Memory Architecture (UMA) sounds great — a big pool for both the CPU and monstrous GPU to dip into at leisure, and take however much (or little) they need. But in reality, CPUs and GPUs digest memory completely differently.</p><p>CPUs crave small memory chunks (4-kilobyte pages) to distribute tasks across their many cores. They take a pizza, pull all the ingredients off of it, and share them around. GPUs, however, take that entire pizza, fold it in half, and eat it taco-style. They need massive blocks (up to 2-megabyte pages) to plow through parallel 3D rendering or AI tasks.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rVysSsvNTgqPQr98uY9uY4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/rVysSsvNTgqPQr98uY9uY4.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>“RTX Spark has a very powerful GPU, so making sure that we give it as much memory as possible when it needs it, but also give it the right page sizes, is really critical,” Dawoud commented.</p><p>So Microsoft's fix is to add variable page sizing directly to the memory manager. This is a bit complex, but it means Windows can dynamically read the pages of data flowing through and send them to the right places—the 2MB to the GPU and 4KB to the CPU simultaneously.</p><p>“Optimizing that is the way you can weaponize the entire stack to get the most performance out of it,” He emphasized.</p><h2 id="taming-nvidia-s-custom-cpu-cores">Taming Nvidia’s custom CPU cores</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NC4Vevw7coKXAFTkqRDdYP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unlike Qualcomm’s standardized Snapdragon X chips, Nvidia’s 18- and 20-core Grace CPUs use a proprietary cluster arrangement of performance and efficiency cores to maximize speed while delivering all-day battery life.</p><p>Dawoud explained that Nvidia's core configuration is entirely unique, and “previous Arm cores that have run on Windows are not like that.”</p><p>Now, historically, supporting an exotic CPU layout required rewriting the entire kernel underpinning Windows — a risky move for sure. But Windows 11 has a new profiling stack that can tune itself dynamically on the fly, meaning the scheduler that throws tasks everywhere can adapt to Nvidia’s unique chip here without breaking legacy compatibility.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e4EgZW"></div>                            </div>                            <script src="https://kwizly.com/embed/e4EgZW.js" async></script><h2 id="the-pc-has-finally-grown-up">The PC has finally grown up</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GVxdiZGjWNreCjxARYdq74" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/GVxdiZGjWNreCjxARYdq74.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The 14-year partnership between Microsoft and Nvidia finally feels like it is paying off. Dawoud pointed out that this wasn't a sudden alliance — the journey started over a decade ago with the Tegra-powered Surface RT.</p><p>But this specific launch represents a fundamental shift in how the two giants collaborate. By letting Microsoft engineers rebuild the OS from the silicon bootstrap level upward, RTX Spark gave Windows the foundation it needed to finally make Arm-based PC gaming a reality.</p><p>Microsoft and Nvidia haven’t just bolted a GPU onto an Arm processor; they’ve rewritten the rulebook beneath the surface. This is a huge moment for both companies, and if Windows on Arm succeeds where previous attempts faltered, it will all be traced back to that one moment Microsoft spent eight agonizing months building the foundation to make it feel effortless.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/laptops/macbook-pro-14-inch-vs-asus-proart-p14-nvidia-rtx-spark">I held the Asus ProArt P14 next to my MacBook Pro 14 — and Apple should be genuinely terrified of Nvidia’s RTX Spark</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-acers-wild-flip-and-swivel-handheld-why-project-dualplay-mini-is-the-ultimate-netbook-love-letter">I tested Acer's wild Project DualPlay Mini — and it's a gaming handheld and laptop in one gadget</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/i-tested-the-real-dlss-5-forget-the-leaked-mods-its-not-an-ai-filter-this-is-nvidias-photorealistic-game-changer">I wanted to hate Nvidia’s DLSS 5 ‘AI filter’ — but the real DLSS 5 is photorealistic black magic</a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=laptops&min_discount_ratio=0.95&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&bg_color=transparent" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters {      display: flex;      gap: 12px;      justify-content: center;      flex-wrap: wrap;    }    .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);      display: -webkit-box;      -webkit-line-clamp: 2;      -webkit-box-orient: vertical;      overflow: hidden;    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    .tg-df-container .tg-df-card-cta.tg-df-cta-savings-squad {      background-color: #3c8d0d;    }    .tg-df-card:hover .tg-df-card-cta.tg-df-cta-savings-squad,    .tg-df-card-cta.tg-df-cta-savings-squad:hover {      background-color: #2b6509;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 0;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 0 16px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }            .tg-df-filters {        width: calc(100% + 32px);        margin: 0 -16px;        padding: 0 16px 4px 16px;        display: flex;        justify-content: flex-start;        gap: 8px;        flex-wrap: nowrap;        overflow-x: auto;        -webkit-overflow-scrolling: touch;        scrollbar-width: none;      }      .tg-df-filters::after {        content: "";        display: block;        flex: 0 0 8px;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }            .tg-df-sort-wrapper {        flex: 0 0 max(42%, 130px);        min-width: 0;      }      .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;        -webkit-line-clamp: 3;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        -webkit-line-clamp: 3;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 16px;      text-align: center;      width: 100%;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }        .tg-df-container .tg-df-carousel-scroll-left,    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-left { left: 8px; }    .tg-df-container .tg-df-carousel-scroll-right { right: 8px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left { left: 0px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right { right: 0px; }    .tg-df-carousel-filters-outer { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }    @container tg-df (max-width: 599px) { .tg-df-carousel-filters-outer { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; } }        .tg-df-container .tg-df-carousel-scroll-left:hover,    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right {      background-color: rgba(255, 255, 255, 0.4);      border: none;      box-shadow: none;      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right { right: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-right { right: 0; }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left:hover,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);      border: none;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-carousel-roundels::after {      content: "";      flex: 0 0 32px;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;      transition: font-weight 0.2s;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-label {      font-weight: 700;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;      display: inline-flex;      align-items: center;      justify-content: center;      min-height: 36px;      box-sizing: border-box;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::after {      content: "";      flex: 0 0 32px;    }    .tg-df-grid-wrapper {      position: relative;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card {      flex: 0 0 auto;      width: 100px;      border-radius: 15px;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      border: 2px solid #1e293b;      background: white;      color: #1e293b;      display: flex;      flex-direction: column;      justify-content: center;      align-items: center;      font-weight: 600;      font-size: 14px;      cursor: pointer;      padding: 16px;      text-align: center;      transition: all 0.2s;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card:hover {      background: #1e293b;      color: white;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.45);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #5aaf0b; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a9109; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-roundels">            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>          \x3C/div>          \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-outer" style="position: relative;">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>        \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3C/div>    \x3C/div>    \x3C/div>      \x3C!-- Search & Filter Controls --\x3E    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">      \x3Cdiv class="tg-df-top-bar">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>                \x3Cdiv class="tg-df-settings-wrapper">          \x3Cbutton type="button" class="tg-df-settings-btn" aria-label="Settings" id="tg-df-settings-toggle">            \x3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20">                \x3Cpath d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.73 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .43-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.49-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>            \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-settings-dropdown-backdrop" id="tg-df-settings-backdrop">\x3C/div>          \x3Cdiv class="tg-df-settings-dropdown" id="tg-df-settings-panel">            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Search Region\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-region-select">                \x3Coption value="auto">🌍 Auto-detect\x3C/option>                \x3Coption value="US">🇺🇸 United States (US)\x3C/option>                \x3Coption value="GB">🇬🇧 United Kingdom (UK)\x3C/option>                \x3Coption value="CA">🇨🇦 Canada (CA)\x3C/option>                \x3Coption value="AU">🇦🇺 Australia (AU)\x3C/option>                \x3Coption value="DE">🇩🇪 Germany (DE)\x3C/option>                \x3Coption value="FR">🇫🇷 France (FR)\x3C/option>                \x3Coption value="IT">🇮🇹 Italy (IT)\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Retailer\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-retailer-select">                \x3Coption value="">All Retailers\x3C/option>                \x3Coption value="Amazon">Amazon\x3C/option>                \x3Coption value="Walmart">Walmart\x3C/option>                \x3Coption value="Best Buy">Best Buy\x3C/option>                \x3Coption value="Target">Target\x3C/option>                \x3Coption value="John Lewis">John Lewis\x3C/option>                \x3Coption value="Currys">Currys\x3C/option>                \x3Coption value="Argos">Argos\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Offer Type\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-offer-type-select">                \x3Coption value="">All Offers\x3C/option>                \x3Coption value="amazon_prime">Amazon Prime\x3C/option>                \x3Coption value="recommended_promo">Recommended Promo\x3C/option>                \x3Coption value="amazon_lightning">Amazon Lightning Deal\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Result Count\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-rows-select">                \x3Coption value="3">3 Items\x3C/option>                \x3Coption value="4">4 Items\x3C/option>                \x3Coption value="6">6 Items\x3C/option>                \x3Coption value="12" selected>12 Items\x3C/option>                \x3Coption value="24">24 Items\x3C/option>                \x3Coption value="48">48 Items\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Deal Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Only show products with active offers or previous prices (was_price)\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-deal-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Editor Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Enable multi-select to copy deals to CMS\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-editor-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">View Mode\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-view-mode-select">                \x3Coption value="auto">Auto Collection\x3C/option>                \x3Coption value="carousel">Carousel\x3C/option>                \x3Coption value="savings_squad">Savings Squad\x3C/option>                \x3Coption value="grid">Grid (Columns)\x3C/option>                \x3Coption value="row">Row (List)\x3C/option>              \x3C/select>            \x3C/div>          \x3C/div>        \x3C/div>      \x3C/div>      \x3Cdiv class="tg-df-filters">        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-category-filter-wrapper" style="display: none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-category-filter" aria-label="Category">            \x3Coption value="all">All Categories\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-multiselect-container" id="tg-df-brand-filter-wrapper" style="display:none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"/>          \x3C/svg>          \x3Cdiv class="tg-df-filter-select tg-df-multiselect-trigger" id="tg-df-brand-trigger" tabindex="0">            Any Brand          \x3C/div>          \x3Cdiv class="tg-df-multiselect-dropdown" id="tg-df-brand-dropdown">            \x3C!-- Populated via script --\x3E          \x3C/div>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z"/>          \x3C/svg>          \x3Cselect class="tg-df-sort-select" aria-label="Sort Deals">            \x3Coption value="date_desc">Newest First\x3C/option>            \x3Coption value="best_match">Sort by: Match\x3C/option>            \x3Coption value="price_asc">Price Low to High\x3C/option>            \x3Coption value="price_desc">Price High to Low\x3C/option>            \x3Coption value="discount_desc">Biggest Discount\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-price-range-wrapper" id="tg-df-custom-price-wrapper" style="display: flex; align-items:center; justify-content:center; padding: 10px 20px; gap: 8px; border: 1px solid var(--tg-df-border); border-radius: 100px; background-color: var(--tg-df-bg);">          \x3Cspan style="font-size:14px; font-weight:500; color:var(--tg-df-text-primary);">Price\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-min" placeholder="Min" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">          \x3Cspan style="color:var(--tg-df-text-muted)">-\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-max" placeholder="Max" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices">            \x3Coption value="all">All Prices\x3C/option>            \x3Coption value="under50">Under $50\x3C/option>            \x3Coption value="50_100">$50 - $100\x3C/option>            \x3Coption value="100_200">$100 - $200\x3C/option>            \x3Coption value="200_500">$200 - $500\x3C/option>            \x3Coption value="over500">Over $500\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount">            \x3Coption value="all">Any discount\x3C/option>            \x3Coption value="5">Min 5%\x3C/option>            \x3Coption value="10">Min 10%\x3C/option>            \x3Coption value="15">Min 15%\x3C/option>            \x3Coption value="20">Min 20%\x3C/option>            \x3Coption value="25">Min 25%\x3C/option>            \x3Coption value="30">Min 30%\x3C/option>            \x3Coption value="40">Min 40%\x3C/option>            \x3Coption value="50">Min 50%\x3C/option>            \x3Coption value="60">Min 60%\x3C/option>            \x3Coption value="70">Min 70%\x3C/option>          \x3C/select>        \x3C/div>      \x3C/div>    \x3C/div>    \x3C!-- Deals Grid Wrapper --\x3E    \x3Cdiv class="tg-df-grid-wrapper tg-df-carousel-cards-wrapper" id="tg-df-grid-wrapper">      \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>      \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>    \x3C/div>        \x3C!-- Vouchers Modal --\x3E    \x3Cdiv class="tg-df-modal-backdrop" id="tg-df-vouchers-modal">      \x3Cdiv class="tg-df-modal">        \x3Cdiv class="tg-df-modal-header">          \x3Ch3 class="tg-df-modal-title" id="tg-df-vouchers-title">Available Coupons & Deals\x3C/h3>          \x3Cbutton class="tg-df-modal-close" id="tg-df-vouchers-close">            \x3Csvg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">              \x3Cline x1="18" y1="6" x2="6" y2="18">\x3C/line>              \x3Cline x1="6" y1="6" x2="18" y2="18">\x3C/line>            \x3C/svg>          \x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-modal-body" id="tg-df-vouchers-content">          \x3C!-- Vouchers injected here --\x3E        \x3C/div>      \x3C/div>    \x3C/div>  \x3C/div>`;      if (!template) {        template = document.createElement('template');        template.innerHTML = rawTemplate;      }      let shadowRoot = null;      if (hostContainer && template) {        hostContainer.setAttribute('data-initialized', 'true');        shadowRoot = hostContainer.attachShadow({ mode: 'open' });        shadowRoot.appendChild(template.content.cloneNode(true));      }      class DealsFinderWidget {        constructor(config) {          this.rootNode = config.rootNode || document;          this.hostContainer = config.hostContainer || null;          this.rootId = config.rootId || 'signal-deals-finder-root';          this.root = this.rootNode.querySelector('#' + this.rootId);          if (!this.root) return;          this.widgetId = (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'widget-' + Date.now() + '-' + Math.random().toString(36).slice(2);          this.grid = this.root.querySelector('#tg-df-grid');          this.tagsContainer = this.root.querySelector('#tg-df-tags-container');          this.categoryFilter = this.root.querySelector('#tg-df-category-filter');          this.categoryFilterWrapper = this.root.querySelector('#tg-df-category-filter-wrapper');          this.searchInput = this.root.querySelector('.tg-df-search-input');          this.autocompleteDropdown = this.root.querySelector('#tg-df-autocomplete');          this.sortSelect = this.root.querySelector('.tg-df-sort-select');          this.searchBtn = this.root.querySelector('.tg-df-search-btn');                    this.settingsToggle = this.root.querySelector('#tg-df-settings-toggle');          this.settingsPanel = this.root.querySelector('#tg-df-settings-panel');          this.settingsBackdrop = this.root.querySelector('#tg-df-settings-backdrop');          this.regionSelect = this.root.querySelector('#tg-df-region-select');          this.retailerSelect = this.root.querySelector('#tg-df-retailer-select');          this.offerTypeSelect = this.root.querySelector('#tg-df-offer-type-select');          this.viewModeSelect = this.root.querySelector('#tg-df-view-mode-select');          this.rowsSelect = this.root.querySelector('#tg-df-rows-select');          this.dealModeToggle = this.root.querySelector('#tg-df-deal-mode');          this.editorModeToggle = this.root.querySelector('#tg-df-editor-mode');          this.priceFilter = this.root.querySelector('#tg-df-price-filter');          this.discountFilter = this.root.querySelector('#tg-df-discount-filter');                    this.editorBar = this.root.querySelector('#tg-df-editor-bar');          this.editorSelectedCount = this.root.querySelector('#tg-df-selected-count');          this.editorCopyBtn = this.root.querySelector('#tg-df-editor-copy');          this.editorClearBtn = this.root.querySelector('#tg-df-editor-clear');                    this.apiUrl = 'https://search-api.fie.future.net.uk/widget.php';          this.deals = [];          this.displayLimit = 12;          this.airedaleArticles = null;          this.airedaleTags = [];          this.airedaleTagCounts = {};          this.activeDealTag = null;          this.selectedBrands = [];          this.currentQuery = '';          this.editorMode = this.hostContainer ? this.hostContainer.hasAttribute('data-editor-mode') : false;          this.viewModeOverride = this.hostContainer ? this.hostContainer.getAttribute('data-view-mode') : null;          this.selectedDeals = new Map();                    this.brandFilterWrapper = this.root.querySelector('#tg-df-brand-filter-wrapper');          this.brandTrigger = this.root.querySelector('#tg-df-brand-trigger');          this.brandDropdown = this.root.querySelector('#tg-df-brand-dropdown');                    this.customPriceWrapper = this.root.querySelector('#tg-df-custom-price-wrapper');          this.customPriceMin = this.root.querySelector('#tg-df-custom-price-min');          this.customPriceMax = this.root.querySelector('#tg-df-custom-price-max');          this.legacyPriceWrapper = this.root.querySelector('#tg-df-legacy-price-wrapper');          this.discountFilterWrapper = this.root.querySelector('#tg-df-discount-filter-wrapper');          this.initResizeObserver();          this.init();            if (['carousel', 'carousel-compact', 'auto', 'grid', 'row'].includes(this.getViewMode())) { this.loadCarouselSpreadsheet(); }        }        getViewMode() {          if (this.viewModeOverride && (!this.editorMode || !this.viewModeSelect)) {            return this.viewModeOverride;          }          return (this.viewModeSelect && this.viewModeSelect.value) ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');        }        applyLayoutMode() {          if (!this.grid) return;          const mode = this.getViewMode();          this.grid.classList.remove('layout-row', 'layout-grid', 'tg-df-grid-auto', 'carousel-compact', 'layout-replica-1', 'layout-replica-2');                    const carouselHost = this.root.querySelector('#tg-df-carousel-host');          const controlsDiv = this.root.querySelector('#tg-df-controls');          if (mode === 'carousel' || mode === 'auto' || mode === 'grid' || mode === 'row') {             if (mode === 'carousel') this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container') && mode === 'carousel') {               this.root.classList.add('is-carousel');             } else if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          }          if (mode === 'grid') {            this.grid.classList.add('layout-grid');          } else if (mode === 'row') {            this.grid.classList.add('layout-row');          } else if (mode === 'savings_squad') {            this.grid.classList.add('tg-df-grid-auto', 'savings-squad-cards');          } else if (mode !== 'carousel') {            this.grid.classList.add('tg-df-grid-auto');          }                    const settingsWrapper = this.root.querySelector('.tg-df-settings-wrapper');          if (settingsWrapper) {            settingsWrapper.style.display = mode === 'auto' ? 'none' : 'block';          }          if (this.customPriceWrapper) {             this.customPriceWrapper.style.display = mode === 'auto' ? 'flex' : 'none';          }          if (this.legacyPriceWrapper) {             this.legacyPriceWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }          if (this.discountFilterWrapper) {             this.discountFilterWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }        }        initResizeObserver() {          try {            if (window.parent === window) return;          } catch (e) {            // cross origin frame check threw          }          const emitHeight = () => {            try {              const height = document.documentElement.scrollHeight || document.body.scrollHeight;              const msg = { type: 'embed-size', height: height };              if (window.parent && window.parent !== window) {                window.parent.postMessage(msg, '*');                window.parent.postMessage(JSON.stringify({ ...msg, sentinel: 'amp' }), '*');              }            } catch (e) {}          };                    if (window.ResizeObserver) {            try {              const ro = new ResizeObserver(() => emitHeight());              ro.observe(document.body);              if (this.root) ro.observe(this.root);            } catch(e){ console.warn(e); }          }          window.addEventListener('resize', emitHeight);          setTimeout(emitHeight, 300);        }        initCountdown() {          this.cdWrapper = this.root.querySelector('#tg-df-countdown-wrapper');                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          this.showCountdown = params.get('show_countdown') === 'true';          const showHeaderDetails = params.get('show_header_details') !== 'false';          const eyebrow = this.root.querySelector('.tg-df-carousel-box-eyebrow');          const title = this.root.querySelector('.tg-df-carousel-box-title');          const subtitle = this.root.querySelector('.tg-df-carousel-box-subtitle');          if (!showHeaderDetails) {            let containerElement = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (containerElement) containerElement.classList.add('hide-header-details');            if (eyebrow) eyebrow.style.display = 'none';            if (title) title.style.display = 'none';            if (subtitle) subtitle.style.display = 'none';          }          if (!this.cdWrapper) return;          this.cdTitle = this.root.querySelector('#tg-df-countdown-title');          this.cdDays = this.root.querySelector('#tg-df-cd-days');          this.cdHrs = this.root.querySelector('#tg-df-cd-hrs');          this.cdMin = this.root.querySelector('#tg-df-cd-min');          this.cdSec = this.root.querySelector('#tg-df-cd-sec');          this.updateCountdown();          this.cdInterval = setInterval(() => this.updateCountdown(), 1000);        }        updateCountdown() {          if (!this.cdWrapper) return;          if (!this.showCountdown) {            this.cdWrapper.style.display = 'none';            return;          }          const area = this.getAreaCode();          let offset = '-04:00';          if (['DE', 'FR', 'IT', 'ES', 'NL'].includes(area)) {             offset = '+02:00';          } else if (['GB', 'IE', 'UK'].includes(area)) {             offset = '+01:00';          }          const startTime = new Date('2026-06-23T00:00:00' + offset).getTime();          const endTime = new Date('2026-06-26T00:00:00' + offset).getTime();          const now = Date.now();          let targetTime = 0;          if (now < startTime) {             targetTime = startTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day starts in';             this.cdWrapper.style.display = 'flex';          } else if (now < endTime) {             targetTime = endTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day ends in';             this.cdWrapper.style.display = 'flex';          } else {             this.cdWrapper.style.display = 'none';             if (this.cdInterval) clearInterval(this.cdInterval);             return;          }          const diff = Math.max(0, targetTime - now);          const d = Math.floor(diff / (1000 * 60 * 60 * 24));          const h = Math.floor((diff / (1000 * 60 * 60)) % 24);          const m = Math.floor((diff / 1000 / 60) % 60);          const s = Math.floor((diff / 1000) % 60);          if (this.cdDays) this.cdDays.textContent = d;          if (this.cdHrs) this.cdHrs.textContent = h;          if (this.cdMin) this.cdMin.textContent = m;          if (this.cdSec) this.cdSec.textContent = s;        }        init() {          this.initCountdown();          try {            initAnalytics();          } catch (e) {            console.warn('Deals Widget Analytics Error:', e);          }                    this.bindEvents();                    let initialQuery = '';                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          let initialViewMode = params.get('view_mode');          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Everything';             if (this.discountFilter && !params.has('min_discount_ratio')) {               this.discountFilter.value = '5';             }          }          const website = params.get('website') || 'tomsguide';          this.website = website;          if (website === 'techradar') {            const squadHeader = this.root.querySelector('.tg-df-savings-squad-header');            if (squadHeader) {               const pic = squadHeader.querySelector('picture');               if (pic) pic.style.display = 'none';            }            const style = document.createElement('style');            style.innerHTML = `              .tg-df-container .hawk-affiliate-link-deal-button, .tg-df-container .tg-df-card-cta { background-color: #5DAF08 !important; }              .tg-df-container .hawk-affiliate-link-deal-button:hover, .tg-df-container .tg-df-card-cta:hover { background-color: #4a8c06 !important; }            `;            this.root.appendChild(style);          }                    if (this.regionSelect) {            this.regionSelect.value = params.get('region') || 'auto';            this.updatePriceDropdownCurrency();          }                    if (this.retailerSelect && params.has('retailer')) {            this.retailerSelect.value = params.get('retailer');          }                    if (params.has('brands')) {            const b = params.get('brands');            if (b) {              this.selectedBrands = b.split(',');            }          }                    if (this.offerTypeSelect && params.has('offer_type')) {            this.offerTypeSelect.value = params.get('offer_type');          }          if (params.has('bg_color')) {            const bg = params.get('bg_color');            if (bg === 'white') {              this.root.style.setProperty('background-color', '#ffffff', 'important');            } else if (bg === 'transparent') {              this.root.style.setProperty('background-color', 'transparent', 'important');            } else if (bg === 'light_blue') {              this.root.style.setProperty('background-color', '#E7F0FF', 'important');            }          } else {             this.root.style.removeProperty('background-color');          }                    if (params.has('view_mode')) {            if (this.viewModeSelect) {              this.viewModeSelect.value = params.get('view_mode');            } else {              this.viewModeOverride = params.get('view_mode');            }          }          if (this.rowsSelect && params.has('rows')) {            this.rowsSelect.value = params.get('rows');          }          if (params.has('price')) {            const priceVal = params.get('price');            if (this.priceFilter) {               // Try assigning it directly to select. If it's not present implicitly ignores               this.priceFilter.value = priceVal;            }            if (priceVal.includes('_')) {               const parts = priceVal.split('_');               if (this.customPriceMin && parts[0]) this.customPriceMin.value = parts[0];               if (this.customPriceMax && parts[1]) this.customPriceMax.value = parts[1];            }          }          if (this.discountFilter && params.has('min_discount_ratio')) {            // Need to convert back from ratio (e.g. 0.8) to select value (e.g. "20")            const ratioStr = params.get('min_discount_ratio');            const ratioFloat = parseFloat(ratioStr);            if (!isNaN(ratioFloat)) {               const percentage = Math.round((1 - ratioFloat) * 100);               this.discountFilter.value = percentage.toString();            }          }          if (this.sortSelect) {            this.sortSelect.value = params.get('sort') || 'discount_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }                    // Re-apply layout after params have updated control values          this.applyLayoutMode();                    if (params.get('search')) {            initialQuery = params.get('search');          } else if (params.get('q')) {            initialQuery = params.get('q');          } else if (params.get('query')) {            initialQuery = params.get('query');          }                    this.currentQuery = initialQuery;          if (this.searchInput) {            this.searchInput.value = this.currentQuery;          }                    if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {            this.fetchDeals(this.currentQuery);          } else {            this.render();          }        }        updatePriceDropdownCurrency() {          if (!this.priceFilter || !this.regionSelect) return;          const currencySymbols = {            'US': '$',            'GB': '£',            'CA': '$CA',            'AU': '$AU',            'DE': '€',            'FR': '€',            'IT': '€',          };          const area = this.getAreaCode();          const cur = currencySymbols[area || 'US'] || '$';                    const options = this.priceFilter.options;          for (let i = 0; i < options.length; i++) {            const opt = options[i];            if (opt.value === 'all') {              opt.innerText = 'All Prices';            } else if (opt.value === 'under50') {              opt.innerText = `Under ${cur}50`;            } else if (opt.value === '50_100') {              opt.innerText = `${cur}50 - ${cur}100`;            } else if (opt.value === '100_200') {              opt.innerText = `${cur}100 - ${cur}200`;            } else if (opt.value === '200_500') {              opt.innerText = `${cur}200 - ${cur}500`;            } else if (opt.value === 'over500') {              opt.innerText = `Over ${cur}500`;            }          }        }        populateBrandDropdown(values) {          if (!this.brandDropdown || !this.brandFilterWrapper) return;          this.brandFilterWrapper.style.display = 'flex'; // show the wrapper                    let html = '';          const allChecked = this.selectedBrands.length === 0 ? 'checked' : '';          const _div = '<' + '/div>';          const _span = '<' + '/span>';          html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="" ${allChecked} class="tg-df-brand-chk"> Any Brand${_div}`;                    values.forEach(v => {             if (!v.formatted_value || v.formatted_value === 'Any Brand') return;             const isChecked = this.selectedBrands.includes(v.formatted_value) ? 'checked' : '';             html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="${this.escapeHTML(v.formatted_value)}" ${isChecked} class="tg-df-brand-chk"> ${this.escapeHTML(v.formatted_value)} \x3Cspan style="color:var(--tg-df-text-muted);font-size:12px">(${v.count || 0})${_span}${_div}`;          });                    this.brandDropdown.innerHTML = html;                    // Re-bind listeners          const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');          chks.forEach(chk => {            chk.addEventListener('change', (e) => {              const val = e.target.value;              if (val === '') {                this.selectedBrands = [];              } else {                if (e.target.checked) {                   if (!this.selectedBrands.includes(val)) this.selectedBrands.push(val);                } else {                   this.selectedBrands = this.selectedBrands.filter(b => b !== val);                }              }                            if (this.selectedBrands.length === 0) {                 this.brandTrigger.innerText = 'Any Brand';              } else if (this.selectedBrands.length === 1) {                 this.brandTrigger.innerText = this.selectedBrands[0];              } else {                 this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;              }                            // Only call API if changed from UI interactions              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.updateURLParams();                 this.fetchDeals(this.currentQuery);              }            });          });                    // Update button text on load          if (this.selectedBrands.length === 0) {             this.brandTrigger.innerText = 'Any Brand';          } else if (this.selectedBrands.length === 1) {             this.brandTrigger.innerText = this.selectedBrands[0];          } else {             this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;          }        }        updateURLParams() {          const url = new URL(window.location);          if (this.currentQuery && this.currentQuery !== 'Gaming laptops') {            url.searchParams.set('q', this.currentQuery);          } else {            url.searchParams.delete('q');            url.searchParams.delete('search');            url.searchParams.delete('query');          }                    if (this.regionSelect && this.regionSelect.value !== 'auto') {            url.searchParams.set('region', this.regionSelect.value);          } else {            url.searchParams.delete('region');          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.set('retailer', this.retailerSelect.value);          } else {            url.searchParams.delete('retailer');          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.set('brands', this.selectedBrands.join(','));          } else {            url.searchParams.delete('brands');          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.set('offer_type', this.offerTypeSelect.value);          } else {            url.searchParams.delete('offer_type');          }                    if (this.viewModeSelect && this.viewModeSelect.value !== 'auto') {            url.searchParams.set('view_mode', this.viewModeSelect.value);          } else {            url.searchParams.delete('view_mode');          }                    if (this.rowsSelect && this.rowsSelect.value !== '12') {            url.searchParams.set('rows', this.rowsSelect.value);          } else {            url.searchParams.delete('rows');          }                    const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             url.searchParams.set('price', `${min}_${max}`);          } else if (this.priceFilter && this.priceFilter.value !== 'all') {            url.searchParams.set('price', this.priceFilter.value);          } else {            url.searchParams.delete('price');          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {               const ratio = (100 - v) / 100;               url.searchParams.set('min_discount_ratio', ratio.toString());            }          } else {            url.searchParams.delete('min_discount_ratio');          }                    if (this.sortSelect && this.sortSelect.value !== 'discount_desc') {            url.searchParams.set('sort', this.sortSelect.value);          } else {            url.searchParams.delete('sort');          }                    if (this.dealModeToggle && this.dealModeToggle.checked) {            url.searchParams.set('deal_mode', 'true');          } else {            url.searchParams.delete('deal_mode');          }                    window.history.replaceState({}, '', url);        }        bindEvents() {          const roundels = this.root.querySelectorAll('.tg-df-carousel-cat.original-hardcoded');          roundels.forEach(r => {             r.addEventListener('click', () => {                const q = r.getAttribute('data-query');                const pr = r.getAttribute('data-pr');                if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: q,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = q;                const label = this.root.querySelector('#tg-df-carousel-title-label');                if (label) label.textContent = 'Best ' + q;                if (this.priceFilter) this.priceFilter.value = pr || 'all';                if (this.discountFilter) this.discountFilter.value = '5';                if (this.searchInput) this.searchInput.value = q;                                roundels.forEach(ro => ro.classList.remove('active'));                r.classList.add('active');                this.fetchDeals(this.currentQuery);             });          });          const discBtns = this.root.querySelectorAll('.tg-df-carousel-filter-btn');          discBtns.forEach(b => {             b.addEventListener('click', () => {                const d = b.getAttribute('data-d');                const pr = b.getAttribute('data-pr');                const ot = b.getAttribute('data-ot');                let label = b.innerText ? b.innerText.trim() : '';                let filterType = 'unknown';                let filterVal = 'unknown';                if (d !== null) { filterType = 'discount'; filterVal = d; }                else if (pr !== null) { filterType = 'price'; filterVal = pr; }                else if (ot !== null) { filterType = 'offertype'; filterVal = ot; }                if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-${filterType}-${filterVal}`, name: 'Filter Button', label: label });                                if (d !== null) {                   if (this.discountFilter) this.discountFilter.value = this.discountFilter.value === d ? '0' : d;                } else if (pr !== null) {                   if (this.priceFilter) this.priceFilter.value = this.priceFilter.value === pr ? 'all' : pr;                } else if (ot !== null) {                   if (this.offerTypeSelect) this.offerTypeSelect.value = this.offerTypeSelect.value === ot ? 'all' : ot;                } else {                   if (this.discountFilter) this.discountFilter.value = '0';                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.offerTypeSelect) this.offerTypeSelect.value = 'all';                }                if (d === null && pr === null && ot === null && b.getAttribute("data-type") !== "custom") {                   discBtns.forEach(ro => ro.classList.remove('active'));                   b.classList.add('active');                } else if (b.getAttribute("data-type") !== "custom") {                   // Only operate on hardcoded buttons (those without data-type)                   discBtns.forEach(ro => {                      if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active');                   });                                      let makeActive = true;                   if (d !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-d') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (pr !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-pr') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (ot !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-ot') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   }                                      if (makeActive) b.classList.add('active');                                      // Check if anything is active, if not activate "All"                   let anyActive = false;                   discBtns.forEach(ro => { if (ro.classList.contains('active') && ro.getAttribute('data-type') !== 'custom') anyActive = true; });                   if (!anyActive) {                       discBtns.forEach(ro => { if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.add('active'); });                   }                }                                this.fetchDeals(this.currentQuery);             });          });          if (this.brandTrigger && this.brandDropdown) {            this.brandTrigger.addEventListener('click', () => {              this.brandDropdown.classList.toggle('active');            });            document.addEventListener('click', (e) => {              if (this.brandFilterWrapper && !e.composedPath().includes(this.brandFilterWrapper)) {                this.brandDropdown.classList.remove('active');              }            });          }          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              if (this.getViewMode() === 'savings_squad' && this.autocompleteDropdown && this.airedaleTags && query.length > 0) {                 const matches = this.airedaleTags.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase()).slice(0, 5);                 if (matches.length > 0) {                    this.autocompleteDropdown.innerHTML = matches.map(m => `\x3Cdiv class="tg-df-autocomplete-item" data-tag="${this.escapeHTML(m)}">${this.escapeHTML(m)}<` + `/div>`).join('');                    this.autocompleteDropdown.classList.add('active');                 } else {                    this.autocompleteDropdown.classList.remove('active');                 }              } else if (this.autocompleteDropdown) {                 this.autocompleteDropdown.classList.remove('active');              }              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  this.deals = [];                  this.render();                }              }, 400);            });            this.searchInput.addEventListener('keypress', (e) => {              if (e.key === 'Enter') {                if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');                clearTimeout(debounceTimer);                const query = e.target.value.trim();                this.currentQuery = query;                this.activeDealTag = null;                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   this.fetchDeals(query);                }              }            });          }          if (this.autocompleteDropdown) {             this.autocompleteDropdown.addEventListener('click', (e) => {                const item = e.target.closest('.tg-df-autocomplete-item');                if (item) {                   const tag = item.getAttribute('data-tag');                   this.currentQuery = tag;                   if (this.searchInput) this.searchInput.value = tag;                   this.activeDealTag = tag;                   this.autocompleteDropdown.classList.remove('active');                   this.updateURLParams();                   this.fetchDeals(tag);                }             });             document.addEventListener('click', (e) => {               if (this.autocompleteDropdown && this.searchInput && !e.composedPath().includes(this.searchInput) && !e.composedPath().includes(this.autocompleteDropdown)) {                 this.autocompleteDropdown.classList.remove('active');               }             });          }          if (this.searchBtn) {            this.searchBtn.addEventListener('click', () => {              if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');              clearTimeout(debounceTimer);              const query = this.searchInput.value.trim();              trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });              this.activeDealTag = null;              this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.fetchDeals(query);              }            });          }          if(this.sortSelect) this.sortSelect.addEventListener('change', () => {            trackElementInteraction({ id: `sort-option-${this.sortSelect.value}`, name: 'Sort', label: `Sort: ${this.sortSelect.options[this.sortSelect.selectedIndex].text}` });            this.updateURLParams();            if (this.deals.length > 0) {              this.sortData();              this.render();            }          });                    const priceFilter = this.root.querySelector('#tg-df-price-filter');          if (priceFilter) {            this.priceFilter = priceFilter;            this.priceFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-price-${this.priceFilter.value}`, name: 'Price', label: this.priceFilter.options[this.priceFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          const updateCustomPrice = () => {             this.updateURLParams();             if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);             } else {                this.render();             }          };          if (this.customPriceMin) {             this.customPriceMin.addEventListener('change', updateCustomPrice);             this.customPriceMin.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          if (this.customPriceMax) {             this.customPriceMax.addEventListener('change', updateCustomPrice);             this.customPriceMax.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          const discountFilter = this.root.querySelector('#tg-df-discount-filter');          if (discountFilter) {            this.discountFilter = discountFilter;            this.discountFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-discount-${this.discountFilter.value}`, name: 'Discount', label: this.discountFilter.options[this.discountFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          if (this.categoryFilter) {            this.categoryFilter.addEventListener('change', (e) => {               const val = e.target.value === 'all' ? null : e.target.value;               this.activeDealTag = val;               this.fetchSavingsSquad();            });          }                    if (this.settingsToggle) {            this.settingsToggle.addEventListener('click', () => {              const o = this.settingsPanel.classList.toggle('active');              this.settingsBackdrop.classList.toggle('active');              if (o) trackElementInteraction({ id: 'filter-open', name: 'Filters', label: 'Open filters' });            });          }                    if (this.settingsBackdrop) {            this.settingsBackdrop.addEventListener('click', () => {              this.settingsPanel.classList.remove('active');              this.settingsBackdrop.classList.remove('active');            });          }                    if (this.regionSelect) {            this.regionSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-region-${this.regionSelect.value}`, name: 'Region', label: this.regionSelect.options[this.regionSelect.selectedIndex].text });              this.updateURLParams();              this.updatePriceDropdownCurrency();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.retailerSelect) {            this.retailerSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-merchant-${this.retailerSelect.value}`, name: 'Retailer', label: this.retailerSelect.options[this.retailerSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.offerTypeSelect) {            this.offerTypeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-offertype-${this.offerTypeSelect.value}`, name: 'Offer Type', label: this.offerTypeSelect.options[this.offerTypeSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.viewModeSelect) {            this._prevViewMode = this.viewModeSelect.value;            this.viewModeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-viewmode-${this.viewModeSelect.value}`, name: 'View Mode', label: this.viewModeSelect.options[this.viewModeSelect.selectedIndex].text });                            // Reset all active toggles and filters to prevent config carry-over              this.selectedBrands = [];              if (this.brandTrigger) this.brandTrigger.innerText = 'Select Brands';              if (this.brandDropdown) {                const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                chks.forEach(chk => { chk.checked = false; });              }              if (this.priceFilter) this.priceFilter.value = 'all';              if (this.customPriceMin) this.customPriceMin.value = '';              if (this.customPriceMax) this.customPriceMax.value = '';              if (this.sortSelect) this.sortSelect.value = this.viewModeSelect.value === 'savings_squad' ? 'date_desc' : 'discount_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }          this.setupScrollListeners();        }        setupScrollListeners() {          const containers = [             this.root.querySelector('.tg-df-carousel-roundels'),             this.root.querySelector('.tg-df-carousel-filters-wrap'),             this.root.querySelector('#tg-df-grid')          ];                    containers.forEach(container => {             if (!container) return;                          const checkScroll = () => {                if (!container.parentElement) return;                const leftBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-left');                const rightBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-right');                                if (leftBtn) {                   if (container.scrollLeft <= 5) leftBtn.style.display = 'none';                   else leftBtn.style.display = 'flex';                }                                if (rightBtn) {                   if (container.scrollWidth <= container.clientWidth) {                       rightBtn.style.display = 'none';                   } else if (container.scrollLeft >= container.scrollWidth - container.clientWidth - 5) {                       rightBtn.style.display = 'none';                   } else {                       rightBtn.style.display = 'flex';                   }                }             };                          container.addEventListener('scroll', checkScroll);             checkScroll();                          window.addEventListener('resize', checkScroll);                          const observer = new MutationObserver(checkScroll);             observer.observe(container, { childList: true, subtree: true, characterData: false });          });        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        getRowsLimit() {          if (this.rowsSelect && this.rowsSelect.value) return parseInt(this.rowsSelect.value, 10);          let configSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {             configSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {             configSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(configSource);          if (params.has('rows')) return parseInt(params.get('rows'), 10) || 12;          return 12;        }        getAreaCode() {          if (this.regionSelect && this.regionSelect.value) {            if (this.regionSelect.value === 'auto') return null;            return this.regionSelect.value;          }          let area = null;          try {            const locale = window.navigator.language || window.navigator.userLanguage;            if (locale && locale.includes('-')) {              area = locale.split('-')[1].toUpperCase();            } else if (locale && locale.length === 2) {              if (locale.toUpperCase() === 'EN') { area = 'US'; }              else { area = locale.toUpperCase(); }            }          } catch (e) { /* Ignore */ }                    // Map to known valid options or fallback to US          const valid = ['US', 'GB', 'CA', 'AU', 'DE', 'FR', 'IT'];          if (area === 'UK') area = 'GB';          if (valid.includes(area)) {             return area;          }          return 'US';        }                async loadCarouselSpreadsheet() {          try {              const parseCSVRow = (str) => {                  let result = [], cur = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (inQuotes) {                          if (char === '"') {                              if (str[i + 1] === '"') { cur += '"'; i++; }                              else { inQuotes = false; }                          } else { cur += char; }                      } else {                          if (char === '"') { inQuotes = true; }                          else if (char === ',') { result.push(cur); cur = ''; }                          else { cur += char; }                      }                  }                  result.push(cur); return result;              };              const parseCSV = (str) => {                  const rows = []; let curRow = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (char === '"') inQuotes = !inQuotes;                      if ((char === '\n' || char === '\r') && !inQuotes) {                          if (char === '\r' && str[i+1] === '\n') i++;                          if (curRow) rows.push(parseCSVRow(curRow));                          curRow = '';                      } else { curRow += char; }                  }                  if (curRow) rows.push(parseCSVRow(curRow));                  return rows;              };              const preloadedCSV = decodeURIComponent(escape(atob("LCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQ0KUm91bmRlbCB0ZXh0LEFsbCxUVnMsRm9vdHdlYXIsQXBwYXJlbCxNYXR0cmVzZXMsQXBwbGlhbmNlcyxXZWFyYWJsZSB0ZWNoLEhlYWRwaG9uZXMsU21hcnQgSG9tZSxTcGVha2VycyxMYXB0b3BzLFRhYmxldHMsQ29tcHV0aW5nLFBob25lcyxHYW1pbmcsTGVnbw0KUm91bmRlbCBpbWFnZSxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2FpLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3R2cy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvN2IzYTIyNGIwNzk2M2M2MjdiNmI5MDliZDc4MzM4MzZlMDJmZjgxOS5qcGcud2VicCxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy84NGRhYzVkNDhlZDJkNDQ4NTU5ZWJhNjdhY2U4MzE0Y2M2N2NjZDk0LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvbWF0dHJlc3Nlcy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvNzY4ZTk3Y2ViMDcxODAxZmFlMjA5MTBkMDgyMGIxNmY3NDdhZjkzOS5qcGcud2VicCxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3dlbGxuZXNzLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2hlYWRwaG9uZXMuanBnLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzg5NTM1YmVlYmUyMGRiYmQ0YTM0NmQ2ZDZiZGZlOTFkOGE4ODRhMjEuanBnLndlYnAsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9hdWRpby5qcGcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9sYXB0b3BzLmpwZyxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy8yMzk3NTY0ZWQ3YTVmZjk0N2U5YjZiMzBlNTRmNDc0OTRiODQxZjg5LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvY29tcHV0aW5nLmpwZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3Bob25lcy5wbmcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9nYW1pbmcucG5nLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzRmNmM2MjFjYWMwYmMxYTg1ZDU5M2UzNTk0YmE1YjM0OWVmZmQyOTIuanBnLndlYnANClNlYXJjaCBRdWVyeSxFdmVyeXRoaW5nLFRlbGV2aXNpb25zLCJTbmVha2VycywgcnVubmluZyBzaG9lcywgc2FuZGFscyIsQ2xvdGhpbmcsTWF0dHJlc3NlcyxIb21lIEFwcGxpYW5jZXMsV2VhcmFibGVzICYgRml0bmVzcyBUZWNoLEhlYWRwaG9uZXMsSG9tZSBUZWNoLFNwZWFrZXJzLExhcHRvcHMsVGFibGV0cyxDb21wdXRpbmcsUGhvbmVzLEdhbWluZyxDb25zdHJ1Y3Rpb24gVG95cw0KRGlzY291bnQgQW1vdW50LG1pbiA1JSxtaW4gMTAlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUNClByaWNlIFJhbmdlLCwsLCxtaW4gJDQwMCwsLCxtaW4gJDI1LCxtaW4gJDMwMCwsLG1pbiAkMTAwLCwNCkJyYW5kIFNlbGVjdGlvbiwsLCwsLCwsLCwsLCwsLCwNCkZpbHRlciBidXR0b25zLCwsLCwsLCwsLCwsLCwsLA0KMSxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMNCjIsQW1hem9uIGRlYWxzLFVuZGVyICQxMDAwLDUwJSBvZmYsQWRpZGFzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsNTAlIG9mZixBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscw0KMyxPdmVyICQ0MDAsVW5kZXIgJDUwMCxIb2thLE5pa2UsU2FhdHZhLE5pbmphLDQwJSBvZmYsSkxhYiwsSkJMLERlbGwsLEFzdXMsQXBwbGUsQ29uc29sZXMsU3RhciBXYXJzDQo0LFVuZGVyICQxMDAwLDUwJSBvZmYsU2tlY2hlcnMsVW5kZXIgQXJtb3VyLEhlbGl4LFNoYXJrLEdhcm1pbixBbmtlciBTb3VuZGNvcmUsUmluZyxTb25vcyxBcHBsZSxBcHBsZSxUUC1saW5rLFNhbXN1bmcsQWNjZXNzb3JpZXMsVW5kZXIgJDI1DQo1LFVuZGVyICQ1MDAsTEcsQXNpY3MsQ29sdW1iaWEsRHJlYW1DbG91ZCxLZXVyaWcsQXBwbGUsU29ueSxHb3ZlZSxUcmliaXQsTGVub3ZvLFNhbXN1bmcsRWVybyxHb29nbGUsR2FtZXMsVW5kZXIgJDUwDQo2LDUwJSBvZmYsU2Ftc3VuZyxOaWtlLFBhdGFnb25pYSxOZWN0YXIsRGUnTG9uZ2hpLEFtYXpmaXQsQXBwbGUsS2FzYSBzbWFydCxTb255LEFsaWVud2FyZSxUQ0wsTmV0Z2VhcixNb3Rvcm9sYSxOaW50ZW5kbyxCb3RhbmljYWxzDQo3LEFtYXpvbixIaXNlbnNlLE5ldyBCYWxhbmNlLEFyYyd0ZXJ5eCxUZW1wdXItcGVkaWMsRHlzb24sRml0Yml0LEJlYXRzLFBoaWxpcHMgSHVlLEFua2VyLEFjZXIsT25lUGx1cyxEZWxsLE9uZVBsdXMsU29ueSxEaXNuZXkNCjgsQXBwbGUsVENMLEFkaWRhcyxDYXJoYXJ0dCxCZWFyLEJpc3NlbGwsU2Ftc3VuZyxFYXJmdW4sQmxpbmssQmVhdHMsTVNJLE1pY3Jvc29mdCxBY2VyLE5vdGhpbmcsWGJveCxNYXJ2ZWwNCjksLFNvbnksU2F1Y29ueSxUaGUgTm9ydGggRmFjZSxTaWVuYSxOdXRyaWJ1bGxldCxPdXJhLFNhbXN1bmcsR29vZ2xlIE5lc3QgLE1hcnNoYWxsLFNhbXN1bmcsTGVub3ZvLExlbm92bywsLFBva2Vtb24NCjEwLCxSb2t1LEJpcmtlbnN0b2NrLENSWiBZb2dhLFdpbmtCZWRzLEJsYWNrIGFuZCBEZWNrZXIsUmluZ2Nvbm4sQ01GLEV1ZnksU2Ftc3VuZyxNaWNyb3NvZnQsUmVNYXJrYWJsZSxBbGllbndhcmUsLCwNCjExLCwsQnJvb2tzLFRoZSBHeW0gUGVvcGxlLEJyb29rbHluIGJlZGRpbmcsTmVzcHJlc3NvLCwxTW9yZSxBcmxvLCxSYXplciwsQ29yc2FpciwsLA0KMTIsLCxDcm9jcywsRWlnaHQgU2xlZXAsQ3Vpc2luYXJ0LCxKQkwsLCwsLEhQLCwsDQpOb3RlcywsLCwsLCwsLCwsLCwsLCwNCiwsIlByaW9yaXRpc2UgYmlnZ2VzdCAlLyQgZGlzY291bnQsIFR2cyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiB0aGUgbW9zdCBwb3B1bGFyIGV2ZW4gaWYgdGhleSBhcmUgc3RpbGwgZXhwZW5zaXZlIiwiTm8gcGF0dGVybiB0byBwcmljaW5nL2Rpc2NvdW50LCByZWFkZXJzIG1haW5seSBzaG9wIGJ5IGJyYW5kL3JlY29nbmlzYWJsZSBzaG9lcyIsIk5vIHBhdHRlcm4gdG8gcHJpY2luZy9kaXNjb3VudCwgcmVhZGVycyBtYWlubHkgc2hvcCBieSBicmFuZCIsIkEgbGFiZWwgd2lsbCBkZWZpbml0ZWx5IGhlbHAgaGVyZSBlLmcuIGJlc3QgZm9yIHNpZGUgc2xlZXBlciwgYmVzdCBtZW1vcnkgZm9hbSIsIkFwcGxpYW5jZXMgaXMgYSBiaWcgY2F0ZWdvcnksIGlzIGl0IHBvc3NpYmxlIHRvIHNwbGl0IGludG8ga2l0Y2hlbiBhcHBsaWFuY2VzLCBmbG9vcmNhcmUsIGFpciBoZWFsdGgvY29vbGluZz8gT3Igc2ltaWxhciIsIkZvY3VzIG9uIHZhbHVlIGZvciBtb25leSwgR2FybWlucyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiBwb3B1bGFyIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0aWxsICQ1MDAiLCwsLCxJbmNsdWRlIEtpbmRsZXMsSSB3b3VsZCBpbmNsdWRlIHdpZmkgcm91dGVycyBoZXJlIGluc3RlYWQgb2Ygc21hcnQgaG9tZSxDYW4gd2Ugc3VyZmFjZSBwaG9uZSBwcm92aWRlciBkZWFscz8gVC1tb2JpbGUgYW5kIHZlcml6b24gd291bGQgbWFrZSBhIGxvdCBtb3JlIG1vbmV5IHRoYW4gQW1hem9uLCwNCiwsaGF2aW5nIGEgJ2Jlc3QgZm9yJyBsYWJlbCB3b3VsZCBiZSBoZWxwZnVsIGUuZy4gYmVzdCBmb3IgYnJpZ2h0IHJvb20sQ2FuIHdlIHN0b3Aga2lkcyBzaG9lcyBmcm9tIHB1bGxpbmcgdGhyb3VnaD8sIldpbGwgdGhpcyBpbmNsdWRlIGFjY2Vzc29yaWVzIGUuZy4gY2FwcywgYmFncywgaWYgc28gbWFrZSBzdXJlIHRoZXNlIGFyZSBtaXhlZCB0aHJvdWdob3V0IGNsb3RoaW5nIGRlYWxzIixXaWxsIHRoaXMgaW5jbHVkZSB0b3BwZXJzIGFuZCBwaWxsb3dzPyBTZWVpbmcgbW9yZSBtb21lbnR1bSB3aXRoIHRoaXMgY2F0ZWdvcnkgcmVjZW50bHkgc28gYSBiZWRkaW5nIHRhYiBtaWdodCB3b3JrLCwiTmVlZCB0byBtYWtlIHN1cmUgYmFuZHMsIHNjcmVlbiBwcm90ZWN0b3JzIGV0Yy4gZG9uJ3QgcHVsbCBpbnRvIGhlcmUiLCwsLCwsLCwsDQosLCJQcmlvcml0aXNlIDY1JycgYW5kIDU1JyBpbmNoIFRWcywgdGhlbiBiaWdnZXIgc2NyZWVucyBiZWZvcmUgdGhlIHNtYWxsZXIgc2l6ZXMiLCwsUXVlZW4gaXMgdGhlIG1vc3QgcG9wdWxhciBzaXplIGluIHRoZSBVUyAtIHByaW9yaXRpc2UgZGVhbHMgZm9yIHRoaXMgc2l6ZSwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpDYXRlZ29yaWVzIHRvIGNvbnNpZGVyLCxQcm9kdWN0cyBpbmNsdWRlZCwsLCwsLCwsLCwsLCwsDQpVbmRlciAkNTA/LCxBaXIgdGFncywsLCwsLCwsLCwsLCwsDQosLFBvcnRhYmxlIGNoYXJnZXJzL3dpcmVsZXNzIGNoYXJnZXJzLCwsLCwsLCwsLCwsLCwNCiwsIldhdGVyIGJvdHRsZXMgKHN0YW5sZXlzLCBPd2FsYSwgSHlkcm8gZmxhc2ssIFlldGkpIiwsLCwsLCwsLCwsLCwsDQosLEhhbmQgaGVsZCBmYW5zLCwsLCwsLCwsLCwsLCwNCiwsLCwsLCwsLCwsLCwsLCwNCmhvbWUgb2ZmaWNlLCxvZmZpY2UgY2hhaXJzLCwsLCwsLCwsLCwsLCwNCiwsc3RhbmRpbmcgZGVza3MsLCwsLCwsLCwsLCwsLA0KLCxtb25pdG9ycywsLCwsLCwsLCwsLCwsDQosLEtleWJvYXJkcywsLCwsLCwsLCwsLCwsDQosLGRvY2tpbmcgc3RhdGlvbiwsLCwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpHYW1pbmcsLENvbnNvbGVzLCwsLCwsLCwsLCwsLCwNCiwsQWNjZXNzb3JpZXMsLCwsLCwsLCwsLCwsLA0KLCxHYW1lcywsLCwsLCwsLCwsLCwsDQosLENvdWxkIGluY2x1ZGUgTGVnbz8sLCwsLCwsLCwsLCwsLA==")));              const text = preloadedCSV;              const parsed = parseCSV(text);                            const rowsByName = {};              let filterStart = -1;              parsed.forEach((rc, i) => {                 if (rc && rc.length > 0 && rc[0]) rowsByName[rc[0]] = rc;                 if (rc && rc.length > 0 && rc[0] === 'Filter buttons') filterStart = i;              });                            const cols = [];              if(rowsByName['Roundel text']) {                const headerRow = rowsByName['Roundel text'];                for(let col = 1; col < headerRow.length; col++) {                   let label = headerRow[col];                   if (!label) continue;                                      let q = rowsByName['Search Query'] && rowsByName['Search Query'][col] ? rowsByName['Search Query'][col] : '';                   let img = rowsByName['Roundel image'] && rowsByName['Roundel image'][col] ? rowsByName['Roundel image'][col] : '';                   let ds = rowsByName['Discount Amount'] && rowsByName['Discount Amount'][col] ? rowsByName['Discount Amount'][col] : '';                   let pr = rowsByName['Price Range'] && rowsByName['Price Range'][col] ? rowsByName['Price Range'][col] : '';                   let rt = rowsByName['Retailer'] && rowsByName['Retailer'][col] ? rowsByName['Retailer'][col] : '';                   let ot = rowsByName['Offer Type'] && rowsByName['Offer Type'][col] ? rowsByName['Offer Type'][col] : '';                                      let filters = [];                   if(filterStart > 0) {                     for(let r = filterStart + 1; r < parsed.length; r++) {                         if(!parsed[r] || parsed[r][0] === 'Notes' || parsed[r][0] === 'Categories to consider') break;                         let f = parsed[r][col];                         if(f) filters.push(f);                     }                   }                   cols.push({ label, img, q, ds, pr, rt, ot, filters });                }              }              this.carouselData = cols;              if (this.carouselData && this.carouselData.length > 0) {                 const isMatched = this.carouselData.some(c => c.q === this.currentQuery || c.label === this.currentQuery);                 if (!isMatched) {                    const first = this.carouselData[0];                    this.currentQuery = first.q || first.label;                    if (this.priceFilter) this.priceFilter.value = 'all';                    if (this.customPriceMin) this.customPriceMin.value = '';                    if (this.customPriceMax) this.customPriceMax.value = '';                    let dPr = first.pr || 'all';                    if (typeof dPr === 'string' && dPr !== 'all') {                       let prLower = dPr.toLowerCase();                       if (prLower.includes('min') || prLower.includes('over')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else if (prLower.includes('max') || prLower.includes('under')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       }                    }                    let dAm = '0';                    if(first.ds && typeof first.ds === 'string') {                       let m = first.ds.match(/(\d+)/);                       if(m) dAm = m[1];                    }                    if (this.discountFilter) this.discountFilter.value = dAm;                    if (this.offerTypeSelect) this.offerTypeSelect.value = first.ot || '';                    if (this.retailerSelect) this.retailerSelect.value = first.rt || '';                    this.selectedBrands = [];                    if (this.brandDropdown) {                        const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                        chks.forEach(chk => chk.checked = false);                    }                    if (this.searchInput) this.searchInput.value = this.currentQuery;                 }              }              this.renderCarouselUI();          } catch(e){ console.warn(e); }        }                renderCarouselUI() {           const roundelWrapper = this.root.querySelector('.tg-df-carousel-roundels');           if(!roundelWrapper || !this.carouselData) return;                      let html = '';           this.carouselData.forEach(r => {              const q = r.q || r.label;              const isActive = (this.currentQuery === q || this.currentQuery === r.label) ? 'active' : '';              const imgHtml = r.img ? `\x3Cimg src="${r.img}" alt="${r.label}" />` : `\x3Csvg width="32" height="32" fill="#1F69FF" viewBox="0 0 24 24">\x3Cpath d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\x3C/svg>`;              html += `                \x3Cdiv class="tg-df-roundel tg-df-carousel-cat ${isActive}" data-label="${this.escapeHTML(r.label)}">                  \x3Cdiv class="tg-df-roundel-img-box">${imgHtml}\x3C/div>                  \x3Cspan class="tg-df-roundel-label">${this.escapeHTML(r.label)}\x3C/span>                \x3C/div>              `;           });           roundelWrapper.innerHTML = html;                      // Rebind clicks           const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');           roundels.forEach(rNode => {             rNode.addEventListener('click', () => {                const r = this.carouselData.find(c => c.label === rNode.getAttribute('data-label'));                 if(!r) return;                                  if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: r.label,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = r.q || r.label;                const labelTitle = this.root.querySelector('#tg-df-carousel-title-label');                if (labelTitle) labelTitle.textContent = 'Best ' + this.currentQuery;                if (this.priceFilter) this.priceFilter.value = 'all';                if (this.customPriceMin) this.customPriceMin.value = '';                if (this.customPriceMax) this.customPriceMax.value = '';                let dPr = r.pr || 'all';                if (typeof dPr === 'string' && dPr !== 'all') {                   let prLower = dPr.toLowerCase();                   if (prLower.includes('min') || prLower.includes('over')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMin) this.customPriceMin.value = m[1];                   } else if (prLower.includes('max') || prLower.includes('under')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMax) this.customPriceMax.value = m[1];                   }                }                                let discountAmount = '0';                if(r.ds && typeof r.ds === 'string') {                   let m = r.ds.match(/(\d+)/);                   if(m) discountAmount = m[1];                }                if (this.discountFilter) this.discountFilter.value = discountAmount;                if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                                // Clear brands                    this.selectedBrands = [];                    if (this.brandDropdown) {                    const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                    chks.forEach(chk => chk.checked = false);                }                                if (this.searchInput) this.searchInput.value = this.currentQuery;                                roundels.forEach(ro => ro.classList.remove('active'));                if (rNode) rNode.classList.add('active');                                this.renderCarouselFilters(r);                this.fetchDeals(this.currentQuery);             });           });                      // Auto-highlight active           const activeR = this.carouselData.find(c => c.q === this.currentQuery || c.label === this.currentQuery);           if(activeR) this.renderCarouselFilters(activeR);        }                renderCarouselFilters(r) {           const filtersWrap = this.root.querySelector('.tg-df-carousel-filters-wrap');           if(!filtersWrap) return;                      let html = `\x3Cbutton class="tg-df-carousel-filter-btn" data-type="all">All\x3C/button>`;                      r.filters.forEach(f => {              let fL = f.toLowerCase();              let icon = '';              let logic = `data-type="custom" data-v="${this.escapeHTML(f)}"`;              if (fL === 'amazon deals' || fL === 'prime deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>`;              } else if (fL === 'lightning deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>`;              } else {                 if (fL.includes('lightning')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap">\x3Cpolygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2">\x3C/polygon>\x3C/svg>`;                 } else if (fL.includes('% off')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>`;                 } else if (fL.includes('under') || fL.includes('min ')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>`;                 }                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>${icon} ${this.escapeHTML(f)}\x3C/button>`;              }           });                      filtersWrap.innerHTML = html;                      const btns = filtersWrap.querySelectorAll('button');           btns.forEach(b => {             b.addEventListener('click', () => {                const type = b.getAttribute('data-type');                if (type === 'custom') {                   const v = b.getAttribute('data-v');                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-custom-${(v||'').toLowerCase().replace(/[^a-z0-9]+/g, '-')}`, name: 'Custom Filter', label: v });                }                if (type === 'all') {                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: 'filter-clear-all', name: 'Clear all', label: 'Clear all filters' });                   // reset everything                   btns.forEach(btn => btn.classList.remove('active'));                   b.classList.add('active');                                      // Reset prices                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   if (this.brandDropdown) {                     const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                     chks.forEach(chk => chk.checked = false);                   }                } else {                   const v = b.getAttribute('data-v');                   const fL = v.toLowerCase();                                      let mapRet = ['amazon', 'walmart', 'best buy', 'target', 'john lewis', 'currys', 'argos'];                   const getCategory = (s) => {                      if (s === 'lightning deals' || s === 'amazon deals' || s === 'prime deals') return 'offer';                      if (s.includes('% off')) return 'discount';                      if (s.includes('under') || s.includes('over') || s.includes('min') || s.includes('max')) return 'price';                      if (mapRet.includes(s)) return 'retailer';                      return 'brand';                   };                   const cat = getCategory(fL);                   const wasActive = b.classList.contains('active');                   if (cat !== 'brand') {                      btns.forEach(btn => {                          if (btn === b) return;                          if (btn.getAttribute('data-type') === 'all') return;                          const bV = btn.getAttribute('data-v');                          if (!bV) return;                          if (getCategory(bV.toLowerCase()) === cat) btn.classList.remove('active');                      });                   }                   if (wasActive) b.classList.remove('active');                   else b.classList.add('active');                   let anyActive = Array.from(btns).some(btn => btn !== btns[0] && btn.classList.contains('active'));                   if (!anyActive) {                       btns[0].click();                       return;                   } else {                       btns[0].classList.remove('active');                   }                                      if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   btns.forEach(btn => {                       if (!btn.classList.contains('active') || btn.getAttribute('data-type') === 'all') return;                       const vv = btn.getAttribute('data-v');                       const vl = vv.toLowerCase();                                              if (vl === 'lightning deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_lightning';                       } else if (vl === 'amazon deals' || vl === 'prime deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_prime';                       } else if (vl.includes('% off')) {                          let m = vl.match(/(\d+)%/);                          if (m && this.discountFilter) this.discountFilter.value = m[1];                       } else if (vl.includes('under') || vl.includes('max')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       } else if (vl.includes('min') || vl.includes('over')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else {                          let foundR = mapRet.find(x => x === vl);                          if (foundR) {                             let realR = ['Amazon', 'Walmart', 'Best Buy', 'Target', 'John Lewis', 'Currys', 'Argos'].find(x => x.toLowerCase() === vl);                             if (this.retailerSelect) this.retailerSelect.value = realR;                          } else {                             this.selectedBrands.push(vv);                          }                       }                   });                                      if (this.brandDropdown) {                       const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                       chks.forEach(c => c.checked = this.selectedBrands.includes(c.value));                   }                                      if (r.pr && typeof r.pr === 'string') {                       let prL = r.pr.toLowerCase();                       if (prL.includes('under $')) {                           let m = prL.match(/under \$(\d+)/i);                           if (m && this.customPriceMax && !this.customPriceMax.value) this.customPriceMax.value = m[1];                       }                   }                }                                this.fetchDeals(this.currentQuery);             });           });                      // default to highlighting first           btns[0].classList.add('active');        }async fetchDeals(query, append = false) {          if (!append) {             this.showLoading();             this.deals = [];             this.displayLimit = this.getRowsLimit();          } else {             this.displayLimit += this.getRowsLimit();          }                    try {            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad(append);            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query, append);               } else {                 await this.fetchHawkDeals(query, append);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query, append);                 }               }            }          } catch (error) {            console.warn("[Tom's Guide Widget] Fetch error:", error);            this.showError();          }        }        async fetchSavingsSquad() {          let topArticles = this.airedaleArticles;          if (!topArticles) {            const airedaleUrl = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`;            let res;            try {               res = await fetch(airedaleUrl);            } catch(e) {               try { res = await fetch(`https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`); } catch (err) { console.warn("Fallback fetch failed", err); return; }            }            if (!res.ok) throw new Error('Airedale API Error');            const articles = await res.json();            topArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);            this.airedaleArticles = topArticles;                        let tagCounts = {};            topArticles.forEach((a) => {              let articleTags = new Set();              if (a.articlecategory && Array.isArray(a.articlecategory)) {                 a.articlecategory.forEach((t) => articleTags.add(t));              }              articleTags.forEach(t => {                 tagCounts[t] = (tagCounts[t] || 0) + 1;              });            });                        this.airedaleTags = Object.keys(tagCounts).sort((a, b) => tagCounts[b] - tagCounts[a]);            this.airedaleTagCounts = tagCounts;          }                    let targetArticles = topArticles;          if (this.activeDealTag) {             const cleanTag = this.activeDealTag.toLowerCase().replace(/&/g, '').replace(/[^a-z0-9]+/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');             const encodedTag = encodeURIComponent(cleanTag);             const url = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50&articleCategoryHandle=${encodedTag}`;             try {                const res = await fetch(url);                if (res.ok) {                   const articles = await res.json();                   targetArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);                }             } catch(e) {                console.warn("Failed to fetch by activeDealTag", e);             }          }          let extractedDeals = [];          let dynamicBrandsCounts = {};                    targetArticles.forEach((article) => {             if (!article.articlepage) return;                          let pageData = [];             try {                pageData = JSON.parse(article.articlepage[0]);             } catch(e){ console.warn(e); }                          const savingsSquad = pageData.filter((p) => p.type === 'deal' || p.type === 'featured-product');                          savingsSquad.forEach((block, idx) => {                const data = block.data || {};                const isFeatured = block.type === 'featured-product';                                const link = data.link || {};                const priceObj = data.price || {};                const image = data.image || {};                                if (data.brand) {                   data.brand = data.brand.replace(/^\d+\.\s*/, '').trim();                   dynamicBrandsCounts[data.brand] = (dynamicBrandsCounts[data.brand] || 0) + 1;                }                const externalUrl = isFeatured ? data.url : (link.href || null);                let summaryTitle = isFeatured ? (data.name || data.brand) : (data.productName || link.label || article.articlename);                let description = isFeatured ? (data.strapline || '') : (data.text || '');                                if (!isFeatured && !data.productName && data.text) {                   const brSplit = data.text.split(new RegExp('\x3Cbr\\s*\\/?\\x3E', 'i'));                   if (brSplit.length > 1) {                     summaryTitle = brSplit[0].replace(/<[^>]+>/g, '').trim();                     description = brSplit.slice(1).join(' ').replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim();                   } else {                     const match = data.text.match(/\x3Cstrong>(.*?)<\/strong>/);                     if (match) {                       summaryTitle = match[1].replace(/<[^>]+>/g, '').trim();                       if (summaryTitle.endsWith(':')) summaryTitle = summaryTitle.slice(0, -1);                     }                   }                }                                let imageUrl = isFeatured ? image.mos : (image.src || null);                if (imageUrl && imageUrl.startsWith('//')) imageUrl = 'https:' + imageUrl;                                description = description.replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').replace(/View Deal$/i, '').trim();                                let merchantName = data.retailer || '';                if (!merchantName && externalUrl) {                   try {                     merchantName = new URL(externalUrl).hostname.replace('www.', '').split('.')[0];                     merchantName = merchantName.charAt(0).toUpperCase() + merchantName.slice(1);                   }catch(e){ console.warn(e); }                }                if (!merchantName) merchantName = 'Retailer';                const q = (this.currentQuery || '').toLowerCase();                const activeTagLogic = (this.activeDealTag || '').toLowerCase();                if (q.length > 2 && q !== activeTagLogic) {                   const searchTarget = `${summaryTitle || ''} ${description || ''}`.toLowerCase();                   if (!searchTarget.includes(q)) return;                }                let rawPrice = 0;                let rawMsrp = 0;                let currencyStr = '$';                if (isFeatured) {                   rawPrice = typeof data.salePrice === 'number' && data.salePrice > 0 ? data.salePrice : (typeof data.price === 'number' ? data.price : 0);                   rawMsrp = typeof data.salePrice === 'number' && typeof data.price === 'number' && data.price > data.salePrice ? data.price : 0;                   currencyStr = data.currency === 'GBP' ? '£' : '$';                } else {                   rawPrice = priceObj.amount ? parseFloat(priceObj.amount) : 0;                   rawMsrp = priceObj.amountWas ? parseFloat(priceObj.amountWas) : 0;                   currencyStr = priceObj.currency === 'GBP' ? '£' : '$';                }                                let savingAmt = 0;                let savingLabel = '';                if (rawPrice > 0 && rawMsrp > rawPrice) {                   savingAmt = parseFloat((rawMsrp - rawPrice).toFixed(2));                   savingLabel = `Save ${currencyStr}${savingAmt}`;                }                                // Apply Brand filter                if (this.selectedBrands && this.selectedBrands.length > 0) {                   const itemBrand = (data.brand || '').toLowerCase();                   const hasMatch = this.selectedBrands.some(sb => sb.toLowerCase() === itemBrand);                   if (!hasMatch) return;                }                // Apply Price filter                let priceFilterVal = null;                const min = this.customPriceMin ? this.customPriceMin.value : '';                const max = this.customPriceMax ? this.customPriceMax.value : '';                if (min || max) {                   priceFilterVal = `${min}_${max}`;                } else if (this.priceFilter && this.priceFilter.value !== 'all') {                   priceFilterVal = this.priceFilter.value;                }                if (priceFilterVal && rawPrice > 0) {                   if (priceFilterVal === 'under50' && rawPrice >= 50) return;                   if (priceFilterVal === 'over50' && rawPrice <= 50) return;                   if (priceFilterVal === 'over30' && rawPrice <= 30) return;                   if (priceFilterVal === 'over500' && rawPrice <= 500) return;                   if (priceFilterVal.includes('_')) {                      const parts = priceFilterVal.split('_');                      const min = parseFloat(parts[0]);                      const max = parseFloat(parts[1]);                      if (!isNaN(min) && rawPrice < min) return;                      if (!isNaN(max) && rawPrice > max) return;                   }                }                // Apply Discount filter                if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {                   const requiredDiscount = parseInt(this.discountFilter.value);                   if (!isNaN(requiredDiscount) && requiredDiscount > 0) {                      if (!rawMsrp || rawMsrp <= rawPrice) return;                      const ratio = Math.round((1 - (rawPrice / rawMsrp)) * 100);                      if (ratio < requiredDiscount) return;                   }                }                                extractedDeals.push({                   id: `airedale-${article.id || Math.random()}-${idx}`,                   url: externalUrl,                   image: imageUrl,                   fallbackImage: imageUrl,                   title: summaryTitle,                   brand: data.brand || '',                   productName: data.productName || '',                   merchant: merchantName,                   rawPrice: rawPrice,                   rawMsrp: rawMsrp,                   price: rawPrice > 0 ? rawPrice.toString() : '',                   msrp: rawMsrp > 0 ? rawMsrp.toString() : '',                   currency: currencyStr,                   isCheckPrice: !rawPrice,                   savingLabel: savingLabel,                   savingType: rawMsrp > rawPrice ? 'amount' : 'none',                   isPrime: false,                   starRating: null,                   description: description,                   text: data.text || ''                });             });          });                    const airedaleBrandsList = Object.keys(dynamicBrandsCounts).map(b => ({              formatted_value: b,              count: dynamicBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query, append = false) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    if (append && this.deals.length > 0) {            url.searchParams.append('offset', this.deals.length.toString());          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.append('filter_merchant_name', this.retailerSelect.value);          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.append('filter_label[text_brand]', this.selectedBrands.join(','));          }                    let priceVal = null;          const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             priceVal = `${min}_${max}`;          } else if (this.priceFilter && this.priceFilter.value !== 'all') {             priceVal = this.priceFilter.value;          }          if (priceVal) {            if (priceVal === 'under50') {              url.searchParams.append('filter_max_price', '50');            } else if (priceVal === 'over50') {              url.searchParams.append('filter_min_price', '50');            } else if (priceVal === 'over30') {              url.searchParams.append('filter_min_price', '30');            } else if (priceVal === 'over500') {              url.searchParams.append('filter_min_price', '500');            } else if (priceVal.includes('_')) {              const parts = priceVal.split('_');              if (parts[0]) url.searchParams.append('filter_min_price', parts[0]);              if (parts[1]) url.searchParams.append('filter_max_price', parts[1]);            }          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {              const ratio = (100 - v) / 100;              url.searchParams.append('min_discount_ratio', ratio.toString());            }          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.append('offer', this.offerTypeSelect.value);          }                    url.searchParams.append('filter_product_types', 'deals');                    url.searchParams.append('rows', this.getRowsLimit().toString());          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = this.getRowsLimit();          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : (this.getViewMode() === 'savings_squad' ? 'date_desc' : 'discount_desc');          if (sortVal === 'price_asc') {            this.deals.sort((a, b) => a.rawPrice - b.rawPrice);          } else if (sortVal === 'price_desc') {            this.deals.sort((a, b) => b.rawPrice - a.rawPrice);          } else if (sortVal === 'discount_desc') {            this.deals.sort((a, b) => {              const aDiscount = a.rawMsrp > a.rawPrice ? (a.rawMsrp - a.rawPrice) : 0;              const bDiscount = b.rawMsrp > b.rawPrice ? (b.rawMsrp - b.rawPrice) : 0;              return bDiscount - aDiscount;            });          } else if (sortVal === 'date_desc') {             this.deals.sort((a, b) => {                let dateA = 0;                let dateB = 0;                if (a && a.modifiedDate) {                   const valA = Array.isArray(a.modifiedDate) ? a.modifiedDate[0] : a.modifiedDate;                   dateA = new Date(valA).getTime();                   if (isNaN(dateA)) dateA = 0;                }                if (b && b.modifiedDate) {                   const valB = Array.isArray(b.modifiedDate) ? b.modifiedDate[0] : b.modifiedDate;                   dateB = new Date(valB).getTime();                   if (isNaN(dateB)) dateB = 0;                }                return dateB - dateA;             });          }        }        getFilteredDeals() {          let filteredDeals = [...this.deals];                    if (this.dealModeToggle && this.dealModeToggle.checked) {            filteredDeals = filteredDeals.filter(d => d.hasWasPrice || (d.msrp && d.rawMsrp > d.rawPrice));          }                    return filteredDeals;        }        showLoading() {          const _div = '<' + '/div>';          const skeletonCardHtml = `            \x3Cdiv class="tg-df-card">              \x3Cdiv class="tg-df-card-image-box">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-img">${_div}              ${_div}              \x3Cdiv class="tg-df-card-body">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-card-footer mt-auto">                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="height:24px;">${_div}                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin-top:8px;">${_div}                ${_div}              ${_div}            ${_div}`;          this.grid.innerHTML = Array(4).fill(skeletonCardHtml).join('');        }        showError() {          const _div = '<' + '/div>';          this.grid.innerHTML = `\x3Cdiv class="tg-df-message">            An error occurred while finding deals. Please check your connection and try again.          ${_div}`;        }        escapeHTML(str) {          if (!str) return '';          return String(str).replace(/[&<>'"]/g, tag => ({              '&': '&', '<': '<', '>': '>', "'": ''', '"': '"'          }[tag] || tag));        }                bindCouponButtons() {          const btns = this.root.querySelectorAll('.tg-df-tag-coupons');          btns.forEach(btn => {            btn.addEventListener('click', (e) => {              e.preventDefault();              e.stopPropagation();              const merchant = btn.getAttribute('data-merchant');              this.openVouchersModal(merchant);            });          });                    const closeBtn = this.root.querySelector('#tg-df-vouchers-close');          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (closeBtn) {            closeBtn.onclick = () => this.closeVouchersModal();          }          if (backdrop) {            backdrop.onclick = (e) => {              if (e.target === backdrop) this.closeVouchersModal();            };          }        }                closeVouchersModal() {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (backdrop) backdrop.classList.remove('active');        }                async checkMerchantsCouponsBulk(merchants) {          if (!merchants || merchants.length === 0) return {};          const controller = new AbortController();          const timeoutId = setTimeout(() => controller.abort(), 4000);          try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchants.join(','));            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '120');            url.searchParams.append('origin', 'widgets-clientside');                        let res; try { res = await fetch(url.toString(), { signal: controller.signal }); } catch (e) { return {}; }            clearTimeout(timeoutId);            if (!res.ok) return {};            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        const foundMerchants = new Set();            offers.forEach(o => {              let mName = o.merchant_name || o.merchant || o.retailer;              if (mName && typeof mName === 'object') mName = mName.name;              if (mName) foundMerchants.add(String(mName).toLowerCase());            });            const resultMap = {};            merchants.forEach(m => {              if (m) resultMap[m] = foundMerchants.has(String(m).toLowerCase());            });            return resultMap;          } catch (e) {            return {};          }        }                async openVouchersModal(merchantName) {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          const title = this.root.querySelector('#tg-df-vouchers-title');          const content = this.root.querySelector('#tg-df-vouchers-content');                    if (!backdrop || !content) return;                    // HACK: Hide closing tags          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h4 = '<' + '/h4>';          const _svg = '<' + '/svg>';          const _circle = '<' + '/circle>';          const _polyline = '<' + '/polyline>';          const _rect = '<' + '/rect>';          const _path = '<' + '/path>';                    title.innerText = `${merchantName} Coupons & Deals`;          content.innerHTML = `\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}                               \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}`;          backdrop.classList.add('active');                    try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchantName);            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '50');            url.searchParams.append('origin', 'widgets-clientside');                        const res = await fetch(url.toString());            if (!res.ok) throw new Error('API Error');            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        if (offers.length === 0) {              content.innerHTML = `\x3Cdiv class="tg-df-message">No vouchers currently available for ${this.escapeHTML(merchantName)}.${_div}`;              return;            }                        content.innerHTML = offers.map((v, idx) => {              let offerObj = v;              if (v.offers && v.offers.offer) {                offerObj = Array.isArray(v.offers.offer) ? v.offers.offer[0] : v.offers.offer;              } else if (v.offer) {                offerObj = Array.isArray(v.offer) ? v.offer[0] : v.offer;              }              let logoUrl = v.logo_url || offerObj.logo_url || '';              if (!logoUrl && v.merchant) {                if (Array.isArray(v.merchant) && v.merchant.length > 0) logoUrl = v.merchant[0].logo_url || '';                else logoUrl = v.merchant.logo_url || '';              }                            const offerName = offerObj.name || offerObj.title || v.name || v.title || 'Special Offer';              const endTime = offerObj.end_time || v.end_time || '';              const linkUrl = offerObj.link || offerObj.url || v.link || v.url || '#';                            let foundVoucherCode = '';              const findVoucherCode = (obj) => {                if (!obj || typeof obj !== 'object') return;                if (obj.type === 'voucher_code' && obj.display_value) {                  foundVoucherCode = obj.display_value;                  return;                }                if (Array.isArray(obj)) {                  for (const item of obj) {                    findVoucherCode(item);                    if (foundVoucherCode) return;                  }                } else {                  for (const k in obj) {                    if (Object.prototype.hasOwnProperty.call(obj, k)) {                      findVoucherCode(obj[k]);                      if (foundVoucherCode) return;                    }                  }                }              };              findVoucherCode(offerObj);              if (!foundVoucherCode) findVoucherCode(v);                            const voucherCode = foundVoucherCode || offerObj.voucher_code || v.voucher_code || '';              const codeHtml = voucherCode ? `\x3Cspan class="tg-df-voucher-code" data-action="copy-code" data-code="${this.escapeHTML(voucherCode)}" title="Copy to clipboard">                \x3Cspan class="tg-df-voucher-code-text">${this.escapeHTML(voucherCode)}${_span}                \x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-left:6px;flex-shrink:0;" class="tg-df-voucher-copy-icon">                  \x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">${_rect}                  \x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">${_path}                ${_svg}              ${_span}` : '';                            const logoHtml = logoUrl                 ? `\x3Cimg src="${this.escapeHTML(logoUrl)}" alt="${this.escapeHTML(offerName)}" class="tg-df-voucher-logo" />`                 : `\x3Cdiv class="tg-df-voucher-logo" style="background:#e2e8f0;">${_div}`;                            let expiryHtml = '';              if (endTime) {                let dStr = endTime;                if (!isNaN(dStr) && String(dStr).length === 10) dStr = Number(dStr) * 1000;                const d = new Date(dStr);                if (!isNaN(d.getTime())) {                  const options = { year: 'numeric', month: 'short', day: 'numeric' };                  expiryHtml = `                    \x3Cdiv class="tg-df-voucher-expiry">                      \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                        \x3Ccircle cx="12" cy="12" r="10">${_circle}                        \x3Cpolyline points="12 6 12 12 16 14">${_polyline}                      ${_svg}                      Expires ${d.toLocaleDateString(undefined, options)}                    ${_div}`;                }              }              const revenueIdVal = generateRevenueId(linkUrl, offerName, merchantName, null);              const rewrittenLinkUrl = rewriteAffiliateLink(linkUrl, area, revenueIdVal);              return `                \x3Ca href="${this.escapeHTML(rewrittenLinkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item"                  data-action="voucher-click"                  data-product-name="${this.escapeHTML(offerName)}"                  data-merchant-name="${this.escapeHTML(merchantName)}"                  data-analytics-id="${this.escapeHTML(offerObj.offer_id || offerObj.id || v.id || '')}"                  data-price=""                  data-previous-price=""                  data-original-link="${this.escapeHTML(linkUrl)}"                  data-revenue-id="${revenueIdVal}"                  data-index="${idx}"                  data-total="${offers.length}"                  data-in-stock="true"                  data-currency="USD"                  data-model-id="${this.escapeHTML(offerObj.model_id || v.model_id || offerObj.id || v.id || '')}"                  data-merchant-id="${this.escapeHTML(offerObj.merchant_id || offerObj.merchant?.id || '')}"                >                  ${logoHtml}                  \x3Cdiv class="tg-df-voucher-content">                    \x3Ch4 class="tg-df-voucher-title">${this.escapeHTML(offerName)}${_h4}                    ${codeHtml}                    ${expiryHtml}                  ${_div}                ${_a}              `;            }).join('');                        // Attach copy functionality            const copyBtns = content.querySelectorAll('[data-action="copy-code"]');            copyBtns.forEach(btn => {              btn.addEventListener('click', async (e) => {                e.preventDefault();                e.stopPropagation();                                const code = btn.getAttribute('data-code');                if (!code) return;                                try {                  const copyToClipboard = async (text) => {                     if (window.navigator.clipboard && window.isSecureContext) {                        try { await window.navigator.clipboard.writeText(text); return; } catch (e) {}                     }                     const textArea = document.createElement("textarea");                     textArea.value = text;                     textArea.style.position = "fixed";                     document.body.appendChild(textArea);                     textArea.focus();                     textArea.select();                     document.execCommand('copy');                     textArea.remove();                  };                  await copyToClipboard(code);                                    // Visual feedback                  btn.classList.add('copied');                  const textSpan = btn.querySelector('.tg-df-voucher-code-text');                  const iconSvg = btn.querySelector('.tg-df-voucher-copy-icon');                                    const origText = textSpan.innerText;                  const origIcon = iconSvg.innerHTML;                                    textSpan.innerText = 'Copied!';                  iconSvg.innerHTML = `\x3Cpolyline points="20 6 9 17 4 12">${_polyline}`;                                    setTimeout(() => {                    if (btn) {                      btn.classList.remove('copied');                      if (textSpan) textSpan.innerText = origText;                      if (iconSvg) iconSvg.innerHTML = origIcon;                    }                  }, 2000);                                    trackElementInteraction({                    id: 'voucher-code-copy',                    name: 'Copy Voucher Code',                    label: `Copied ${code} for ${merchantName}`                  });                } catch (err) {                  console.warn('Failed to copy text: ', err);                }              });            });            // Attach voucher click tracking            const voucherBtns = content.querySelectorAll('[data-action="voucher-click"]');            voucherBtns.forEach(btn => {              btn.addEventListener('click', (e) => {                if (e.target.closest('[data-action="copy-code"]')) return;                                const productName = btn.getAttribute('data-product-name');                const merchantNameAttr = btn.getAttribute('data-merchant-name');                const productId = btn.getAttribute('data-analytics-id');                const price = parseFloat(btn.getAttribute('data-price')) || null;                const prevPriceStr = btn.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = btn.getAttribute('data-original-link');                const rewrittenLink = btn.getAttribute('href');                const revenueId = btn.getAttribute('data-revenue-id');                const index = parseInt(btn.getAttribute('data-index'), 10) || 0;                const inStock = btn.getAttribute('data-in-stock') === 'true';                const totalText = btn.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: btn.getAttribute('data-model-id') || null,                    matchId: btn.getAttribute('data-match-id') || null,                    brand: btn.getAttribute('data-model-brand') || null,                    parent: btn.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: btn.getAttribute('data-merchant-id') || null,                    network: btn.getAttribute('data-merchant-network') || null,                    url: btn.getAttribute('data-merchant-url') || null,                    name: merchantNameAttr                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: btn.getAttribute('data-currency') || 'USD'                };                if (typeof trackDealClick === 'function') {                  trackDealClick(trackingParams);                }              });            });                                  } catch (e) {            console.warn(e);            content.innerHTML = `\x3Cdiv class="tg-df-message">Failed to load vouchers.${_div}`;          }        }        render() {          try {            if (this.getViewMode() === 'savings_squad' && this.airedaleTags.length > 0) {              if (this.categoryFilterWrapper) {                 this.categoryFilterWrapper.style.display = 'flex';              }              if (this.categoryFilter) {                 const _option = '<' + '/option>';                 let optionsHtml = `\x3Coption value="all">All Categories${_option}`;                 this.airedaleTags.forEach(tag => {                    const isSelected = this.activeDealTag === tag ? 'selected' : '';                    optionsHtml += `\x3Coption value="${this.escapeHTML(tag)}" ${isSelected}>${this.escapeHTML(tag)} (${this.airedaleTagCounts[tag] || 0})${_option}`;                 });                 this.categoryFilter.innerHTML = optionsHtml;                 this.categoryFilter.value = this.activeDealTag || 'all';              }            } else {               if (this.categoryFilterWrapper) {                  this.categoryFilterWrapper.style.display = 'none';               }            }            const displayDeals = this.getFilteredDeals();          // HACK: Hide closing tags from the CMS HTML sanitizer so it doesn't strip them during in-page injection          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h3 = '<' + '/h3>';          const _p = '<' + '/p>';          const _strong = '<' + '/strong>';          const _sup = '<' + '/sup>';          const _button = '<' + '/button>';          if (displayDeals.length === 0) {            if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {              if (this.deals.length > 0) {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No deals match your selected filters.                ${_div}`;              } else if (this.getViewMode() === 'savings_squad' && this.currentQuery.length <= 2) {                 // Do not show "no exact matches" if query is empty for savings_squad                 this.grid.innerHTML = '';              } else {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No exact matches found for "\x3Cstrong>${this.escapeHTML(this.currentQuery)}${_strong}". Try adjusting your search term.                ${_div}`;              }            } else {              this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                Search product or category names to discover the best deals from across the web.              ${_div}`;            }            return;          }          let dealsHtml = displayDeals.slice(0, this.displayLimit).map((deal, index) => {            try {               const currencySym = this.escapeHTML(deal.currency);               const isoCurrencyCode = normalizeCurrency(currencySym);               const escapedPrice = this.escapeHTML(deal.price);               const escapedMsrp = this.escapeHTML(deal.msrp);               const areaCode = this.getAreaCode();                              const revenueId = generateRevenueId(deal.url, deal.title, deal.merchant, null);               const originalLink = deal.url;               const rewrittenLink = rewriteAffiliateLink(deal.url, areaCode, revenueId);                        const productCategoryName = 'deals';            const dataAttr = `              data-action="${deal.isCheckPrice ? 'view-similar-click' : 'deal-click'}"              data-analytics-id="${this.escapeHTML(deal.externalProductId || deal.id || '')}"              data-product-name="${this.escapeHTML(deal.title)}"              data-merchant-name="${this.escapeHTML(deal.merchant)}"              data-price="${deal.rawPrice || ''}"              data-previous-price="${deal.rawMsrp || ''}"              data-original-link="${this.escapeHTML(originalLink)}"              data-revenue-id="${revenueId}"              data-index="${index}"              data-total="${displayDeals.length}"              data-in-stock="${deal.inStock !== false}"              data-currency="${this.escapeHTML(isoCurrencyCode)}"              data-model-id="${this.escapeHTML(deal.modelId || '')}"              data-product-key="${this.escapeHTML(deal.productKey || '')}"              data-merchant-id="${this.escapeHTML(deal.merchantId || '')}"            `;                        let priceGroupHtml = '';            let isSavingsSquadMode = this.getViewMode() === 'savings_squad';            let ctaText = 'View Deal';            let formattedPrice = '';            let msrpHtml = '';                        if (deal.isCheckPrice) {              ctaText = isSavingsSquadMode ? 'View Deal' : 'Check Price';              if (isSavingsSquadMode) {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                  ${_div}                `;              } else {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                    \x3Cspan class="tg-df-card-price" style="font-size: 15px; font-weight: 500; font-style: italic;">See price at retailer${_span}                  ${_div}                `;              }            } else {              // Format Price              formattedPrice = escapedPrice.includes(currencySym)                 ? escapedPrice                 : `${currencySym}${escapedPrice}`;                              // Format MSRP              msrpHtml = deal.msrp && deal.rawMsrp > deal.rawPrice                ? `\x3Cspan class="tg-df-card-msrp">${escapedMsrp.includes(currencySym) ? escapedMsrp : currencySym + escapedMsrp}${_span}`                : '';                              priceGroupHtml = `                \x3Cdiv class="tg-df-card-merchant-wrapper">                  \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                ${_div}                \x3Cdiv class="tg-df-card-price-group">                  ${isSavingsSquadMode ? '' : `                  \x3Cspan class="tg-df-card-price">${formattedPrice}${_span}                  ${msrpHtml}                  `}                ${_div}              `;            }                        const discountBadgeHtml = deal.savingLabel && !deal.isCheckPrice              ? `\x3Cspan class="tg-df-card-discount-badge">${this.escapeHTML(deal.savingLabel)}${_span}`              : '';                          // HACK for CMS            const _button = '<' + '/button>';            const _svg = '<' + '/svg>';            const _path = '<' + '/path>';            const _rect = '<' + '/rect>';            const _circle = '<' + '/circle>';            const _polyline = '<' + '/polyline>';            const _line = '<' + '/line>';                        let badgesHtml = '';            const primeBadge = deal.isPrime ? `              \x3Cspan class="tg-df-tag tg-df-tag-prime">                \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="currentColor">                  \x3Cpath d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z">${_path}                ${_svg} Prime              ${_span}            ` : '';                        const couponsBadge = deal.merchant && deal.merchant.toLowerCase().includes('amazon') ? '' : `              \x3Cdiv class="tg-df-coupon-wrapper" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:inline-flex; align-items:center;">                \x3Cdiv class="tg-df-coupon-spinner">${_div}                \x3Cbutton type="button" class="tg-df-tag tg-df-tag-coupons" data-action="coupons-click" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:none;">                  \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                    \x3Cpath d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z">${_path}                    \x3Cline x1="7" y1="7" x2="7.01" y2="7">${_line}                  ${_svg} Coupons                ${_button}              ${_div}            `;                        // Note: We always add coupons badge if there's a chance, but to allow 3-line titles we check wrapper display state            badgesHtml = `              \x3Cdiv class="tg-df-card-badges">                ${primeBadge}                ${couponsBadge}              ${_div}            `;            const _linearGradient = '<' + '/linearGradient>';            const _polygon = '<' + '/polygon>';            const _stop = '<' + '/stop>';            const _defs = '<' + '/defs>';                        let starHtml = '';            if (deal.starRating) {              let rating = deal.starRating;                            if (rating > 0) {                const fullStars = Math.floor(rating);                const halfStar = (rating - fullStars) >= 0.5 ? 1 : 0;                const emptyStars = Math.max(0, 5 - fullStars - halfStar);                const blue = '#1f69ff'; // Tom's guide brand color from VIEW DEAL button                const gray = '#cbd5e1';                                const starSvgFull = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="${blue}" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                const gradId = 'half_grad_' + Math.floor(Math.random()*1000000);                const starSvgHalf = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cdefs>\x3ClinearGradient id="${gradId}" x1="0" x2="1" y1="0" y2="0">\x3Cstop offset="50%" stop-color="${blue}">${_stop}\x3Cstop offset="50%" stop-color="transparent">${_stop}${_linearGradient}${_defs}                  \x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26" fill="url(#${gradId})">${_polygon}${_svg}`;                                  const starSvgEmpty = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="${gray}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                let stars = [];                for (let i=0; i<fullStars; i++) stars.push(starSvgFull);                if (halfStar) stars.push(starSvgHalf);                for (let i=0; i<emptyStars; i++) stars.push(starSvgEmpty);                                starHtml = `\x3Cdiv class="tg-df-card-stars" style="display:flex;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--tg-df-text-muted);">                  \x3Cspan style="margin-right:6px;">Tom's Guide:${_span}                  \x3Cdiv style="display:flex;gap:2px;">                    ${stars.join('')}                  ${_div}                ${_div}`;              }            }            let htmlOutput = '';            if (isSavingsSquadMode) {              htmlOutput += `              \x3Cdiv class="hawk-deal-widget-container tg-df-mobile-only" data-collapsible="true">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''} style="margin-bottom: 10px;">` : ''}                \x3Cdiv class="hawk-deal-widget-wrap">                  \x3Cdiv class="hawk-deal-widget-image-container">                    \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" rel="sponsored noopener" target="_blank" class="hawk-affiliate-link-deal-widget" ${dataAttr}>                      \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="hawk-lazy-image-deal-widget" loading="lazy" width="140" height="160" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                    ${_a}                  ${_div}                  \x3Cdiv class="hawk-deal-widget-text-cta-container">                    \x3Cdiv class="hawk-deal-widget-text-body-container">                      \x3Cdiv class="hawk-deal-widget-text-body-main">                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          ${deal.isCheckPrice ? `                            \x3Cspan class="hawk-deal-widget-title-product-title">${this.escapeHTML(deal.title)}${_span}                          ` : `                            \x3Cspan class="hawk-deal-widget-title-product-title">${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_span}                          `}                        ${_a}                        ${!deal.isCheckPrice && deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan class="hawk-deal-widget-title-was-price">was ${currencySym}${escapedMsrp}${_span}                          ${_a}                        ` : ''}                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          \x3Cspan class="hawk-deal-widget-title-retailer-price">                            ${!deal.isCheckPrice ? `                              \x3Cspan class="hawk-deal-widget-title-price">now ${formattedPrice}${_span}                              \x3Cspan class="hawk-deal-widget-title-retailer"> at ${this.escapeHTML(deal.merchant)}${_span}                            ` : `                              \x3Cspan class="hawk-deal-widget-title-price">See price at ${this.escapeHTML(deal.merchant)}${_span}                            `}                          ${_span}                        ${_a}                        ${deal.description ? `\x3Cdiv class="hawk-deal-widget-text-body-description">\x3Cp>${this.escapeHTML(deal.description)}${_p}${_div}` : ''}                      ${_div}                    ${_div}                    \x3Cdiv class="hawk-deal-widget-footer">                      \x3Cdiv class="hawk-deal-widget-button-wrapper">                        \x3Cdiv class="hawk-deal-widget-preferred-partner-wrapper">                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-deal-button" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan>${deal.isCheckPrice ? 'Check Price' : 'View Deal'}${_span}                          ${_a}                        ${_div}                      ${_div}                    ${_div}                  ${_div}                ${_div}              ${_div}              `;            }            htmlOutput += `              \x3Cdiv class="tg-df-card ${isSavingsSquadMode ? 'tg-df-desktop-only' : ''}">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''}>` : ''}                \x3Cdiv class="tg-df-card-image-box">                  ${discountBadgeHtml}                  \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">                    \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="tg-df-card-image" loading="lazy" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                  ${_a}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cp style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 12px; line-height: 1.4;">${this.escapeHTML(deal.description)}${_p}` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${priceGroupHtml}                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta ${isSavingsSquadMode ? 'tg-df-cta-savings-squad' : ''}" style="text-decoration: none;">${ctaText}${_a}                  ${_div}                ${_div}              ${_div}            `;                        return htmlOutput;            } catch (e) {               console.log("Error rendering deal in map for index", index, typeof deal === 'object' ? JSON.stringify(deal) : deal, "MSG:", e.message);               return '';            }          }).join('');                    if (displayDeals.length > this.displayLimit || ((this.getViewMode() === 'carousel' || this.getViewMode() === 'auto') && displayDeals.length > 0 && displayDeals.length % ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12) === 0)) {            if (this.getViewMode() === 'carousel') {               dealsHtml += `                 \x3Cbutton type="button" class="tg-df-load-more-card tg-df-load-more">                   \x3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-bottom: 8px;">\x3Cpath d="M5 12h14">\x3C/path>\x3Cpath d="m12 5 7 7-7 7">\x3C/path>\x3C/svg>                   Load More                 ${_button}               `;            } else {               dealsHtml += `                 \x3Cdiv style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1;">                   \x3Cbutton type="button" class="tg-df-tag-outline tg-df-load-more" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer; display: flex; align-items: center;">Load More${_button}                 ${_div}               `;            }          }                    this.grid.innerHTML = dealsHtml;          // Inject JSON-LD          try {            let targetNode = this.hostContainer || document.head;            let jsonLdScript = targetNode.querySelector('#tg-df-json-ld-' + this.widgetId);            if (!jsonLdScript) {                jsonLdScript = document.createElement('script');                jsonLdScript.type = 'application/ld+json';                jsonLdScript.id = 'tg-df-json-ld-' + this.widgetId;                targetNode.appendChild(jsonLdScript);            }            const jsonLdData = {              "@context": "https://schema.org",              "@type": "ItemList",              "itemListElement": displayDeals.slice(0, this.displayLimit).map((deal, index) => {                 let isoCurrency = "USD";                 if (deal.currency === '£') isoCurrency = "GBP";                 else if (deal.currency === '€') isoCurrency = "EUR";                 else if (deal.currency === 'A$') isoCurrency = "AUD";                 else if (deal.currency === 'CA$') isoCurrency = "CAD";                 const areaCode = typeof this.getAreaCode === 'function' ? this.getAreaCode() : 'US';                 const revenueId = typeof generateRevenueId === 'function' ? generateRevenueId(deal.url, deal.title, deal.merchant, null) : '';                 const rewrittenLink = typeof rewriteAffiliateLink === 'function' ? rewriteAffiliateLink(deal.url, areaCode, revenueId) : deal.url;                 return {                   "@type": "ListItem",                   "position": index + 1,                   "item": {                     "@type": "Product",                     "name": deal.title,                     "image": deal.image || "",                     "description": deal.description || "",                     "brand": {                       "@type": "Brand",                       "name": deal.brand || ""                     },                     "offers": {                       "@type": "Offer",                       "priceCurrency": isoCurrency,                       "price": deal.rawPrice || 0,                       "url": rewrittenLink,                       "seller": {                         "@type": "Organization",                         "name": deal.merchant || ""                       }                     }                   }                 };              }).filter(item => item.item.name)            };            jsonLdScript.textContent = JSON.stringify(jsonLdData);          } catch(e) { console.warn("JSON-LD generation failed", e); }                    let gridWrapper = this.grid.parentElement;          if (gridWrapper && gridWrapper.classList.contains('tg-df-grid-wrapper')) {             let rightChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-right');             let leftChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-left');             if (this.getViewMode() === 'carousel') {                 // The observer set up in setupScrollListeners handles visibility.                 if (rightChevron) rightChevron.style.display = 'flex';                 if (leftChevron) leftChevron.style.display = 'none'; // reset correctly             } else {                 if (rightChevron) rightChevron.style.display = 'none';                 if (leftChevron) leftChevron.style.display = 'none';             }          }                    const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', async () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              if (displayDeals.length <= this.displayLimit) {                 loadMoreBtn.innerHTML = `                  <svg class="tg-df-spinner" style="width: 16px; height: 16px; display: inline-block; vertical-align: middle; margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M12 2v4m0 12v4M4.93 4.93l2.83 2.83m8.48 8.48l2.83 2.83M2 12h4m12 0h4M4.93 19.07l2.83-2.83m8.48-8.48l2.83-2.83"/></svg>                  Loading...                 `;                 loadMoreBtn.disabled = true;                 await this.fetchDeals(this.currentQuery, true);              } else {                 this.displayLimit += this.getRowsLimit();                 this.render();              }            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();                        // Allow hawklinks.js to discover and rewrite our widget links             // by appending the .article-body class and manually triggering processArticle.            let container = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (container && !container.classList.contains('article-body')) {               container.classList.add('article-body');            }            setTimeout(() => {               if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');               document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));            }, 50);          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ NordVPN's Next-Gen Antivirus scores 94% in independent phishing and malware testing ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a>'s <a href="https://www.tomsguide.com/computing/vpns/nordvpn-combines-vpn-and-next-generation-antivirus-into-one-app">next-gen antivirus</a> has achieved a 94% phishing detection rate in AV-Comparatives' latest anti-phishing test, ranking third among security products in the independent evaluation. The result our choice as the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPN</a> behind only Avast One Free Antivirus and Norton Antivirus Plus, both of which scored 96%.</p><p>The <a href="https://www.av-comparatives.org/wp-content/uploads/2026/08/phishing_comp_Q3-2026.pdf" target="_blank" rel="nofollow">test</a>, which ran from August 12–22, 2026, assessed phishing-page detection rates across 250 live phishing URLs, with an additional 250 legitimate URLs used to check for false positives. NordVPN recorded zero false alarms – a result that puts it ahead of Malwarebytes Premium and Webroot SecureAnywhere Internet Security Plus, both of which triggered false positives during the evaluation.</p><p>The findings come as NordVPN continues to reposition itself as an all-in-one digital security app. The company's <a href="https://www.tomsguide.com/computing/vpns/nordvpn-combines-vpn-and-next-generation-antivirus-into-one-app">recent rebrand</a> saw Threat Protection Pro renamed as "next-generation antivirus," placing it alongside its VPN and Dark Web Monitor as one of three core pillars of the product.</p><h2 id="how-does-nordvpn-compare">How does NordVPN compare?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UtDZFoTmPNBWUcdJsQqvG" name="NordVPN 2026 phishing test results" alt="Graph displaying the test's results" src="https://cdn.mos.cms.futurecdn.net/UtDZFoTmPNBWUcdJsQqvG.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Finishing third among nine security products is a strong result, but the detail behind NordVPN's score is arguably just as telling as the number itself. Avast One Free Antivirus and Norton Antivirus Plus both edged it out with 96% detection rates, but the gap is narrow – a two-percentage-point difference across 250 live phishing URLs amounts to five URLs.</p><p>The rest of the field tells its own story. At the other end of the table, Dr. Web Security Space managed just 57% and K7 Total Security 70% – results that illustrate how inconsistent phishing protection remains across the security products market, even among established names. </p><p>NordVPN's advantage over the field is clearest on false positives. It was one of seven security products to record zero false alarms – and false positives erode confidence in a security tool just as surely as missed threats do.</p><p>"Phishing is a numbers game for attackers, and they're very good at it," said Domininkas Virbickas, product director at NordVPN. "Anybody might slip up eventually, and when you do click on something you shouldn't, that's where we step in."</p><h2 id="a-strong-track-record-in-independent-testing">A strong track record in independent testing</h2><p>This is not the first time NordVPN's threat protection feature has performed well under independent scrutiny. In November 2024, AV-TEST – a German independent IT security research institute – <a href="https://www.tomsguide.com/computing/online-security/nords-threat-protection-pro-rated-the-best-vpn-malware-protection">previously rated</a> Threat Protection Pro the best VPN tool for malware protection, achieving an 83.42% total detection rate across 3,209 tested links. That result placed it well ahead of the next-best VPN tested, IPVanish, which scored 46.96%.</p><p>NordVPN also has history with AV-Comparatives specifically. In June 2024, it became the first VPN provider to earn the organisation's <a href="https://www.tomsguide.com/computing/vpns/nordvpn-certified-as-the-only-anti-phishing-vpn-for-the-second-year-running">anti-phishing protection badge</a> – a significant distinction given that AV-Comparatives is best known for evaluating dedicated antivirus software, not VPNs. Earning the badge requires a minimum 85% detection rate with zero false alarms on legitimate sites, a bar not all established antivirus products have cleared. The August 2026 result, at 94%, clears it by some distance.</p><p>NordVPN's next-gen antivirus is available on Plus plans and above – the feature was previously known as Threat Protection Pro, and is included across Plus, Complete, and Prime tiers. </p><div data-widget-type="merchantlink" data-model-name="NordVPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/nordvpns-next-gen-antivirus-scores-94-percent-in-independent-phishing-and-malware-testing</link>
                                                                            <description>
                            <![CDATA[ NordVPN's next-gen antivirus scored 94% in AV-Comparatives' August 2026 anti-phishing test, finishing third among security products behind Avast and Norton, with no false positives. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rxV2uExpVnrLzHBWK6JMDe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BK6jKgGh8BGjbBSEnE5VDL-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 04 Sep 2026 10:56:09 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/BK6jKgGh8BGjbBSEnE5VDL-1280-80.png">
                                                            <media:credit><![CDATA[NordVPN]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[NordVPN in action protecting a phone and laptop simultaneously]]></media:description>                                                            <media:text><![CDATA[NordVPN in action protecting a phone and laptop simultaneously]]></media:text>
                                <media:title type="plain"><![CDATA[NordVPN in action protecting a phone and laptop simultaneously]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BK6jKgGh8BGjbBSEnE5VDL-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a>'s <a href="https://www.tomsguide.com/computing/vpns/nordvpn-combines-vpn-and-next-generation-antivirus-into-one-app">next-gen antivirus</a> has achieved a 94% phishing detection rate in AV-Comparatives' latest anti-phishing test, ranking third among security products in the independent evaluation. The result our choice as the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPN</a> behind only Avast One Free Antivirus and Norton Antivirus Plus, both of which scored 96%.</p><p>The <a href="https://www.av-comparatives.org/wp-content/uploads/2026/08/phishing_comp_Q3-2026.pdf" target="_blank" rel="nofollow">test</a>, which ran from August 12–22, 2026, assessed phishing-page detection rates across 250 live phishing URLs, with an additional 250 legitimate URLs used to check for false positives. NordVPN recorded zero false alarms – a result that puts it ahead of Malwarebytes Premium and Webroot SecureAnywhere Internet Security Plus, both of which triggered false positives during the evaluation.</p><p>The findings come as NordVPN continues to reposition itself as an all-in-one digital security app. The company's <a href="https://www.tomsguide.com/computing/vpns/nordvpn-combines-vpn-and-next-generation-antivirus-into-one-app">recent rebrand</a> saw Threat Protection Pro renamed as "next-generation antivirus," placing it alongside its VPN and Dark Web Monitor as one of three core pillars of the product.</p><h2 id="how-does-nordvpn-compare">How does NordVPN compare?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UtDZFoTmPNBWUcdJsQqvG" name="NordVPN 2026 phishing test results" alt="Graph displaying the test's results" src="https://cdn.mos.cms.futurecdn.net/UtDZFoTmPNBWUcdJsQqvG.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Finishing third among nine security products is a strong result, but the detail behind NordVPN's score is arguably just as telling as the number itself. Avast One Free Antivirus and Norton Antivirus Plus both edged it out with 96% detection rates, but the gap is narrow – a two-percentage-point difference across 250 live phishing URLs amounts to five URLs.</p><p>The rest of the field tells its own story. At the other end of the table, Dr. Web Security Space managed just 57% and K7 Total Security 70% – results that illustrate how inconsistent phishing protection remains across the security products market, even among established names. </p><p>NordVPN's advantage over the field is clearest on false positives. It was one of seven security products to record zero false alarms – and false positives erode confidence in a security tool just as surely as missed threats do.</p><p>"Phishing is a numbers game for attackers, and they're very good at it," said Domininkas Virbickas, product director at NordVPN. "Anybody might slip up eventually, and when you do click on something you shouldn't, that's where we step in."</p><h2 id="a-strong-track-record-in-independent-testing">A strong track record in independent testing</h2><p>This is not the first time NordVPN's threat protection feature has performed well under independent scrutiny. In November 2024, AV-TEST – a German independent IT security research institute – <a href="https://www.tomsguide.com/computing/online-security/nords-threat-protection-pro-rated-the-best-vpn-malware-protection">previously rated</a> Threat Protection Pro the best VPN tool for malware protection, achieving an 83.42% total detection rate across 3,209 tested links. That result placed it well ahead of the next-best VPN tested, IPVanish, which scored 46.96%.</p><p>NordVPN also has history with AV-Comparatives specifically. In June 2024, it became the first VPN provider to earn the organisation's <a href="https://www.tomsguide.com/computing/vpns/nordvpn-certified-as-the-only-anti-phishing-vpn-for-the-second-year-running">anti-phishing protection badge</a> – a significant distinction given that AV-Comparatives is best known for evaluating dedicated antivirus software, not VPNs. Earning the badge requires a minimum 85% detection rate with zero false alarms on legitimate sites, a bar not all established antivirus products have cleared. The August 2026 result, at 94%, clears it by some distance.</p><p>NordVPN's next-gen antivirus is available on Plus plans and above – the feature was previously known as Threat Protection Pro, and is included across Plus, Complete, and Prime tiers. </p><div data-widget-type="merchantlink" data-model-name="NordVPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'We're not changing it': MapQuest hits No. 1 in App Store after refusing to rename Lake Ontario to Lake America ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It’s not often that a third-party mapping app pops up in the charts above such stalwarts as Apple Maps and Google Maps, but MapQuest has done just that. </p><p>Yes, the app that you used to print out directions from is currently <a href="https://apps.apple.com/us/app/mapquest-gps-navigation-maps/id316126557" target="_blank">the number 1 free app in the Apple Store</a> as of Tuesday, above ChatGPT, Vinted, and ESPN Fantasy Sports. In the Google Play Store, it’s currently <a href="https://play.google.com/store/apps?hl=en_US" target="_blank">ranked 9 overall</a>.</p><p>But why this sudden rise? It all has to do with Trump’s trade war with Canada.</p><p>Last week, as tensions escalated between the U.S. President and Canada over tariffs, Trump announced via Truth Social that he was re-naming Lake Ontario to “Lake America,” and followed that up with an executive order over the weekend.</p><p>After the announcement, Google changed its maps on Saturday, so that U.S. users would see “Lake America,” rather than the internationally accepted Lake Ontario. Canadian Google Maps users will continue to see only Lake Ontario, which those outside those countries will see both names. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1360px;"><p class="vanilla-image-block" style="padding-top:58.24%;"><img id="bBuXDsBJwhhPx4ioaKGmzR" name="Mapquest Lake Ontario" alt="Mapquest lake ontario" src="https://cdn.mos.cms.futurecdn.net/bBuXDsBJwhhPx4ioaKGmzR.png" mos="" align="middle" fullscreen="" width="1360" height="792" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Lake Ontario, as shown in Google Maps in the U.S. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Mapquest)</span></figcaption></figure><p><a href="https://blog.google/products-and-platforms/products/maps/gnis-lake-ontario-lake-america-name-change/" target="_blank">Google says it updated the name</a> to reflect the changes in the Geographic Names Information System (GNIS), which follows the precedent set when Trump renamed the Gulf of Mexico to “<a href="https://www.tomsguide.com/computing/mobile-apps/apple-maps-follows-google-maps-in-renaming-the-gulf-of-mexico-to-gulf-of-america">Gulf of America</a>.” Waze, which is owned by Google, also changed the names of both bodies of water.</p><p>As a result, many Google Maps users, both in the U.S. and internationally, who are opposed to Trump’s policies, looked for an alternative, which has led to MapQuest’s meteoric rise, thanks in part to its statement that it would not change the name of the great lake, via a post on X. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2093038963196117303"><p lang="en" dir="ltr">We’re not changing it. pic.twitter.com/NdeE9v2BNO<a href="https://twitter.com/cantworkitout/status/2093038963196117303">August 27, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>As of Monday afternoon, Apple Maps still shows Lake Ontario with its original name, but displays the Gulf of Mexico as the “Gulf of America.” </p><p>"We took the same approach we did with the Gulf of Mexico: be part of the conversation, and give people an app that keeps the names they're familiar with," said Doug Berger, General Manager of MapQuest in a press statement. "Hundreds of thousands of people signaled to us this weekend that we got it right, by downloading our app."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eBE9AX"></div>                            </div>                            <script src="https://kwizly.com/embed/eBE9AX.js" async></script><p>According to the company, the app’s rank is the highest it’s been in the company’s 30-year history.</p><p>The company even went so far as to launch a little game where you can <a href="https://gulfof.mapquest.com/lakeontario">rename Lake Ontario</a>, and then share the new moniker via social media. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/phones/i-tested-waze-vs-google-maps-for-navigation-during-a-weekend-trip-and-theres-a-clear-winner"><strong>I tested Waze vs. Google Maps for a weekend trip</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/mobile-apps/i-just-realized-how-bad-google-maps-is-on-carplay-why-does-it-look-so-terrible"><strong>I just realized how bad Google Maps is on CarPlay </strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/phones/i-drove-over-1-000-miles-to-test-out-apple-maps-vs-google-maps-for-a-month-heres-the-winner"><strong>I drove over 1000 miles to test out Apple Maps vs. Google Maps</strong></a><strong></strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/mobile-apps/mapquest-is-suddenly-no-4-in-the-apple-app-store-heres-why</link>
                                                                            <description>
                            <![CDATA[ MapQuest is now ranked the highest it's ever been in the App Store — here's why. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vNCWmJdyJdukEhrHGw9S58</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ZRvSEN3uJBLMb8K9TrPhjC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 01 Sep 2026 09:30:00 +0000</pubDate>                                                                                                                                <updated>Mon, 07 Sep 2026 09:28:55 +0000</updated>
                                                                                                                                            <category><![CDATA[Mobile Apps]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xeJFBrJwXQzCqXLZXBFBKQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide.  In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ZRvSEN3uJBLMb8K9TrPhjC-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[MapQuest logo on phone]]></media:description>                                                            <media:text><![CDATA[MapQuest logo on phone]]></media:text>
                                <media:title type="plain"><![CDATA[MapQuest logo on phone]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ZRvSEN3uJBLMb8K9TrPhjC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It’s not often that a third-party mapping app pops up in the charts above such stalwarts as Apple Maps and Google Maps, but MapQuest has done just that. </p><p>Yes, the app that you used to print out directions from is currently <a href="https://apps.apple.com/us/app/mapquest-gps-navigation-maps/id316126557" target="_blank">the number 1 free app in the Apple Store</a> as of Tuesday, above ChatGPT, Vinted, and ESPN Fantasy Sports. In the Google Play Store, it’s currently <a href="https://play.google.com/store/apps?hl=en_US" target="_blank">ranked 9 overall</a>.</p><p>But why this sudden rise? It all has to do with Trump’s trade war with Canada.</p><p>Last week, as tensions escalated between the U.S. President and Canada over tariffs, Trump announced via Truth Social that he was re-naming Lake Ontario to “Lake America,” and followed that up with an executive order over the weekend.</p><p>After the announcement, Google changed its maps on Saturday, so that U.S. users would see “Lake America,” rather than the internationally accepted Lake Ontario. Canadian Google Maps users will continue to see only Lake Ontario, which those outside those countries will see both names. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1360px;"><p class="vanilla-image-block" style="padding-top:58.24%;"><img id="bBuXDsBJwhhPx4ioaKGmzR" name="Mapquest Lake Ontario" alt="Mapquest lake ontario" src="https://cdn.mos.cms.futurecdn.net/bBuXDsBJwhhPx4ioaKGmzR.png" mos="" align="middle" fullscreen="" width="1360" height="792" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Lake Ontario, as shown in Google Maps in the U.S. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Mapquest)</span></figcaption></figure><p><a href="https://blog.google/products-and-platforms/products/maps/gnis-lake-ontario-lake-america-name-change/" target="_blank">Google says it updated the name</a> to reflect the changes in the Geographic Names Information System (GNIS), which follows the precedent set when Trump renamed the Gulf of Mexico to “<a href="https://www.tomsguide.com/computing/mobile-apps/apple-maps-follows-google-maps-in-renaming-the-gulf-of-mexico-to-gulf-of-america">Gulf of America</a>.” Waze, which is owned by Google, also changed the names of both bodies of water.</p><p>As a result, many Google Maps users, both in the U.S. and internationally, who are opposed to Trump’s policies, looked for an alternative, which has led to MapQuest’s meteoric rise, thanks in part to its statement that it would not change the name of the great lake, via a post on X. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2093038963196117303"><p lang="en" dir="ltr">We’re not changing it. pic.twitter.com/NdeE9v2BNO<a href="https://twitter.com/cantworkitout/status/2093038963196117303">August 27, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>As of Monday afternoon, Apple Maps still shows Lake Ontario with its original name, but displays the Gulf of Mexico as the “Gulf of America.” </p><p>"We took the same approach we did with the Gulf of Mexico: be part of the conversation, and give people an app that keeps the names they're familiar with," said Doug Berger, General Manager of MapQuest in a press statement. "Hundreds of thousands of people signaled to us this weekend that we got it right, by downloading our app."</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eBE9AX"></div>                            </div>                            <script src="https://kwizly.com/embed/eBE9AX.js" async></script><p>According to the company, the app’s rank is the highest it’s been in the company’s 30-year history.</p><p>The company even went so far as to launch a little game where you can <a href="https://gulfof.mapquest.com/lakeontario">rename Lake Ontario</a>, and then share the new moniker via social media. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/phones/i-tested-waze-vs-google-maps-for-navigation-during-a-weekend-trip-and-theres-a-clear-winner"><strong>I tested Waze vs. Google Maps for a weekend trip</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/mobile-apps/i-just-realized-how-bad-google-maps-is-on-carplay-why-does-it-look-so-terrible"><strong>I just realized how bad Google Maps is on CarPlay </strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/phones/i-drove-over-1-000-miles-to-test-out-apple-maps-vs-google-maps-for-a-month-heres-the-winner"><strong>I drove over 1000 miles to test out Apple Maps vs. Google Maps</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Stuck in a dead zone? 3 free Google Maps alternatives that work with zero signal ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Google Maps’ offline feature sounds like the ultimate safety net for cellular dead zones. The logic is simple: download the map before you leave, and you are protected. In reality, that "offline" label comes with some frustrating fine print.</p><p>First, turn-by-turn navigation is strictly built for driving. The moment you leave your vehicle, offline routing for walking, cycling, and public transit completely vanishes. While you can still see your blue dot on a basic visual map, the app goes silent right when you need step-by-step guidance in an unfamiliar place.</p><p>Maintenance is another headache. Downloaded regions consume massive amounts of local storage, and they are on a strict 30-day countdown timer — if you don't connect to Wi-Fi to let the app auto-refresh them, they lapse. </p><p>Google Maps remains the gold standard when you have a connection, but it struggles the moment cell service drops. For reliable navigation anywhere, you need an app designed to work seamless offline from day one.</p><h2 id="1-organic-maps">1. Organic Maps</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="fyA5pUhXzs5gDYVCaX8ada" name="Organic Maps" alt="Organic Maps" src="https://cdn.mos.cms.futurecdn.net/fyA5pUhXzs5gDYVCaX8ada.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Organic Maps)</span></figcaption></figure><p>Organic Maps (<a href="https://apps.apple.com/us/developer/organic-maps/id1567437059" target="_blank">App Store</a> / <a href="https://play.google.com/store/apps/details?id=app.organicmaps&hl=en_GB" target="_blank">Play Store</a>) treats offline navigation as a core requirement, not an afterthought. Built by the original team behind <a href="https://maps.me/" target="_blank">MAPS.ME</a>, it allows you to download complete state or national maps using minimal phone storage. </p><p>Once saved, you gain full offline access to turn-by-turn driving, walking, and cycling navigation, alongside instant search for addresses, fuel, and public restrooms. Because the platform operates with zero ads, tracking, or background data collection, it remains exceptionally fast while preserving your device's battery life.</p><h2 id="2-comaps">2. CoMaps</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Kg2WqwHyxSeWeja9rk5gY8" name="CoMaps" alt="CoMaps" src="https://cdn.mos.cms.futurecdn.net/Kg2WqwHyxSeWeja9rk5gY8.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: CoMaps)</span></figcaption></figure><p>CoMaps (<a href="https://apps.apple.com/gb/app/comaps/id6747180809" target="_blank">App Store</a> / <a href="https://play.google.com/store/apps/details?id=app.comaps.google&hl=en_GB" target="_blank">Play Store</a>) was created as a community-led fork of Organic Maps, built to ensure offline navigation remains completely free, open-source, and transparent. </p><p>The app stores detailed road layouts, trail networks, and transit lines directly on your device, delivering full turn-by-turn guidance entirely independent of a cellular signal. </p><p>By eliminating third-party integrations, CoMaps guarantees absolute privacy with zero tracking or location logging. For users prioritizing non-profit software, it offers an uncompromising, highly reliable alternative. </p><h2 id="3-here-wego">3. HERE WeGo</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aWMD2McpNg8grkXQEafJLG" name="HERE WeGo" alt="HERE WeGo" src="https://cdn.mos.cms.futurecdn.net/aWMD2McpNg8grkXQEafJLG.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: HERE WeGo)</span></figcaption></figure><p>HERE WeGo (<a href="https://apps.apple.com/us/app/here-wego-maps-navigation/id955837609#productRatings" target="_blank">App Store </a>/ <a href="https://play.google.com/store/apps/details?id=com.here.app.maps&hl=en_GB" target="_blank">Play Store</a>) operates as a dedicated in-car navigator, designed specifically for road trips through dead zones and driving abroad without international data. </p><p>Evolving from Nokia’s original mapping platform, it lets you download complete state or national maps with a single tap. Once saved, the app provides precise turn-by-turn voice guidance, explicit lane assistance, and speed limit alerts without consuming a single byte of cellular data. </p><p>Delivering the familiar experience of a traditional built-in dashboard GPS, HERE WeGo ensures stress-free highway navigation with zero risk of unexpected roaming charges.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORMj1W"></div>                            </div>                            <script src="https://kwizly.com/embed/ORMj1W.js" async></script><p>Did your go-to app miss this list? Tell us which Google Maps alternative you swear by in the comments below. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/phones/google-maps-is-using-more-storage-than-you-realize-heres-how-to-free-up-space">Google Maps is eating up your phone’s storage — here’s how to reclaim it</a></li><li><a href="https://www.tomsguide.com/computing/why-google-maps-keeps-sending-you-the-long-way-and-how-to-stop-it">Google Maps actually defaults to the slowest route now — here's how to fix it</a></li><li><a href="https://www.tomsguide.com/phones/my-favorite-google-maps-feature-is-the-one-that-lets-me-visit-a-world-that-doesnt-exist-anymore">I tried Google Maps hidden time machine feature — here's how to do it yourself</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/phones/stuck-in-a-dead-zone-3-free-google-maps-alternatives-that-work-with-zero-signal</link>
                                                                            <description>
                            <![CDATA[ Google Maps drops directions when your signal dies. These 3 free, privacy-focused offline apps keep you moving with zero mobile data. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jiQrviU4J5CqbQeEMTQBQm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ans9YsiLDKLzznpGZwUo5i-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 22 Aug 2026 13:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mobile Apps]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xHn6RmpEqg87cvtLwrBu9G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ans9YsiLDKLzznpGZwUo5i-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide/ Google]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Google Maps logo on an iPhone 17 Pro]]></media:description>                                                            <media:text><![CDATA[Google Maps logo on an iPhone 17 Pro]]></media:text>
                                <media:title type="plain"><![CDATA[Google Maps logo on an iPhone 17 Pro]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ans9YsiLDKLzznpGZwUo5i-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Google Maps’ offline feature sounds like the ultimate safety net for cellular dead zones. The logic is simple: download the map before you leave, and you are protected. In reality, that "offline" label comes with some frustrating fine print.</p><p>First, turn-by-turn navigation is strictly built for driving. The moment you leave your vehicle, offline routing for walking, cycling, and public transit completely vanishes. While you can still see your blue dot on a basic visual map, the app goes silent right when you need step-by-step guidance in an unfamiliar place.</p><p>Maintenance is another headache. Downloaded regions consume massive amounts of local storage, and they are on a strict 30-day countdown timer — if you don't connect to Wi-Fi to let the app auto-refresh them, they lapse. </p><p>Google Maps remains the gold standard when you have a connection, but it struggles the moment cell service drops. For reliable navigation anywhere, you need an app designed to work seamless offline from day one.</p><h2 id="1-organic-maps">1. Organic Maps</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="fyA5pUhXzs5gDYVCaX8ada" name="Organic Maps" alt="Organic Maps" src="https://cdn.mos.cms.futurecdn.net/fyA5pUhXzs5gDYVCaX8ada.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Organic Maps)</span></figcaption></figure><p>Organic Maps (<a href="https://apps.apple.com/us/developer/organic-maps/id1567437059" target="_blank">App Store</a> / <a href="https://play.google.com/store/apps/details?id=app.organicmaps&hl=en_GB" target="_blank">Play Store</a>) treats offline navigation as a core requirement, not an afterthought. Built by the original team behind <a href="https://maps.me/" target="_blank">MAPS.ME</a>, it allows you to download complete state or national maps using minimal phone storage. </p><p>Once saved, you gain full offline access to turn-by-turn driving, walking, and cycling navigation, alongside instant search for addresses, fuel, and public restrooms. Because the platform operates with zero ads, tracking, or background data collection, it remains exceptionally fast while preserving your device's battery life.</p><h2 id="2-comaps">2. CoMaps</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Kg2WqwHyxSeWeja9rk5gY8" name="CoMaps" alt="CoMaps" src="https://cdn.mos.cms.futurecdn.net/Kg2WqwHyxSeWeja9rk5gY8.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: CoMaps)</span></figcaption></figure><p>CoMaps (<a href="https://apps.apple.com/gb/app/comaps/id6747180809" target="_blank">App Store</a> / <a href="https://play.google.com/store/apps/details?id=app.comaps.google&hl=en_GB" target="_blank">Play Store</a>) was created as a community-led fork of Organic Maps, built to ensure offline navigation remains completely free, open-source, and transparent. </p><p>The app stores detailed road layouts, trail networks, and transit lines directly on your device, delivering full turn-by-turn guidance entirely independent of a cellular signal. </p><p>By eliminating third-party integrations, CoMaps guarantees absolute privacy with zero tracking or location logging. For users prioritizing non-profit software, it offers an uncompromising, highly reliable alternative. </p><h2 id="3-here-wego">3. HERE WeGo</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aWMD2McpNg8grkXQEafJLG" name="HERE WeGo" alt="HERE WeGo" src="https://cdn.mos.cms.futurecdn.net/aWMD2McpNg8grkXQEafJLG.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: HERE WeGo)</span></figcaption></figure><p>HERE WeGo (<a href="https://apps.apple.com/us/app/here-wego-maps-navigation/id955837609#productRatings" target="_blank">App Store </a>/ <a href="https://play.google.com/store/apps/details?id=com.here.app.maps&hl=en_GB" target="_blank">Play Store</a>) operates as a dedicated in-car navigator, designed specifically for road trips through dead zones and driving abroad without international data. </p><p>Evolving from Nokia’s original mapping platform, it lets you download complete state or national maps with a single tap. Once saved, the app provides precise turn-by-turn voice guidance, explicit lane assistance, and speed limit alerts without consuming a single byte of cellular data. </p><p>Delivering the familiar experience of a traditional built-in dashboard GPS, HERE WeGo ensures stress-free highway navigation with zero risk of unexpected roaming charges.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORMj1W"></div>                            </div>                            <script src="https://kwizly.com/embed/ORMj1W.js" async></script><p>Did your go-to app miss this list? Tell us which Google Maps alternative you swear by in the comments below. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/phones/google-maps-is-using-more-storage-than-you-realize-heres-how-to-free-up-space">Google Maps is eating up your phone’s storage — here’s how to reclaim it</a></li><li><a href="https://www.tomsguide.com/computing/why-google-maps-keeps-sending-you-the-long-way-and-how-to-stop-it">Google Maps actually defaults to the slowest route now — here's how to fix it</a></li><li><a href="https://www.tomsguide.com/phones/my-favorite-google-maps-feature-is-the-one-that-lets-me-visit-a-world-that-doesnt-exist-anymore">I tried Google Maps hidden time machine feature — here's how to do it yourself</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ New Windows zero-day flaw could give hackers deep access to your PC — how to stay safe ]]></title>
                                                                                                <dc:content><![CDATA[ <p>This week two different <a href="https://www.tomsguide.com/computing/online-security/over-1-billion-windows-users-at-risk-after-disgruntled-security-researcher-leaks-defender-zero-days">Windows vulnerabilities</a> were revealed that attack your PC from different angles. However, there is one unfortunate thread that connects them; both are capable of allowing a malicious actor to gain system privileges on your Windows device, and neither has been patched yet.</p><p>The flaws are a <a href="https://www.tomsguide.com/computing/online-security/do-you-use-microsoft-exchange-hackers-are-actively-exploiting-a-new-zero-day-flaw">zero-day vulnerability</a> that can circumnavigate a previous RoguePlanet and a new "Plug and Pwn" attack that emulates USB devices.</p><p>Read on to find out what each attack can do and how to potentially stay safe until they get patched. </p><h2 id="shieldbreak-zero-day">Shieldbreak Zero-Day</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JU27PbrhCr9X35AbQFzAdR" name="virtual vpn" alt="Hands typing on a laptop with a digital shield and lock icon, symbolizing cybersecurity. Surrounded by binary code and glowing elements." src="https://cdn.mos.cms.futurecdn.net/JU27PbrhCr9X35AbQFzAdR.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TU IS (via Getty Images))</span></figcaption></figure><p>The zero-day vulnerability was found by Nightmare Eclipse, a bug hunter who reportedly has major beef with Microsoft and no qualms sharing the latest vulnerabilities they've discovered before a patch has released.</p><p>The latest, dubbed <a href="https://github.com/MSNightmare/ShieldBreak" target="_blank">ShieldBreak</a>, can apparently get around the RoguePlanet patch and allows attackers to gain system privileges on patched Windows 10, Windows 11 and Windows Server system.</p><p>Per <a href="https://www.theregister.com/cyber-crime/2026/08/12/microsoft-vendetta-hacker-has-a-new-zero-day-that-gives-system-privileges-on-fully-patched-windows/5286889" target="_blank">The Register</a>, the exploit has been tested by other security researchers and confirmed.</p><p>ShieldBreak apparently uses a "user-mode callback hook" to change file contents during a Defender cloud-hydration scan via cfapi (Cloud Filter API)," according to security researcher <a href="https://cyberplace.social/@GossiTheDog/117082629057300721" target="_blank">Kevin Beaumont</a>.</p><p>Basically, it uses <a href="https://www.tomsguide.com/computing/antivirus/microsoft-defender-review">Microsoft Defender</a>, if enabled, when it runs a scan. Then the flaw can be exploited to gain System privileges. Another researcher, <a href="https://infosec.exchange/@wdormann/117079587486018149" target="_blank">Will Dormann</a>, says that Defender has to be active for the exploit to work.</p><h2 id="how-to-stay-safe-from-shieldbreak">How to stay safe from Shieldbreak</h2><p>Until Microsoft patches this vulnerability, one way to stay safe is to disable Microsoft Defender. </p><p>If you think your system might be vulnerable, Kevin Beaumont did <a href="https://cyberplace.social/@GossiTheDog/117082629057300721" target="_blank">publish three detections </a>that are supposed to be able to catch Shieldbreak in action. If you have the knowledge, you could try running them.</p><h2 id="plug-and-pwn">Plug and Pwn</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jDguSN4dyAxkcNZQD5iamP" name="USB-A.jpg" alt="USB-A" src="https://cdn.mos.cms.futurecdn.net/jDguSN4dyAxkcNZQD5iamP.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>The other flaw is a new "plug and pwn" disclosed by security researchers <a href="https://x.com/0xedh" target="_blank">Alejandro Hernando</a> and <a href="https://x.com/Qm9yamFN" target="_blank">Borja Martinez </a>(via <a href="https://www.bleepingcomputer.com/news/security/plug-and-pwn-attack-uses-fake-usb-devices-for-windows-system-access/" target="_blank">Bleeping Computer</a>) during the recent DEF CON 34 hacking conference. This vulnerability exploits how Windows identifies and automatically connects USB hardware, finds matching driver packages and then installs software as the Authority/System account.</p><p>Simply, the flaw emulates USB devices and can be used to force Windows to install vendor packages with exploitable components that can be used to gain system privileges on a Windows device.</p><p>Apparently, in some attacks, they didn't even require user interaction or physical USB hardware to gain access. This is enabled because Windows uses something called a co-installer, which automatically downloads and installs software and drivers when a new USB device is inserted in the computer.</p><p>This specific version is different from previous ones because it follows the Windows installation path and not something from a specific vendor. Notably, the remote attacks only seem to work on systems where USB redirection is enabled, which Alejandro Hernando said is common with virtual desktop environments.</p><p>Bleeping Computer gets far more granular if you're interested in how Hernando and Martinez discovered the flaw and the tools they used to instigate it.</p><h2 id="how-to-stay-safe-from-this-usb-attack">How to stay safe from this USB attack</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CSFXsX24TGg5qRaKfGEjC6" name="USB-A vs USB-C.jpg" alt="USB-A vs USB-C" src="https://cdn.mos.cms.futurecdn.net/CSFXsX24TGg5qRaKfGEjC6.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>If you are concerned about this kind of attack and willing, you could enable a 'DisableCoInstallers' registry value. This prevents driver packages from utilizing co-installers during device installtion. </p><p>You can do this by searching for it in the Start menu or using the keyboard short cut of the Windows key +R. Then navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Device Installer Registry key. Then add DWORD-32 value named DisableCoInstallers and set it to 1.</p><p>It doesn't totally eliminate plug and pwn attacks, but it could break some of them.</p><p>"In anything sensitive I'd pair it with device installation restrictions or hardware-ID allow-lists, and turn off PnP device redirection on RDP and VDI hosts that don't need it (`fDisablePNPRedir`)," Hernando told BleepingComputer.</p><p>It's a good reminder either way to make sure you're only plugging in trusted devices to your system or downloading software from official sources when you can to ensure the safety of what you're putting into your computer.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/windows-operating-systems/windows-11-is-broken-and-microsoft-is-fixing-the-wrong-things#viafoura-comments"><strong>Windows 11 is broken — and Microsoft is fixing the wrong things</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/browsers/microsoft-is-still-using-deceptive-tactics-and-design-to-force-you-to-use-edge"><strong>Microsoft is still using ‘deceptive tactics and design’ to force you to use Edge</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-extends-windows-10-support-for-another-year-what-you-need-to-know"><strong>Microsoft extends Windows 10 support for another year: what you need to know</strong></a><strong></strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/new-windows-zero-day-flaw-could-give-hackers-deep-access-to-your-pc-how-to-stay-safe</link>
                                                                            <description>
                            <![CDATA[ Two different Windows flaws popped up this week. What connects them is that both could give bad actors system privileges. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pn79hVmH7mpAKpDpKoxV3Z</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/pjRoZBt6XiSUTK6dUoB8Jh-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 13 Aug 2026 01:09:52 +0000</pubDate>                                                                                                                                <updated>Thu, 13 Aug 2026 16:02:19 +0000</updated>
                                                                                                                                            <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;br&gt;Send secure tips on Signal: scyo1.55.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/pjRoZBt6XiSUTK6dUoB8Jh-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock / Edited by Gemini]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Windows 11 laptop displaying a large warning sign]]></media:description>                                                            <media:text><![CDATA[A Windows 11 laptop displaying a large warning sign]]></media:text>
                                <media:title type="plain"><![CDATA[A Windows 11 laptop displaying a large warning sign]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/pjRoZBt6XiSUTK6dUoB8Jh-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>This week two different <a href="https://www.tomsguide.com/computing/online-security/over-1-billion-windows-users-at-risk-after-disgruntled-security-researcher-leaks-defender-zero-days">Windows vulnerabilities</a> were revealed that attack your PC from different angles. However, there is one unfortunate thread that connects them; both are capable of allowing a malicious actor to gain system privileges on your Windows device, and neither has been patched yet.</p><p>The flaws are a <a href="https://www.tomsguide.com/computing/online-security/do-you-use-microsoft-exchange-hackers-are-actively-exploiting-a-new-zero-day-flaw">zero-day vulnerability</a> that can circumnavigate a previous RoguePlanet and a new "Plug and Pwn" attack that emulates USB devices.</p><p>Read on to find out what each attack can do and how to potentially stay safe until they get patched. </p><h2 id="shieldbreak-zero-day">Shieldbreak Zero-Day</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JU27PbrhCr9X35AbQFzAdR" name="virtual vpn" alt="Hands typing on a laptop with a digital shield and lock icon, symbolizing cybersecurity. Surrounded by binary code and glowing elements." src="https://cdn.mos.cms.futurecdn.net/JU27PbrhCr9X35AbQFzAdR.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TU IS (via Getty Images))</span></figcaption></figure><p>The zero-day vulnerability was found by Nightmare Eclipse, a bug hunter who reportedly has major beef with Microsoft and no qualms sharing the latest vulnerabilities they've discovered before a patch has released.</p><p>The latest, dubbed <a href="https://github.com/MSNightmare/ShieldBreak" target="_blank">ShieldBreak</a>, can apparently get around the RoguePlanet patch and allows attackers to gain system privileges on patched Windows 10, Windows 11 and Windows Server system.</p><p>Per <a href="https://www.theregister.com/cyber-crime/2026/08/12/microsoft-vendetta-hacker-has-a-new-zero-day-that-gives-system-privileges-on-fully-patched-windows/5286889" target="_blank">The Register</a>, the exploit has been tested by other security researchers and confirmed.</p><p>ShieldBreak apparently uses a "user-mode callback hook" to change file contents during a Defender cloud-hydration scan via cfapi (Cloud Filter API)," according to security researcher <a href="https://cyberplace.social/@GossiTheDog/117082629057300721" target="_blank">Kevin Beaumont</a>.</p><p>Basically, it uses <a href="https://www.tomsguide.com/computing/antivirus/microsoft-defender-review">Microsoft Defender</a>, if enabled, when it runs a scan. Then the flaw can be exploited to gain System privileges. Another researcher, <a href="https://infosec.exchange/@wdormann/117079587486018149" target="_blank">Will Dormann</a>, says that Defender has to be active for the exploit to work.</p><h2 id="how-to-stay-safe-from-shieldbreak">How to stay safe from Shieldbreak</h2><p>Until Microsoft patches this vulnerability, one way to stay safe is to disable Microsoft Defender. </p><p>If you think your system might be vulnerable, Kevin Beaumont did <a href="https://cyberplace.social/@GossiTheDog/117082629057300721" target="_blank">publish three detections </a>that are supposed to be able to catch Shieldbreak in action. If you have the knowledge, you could try running them.</p><h2 id="plug-and-pwn">Plug and Pwn</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jDguSN4dyAxkcNZQD5iamP" name="USB-A.jpg" alt="USB-A" src="https://cdn.mos.cms.futurecdn.net/jDguSN4dyAxkcNZQD5iamP.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>The other flaw is a new "plug and pwn" disclosed by security researchers <a href="https://x.com/0xedh" target="_blank">Alejandro Hernando</a> and <a href="https://x.com/Qm9yamFN" target="_blank">Borja Martinez </a>(via <a href="https://www.bleepingcomputer.com/news/security/plug-and-pwn-attack-uses-fake-usb-devices-for-windows-system-access/" target="_blank">Bleeping Computer</a>) during the recent DEF CON 34 hacking conference. This vulnerability exploits how Windows identifies and automatically connects USB hardware, finds matching driver packages and then installs software as the Authority/System account.</p><p>Simply, the flaw emulates USB devices and can be used to force Windows to install vendor packages with exploitable components that can be used to gain system privileges on a Windows device.</p><p>Apparently, in some attacks, they didn't even require user interaction or physical USB hardware to gain access. This is enabled because Windows uses something called a co-installer, which automatically downloads and installs software and drivers when a new USB device is inserted in the computer.</p><p>This specific version is different from previous ones because it follows the Windows installation path and not something from a specific vendor. Notably, the remote attacks only seem to work on systems where USB redirection is enabled, which Alejandro Hernando said is common with virtual desktop environments.</p><p>Bleeping Computer gets far more granular if you're interested in how Hernando and Martinez discovered the flaw and the tools they used to instigate it.</p><h2 id="how-to-stay-safe-from-this-usb-attack">How to stay safe from this USB attack</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CSFXsX24TGg5qRaKfGEjC6" name="USB-A vs USB-C.jpg" alt="USB-A vs USB-C" src="https://cdn.mos.cms.futurecdn.net/CSFXsX24TGg5qRaKfGEjC6.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>If you are concerned about this kind of attack and willing, you could enable a 'DisableCoInstallers' registry value. This prevents driver packages from utilizing co-installers during device installtion. </p><p>You can do this by searching for it in the Start menu or using the keyboard short cut of the Windows key +R. Then navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Device Installer Registry key. Then add DWORD-32 value named DisableCoInstallers and set it to 1.</p><p>It doesn't totally eliminate plug and pwn attacks, but it could break some of them.</p><p>"In anything sensitive I'd pair it with device installation restrictions or hardware-ID allow-lists, and turn off PnP device redirection on RDP and VDI hosts that don't need it (`fDisablePNPRedir`)," Hernando told BleepingComputer.</p><p>It's a good reminder either way to make sure you're only plugging in trusted devices to your system or downloading software from official sources when you can to ensure the safety of what you're putting into your computer.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/windows-operating-systems/windows-11-is-broken-and-microsoft-is-fixing-the-wrong-things#viafoura-comments"><strong>Windows 11 is broken — and Microsoft is fixing the wrong things</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/browsers/microsoft-is-still-using-deceptive-tactics-and-design-to-force-you-to-use-edge"><strong>Microsoft is still using ‘deceptive tactics and design’ to force you to use Edge</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-extends-windows-10-support-for-another-year-what-you-need-to-know"><strong>Microsoft extends Windows 10 support for another year: what you need to know</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Windows 11 is broken — and Microsoft is fixing the wrong things ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It’s a little sad being a fan of tech these days. AI is consuming the world’s art and emotion and spitting out slop, and it’s driving up the price of just about every piece of consumer electronics as it does.</p><p>If you don’t need to upgrade your computer anytime soon, then you’re in a good spot - except <a href="https://www.tomsguide.com/reviews/windows-11">Windows 11</a> is doing its damnedest to be a mess of Copilot and bugs. While Microsoft is moving to improve things (with Windows head honcho Pavan Davuluri <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-promises-windows-11-reset-new-focus-on-performance-reliability-and-reducing-unnecessary-copilot-ai">promising big changes back in March</a>), it feels as though we might be better off nuking the whole thing from orbit.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OLq4ZX"></div>                            </div>                            <script src="https://kwizly.com/embed/OLq4ZX.js" async></script><h2 id="a-bloated-mess">A bloated mess</h2><p><a href="https://blogs.windows.com/windows-insider/2026/07/31/windows-quality-an-update-on-the-commitment-we-made-in-march/" target="_blank">In an update published last week</a>, Davuluri shared a number of changes the team had made in the months since committing to improving Windows 11.</p><p>It’s well worth a read, but what strikes me are the elements that feel so foundational to Windows. Windows 11 is almost 5 years old, and yet the team is now working on a “faster and more dependable File Explorer” and allowing “more taskbar customization”.</p><p>In many ways, these feel like table stakes. These are things that should have been hammered home a long time ago, and it shows how disconnected from its consumers’ reality Microsoft is at this point. People have been using Windows 11 and calling for a smaller memory footprint for 8GB machines, and now Microsoft is finally on board.</p><p>The Copilot-addled, bloated mess that Windows 11 has become can no longer be considered the price to pay for a more modular, customizable OS than its Apple or Linux contemporaries.</p><p>My <a href="https://www.tomsguide.com/computing/macbooks/macbook-air-13-inch-m3-review">MacBook Air M3</a> is the device I reach for to do work, despite having a beefy gaming rig with more RAM than I know what to do with. It’s perhaps unsurprising that Microsoft can’t seem to pick a lane.</p><p>The company is all about AI now, but not long ago it was being able to run Android apps on Windows, before that it was mixed reality and before that it was Cortana.</p><div><blockquote><p>The company keeps chasing trends while ignoring what many customers want</p></blockquote></div><p>The company keeps chasing trends while ignoring what many customers want: A steady, stable, secure OS.</p><p>Recent updates have helped fix those cracked foundations, but I fear Windows 11 might be too far gone, even with the upcoming option to uninstall AI models from Copilot+ PCs, the app toggles, and more.</p><h2 id="i-don-t-know-if-it-can-rebuild">I don't know if it can rebuild</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hDNix4fYdmJGsVB26D4tkN" name="windows 11.shutterstock_2000666507" alt="A laptop with the Windows 11 logo" src="https://cdn.mos.cms.futurecdn.net/hDNix4fYdmJGsVB26D4tkN.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Back in 2024, <a href="https://www.tomshardware.com/software/windows/ex-windows-developer-calls-windows-11-start-menu-performance-comically-bad-even-with-a-core-i9-and-128gb-of-ram" target="_blank">former Windows developer Andy Young</a> showcased how even with 128GB of RAM, Microsoft’s Search Bar was a laggy mess and causing major issues when just trying to find something.</p><p>In the months that followed, Microsoft fixed it, but it took one of their own to put them on blast to achieve it. It’s almost as if the staff there aren’t using Windows 11 day-to-day; seeing adverts, the constant Copilot interjections, and more.</p><p>That makes me think that it’s run its race, and that the company is moving to Windows 12 (or at least thinking about it), almost certainly with a sizeable AI component.</p><div><blockquote><p>Do you agree? Or are you happy with Windows 11? Drop a message in the comments with your thoughts.</p></blockquote></div><p>One only has to look across the platform divide to see that Apple has taken its own kickings in recent years. Customers became so used to the thoughtful updates to macOS that something like the borders of windows not lining up was seen as a huge issue as part of the <a href="https://www.tomsguide.com/computing/online-security/even-if-you-hate-liquid-glass-you-shouldnt-skip-updating-to-ios-26-for-the-sake-of-your-iphone">Liquid Glass rollout last year</a>.</p><p>Windows 11’s modularity has always been one of its strengths: It’s a gaming platform, it’s a workspace, it’s somewhere you can install something for everything and get what you need done. But in recent years, it’s lost its way big time, and I feel like Microsoft simply doesn’t know how to turn this massive ship around without rebuilding it all from scratch.</p><p>But hey, those are just my thoughts. Do you agree with me? Or are you happy with the way Windows 11 is running for you? Drop me a message in the comments with your thoughts.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/i-asked-chatgpt-for-the-best-ways-to-reduce-stress-these-7-simple-techniques-helped-me-feel-like-myself-again">I asked ChatGPT for the best ways to reduce stress — these 7 simple techniques helped me feel like myself again</a></li><li><a href="https://www.tomsguide.com/phones/samsung-phones/samsung-galaxy-z-fold-8-ultra-vs-galaxy-s26-ultra">I tested the Samsung Galaxy Z Fold 8 Ultra vs Galaxy S26 Ultra for 2 weeks — here’s the one I’d buy</a></li><li><a href="https://www.tomsguide.com/ai/google-maps-just-got-a-major-ai-upgrade-these-7-ask-maps-prompts-let-you-order-food-find-events-and-more">Google Maps just got a major AI upgrade — these 7 Ask Maps prompts let you order food, find events and more</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/windows-11-is-broken-and-microsoft-is-fixing-the-wrong-things</link>
                                                                            <description>
                            <![CDATA[ Microsoft has been rolling out updates and corrections to Windows 11 but perhaps the operating system is past saving? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vW7qXXckYSx3XgkuFXudmS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/efn9hKA2gxWvbcovTTtjwZ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 10 Aug 2026 07:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Lloyd Coombes ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xcWocVTwa9yiwXRs559XNA.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lloyd Coombes is a freelance tech and fitness writer. He&#039;s an expert in all things Apple as well as in computer and gaming tech, with previous works published on TechRadar, Tom&#039;s Guide, Live Science and more. You&#039;ll find him regularly testing the latest MacBook or iPhone, but he spends most of his time writing about video games as Gaming Editor for the Daily Star. He also covers board games and virtual reality, just to round out the nerdy pursuits.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/efn9hKA2gxWvbcovTTtjwZ-1280-80.jpg">
                                                            <media:credit><![CDATA[Generated using Google Gemini]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A greyscale laptop showing a Windows 11 screen with a red cross on it]]></media:description>                                                            <media:text><![CDATA[A greyscale laptop showing a Windows 11 screen with a red cross on it]]></media:text>
                                <media:title type="plain"><![CDATA[A greyscale laptop showing a Windows 11 screen with a red cross on it]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/efn9hKA2gxWvbcovTTtjwZ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It’s a little sad being a fan of tech these days. AI is consuming the world’s art and emotion and spitting out slop, and it’s driving up the price of just about every piece of consumer electronics as it does.</p><p>If you don’t need to upgrade your computer anytime soon, then you’re in a good spot - except <a href="https://www.tomsguide.com/reviews/windows-11">Windows 11</a> is doing its damnedest to be a mess of Copilot and bugs. While Microsoft is moving to improve things (with Windows head honcho Pavan Davuluri <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-promises-windows-11-reset-new-focus-on-performance-reliability-and-reducing-unnecessary-copilot-ai">promising big changes back in March</a>), it feels as though we might be better off nuking the whole thing from orbit.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OLq4ZX"></div>                            </div>                            <script src="https://kwizly.com/embed/OLq4ZX.js" async></script><h2 id="a-bloated-mess">A bloated mess</h2><p><a href="https://blogs.windows.com/windows-insider/2026/07/31/windows-quality-an-update-on-the-commitment-we-made-in-march/" target="_blank">In an update published last week</a>, Davuluri shared a number of changes the team had made in the months since committing to improving Windows 11.</p><p>It’s well worth a read, but what strikes me are the elements that feel so foundational to Windows. Windows 11 is almost 5 years old, and yet the team is now working on a “faster and more dependable File Explorer” and allowing “more taskbar customization”.</p><p>In many ways, these feel like table stakes. These are things that should have been hammered home a long time ago, and it shows how disconnected from its consumers’ reality Microsoft is at this point. People have been using Windows 11 and calling for a smaller memory footprint for 8GB machines, and now Microsoft is finally on board.</p><p>The Copilot-addled, bloated mess that Windows 11 has become can no longer be considered the price to pay for a more modular, customizable OS than its Apple or Linux contemporaries.</p><p>My <a href="https://www.tomsguide.com/computing/macbooks/macbook-air-13-inch-m3-review">MacBook Air M3</a> is the device I reach for to do work, despite having a beefy gaming rig with more RAM than I know what to do with. It’s perhaps unsurprising that Microsoft can’t seem to pick a lane.</p><p>The company is all about AI now, but not long ago it was being able to run Android apps on Windows, before that it was mixed reality and before that it was Cortana.</p><div><blockquote><p>The company keeps chasing trends while ignoring what many customers want</p></blockquote></div><p>The company keeps chasing trends while ignoring what many customers want: A steady, stable, secure OS.</p><p>Recent updates have helped fix those cracked foundations, but I fear Windows 11 might be too far gone, even with the upcoming option to uninstall AI models from Copilot+ PCs, the app toggles, and more.</p><h2 id="i-don-t-know-if-it-can-rebuild">I don't know if it can rebuild</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hDNix4fYdmJGsVB26D4tkN" name="windows 11.shutterstock_2000666507" alt="A laptop with the Windows 11 logo" src="https://cdn.mos.cms.futurecdn.net/hDNix4fYdmJGsVB26D4tkN.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Back in 2024, <a href="https://www.tomshardware.com/software/windows/ex-windows-developer-calls-windows-11-start-menu-performance-comically-bad-even-with-a-core-i9-and-128gb-of-ram" target="_blank">former Windows developer Andy Young</a> showcased how even with 128GB of RAM, Microsoft’s Search Bar was a laggy mess and causing major issues when just trying to find something.</p><p>In the months that followed, Microsoft fixed it, but it took one of their own to put them on blast to achieve it. It’s almost as if the staff there aren’t using Windows 11 day-to-day; seeing adverts, the constant Copilot interjections, and more.</p><p>That makes me think that it’s run its race, and that the company is moving to Windows 12 (or at least thinking about it), almost certainly with a sizeable AI component.</p><div><blockquote><p>Do you agree? Or are you happy with Windows 11? Drop a message in the comments with your thoughts.</p></blockquote></div><p>One only has to look across the platform divide to see that Apple has taken its own kickings in recent years. Customers became so used to the thoughtful updates to macOS that something like the borders of windows not lining up was seen as a huge issue as part of the <a href="https://www.tomsguide.com/computing/online-security/even-if-you-hate-liquid-glass-you-shouldnt-skip-updating-to-ios-26-for-the-sake-of-your-iphone">Liquid Glass rollout last year</a>.</p><p>Windows 11’s modularity has always been one of its strengths: It’s a gaming platform, it’s a workspace, it’s somewhere you can install something for everything and get what you need done. But in recent years, it’s lost its way big time, and I feel like Microsoft simply doesn’t know how to turn this massive ship around without rebuilding it all from scratch.</p><p>But hey, those are just my thoughts. Do you agree with me? Or are you happy with the way Windows 11 is running for you? Drop me a message in the comments with your thoughts.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/i-asked-chatgpt-for-the-best-ways-to-reduce-stress-these-7-simple-techniques-helped-me-feel-like-myself-again">I asked ChatGPT for the best ways to reduce stress — these 7 simple techniques helped me feel like myself again</a></li><li><a href="https://www.tomsguide.com/phones/samsung-phones/samsung-galaxy-z-fold-8-ultra-vs-galaxy-s26-ultra">I tested the Samsung Galaxy Z Fold 8 Ultra vs Galaxy S26 Ultra for 2 weeks — here’s the one I’d buy</a></li><li><a href="https://www.tomsguide.com/ai/google-maps-just-got-a-major-ai-upgrade-these-7-ask-maps-prompts-let-you-order-food-find-events-and-more">Google Maps just got a major AI upgrade — these 7 Ask Maps prompts let you order food, find events and more</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Update your Mac right now to block this major screen sharing flaw ]]></title>
                                                                                                <dc:content><![CDATA[ <p>You're going to want to update your Mac to address a serious Screen Sharing vulnerability that could letter a malicious actor initiate screen sharing without authentic credentials.</p><p>This week <a href="https://support.apple.com/en-us/100100" target="_blank">Apple released</a> macOS Sonoma 14.8.9, macOS Sequoia 15.7.9, and macOS Tahoe 26.6.1 with release notes. Notably, all three releases claim that Apple made "important security fixes" and recommended the updates for everyone. </p><p><strong>"Impact: An attacker on the network may be able to authenticate to Screen Sharing without valid credentials</strong></p><p><strong>Description: An authentication issue was addressed with improved state management."</strong></p><p>That message is the same across all three versions of macOS. </p><p>It doesn't appear that the bug has been exploited in the wild, but if you haven't updated your Mac recently, now is the time to do so. Based on Apple's description, it appears that a bad actor could bypass Screen Sharing authentication checks, which would give them remote access to your computer.</p><p>Potentially, this would allow them to view the screen, open apps or files or perform other actions on the computer.</p><p>You may not use screen sharing, but it's still a good idea to install this update. Apple clearly deemed the flaw serious enough to patch three different versions of macOS before the next round of major OS updates.</p><h2 id="keep-your-mac-safe">Keep your Mac safe</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="F9ybS7WNwSK95hqxotZgYM" name="apple shutterstock.jpg" alt="A padlock resting next to the Apple logo on the lid of a gold-colored Apple laptop." src="https://cdn.mos.cms.futurecdn.net/F9ybS7WNwSK95hqxotZgYM.jpg" mos="" align="middle" fullscreen="" width="1000" height="563" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: robert coolen/Shutterstock)</span></figcaption></figure><p>To keep your Mac safe you may want to ensure that updates are automatically applied. Understandably if you're cautious about updates before they're settled you may wait. So you'll want to track updates and make sure you get the security-focused ones to protect your computer.</p><p>For screen sharing specifically, this vulnerability may have been able to sneak around you. But if you do any screen sharing, make sure it's with a trusted partner that you know to protect your computer. Additionally, keep any sensitive information closed before passing permissions just as a way to introduce a little bit of a block.</p><p>At the end of your session, double-check that screen sharing is turned off.</p><p>Beyond that, Apple does have Gatekeeper built-in which can block or warn you before you install unverified apps from the web. Still, you might want to consider using one of the <a href="https://www.tomsguide.com/best-picks/best-mac-antivirus">best Mac antivirus software </a>along side Apple's built-in ones.</p><p>Again, these macOS updates are available right now, so make sure you've installed them.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/iphones/how-to-turn-off-ios-27s-automatic-subtitles-that-no-one-asked-for">How to disable iOS 27’s annoying auto-subtitles for good</a></li><li><a href="https://www.tomsguide.com/phones/iphones/iphone-ultra-rumors-everything-you-need-to-know-about-the-foldable-iphone">iPhone Ultra rumors: Everything you need to know about the foldable iPhone</a></li><li><a href="https://www.tomsguide.com/phones/i-asked-siri-ai-and-gemini-a-series-of-increasingly-bizarre-questions-to-see-how-they-responded-heres-what-happened">I asked Siri AI and Gemini a series of increasingly bizarre questions to see how they responded —here's what happened</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/update-your-mac-right-now-to-block-this-major-screen-sharing-flaw</link>
                                                                            <description>
                            <![CDATA[ Apple has just released new macOS updates that fix a major Screen Sharing flaw. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">UfniTUGWvQ9LcgZBT8hYna</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/znDgFDFV46cYDQFRnVHdR7-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 07 Aug 2026 20:37:22 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;br&gt;Send secure tips on Signal: scyo1.55.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/znDgFDFV46cYDQFRnVHdR7-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock/Apple]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[macOS Tahoe 26 desktop screen on an MacBook]]></media:description>                                                            <media:text><![CDATA[macOS Tahoe 26 desktop screen on an MacBook]]></media:text>
                                <media:title type="plain"><![CDATA[macOS Tahoe 26 desktop screen on an MacBook]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/znDgFDFV46cYDQFRnVHdR7-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>You're going to want to update your Mac to address a serious Screen Sharing vulnerability that could letter a malicious actor initiate screen sharing without authentic credentials.</p><p>This week <a href="https://support.apple.com/en-us/100100" target="_blank">Apple released</a> macOS Sonoma 14.8.9, macOS Sequoia 15.7.9, and macOS Tahoe 26.6.1 with release notes. Notably, all three releases claim that Apple made "important security fixes" and recommended the updates for everyone. </p><p><strong>"Impact: An attacker on the network may be able to authenticate to Screen Sharing without valid credentials</strong></p><p><strong>Description: An authentication issue was addressed with improved state management."</strong></p><p>That message is the same across all three versions of macOS. </p><p>It doesn't appear that the bug has been exploited in the wild, but if you haven't updated your Mac recently, now is the time to do so. Based on Apple's description, it appears that a bad actor could bypass Screen Sharing authentication checks, which would give them remote access to your computer.</p><p>Potentially, this would allow them to view the screen, open apps or files or perform other actions on the computer.</p><p>You may not use screen sharing, but it's still a good idea to install this update. Apple clearly deemed the flaw serious enough to patch three different versions of macOS before the next round of major OS updates.</p><h2 id="keep-your-mac-safe">Keep your Mac safe</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:56.30%;"><img id="F9ybS7WNwSK95hqxotZgYM" name="apple shutterstock.jpg" alt="A padlock resting next to the Apple logo on the lid of a gold-colored Apple laptop." src="https://cdn.mos.cms.futurecdn.net/F9ybS7WNwSK95hqxotZgYM.jpg" mos="" align="middle" fullscreen="" width="1000" height="563" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: robert coolen/Shutterstock)</span></figcaption></figure><p>To keep your Mac safe you may want to ensure that updates are automatically applied. Understandably if you're cautious about updates before they're settled you may wait. So you'll want to track updates and make sure you get the security-focused ones to protect your computer.</p><p>For screen sharing specifically, this vulnerability may have been able to sneak around you. But if you do any screen sharing, make sure it's with a trusted partner that you know to protect your computer. Additionally, keep any sensitive information closed before passing permissions just as a way to introduce a little bit of a block.</p><p>At the end of your session, double-check that screen sharing is turned off.</p><p>Beyond that, Apple does have Gatekeeper built-in which can block or warn you before you install unverified apps from the web. Still, you might want to consider using one of the <a href="https://www.tomsguide.com/best-picks/best-mac-antivirus">best Mac antivirus software </a>along side Apple's built-in ones.</p><p>Again, these macOS updates are available right now, so make sure you've installed them.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/iphones/how-to-turn-off-ios-27s-automatic-subtitles-that-no-one-asked-for">How to disable iOS 27’s annoying auto-subtitles for good</a></li><li><a href="https://www.tomsguide.com/phones/iphones/iphone-ultra-rumors-everything-you-need-to-know-about-the-foldable-iphone">iPhone Ultra rumors: Everything you need to know about the foldable iPhone</a></li><li><a href="https://www.tomsguide.com/phones/i-asked-siri-ai-and-gemini-a-series-of-increasingly-bizarre-questions-to-see-how-they-responded-heres-what-happened">I asked Siri AI and Gemini a series of increasingly bizarre questions to see how they responded —here's what happened</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How I use Google Maps to time travel, avoid bad air, and survive zero service ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Google Maps has become one of life’s essentials thanks to a host of features that make navigation feel effortless. I use it as a matter of routine when I’m driving, even if I know where I’m going — it flags up problems, offers alternative routes, and gives an accurate ETA. But Google Maps does so much more than basic directions.</p><p>The more I use and explore the app, the more impressed I become (and I love checking out the hidden tricks uncovered by the Tom’s Guide team!). While it’s packed with tools, there’s a handful of features I rely on above all others because they’ve proven, time after time, to save my trips. </p><p>Here are five of my absolute favorites. I hope they help you out, too.</p><section class="howto-block">                    <h2>1. Go back in time</h2>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/qXkgfHqQtunRaSEoqYHLW6.png"                                        alt=" favorite features in Google Maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/qXkgfHqQtunRaSEoqYHLW6.png"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide )</div></figure>                    <p><p>Think time travel is confined to the land of make-believe? It’s actually possible in Google Maps if you use Street View. This feature lets you see how an area has changed over time, making it easy to check a property's history, monitor construction projects, or simply reminisce. As long as Google has historical imagery available, you can go back years, if not decades.</p><p>To activate it, <strong>search for a location</strong> or <strong>hold your finger on the map to drop a pin</strong>. Next, <strong>tap the preview image</strong> that appears on the screen.</p><p>Now <strong>click on See more dates</strong> and you’ll be able to <strong>swipe through the timeline carousel</strong> and <strong>select a past year</strong>.</p></p>                </section><section class="howto-block">                    <h2>2. Check out a location</h2>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/ZfdAQUrdD3TNEwPwQ9gif6.png"                                        alt=" favorite features in Google Maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/ZfdAQUrdD3TNEwPwQ9gif6.png"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>When traveling somewhere unfamiliar, I always like to check out the destination before I arrive. Scouting out parking lots and getting a visual on the building beforehand ensures the final leg of the journey is far less stressful, and saves a chunk of time once you get there.</p><p>For this, alongside Street View, I make use of Immersive View. It’s not available everywhere just yet, but it’s always a treat when you can use it.</p><p><strong>Enter the name of a city </strong>such as London, Tokyo, or New York, and <strong>tap a landmark icon</strong>.Then<strong> look in the photos section and select Immersive View</strong>, if it's available. This allows you to <strong>swipe left and right</strong> to explore the area or <strong>zoom in and out</strong>.</p><p>You can get a birds eye view of an area, find the entrance to buildings and amenities with ease and see what’s nearby with clear labels. It’s really quick to navigate and certainly worth <a href="https://www.tomsguide.com/phones/i-just-discovered-this-hidden-google-maps-feature-that-makes-my-route-planning-way-better">checking out</a>.</p></p>                </section><section class="howto-block">                    <h2>3. Monitor air quality</h2>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/XKnBpV2sdS2Cw9D6ei5tL6.png"                                        alt=" favorite features in Google Maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/XKnBpV2sdS2Cw9D6ei5tL6.png"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>If I’m going to spend a lot of time outdoors, especially if I’m going for a run, I like to know the quality of the air I'm breathing.</p><p>With Google Maps, <strong>just search a destination and tap the Layers icon</strong> near the top right. <strong>Selecting Air Quality gives you an instant, color-coded map </strong>with an easy-to-read scale based on real-time station measurements. </p><p>Tap any area to see specific health concerns, who might be at risk, and what precautions you should take.</p></p>                </section><section class="howto-block">                    <h2>4. Create lists</h2>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/t2DAcCLFgbozVZ4XfCmeD6.png"                                        alt=" favorite features in Google Maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/t2DAcCLFgbozVZ4XfCmeD6.png"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>Google Maps is a great tool to plan an entire trip. There’s loads of information about locations of interest with reviews, prices, images and more. By creating your own lists, you’re able to bring relevant information together and they don’t take very long to put together, either.</p><p>Simply <strong>tap a location of interest</strong> and <strong>select the bookmark icon</strong>. You’ll have the option to <strong>start a new list</strong> but you can also <strong>use a pre-made list</strong> such as ‘Want to go’, ‘Favorites’ and ‘Starred places’. Whenever you add a location to a list, you can add a note.</p><p>When you view your list (<strong>select the You tab</strong> at the bottom of the screen and <strong>select the list</strong>), you’ll find your selected locations are highlighted on the map, so you can easily identify them. </p></p>                </section><section class="howto-block">                    <h2>5. Access Google Maps offline</h2>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/xAdoTfVdzGreN3vUQDN746.png"                                        alt=" favorite features in Google Maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/xAdoTfVdzGreN3vUQDN746.png"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>It can be frustrating, and a little unnerving, to lose cellular coverage right when you need directions. If I know an area is going to be patchy, I always plan ahead and download offline access to Google Maps. It does require sufficient phone storage (something I’m rapidly running out of!), but for total peace of mind on the road, it’s a trade-off I’m always willing to make.</p><p>Anyway, offline access is easy. <strong>Enter an address</strong> then <strong>swipe up to view the card</strong>. <strong>Swipe left </strong>and you should see an option to <strong>tap Download offline map</strong>. If not, <strong>keep swiping</strong>, <strong>select More</strong> and the option will be there.</p><p>To use that map, just <strong>use Google Maps as you normally would</strong>. The app will detect if its needs the download and use it automatically.</p></p>                </section><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKJnMW"></div>                            </div>                            <script src="https://kwizly.com/embed/OKJnMW.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/computing/why-google-maps-keeps-sending-you-the-long-way-and-how-to-stop-it">Google Maps actually defaults to the slowest route now — here's how to fix it</a></li><li><a href="https://www.tomsguide.com/phones/how-to-stop-google-maps-from-displaying-your-home-to-strangers">The one Google Maps tip everyone should know — how to blur your home in Street View</a></li><li><a href="https://www.tomsguide.com/computing/google-has-been-hiding-a-flight-simulator-for-20-years-now-its-free-on-the-web">Google has been hiding a flight simulator for 20 years and now it's free on the web — here's how to use it</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/phones/how-i-use-google-maps-to-time-travel-avoid-bad-air-and-survive-zero-service</link>
                                                                            <description>
                            <![CDATA[ From time travel to dodging bad air, these 5 Google Maps features saved my trips — and turned me into a power user. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">bwdHobfQrdhQP3XrkxYf7C</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Q82gTVfSngY342JtDgZANC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 31 Jul 2026 11:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mobile Apps]]></category>
                                                    <category><![CDATA[Phones]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                                    <dc:creator><![CDATA[ David Crookes ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/yQWsHDmJr9eBZrL4xqd3bE.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;David Crookes has been writing professionally for close to 30 years and, as well as a great fondness for gaming, space, film, music, history, health and politics, he&#039;s largely specialized in technology for much of his career. He particularly focuses on Apple devices, having admired the company&#039;s tech since using iMac G3 in 1998. He also developed a fondness for the older Macintosh LC III that he later used in his first job as a newspaper reporter.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Since becoming a freelance writer, he has written for a wide number of publications including the Apple-focussed magazines iCreate and Macworld as well as Micro Mart, Web User, T3, Retro Gamer, MagPi, Computer Shopper, Gadget and 3D Artist. His love of gaming has seen him write for Retro Gamer, GamesTM and Wireframe among others and, despite his love of Apple, he still uses a PC – working for PC Pro and once writing for Total PC Gaming.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;One of his joys is helping others to use technology which has led him to writing many “how to” tutorials explaining many ways of getting the most out of various devices. He&#039;s become an expert user of the iPhone, iPad, Mac, Apple Watch and Apple TV. He also likes to kick back with a gaming session on an PlayStation 5 or Xbox Series X | S while getting his retro fix on an Evercade handheld.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Q82gTVfSngY342JtDgZANC-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Google Maps logo on phone with map in background]]></media:description>                                                            <media:text><![CDATA[Google Maps logo on phone with map in background]]></media:text>
                                <media:title type="plain"><![CDATA[Google Maps logo on phone with map in background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Q82gTVfSngY342JtDgZANC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Google Maps has become one of life’s essentials thanks to a host of features that make navigation feel effortless. I use it as a matter of routine when I’m driving, even if I know where I’m going — it flags up problems, offers alternative routes, and gives an accurate ETA. But Google Maps does so much more than basic directions.</p><p>The more I use and explore the app, the more impressed I become (and I love checking out the hidden tricks uncovered by the Tom’s Guide team!). While it’s packed with tools, there’s a handful of features I rely on above all others because they’ve proven, time after time, to save my trips. </p><p>Here are five of my absolute favorites. I hope they help you out, too.</p><section class="howto-block">                    <h2>1. Go back in time</h2>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/qXkgfHqQtunRaSEoqYHLW6.png"                                        alt=" favorite features in Google Maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/qXkgfHqQtunRaSEoqYHLW6.png"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide )</div></figure>                    <p><p>Think time travel is confined to the land of make-believe? It’s actually possible in Google Maps if you use Street View. This feature lets you see how an area has changed over time, making it easy to check a property's history, monitor construction projects, or simply reminisce. As long as Google has historical imagery available, you can go back years, if not decades.</p><p>To activate it, <strong>search for a location</strong> or <strong>hold your finger on the map to drop a pin</strong>. Next, <strong>tap the preview image</strong> that appears on the screen.</p><p>Now <strong>click on See more dates</strong> and you’ll be able to <strong>swipe through the timeline carousel</strong> and <strong>select a past year</strong>.</p></p>                </section><section class="howto-block">                    <h2>2. Check out a location</h2>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/ZfdAQUrdD3TNEwPwQ9gif6.png"                                        alt=" favorite features in Google Maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/ZfdAQUrdD3TNEwPwQ9gif6.png"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>When traveling somewhere unfamiliar, I always like to check out the destination before I arrive. Scouting out parking lots and getting a visual on the building beforehand ensures the final leg of the journey is far less stressful, and saves a chunk of time once you get there.</p><p>For this, alongside Street View, I make use of Immersive View. It’s not available everywhere just yet, but it’s always a treat when you can use it.</p><p><strong>Enter the name of a city </strong>such as London, Tokyo, or New York, and <strong>tap a landmark icon</strong>.Then<strong> look in the photos section and select Immersive View</strong>, if it's available. This allows you to <strong>swipe left and right</strong> to explore the area or <strong>zoom in and out</strong>.</p><p>You can get a birds eye view of an area, find the entrance to buildings and amenities with ease and see what’s nearby with clear labels. It’s really quick to navigate and certainly worth <a href="https://www.tomsguide.com/phones/i-just-discovered-this-hidden-google-maps-feature-that-makes-my-route-planning-way-better">checking out</a>.</p></p>                </section><section class="howto-block">                    <h2>3. Monitor air quality</h2>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/XKnBpV2sdS2Cw9D6ei5tL6.png"                                        alt=" favorite features in Google Maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/XKnBpV2sdS2Cw9D6ei5tL6.png"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>If I’m going to spend a lot of time outdoors, especially if I’m going for a run, I like to know the quality of the air I'm breathing.</p><p>With Google Maps, <strong>just search a destination and tap the Layers icon</strong> near the top right. <strong>Selecting Air Quality gives you an instant, color-coded map </strong>with an easy-to-read scale based on real-time station measurements. </p><p>Tap any area to see specific health concerns, who might be at risk, and what precautions you should take.</p></p>                </section><section class="howto-block">                    <h2>4. Create lists</h2>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/t2DAcCLFgbozVZ4XfCmeD6.png"                                        alt=" favorite features in Google Maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/t2DAcCLFgbozVZ4XfCmeD6.png"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>Google Maps is a great tool to plan an entire trip. There’s loads of information about locations of interest with reviews, prices, images and more. By creating your own lists, you’re able to bring relevant information together and they don’t take very long to put together, either.</p><p>Simply <strong>tap a location of interest</strong> and <strong>select the bookmark icon</strong>. You’ll have the option to <strong>start a new list</strong> but you can also <strong>use a pre-made list</strong> such as ‘Want to go’, ‘Favorites’ and ‘Starred places’. Whenever you add a location to a list, you can add a note.</p><p>When you view your list (<strong>select the You tab</strong> at the bottom of the screen and <strong>select the list</strong>), you’ll find your selected locations are highlighted on the map, so you can easily identify them. </p></p>                </section><section class="howto-block">                    <h2>5. Access Google Maps offline</h2>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/xAdoTfVdzGreN3vUQDN746.png"                                        alt=" favorite features in Google Maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/xAdoTfVdzGreN3vUQDN746.png"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>It can be frustrating, and a little unnerving, to lose cellular coverage right when you need directions. If I know an area is going to be patchy, I always plan ahead and download offline access to Google Maps. It does require sufficient phone storage (something I’m rapidly running out of!), but for total peace of mind on the road, it’s a trade-off I’m always willing to make.</p><p>Anyway, offline access is easy. <strong>Enter an address</strong> then <strong>swipe up to view the card</strong>. <strong>Swipe left </strong>and you should see an option to <strong>tap Download offline map</strong>. If not, <strong>keep swiping</strong>, <strong>select More</strong> and the option will be there.</p><p>To use that map, just <strong>use Google Maps as you normally would</strong>. The app will detect if its needs the download and use it automatically.</p></p>                </section><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKJnMW"></div>                            </div>                            <script src="https://kwizly.com/embed/OKJnMW.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/computing/why-google-maps-keeps-sending-you-the-long-way-and-how-to-stop-it">Google Maps actually defaults to the slowest route now — here's how to fix it</a></li><li><a href="https://www.tomsguide.com/phones/how-to-stop-google-maps-from-displaying-your-home-to-strangers">The one Google Maps tip everyone should know — how to blur your home in Street View</a></li><li><a href="https://www.tomsguide.com/computing/google-has-been-hiding-a-flight-simulator-for-20-years-now-its-free-on-the-web">Google has been hiding a flight simulator for 20 years and now it's free on the web — here's how to use it</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Google Maps is finally getting a speedometer on Android Auto, and it's about time — my ancient GPS system could do this 20 years ago ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you've ever looked at <a href="https://www.tomsguide.com/news/how-to-use-google-maps">Google Maps</a> while you're driving and thought to yourself, "why can't this app track my speed too?" then you're in luck. It seems Google is now starting to roll out live speedometer support to Google Maps for <a href="https://www.tomsguide.com/reference/android-auto-faq">Android Auto</a>, and I have to admit that it's about time too.</p><p>Part of me is surprised that it's taken Google Maps so long to implement this feature on Android Auto. After all, the app is constantly following your vehicle for its navigation, and I can't imagine being able to monitor and display a rough speed estimate would be too much extra work. </p><p>What's even weirder is that Google Maps added a speedometer on<a href="https://www.tomsguide.com/computing/mobile-apps/i-just-realized-how-bad-google-maps-is-on-carplay-why-does-it-look-so-terrible"> its CarPlay app</a> back in 2024, and it's been available on Waze for as long as I can remember. You'd have thought Google would prioritize its own primary platform, right? But that clearly wasn't the case.</p><p>I distinctly remember this feature was widely available on a multitude of pre-smartphone GPS units, and it was always interesting to see how much of a difference there was. The GPS typically had my speed a few miles per hour slower than the car itself, though in the interest of not being bombarded with enough tickets to lose my license I generally stuck with what the car had to say.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wwq19X"></div>                            </div>                            <script src="https://kwizly.com/embed/Wwq19X.js" async></script><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="GCdmdtgeKwS2D5rTytTrrB" name="Android Auto update" alt="Android Auto update." src="https://cdn.mos.cms.futurecdn.net/GCdmdtgeKwS2D5rTytTrrB.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>Then again, you need to remember that Google Maps took years to roll out support for speed limits and speed camera alerts — <a href="https://mashable.com/article/google-maps-speed-limits-speed-traps" target="_blank">which happened back in 2019</a>. So it's no surprise that some of these smaller features, like a GPS speedometer, haven't been top of the list of priorities. </p><p>Still reports suggest that it is rolling out, even if it hasn't reached my devices in the UK— which are running beta versions of Google Maps and Android Auto. Users on <a href="https://www.reddit.com/r/AndroidAuto/comments/1uzlb2l/google_maps_beta_speedometer_in_android_auto/" target="_blank">Reddit</a> have reported seeing the speedometer in their vehicles, with screenshots from Canada and India. </p><p>The Canadian user is specifically running version 26.29.02.946673643 of the Google Maps beta. That's the same version as me, though I am sadly missing this particular feature. </p><p>Do you see the speedometer in Android Auto yet? Let us know in the comments.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/samsung-phones/massive-samsung-leak-reveals-official-galaxy-z-fold-8-fold-8-ultra-and-flip-8-images-ahead-of-unpacked">Massive Samsung leak reveals official Galaxy Z Fold 8, Fold 8 Ultra, and Flip 8 images ahead of Unpacked</a></li><li><a href="https://www.tomsguide.com/phones/my-favorite-google-maps-feature-is-the-one-that-lets-me-visit-a-world-that-doesnt-exist-anymore">I tried Google Maps hidden time machine feature — here's how to do it yourself</a></li><li><a href="https://www.tomsguide.com/phones/google-pixel-phones/i-just-got-gemini-for-android-auto-in-my-car-and-i-cant-believe-how-much-better-it-is-than-google-assistant">I tested Google's new Gemini update for Android Auto and it finally fixes everything that made the old Google Assistant so frustrating to use while driving</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/mobile-apps/google-maps-is-finally-getting-a-speedometer-on-android-auto-and-its-about-time-my-ancient-gps-system-could-do-this-20-years-ago</link>
                                                                            <description>
                            <![CDATA[ Google Maps is about to add a feature that has existed elsewhere in one way or another for decades — and it's about time. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">x9zxV8YJMpUm2mHAe5WD7E</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SrbahT4f3zw4Lvh7nGKDti-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 20 Jul 2026 13:15:20 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mobile Apps]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ tom.pritchard@futurenet.com (Tom Pritchard) ]]></author>                    <dc:creator><![CDATA[ Tom Pritchard ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/biCewUkKfSA6QnT2HxVc3f.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/SrbahT4f3zw4Lvh7nGKDti-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[google maps logo on a phone screen]]></media:description>                                                            <media:text><![CDATA[google maps logo on a phone screen]]></media:text>
                                <media:title type="plain"><![CDATA[google maps logo on a phone screen]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SrbahT4f3zw4Lvh7nGKDti-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you've ever looked at <a href="https://www.tomsguide.com/news/how-to-use-google-maps">Google Maps</a> while you're driving and thought to yourself, "why can't this app track my speed too?" then you're in luck. It seems Google is now starting to roll out live speedometer support to Google Maps for <a href="https://www.tomsguide.com/reference/android-auto-faq">Android Auto</a>, and I have to admit that it's about time too.</p><p>Part of me is surprised that it's taken Google Maps so long to implement this feature on Android Auto. After all, the app is constantly following your vehicle for its navigation, and I can't imagine being able to monitor and display a rough speed estimate would be too much extra work. </p><p>What's even weirder is that Google Maps added a speedometer on<a href="https://www.tomsguide.com/computing/mobile-apps/i-just-realized-how-bad-google-maps-is-on-carplay-why-does-it-look-so-terrible"> its CarPlay app</a> back in 2024, and it's been available on Waze for as long as I can remember. You'd have thought Google would prioritize its own primary platform, right? But that clearly wasn't the case.</p><p>I distinctly remember this feature was widely available on a multitude of pre-smartphone GPS units, and it was always interesting to see how much of a difference there was. The GPS typically had my speed a few miles per hour slower than the car itself, though in the interest of not being bombarded with enough tickets to lose my license I generally stuck with what the car had to say.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wwq19X"></div>                            </div>                            <script src="https://kwizly.com/embed/Wwq19X.js" async></script><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="GCdmdtgeKwS2D5rTytTrrB" name="Android Auto update" alt="Android Auto update." src="https://cdn.mos.cms.futurecdn.net/GCdmdtgeKwS2D5rTytTrrB.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>Then again, you need to remember that Google Maps took years to roll out support for speed limits and speed camera alerts — <a href="https://mashable.com/article/google-maps-speed-limits-speed-traps" target="_blank">which happened back in 2019</a>. So it's no surprise that some of these smaller features, like a GPS speedometer, haven't been top of the list of priorities. </p><p>Still reports suggest that it is rolling out, even if it hasn't reached my devices in the UK— which are running beta versions of Google Maps and Android Auto. Users on <a href="https://www.reddit.com/r/AndroidAuto/comments/1uzlb2l/google_maps_beta_speedometer_in_android_auto/" target="_blank">Reddit</a> have reported seeing the speedometer in their vehicles, with screenshots from Canada and India. </p><p>The Canadian user is specifically running version 26.29.02.946673643 of the Google Maps beta. That's the same version as me, though I am sadly missing this particular feature. </p><p>Do you see the speedometer in Android Auto yet? Let us know in the comments.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/samsung-phones/massive-samsung-leak-reveals-official-galaxy-z-fold-8-fold-8-ultra-and-flip-8-images-ahead-of-unpacked">Massive Samsung leak reveals official Galaxy Z Fold 8, Fold 8 Ultra, and Flip 8 images ahead of Unpacked</a></li><li><a href="https://www.tomsguide.com/phones/my-favorite-google-maps-feature-is-the-one-that-lets-me-visit-a-world-that-doesnt-exist-anymore">I tried Google Maps hidden time machine feature — here's how to do it yourself</a></li><li><a href="https://www.tomsguide.com/phones/google-pixel-phones/i-just-got-gemini-for-android-auto-in-my-car-and-i-cant-believe-how-much-better-it-is-than-google-assistant">I tested Google's new Gemini update for Android Auto and it finally fixes everything that made the old Google Assistant so frustrating to use while driving</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ One night, one match, no second chances – make sure a VPN has your World Cup final stream covered ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The World Cup final. One match, one night, and then a four-year wait until the next one. Whatever can go wrong with your stream, tonight is <em>not</em> the night for it.</p><p>The threats are real and they're varied. If you're watching from abroad, geo-restrictions could lock you out of the coverage you'd get at home. If you're on public Wi-Fi – at a bar, a hotel, a fan zone – your connection is shared, unsecured, and unpredictable. And if you're at home on your own broadband, your ISP can see exactly what you're doing – and has every incentive to throttle a 4K stream on one of the busiest nights of the streaming year. </p><p>Using one of the<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPNs</a> solves all three at once, routing your traffic through an encrypted tunnel that sidesteps geo-blocks, secures public connections, and hides your activity from your ISP.</p><p>Norton VPN currently tops our best streaming VPN rankings, and with a deal running right now that brings it to $3.33 per month, there's no better time to get it sorted before kickoff. </p><div class="product"><a data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow" data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow" data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns">How does Norton VPN compare to other top VPNs?</h2><p>Surfshark is our pick for the<a href="https://www.tomsguide.com/best-picks/cheap-vpn"> best cheap VPN</a>, and at $2.49 per month it's a very affordable option – with the added bonus of unlimited device connections that Norton doesn't offer. The gap is streaming consistency. Norton has been the more reliable performer across every major platform in our testing, and for a final that comes around once every four years, that's the gap that matters.</p><p>NordVPN is our top-ranked VPN overall, and earns it – 9,000+ servers across 148 countries, speeds of over 1,000 Mbps, and a near-flawless unblocking record. At $3.49 per month it costs more than Norton's current deal, though, and its 30-day guarantee is half the safety net Norton gives you for a night this important.</p><p>It's also worth remembering that the World Cup final isn't a game you can quietly catch up on tomorrow. The result will be everywhere before you've even found a replay link – on your phone, in your group chats, across every headline. Whatever VPN you go with tonight, just make sure it's one you've actually tested before kickoff.</p><p>For a night with no replay, no second viewing, and a four-year wait for the next one, Norton makes the strongest case.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/one-night-one-match-no-second-chances-make-sure-a-vpn-has-your-world-cup-final-stream-covered</link>
                                                                            <description>
                            <![CDATA[ The World Cup final only comes around once every four years – and a VPN covers every reason your stream might let you down on the night ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dHYLxj4H9XcoXNpsXnRJKZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9iH4PNj7XMYsikqiXvsqh6-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sun, 19 Jul 2026 16:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/9iH4PNj7XMYsikqiXvsqh6-1280-80.png">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Spain vs Argentina - Yamal vs Messi]]></media:description>                                                            <media:text><![CDATA[Spain vs Argentina - Yamal vs Messi]]></media:text>
                                <media:title type="plain"><![CDATA[Spain vs Argentina - Yamal vs Messi]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9iH4PNj7XMYsikqiXvsqh6-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The World Cup final. One match, one night, and then a four-year wait until the next one. Whatever can go wrong with your stream, tonight is <em>not</em> the night for it.</p><p>The threats are real and they're varied. If you're watching from abroad, geo-restrictions could lock you out of the coverage you'd get at home. If you're on public Wi-Fi – at a bar, a hotel, a fan zone – your connection is shared, unsecured, and unpredictable. And if you're at home on your own broadband, your ISP can see exactly what you're doing – and has every incentive to throttle a 4K stream on one of the busiest nights of the streaming year. </p><p>Using one of the<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPNs</a> solves all three at once, routing your traffic through an encrypted tunnel that sidesteps geo-blocks, secures public connections, and hides your activity from your ISP.</p><p>Norton VPN currently tops our best streaming VPN rankings, and with a deal running right now that brings it to $3.33 per month, there's no better time to get it sorted before kickoff. </p><div class="product"><a data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow" data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/OeVyMZ" target="_blank" rel="nofollow" data-dimension112="afeee6ca-8127-11f1-be35-893517ea9642" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns">How does Norton VPN compare to other top VPNs?</h2><p>Surfshark is our pick for the<a href="https://www.tomsguide.com/best-picks/cheap-vpn"> best cheap VPN</a>, and at $2.49 per month it's a very affordable option – with the added bonus of unlimited device connections that Norton doesn't offer. The gap is streaming consistency. Norton has been the more reliable performer across every major platform in our testing, and for a final that comes around once every four years, that's the gap that matters.</p><p>NordVPN is our top-ranked VPN overall, and earns it – 9,000+ servers across 148 countries, speeds of over 1,000 Mbps, and a near-flawless unblocking record. At $3.49 per month it costs more than Norton's current deal, though, and its 30-day guarantee is half the safety net Norton gives you for a night this important.</p><p>It's also worth remembering that the World Cup final isn't a game you can quietly catch up on tomorrow. The result will be everywhere before you've even found a replay link – on your phone, in your group chats, across every headline. Whatever VPN you go with tonight, just make sure it's one you've actually tested before kickoff.</p><p>For a night with no replay, no second viewing, and a four-year wait for the next one, Norton makes the strongest case.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I found a free Mac app that solves the worst thing about USB-C cables ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Over a decade ago, when we first made the transition to USB-C, cable manufacturers promised things would be different. Sure, we no longer had to worry about which side of our cables we plugged in, but now we’re facing a completely different problem: there’s no easy way to know how fast (and capable) our cables really are.</p><p>At least with USB-A to USB-C cables, the larger end often gives us some insights. For instance, USB 2.0 cables are black, USB 3.0 ones are blue, and the less aptly named USB 3.2 Gen 2x2 ones are red. With USB-C to USB-C cables, though, it’s a different story entirely.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/121_xI4Icao" allowfullscreen></iframe></div></div><p>While some manufacturers label the ends of their cables with their respective specs, this isn’t always the case. And depending on where you buy your cables, those labels might not even be accurate. For this reason, some people end up buying dedicated cable testers to see whether that high-speed USB-C cable is actually as fast as it claims to be.</p><p>Just when I was considering buying one of these devices to test my own cables, I stumbled upon an open-source Mac app that can do the exact same thing for free. Here’s what I learned after testing 10 of my own USB-C to USB-C cables, and why I ended up paying the full $13 for the pro version of the <a href="https://www.whatcable.uk/" target="_blank">WhatCable</a> app.</p><h2 id="branded-but-untested">Branded, but untested</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MyP6kabw8myEshRULx9t5A" name="WhatCable-2" alt="A MacBook Pro running the WhatCable app on a desk with 10 different USB-C to USB-C cables laid out in front of it" src="https://cdn.mos.cms.futurecdn.net/MyP6kabw8myEshRULx9t5A.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Although I’ll occasionally order several cables at a time online, for the most part, I’ve amassed a huge collection just by keeping the ones that come with the various devices I review. I have a few generic, rubber ones I use in more complex <a href="https://www.tomsguide.com/computing/monitors/i-spent-a-week-trying-3-different-stacked-monitor-setups-and-this-is-my-favorite">desk setups</a> — mainly behind monitors and tucked under my desk — but over the years, I’ve really come to appreciate braided cables a whole lot more.</p><p>Braided cables not only look better, but they also feel more premium. They’re easier to manage too, since they tend to hold their shape when laid flat across a desk. However, they do have one major downside: a total lack of information.</p><p>With rubber cables, manufacturers will often print their specs directly on the cord itself, where there is more room for text. You see this a lot with <a href="https://www.tomsguide.com/tvs/hdmi-2-1-vs-hdmi-2-2-biggest-differences-explained-and-when-you-should-upgrade">HDMI 2.1</a> cables, which are frequently labeled “Ultra High Speed” to signify they can handle the high bandwidth needed for VRR and 4K/120Hz gaming. Some companies even go the extra mile and include extra details on these labels, like whether or not the cable supports Ethernet, or even the brand name. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="uRvhB683KTwLEc5oqMVY3m" name="Straightening Cables-5" alt="Two braided USB-C cables next to each other with a monitor in the background" src="https://cdn.mos.cms.futurecdn.net/uRvhB683KTwLEc5oqMVY3m.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>When it comes to braided cables, though, you’re lucky to get a brand name stamped on either connector end. Even if they do list specs, it’s usually just a brief note like “5A” for 5 amps or “10 Gbps” for 10 gigabits per second. Then again, this kind of labeling is few and far between; only my cables from Fasgear actually have it.</p><p>So what’s a tech nerd to do? Well, test them, of course. Dedicated USB cable testers can be found for under $10 if you don’t mind a bare PCB, but they can easily run over $100 for premium models with a proper case and a built-in display. </p><p>I was honestly considering picking one up until I saw a few news stories about WhatCable. Given that it's open-source and completely free to use, I decided to test it out for myself before investing in yet another gadget for my home office.</p><p>After downloading and installing the app on my MacBook, I grabbed a few of my favorite braided USB-C to USB-C cables — some labeled and some completely blank — and decided to see what they were actually capable of.</p><h2 id="plug-it-in-plug-it-in">Plug it in, plug it in</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uDAQRZXr5LUSnka8Axbh8F" name="WhatCable-6" alt="A person holding up a TCL NXTPAPER 70 Pro smartphone connected to a MacBook Pro running the WhatCable app" src="https://cdn.mos.cms.futurecdn.net/uDAQRZXr5LUSnka8Axbh8F.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>When I first booted up WhatCable, I was greeted with four sections in the app which correlate with the three Thunderbolt 5 ports and the MagSafe charging port on the <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review">MacBook Pro 16-inch M5 Pro</a> I’m currently using.</p><p>Of course, depending on which of the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a> you have, the sections that show up will vary. I haven’t installed WhatCable on my <a href="https://www.tomsguide.com/computing/desktop-computers/mac-mini-m4-review">Mac mini M4</a> yet, but I’m curious to know whether or not the extra USB-C and USB-A ports on the <a href="https://www.tomsguide.com/computing/apple-desktops/i-thought-i-was-done-customizing-my-mac-mini-m4-until-i-tried-the-last-dock-ill-ever-need">Ugreen Mac Mini M4 Dock & Stand</a> I’m currently using will show up in the app. If you’re as curious as I am about this, let me know in the comments below.</p><p>It’s worth noting that even with cables plugged into your Mac, those sections will be blank until you plug in another device on the other end. Since I’m in the process of testing out the <a href="https://www.tomsguide.com/phones/android-phones/the-tcl-nxtpaper-70-pros-stylus-just-fixed-an-issue-i-never-knew-i-had-with-handwriting-digital-notes">TCL NXTPAPER 70 Pro</a> smartphone, I decided to plug that in first and see what WhatCable had to say about the cable connecting the two. </p><p>Before the app can give you all the details on the cable you’re currently using, you will have to “Allow” the accessory in question — in this case the smartphone — to connect first.</p><p>With that taken care of, I learned that the retractable, 100W Ugreen USB-C to USB-C cable I had connected is only rated at USB 2.0. It can carry 100W of power just like the circular case the cable retracts into says on the side though. </p><p>From the get-go with WhatCable, I was very impressed by all the details the app managed to glean from this cable and how it explained them to me. For instance, this USB 2.0 only cable has a max data transfer rate of 480 Mbps and isn’t capable of “high-speed data” transfer.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yUofSQ3ZeTHvq65C8hmiZL" name="WhatCable-3" alt="A MacBook Pro running the WhatCable app with a Lenovo Legion Tab 3 tablet connected to it" src="https://cdn.mos.cms.futurecdn.net/yUofSQ3ZeTHvq65C8hmiZL.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Since the NXTPAPER 70 Pro is a budget phone after all, for my next test, I decided to bump up the capabilities of the device on the other end. For this, I plugged in my <a href="https://www.tomsguide.com/computing/tablets/i-thought-the-ipad-mini-was-the-perfect-small-tablet-until-i-tried-the-lenovo-legion-tab-3-heres-why">Lenovo Legion Tab 3</a> which I know features USB 3.2 as well as DisplayPort Alt Mode over USB-C since I was able to use it seamlessly with a pair of the <a href="https://www.tomsguide.com/computing/vr-ar/best-smart-glasses">best smart glasses</a> from Xreal. The untested variable here was one of Apple’s own white braided USB-C to USB-C cables that I can’t remember which device it came with.</p><p>With the two connected, WhatCable correctly identified the cable as a USB 2.0 one and it even identified my tablet by its model name, the Legion Tab Y700. One term I hadn’t heard before trying out this app, despite being about as immersed in tech as you can be, is E-marker. </p><p>Apparently, this is a tiny, 1mm² microchip that’s embedded directly into the plastic or metal housing of a USB-C connector. Like a digital passport, these E-marker chips allow the USB-C Power Delivery controllers inside the ports of your laptop and other devices to know exactly what a particular cable is capable of. That way, they send the correct amount of power or data and don’t overload the device on the other end.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3421px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="H3NHTZiqJPqAsyLZ7j8rRS" name="whatcable-technical-details.jpg" alt="A screenshot showing the WhatCable app running on a Mac with the technical details of its cable testing expanded" src="https://cdn.mos.cms.futurecdn.net/H3NHTZiqJPqAsyLZ7j8rRS.png" mos="" align="middle" fullscreen="" width="3421" height="1924" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Even with the free version of WhatCable, you can actually drill down further into each section to learn more about the cable you’re testing. By clicking “Show technical details” you can see all of the supported protocols and standards the current connection can handle. </p><p>For instance here, while the cable itself is bottlenecked at USB 2.0 speeds, the underlying port architecture supports USB2, USB3, power delivery, and video out over DisplayPort. So not only can you use this app to test your cables, but you can also get a clear picture of exactly what your Mac's ports are capable of at the same time. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePakpW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePakpW.js" async></script><h2 id="cables-may-be-faster-than-they-appear">Cables may be faster than they appear</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2kCaQdEetYGYom8rsbtc6X" name="WhatCable-5" alt="A person holding up a portable SSD in front of a MacBook Pro running the WhatCable app to test the speed of the cable connecting the two" src="https://cdn.mos.cms.futurecdn.net/2kCaQdEetYGYom8rsbtc6X.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>For my next round of cable testing, I decided to completely switch up devices. I started with a 1TB M.2 drive I’m using inside this SSD enclosure from Ugreen. Given its rated for speeds up to 10 Gbps, I figured it would be an ideal companion for cable testing and it absolutely was. </p><p>In the WhatCable app, that Fasgear cable — remember the one with 5A, 10Gbps written on the connector? — actually turned out to be as fast as the company claimed. Surprisingly though, according to the app, the E-marker inside it didn’t have a vendor ID, though apparently this is common with genuine cables. Or maybe Fasgear was too humble to take credit for it, I guess we'll never know.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="D2DGGaE9VvEun7XJWCiePa" name="WhatCable-4" alt="A Nintendo Switch 2 Pro Controller connected to a MacBook Pro running the WhatCable app" src="https://cdn.mos.cms.futurecdn.net/D2DGGaE9VvEun7XJWCiePa.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Next up, I decided to test a cable that wasn’t labeled, but I did know its full capabilities based on the description on the box. Alongside its Vagabond mobile game controller, Elo recently sent over all of the accessories to go with it, including the company’s Link <a href="https://www.tomsguide.com/features/thunderbolt-4-vs-usb4-whats-the-difference">Thunderbolt 4</a> cable which can deliver up to 240W of power and 40 Gbps of data.</p><p>I’ve tried it out with other devices and it definitely works as advertised. However, when I used it to connect a <a href="https://www.tomsguide.com/gaming/gaming-peripherals/i-tried-the-nintendo-switch-2-pro-controller-and-it-adds-the-one-feature-ive-always-wanted">Nintendo Switch 2 Pro Controller</a> to my MacBook, it only reached USB 2.0 speeds in WhatCable. </p><p>You see, in this case, it was the controller and not the cable that was the bottleneck. While the console hardware itself handles modern high-speed connections, the Switch 2 Pro Controller internally relies on basic USB 2.0 protocols to process your inputs. Since game controllers prioritize low latency over raw bandwidth, the hardware only needs a tiny data pipe to pass along button presses to your console.</p><p>If you decide to download WhatCable and run into a similar situation where you know you have a high-speed cable but you’re seeing slower speeds while testing, I’d recommend connecting a different device. After I swapped out that controller for my Legion tablet, the app instantly registered the Elo Link cable as a high-speed one.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3452px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="6nDUAxJ5VpM7PhBNPjrtXf" name="whatcable-pro-license" alt="A screenshot showing the extra features and insights available in the pro version of the WhatCable app for Mac" src="https://cdn.mos.cms.futurecdn.net/6nDUAxJ5VpM7PhBNPjrtXf.png" mos="" align="middle" fullscreen="" width="3452" height="1942" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>I learned so much testing the power delivery and data transfer speeds of those 10 cables that I decided to spend the $13 on the pro version of WhatCable and I’m glad I did. </p><p>Not only do you get additional insights like live power monitoring but you can also add the various cables you test to the app and give them names. This way, you get a timeline of when that cable was last used, what it was connected to and whether or not you ran into any issues while using it.</p><h2 id="no-more-second-guessing">No more second guessing</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MTtxYnr3SDGVeo9JDaLa66" name="WhatCable-1-LEDE" alt="A MacBook Pro running the WhatCable app with several cables on top of its keyboard" src="https://cdn.mos.cms.futurecdn.net/MTtxYnr3SDGVeo9JDaLa66.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Over the years, I’ve accumulated a massive collection of cables. From USB-A to USB-C, HDMI to DisplayPort and even some less common ones like USB Type-B and Micro-USB B, I have a lot of cables — and while I try to get rid of the slower and less full-featured ones when I can, I still have too many.</p><p>A few years ago, I decided to repurpose a <a href="https://www.tomsguide.com/opinion/i-used-this-simple-hack-to-tame-my-tangled-box-of-cables">hanging, over-the-door shoe rack</a> to house them all and before I started adding Thunderbolt ones and longer, braided DisplayPort cables to the mix, it worked quite well. Now though, I’m due for a cable audit.</p><p>While I plan on coming up with a solution that’s a bit more elegant than hanging them in various compartments over the back of my closet door, I also want to separate the wheat from the chaff and only keep the best of the best cables. To do that, I need to test them all.</p><p>Although I’ll probably end up buying a standalone tester for some of those more obscure cables and the video ones, WhatCable has done a lot of the groundwork for me. At the same time, it’s made me realize that testing cables isn’t nearly as difficult or time consuming as I thought it would be back when I first looked into getting a dedicated cable tester.</p><p>If you’ve ever plugged in your smartphone, tablet or laptop and seen less than ideal charging or data transfer speeds and you have a Mac, you owe it to yourself to give this open-source app a try. I’m glad I did because when it comes to USB-C to USB-C cables, I’ll never have to doubt their capabilities again.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/home/i-used-this-free-trick-to-finally-make-my-braided-cables-lay-flat">I finally found the secret to perfectly straight braided cables and it doesn't cost a thing</a></li><li><a href="https://www.tomsguide.com/computing/peripherals/i-built-a-rollable-workstation-by-repurposing-this-classic-ikea-cart-and-its-a-game-changer-for-working-from-my-laptop">I used this classic IKEA cart to build a rollable workstation for my laptop and it lets me work comfortably from anywhere</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-spent-a-week-with-dual-apple-studio-displays-and-realized-ive-been-lying-to-myself-about-glossy-screens-for-years">I spent a week with dual Apple Studio Displays and realized I’ve been lying to myself about glossy screens for years</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/software/i-tested-all-my-usb-c-cables-with-this-free-mac-app-instead-of-guessing-each-time-i-plugged-one-in</link>
                                                                            <description>
                            <![CDATA[ The WhatCable app takes the guesswork out of cable speeds and functionality by letting you test cables right from your Mac. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZbVAfjCbPxaJsfkk6wcTUb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2kCaQdEetYGYom8rsbtc6X-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 18 Jul 2026 07:14:16 +0000</pubDate>                                                                                                                                <updated>Mon, 20 Jul 2026 14:16:21 +0000</updated>
                                                                                                                                            <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ anthony.spadafora@futurenet.com (Anthony Spadafora) ]]></author>                    <dc:creator><![CDATA[ Anthony Spadafora ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/z73LEoj7FkUjNG85GcWHtH.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Anthony Spadafora is the managing editor for security and home office furniture at Tom’s Guide where he covers everything from data breaches and malware to password managers and the best way to cover your whole home or business with a strong Wi-Fi signal.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before joining the team, he spent three years covering cybersecurity and B2B tech for ITProPortal while living in South Korea. After moving back to the US. Anthony joined the TechRadar Pro team where he covered these topics along with VPNs, web hosting, online collaboration software and video conferencing for four years. Anthony also has his ears to the ground and is on the lookout for the next major cyberattack or data breach.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Based in Houston, Texas, Anthony also handles VPN testing for both Tom’s Guide and TechRadar. As someone who has worked from home exclusively since 2018, he has reviewed dozens of standing desks as well as office chairs and has taken a closer look at other essential remote working accessories. As part of these reviews, Anthony frequently builds intricate desk setups which is why he’s such a big advocate for cable management and keeping things organized. When he’s not writing, he can be found tinkering with PCs and game consoles, managing cables and making upgrades to his smart home.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2kCaQdEetYGYom8rsbtc6X-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A person holding up a portable SSD in front of a MacBook Pro running the WhatCable app to test the speed of the cable connecting the two]]></media:description>                                                            <media:text><![CDATA[A person holding up a portable SSD in front of a MacBook Pro running the WhatCable app to test the speed of the cable connecting the two]]></media:text>
                                <media:title type="plain"><![CDATA[A person holding up a portable SSD in front of a MacBook Pro running the WhatCable app to test the speed of the cable connecting the two]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2kCaQdEetYGYom8rsbtc6X-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Over a decade ago, when we first made the transition to USB-C, cable manufacturers promised things would be different. Sure, we no longer had to worry about which side of our cables we plugged in, but now we’re facing a completely different problem: there’s no easy way to know how fast (and capable) our cables really are.</p><p>At least with USB-A to USB-C cables, the larger end often gives us some insights. For instance, USB 2.0 cables are black, USB 3.0 ones are blue, and the less aptly named USB 3.2 Gen 2x2 ones are red. With USB-C to USB-C cables, though, it’s a different story entirely.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/121_xI4Icao" allowfullscreen></iframe></div></div><p>While some manufacturers label the ends of their cables with their respective specs, this isn’t always the case. And depending on where you buy your cables, those labels might not even be accurate. For this reason, some people end up buying dedicated cable testers to see whether that high-speed USB-C cable is actually as fast as it claims to be.</p><p>Just when I was considering buying one of these devices to test my own cables, I stumbled upon an open-source Mac app that can do the exact same thing for free. Here’s what I learned after testing 10 of my own USB-C to USB-C cables, and why I ended up paying the full $13 for the pro version of the <a href="https://www.whatcable.uk/" target="_blank">WhatCable</a> app.</p><h2 id="branded-but-untested">Branded, but untested</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MyP6kabw8myEshRULx9t5A" name="WhatCable-2" alt="A MacBook Pro running the WhatCable app on a desk with 10 different USB-C to USB-C cables laid out in front of it" src="https://cdn.mos.cms.futurecdn.net/MyP6kabw8myEshRULx9t5A.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Although I’ll occasionally order several cables at a time online, for the most part, I’ve amassed a huge collection just by keeping the ones that come with the various devices I review. I have a few generic, rubber ones I use in more complex <a href="https://www.tomsguide.com/computing/monitors/i-spent-a-week-trying-3-different-stacked-monitor-setups-and-this-is-my-favorite">desk setups</a> — mainly behind monitors and tucked under my desk — but over the years, I’ve really come to appreciate braided cables a whole lot more.</p><p>Braided cables not only look better, but they also feel more premium. They’re easier to manage too, since they tend to hold their shape when laid flat across a desk. However, they do have one major downside: a total lack of information.</p><p>With rubber cables, manufacturers will often print their specs directly on the cord itself, where there is more room for text. You see this a lot with <a href="https://www.tomsguide.com/tvs/hdmi-2-1-vs-hdmi-2-2-biggest-differences-explained-and-when-you-should-upgrade">HDMI 2.1</a> cables, which are frequently labeled “Ultra High Speed” to signify they can handle the high bandwidth needed for VRR and 4K/120Hz gaming. Some companies even go the extra mile and include extra details on these labels, like whether or not the cable supports Ethernet, or even the brand name. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="uRvhB683KTwLEc5oqMVY3m" name="Straightening Cables-5" alt="Two braided USB-C cables next to each other with a monitor in the background" src="https://cdn.mos.cms.futurecdn.net/uRvhB683KTwLEc5oqMVY3m.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>When it comes to braided cables, though, you’re lucky to get a brand name stamped on either connector end. Even if they do list specs, it’s usually just a brief note like “5A” for 5 amps or “10 Gbps” for 10 gigabits per second. Then again, this kind of labeling is few and far between; only my cables from Fasgear actually have it.</p><p>So what’s a tech nerd to do? Well, test them, of course. Dedicated USB cable testers can be found for under $10 if you don’t mind a bare PCB, but they can easily run over $100 for premium models with a proper case and a built-in display. </p><p>I was honestly considering picking one up until I saw a few news stories about WhatCable. Given that it's open-source and completely free to use, I decided to test it out for myself before investing in yet another gadget for my home office.</p><p>After downloading and installing the app on my MacBook, I grabbed a few of my favorite braided USB-C to USB-C cables — some labeled and some completely blank — and decided to see what they were actually capable of.</p><h2 id="plug-it-in-plug-it-in">Plug it in, plug it in</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uDAQRZXr5LUSnka8Axbh8F" name="WhatCable-6" alt="A person holding up a TCL NXTPAPER 70 Pro smartphone connected to a MacBook Pro running the WhatCable app" src="https://cdn.mos.cms.futurecdn.net/uDAQRZXr5LUSnka8Axbh8F.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>When I first booted up WhatCable, I was greeted with four sections in the app which correlate with the three Thunderbolt 5 ports and the MagSafe charging port on the <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review">MacBook Pro 16-inch M5 Pro</a> I’m currently using.</p><p>Of course, depending on which of the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a> you have, the sections that show up will vary. I haven’t installed WhatCable on my <a href="https://www.tomsguide.com/computing/desktop-computers/mac-mini-m4-review">Mac mini M4</a> yet, but I’m curious to know whether or not the extra USB-C and USB-A ports on the <a href="https://www.tomsguide.com/computing/apple-desktops/i-thought-i-was-done-customizing-my-mac-mini-m4-until-i-tried-the-last-dock-ill-ever-need">Ugreen Mac Mini M4 Dock & Stand</a> I’m currently using will show up in the app. If you’re as curious as I am about this, let me know in the comments below.</p><p>It’s worth noting that even with cables plugged into your Mac, those sections will be blank until you plug in another device on the other end. Since I’m in the process of testing out the <a href="https://www.tomsguide.com/phones/android-phones/the-tcl-nxtpaper-70-pros-stylus-just-fixed-an-issue-i-never-knew-i-had-with-handwriting-digital-notes">TCL NXTPAPER 70 Pro</a> smartphone, I decided to plug that in first and see what WhatCable had to say about the cable connecting the two. </p><p>Before the app can give you all the details on the cable you’re currently using, you will have to “Allow” the accessory in question — in this case the smartphone — to connect first.</p><p>With that taken care of, I learned that the retractable, 100W Ugreen USB-C to USB-C cable I had connected is only rated at USB 2.0. It can carry 100W of power just like the circular case the cable retracts into says on the side though. </p><p>From the get-go with WhatCable, I was very impressed by all the details the app managed to glean from this cable and how it explained them to me. For instance, this USB 2.0 only cable has a max data transfer rate of 480 Mbps and isn’t capable of “high-speed data” transfer.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yUofSQ3ZeTHvq65C8hmiZL" name="WhatCable-3" alt="A MacBook Pro running the WhatCable app with a Lenovo Legion Tab 3 tablet connected to it" src="https://cdn.mos.cms.futurecdn.net/yUofSQ3ZeTHvq65C8hmiZL.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Since the NXTPAPER 70 Pro is a budget phone after all, for my next test, I decided to bump up the capabilities of the device on the other end. For this, I plugged in my <a href="https://www.tomsguide.com/computing/tablets/i-thought-the-ipad-mini-was-the-perfect-small-tablet-until-i-tried-the-lenovo-legion-tab-3-heres-why">Lenovo Legion Tab 3</a> which I know features USB 3.2 as well as DisplayPort Alt Mode over USB-C since I was able to use it seamlessly with a pair of the <a href="https://www.tomsguide.com/computing/vr-ar/best-smart-glasses">best smart glasses</a> from Xreal. The untested variable here was one of Apple’s own white braided USB-C to USB-C cables that I can’t remember which device it came with.</p><p>With the two connected, WhatCable correctly identified the cable as a USB 2.0 one and it even identified my tablet by its model name, the Legion Tab Y700. One term I hadn’t heard before trying out this app, despite being about as immersed in tech as you can be, is E-marker. </p><p>Apparently, this is a tiny, 1mm² microchip that’s embedded directly into the plastic or metal housing of a USB-C connector. Like a digital passport, these E-marker chips allow the USB-C Power Delivery controllers inside the ports of your laptop and other devices to know exactly what a particular cable is capable of. That way, they send the correct amount of power or data and don’t overload the device on the other end.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3421px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="H3NHTZiqJPqAsyLZ7j8rRS" name="whatcable-technical-details.jpg" alt="A screenshot showing the WhatCable app running on a Mac with the technical details of its cable testing expanded" src="https://cdn.mos.cms.futurecdn.net/H3NHTZiqJPqAsyLZ7j8rRS.png" mos="" align="middle" fullscreen="" width="3421" height="1924" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Even with the free version of WhatCable, you can actually drill down further into each section to learn more about the cable you’re testing. By clicking “Show technical details” you can see all of the supported protocols and standards the current connection can handle. </p><p>For instance here, while the cable itself is bottlenecked at USB 2.0 speeds, the underlying port architecture supports USB2, USB3, power delivery, and video out over DisplayPort. So not only can you use this app to test your cables, but you can also get a clear picture of exactly what your Mac's ports are capable of at the same time. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePakpW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePakpW.js" async></script><h2 id="cables-may-be-faster-than-they-appear">Cables may be faster than they appear</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2kCaQdEetYGYom8rsbtc6X" name="WhatCable-5" alt="A person holding up a portable SSD in front of a MacBook Pro running the WhatCable app to test the speed of the cable connecting the two" src="https://cdn.mos.cms.futurecdn.net/2kCaQdEetYGYom8rsbtc6X.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>For my next round of cable testing, I decided to completely switch up devices. I started with a 1TB M.2 drive I’m using inside this SSD enclosure from Ugreen. Given its rated for speeds up to 10 Gbps, I figured it would be an ideal companion for cable testing and it absolutely was. </p><p>In the WhatCable app, that Fasgear cable — remember the one with 5A, 10Gbps written on the connector? — actually turned out to be as fast as the company claimed. Surprisingly though, according to the app, the E-marker inside it didn’t have a vendor ID, though apparently this is common with genuine cables. Or maybe Fasgear was too humble to take credit for it, I guess we'll never know.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="D2DGGaE9VvEun7XJWCiePa" name="WhatCable-4" alt="A Nintendo Switch 2 Pro Controller connected to a MacBook Pro running the WhatCable app" src="https://cdn.mos.cms.futurecdn.net/D2DGGaE9VvEun7XJWCiePa.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Next up, I decided to test a cable that wasn’t labeled, but I did know its full capabilities based on the description on the box. Alongside its Vagabond mobile game controller, Elo recently sent over all of the accessories to go with it, including the company’s Link <a href="https://www.tomsguide.com/features/thunderbolt-4-vs-usb4-whats-the-difference">Thunderbolt 4</a> cable which can deliver up to 240W of power and 40 Gbps of data.</p><p>I’ve tried it out with other devices and it definitely works as advertised. However, when I used it to connect a <a href="https://www.tomsguide.com/gaming/gaming-peripherals/i-tried-the-nintendo-switch-2-pro-controller-and-it-adds-the-one-feature-ive-always-wanted">Nintendo Switch 2 Pro Controller</a> to my MacBook, it only reached USB 2.0 speeds in WhatCable. </p><p>You see, in this case, it was the controller and not the cable that was the bottleneck. While the console hardware itself handles modern high-speed connections, the Switch 2 Pro Controller internally relies on basic USB 2.0 protocols to process your inputs. Since game controllers prioritize low latency over raw bandwidth, the hardware only needs a tiny data pipe to pass along button presses to your console.</p><p>If you decide to download WhatCable and run into a similar situation where you know you have a high-speed cable but you’re seeing slower speeds while testing, I’d recommend connecting a different device. After I swapped out that controller for my Legion tablet, the app instantly registered the Elo Link cable as a high-speed one.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3452px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="6nDUAxJ5VpM7PhBNPjrtXf" name="whatcable-pro-license" alt="A screenshot showing the extra features and insights available in the pro version of the WhatCable app for Mac" src="https://cdn.mos.cms.futurecdn.net/6nDUAxJ5VpM7PhBNPjrtXf.png" mos="" align="middle" fullscreen="" width="3452" height="1942" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>I learned so much testing the power delivery and data transfer speeds of those 10 cables that I decided to spend the $13 on the pro version of WhatCable and I’m glad I did. </p><p>Not only do you get additional insights like live power monitoring but you can also add the various cables you test to the app and give them names. This way, you get a timeline of when that cable was last used, what it was connected to and whether or not you ran into any issues while using it.</p><h2 id="no-more-second-guessing">No more second guessing</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MTtxYnr3SDGVeo9JDaLa66" name="WhatCable-1-LEDE" alt="A MacBook Pro running the WhatCable app with several cables on top of its keyboard" src="https://cdn.mos.cms.futurecdn.net/MTtxYnr3SDGVeo9JDaLa66.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Over the years, I’ve accumulated a massive collection of cables. From USB-A to USB-C, HDMI to DisplayPort and even some less common ones like USB Type-B and Micro-USB B, I have a lot of cables — and while I try to get rid of the slower and less full-featured ones when I can, I still have too many.</p><p>A few years ago, I decided to repurpose a <a href="https://www.tomsguide.com/opinion/i-used-this-simple-hack-to-tame-my-tangled-box-of-cables">hanging, over-the-door shoe rack</a> to house them all and before I started adding Thunderbolt ones and longer, braided DisplayPort cables to the mix, it worked quite well. Now though, I’m due for a cable audit.</p><p>While I plan on coming up with a solution that’s a bit more elegant than hanging them in various compartments over the back of my closet door, I also want to separate the wheat from the chaff and only keep the best of the best cables. To do that, I need to test them all.</p><p>Although I’ll probably end up buying a standalone tester for some of those more obscure cables and the video ones, WhatCable has done a lot of the groundwork for me. At the same time, it’s made me realize that testing cables isn’t nearly as difficult or time consuming as I thought it would be back when I first looked into getting a dedicated cable tester.</p><p>If you’ve ever plugged in your smartphone, tablet or laptop and seen less than ideal charging or data transfer speeds and you have a Mac, you owe it to yourself to give this open-source app a try. I’m glad I did because when it comes to USB-C to USB-C cables, I’ll never have to doubt their capabilities again.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/home/i-used-this-free-trick-to-finally-make-my-braided-cables-lay-flat">I finally found the secret to perfectly straight braided cables and it doesn't cost a thing</a></li><li><a href="https://www.tomsguide.com/computing/peripherals/i-built-a-rollable-workstation-by-repurposing-this-classic-ikea-cart-and-its-a-game-changer-for-working-from-my-laptop">I used this classic IKEA cart to build a rollable workstation for my laptop and it lets me work comfortably from anywhere</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-spent-a-week-with-dual-apple-studio-displays-and-realized-ive-been-lying-to-myself-about-glossy-screens-for-years">I spent a week with dual Apple Studio Displays and realized I’ve been lying to myself about glossy screens for years</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 YouTube settings to change now if you want to escape the algorithm and take control of your feed ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Look, we all enjoy falling down a YouTube rabbit hole or catching up on our favorite creators. What I hate is the feeling that the app is actively trying to hijack my brain while I do it. </p><p>I miss the old YouTube: the fun, slightly chaotic playground where you discovered genuinely cool stuff instead of being force-fed algorithmic slop. Today, the default experience has become an exhausting gauntlet of noisy thumbnail previews, addictive Shorts, and frictionless autoplay timers. </p><p>Google might want you passive and scrolling forever, but a quick two-minute interface tune-up is all it takes to strip away the traps, silence the chaos, and put you back in charge.</p><h2 id="1-stop-the-mindless-shorts-scroll">1. Stop the mindless Shorts scroll</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qrBWuRAYkrKv7DzSgHrxtn" name="Stopping shorts in youtube" alt="Stopping shorts in youtube" src="https://cdn.mos.cms.futurecdn.net/qrBWuRAYkrKv7DzSgHrxtn.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The Shorts shelf is a relentless pipeline designed to catch you off guard, pulling you into an addictive, endless stream of short-form videos when you only meant to watch a single clip. </p><p>Because YouTube deliberately blocks you from deleting the Shorts tab entirely, you have to use the app's internal boundaries to break the loop. Setting your daily viewing limit to absolute zero creates a hard digital speed bump that snaps you out of a mindless scroll the second you slip up.</p><p>To build this circuit breaker, <strong>open the YouTube mobile app, tap your profile icon, hit the settings cog, and select the time management menu</strong>. From there, <strong>tap on the option for shorts feed limit and dial it down to zero minutes</strong>. </p><p>To clean up the rest of your homepage, navigate back to your main feed, scroll down to the shorts shelf, tap the three-dot menu in the upper corner of that section, and select the option to show fewer shorts.</p><h2 id="2-freeze-the-noisy-feed-previews">2. Freeze the noisy feed previews</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Hszag6vnXkt5QUoRERFEPh" name="Turning off playback in feeds toggled off in Youtube" alt="Turning off playback in feeds toggled off in Youtube" src="https://cdn.mos.cms.futurecdn.net/Hszag6vnXkt5QUoRERFEPh.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Few things are more irritating than trying to read a video title while the video itself silently starts playing, flashing captions and demanding your attention before you've even chosen to click. </p><p>Google calls this "playback in feeds," but in reality, it's just a data-hogging gimmick designed to trick your brain into constant stimulation. Turning it off immediately stops the ambient chaos and stops YouTube from secretly burning through your mobile data on videos you never asked to watch.</p><p>To kill it,<strong> tap your Profile icon, open the Settings menu, scroll down to Playback and tap it</strong>. Then <strong>look for Playback in feeds and switch it entirely to Off</strong>. </p><p>If you still want a slight compromise when you're at home, you can select Wi-Fi only, but turning it off completely is the only way to make your homepage truly static again.</p><h2 id="3-kill-the-automatic-play-loop">3. Kill the automatic play loop</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="M4fe7TebAE9r2yxWsqjZJZ" name="Autoplay next video toggled off in youtube" alt="Autoplay next video toggled off in youtube" src="https://cdn.mos.cms.futurecdn.net/M4fe7TebAE9r2yxWsqjZJZ.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Autoplay is designed to take advantage of the fact that it is always easier to do nothing. Before you can even process the video you just finished, a countdown timer appears and shoves you straight into a loosely related clip you never asked for. </p><p>Forcing a hard stop at the end of a video breaks this endless chain, giving you a second to breathe and actually decide how you want to spend your time.</p><p>Fixing this is incredibly simple.<strong> Tap your Profile icon, open the Settings menu, Playback, then toggle off Autoplay next video</strong>. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47bAX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47bAX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/computing/mobile-apps/ive-been-watching-youtube-wrong-this-hidden-mobile-feature-is-a-game-changer">I've been watching YouTube wrong — this hidden mobile feature is a game changer</a></li><li><a href="https://www.tomsguide.com/phones/youtube-now-lets-you-hide-shorts-completely-heres-how-to-turn-them-off">YouTube now lets you hide Shorts completely — here's how to turn them off</a></li><li><a href="https://www.tomsguide.com/computing/vpns/i-hate-youtube-ads-and-i-just-discovered-how-to-get-rid-of-them-without-an-ad-blocker">I hate YouTube ads </a><a href="https://www.tomsguide.com/how-to/how-to-use-youtube-ai-tools-ios-android">—</a> <a href="https://www.tomsguide.com/computing/vpns/i-hate-youtube-ads-and-i-just-discovered-how-to-get-rid-of-them-without-an-ad-blocker">and I just discovered how to get rid of them without an ad-blocker</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/phones/3-youtube-settings-you-need-to-change-now-if-you-want-to-blindside-the-feed-algorithm-and-save-your-brain</link>
                                                                            <description>
                            <![CDATA[ Force YouTube to respect your time. These three hidden feed adjustments mute distracting video previews, stop autoplay loops, and limit Shorts. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zwHMtrCpym8e7WNqL44faa</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FWwpVjTFFmRJhyTs4aRBtd-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 16 Jul 2026 09:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 16 Jul 2026 13:13:56 +0000</updated>
                                                                                                                                            <category><![CDATA[Mobile Apps]]></category>
                                                    <category><![CDATA[Phones]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xHn6RmpEqg87cvtLwrBu9G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/FWwpVjTFFmRJhyTs4aRBtd-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[YouTube logo on phone ]]></media:description>                                                            <media:text><![CDATA[YouTube logo on phone ]]></media:text>
                                <media:title type="plain"><![CDATA[YouTube logo on phone ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FWwpVjTFFmRJhyTs4aRBtd-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Look, we all enjoy falling down a YouTube rabbit hole or catching up on our favorite creators. What I hate is the feeling that the app is actively trying to hijack my brain while I do it. </p><p>I miss the old YouTube: the fun, slightly chaotic playground where you discovered genuinely cool stuff instead of being force-fed algorithmic slop. Today, the default experience has become an exhausting gauntlet of noisy thumbnail previews, addictive Shorts, and frictionless autoplay timers. </p><p>Google might want you passive and scrolling forever, but a quick two-minute interface tune-up is all it takes to strip away the traps, silence the chaos, and put you back in charge.</p><h2 id="1-stop-the-mindless-shorts-scroll">1. Stop the mindless Shorts scroll</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qrBWuRAYkrKv7DzSgHrxtn" name="Stopping shorts in youtube" alt="Stopping shorts in youtube" src="https://cdn.mos.cms.futurecdn.net/qrBWuRAYkrKv7DzSgHrxtn.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The Shorts shelf is a relentless pipeline designed to catch you off guard, pulling you into an addictive, endless stream of short-form videos when you only meant to watch a single clip. </p><p>Because YouTube deliberately blocks you from deleting the Shorts tab entirely, you have to use the app's internal boundaries to break the loop. Setting your daily viewing limit to absolute zero creates a hard digital speed bump that snaps you out of a mindless scroll the second you slip up.</p><p>To build this circuit breaker, <strong>open the YouTube mobile app, tap your profile icon, hit the settings cog, and select the time management menu</strong>. From there, <strong>tap on the option for shorts feed limit and dial it down to zero minutes</strong>. </p><p>To clean up the rest of your homepage, navigate back to your main feed, scroll down to the shorts shelf, tap the three-dot menu in the upper corner of that section, and select the option to show fewer shorts.</p><h2 id="2-freeze-the-noisy-feed-previews">2. Freeze the noisy feed previews</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Hszag6vnXkt5QUoRERFEPh" name="Turning off playback in feeds toggled off in Youtube" alt="Turning off playback in feeds toggled off in Youtube" src="https://cdn.mos.cms.futurecdn.net/Hszag6vnXkt5QUoRERFEPh.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Few things are more irritating than trying to read a video title while the video itself silently starts playing, flashing captions and demanding your attention before you've even chosen to click. </p><p>Google calls this "playback in feeds," but in reality, it's just a data-hogging gimmick designed to trick your brain into constant stimulation. Turning it off immediately stops the ambient chaos and stops YouTube from secretly burning through your mobile data on videos you never asked to watch.</p><p>To kill it,<strong> tap your Profile icon, open the Settings menu, scroll down to Playback and tap it</strong>. Then <strong>look for Playback in feeds and switch it entirely to Off</strong>. </p><p>If you still want a slight compromise when you're at home, you can select Wi-Fi only, but turning it off completely is the only way to make your homepage truly static again.</p><h2 id="3-kill-the-automatic-play-loop">3. Kill the automatic play loop</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="M4fe7TebAE9r2yxWsqjZJZ" name="Autoplay next video toggled off in youtube" alt="Autoplay next video toggled off in youtube" src="https://cdn.mos.cms.futurecdn.net/M4fe7TebAE9r2yxWsqjZJZ.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Autoplay is designed to take advantage of the fact that it is always easier to do nothing. Before you can even process the video you just finished, a countdown timer appears and shoves you straight into a loosely related clip you never asked for. </p><p>Forcing a hard stop at the end of a video breaks this endless chain, giving you a second to breathe and actually decide how you want to spend your time.</p><p>Fixing this is incredibly simple.<strong> Tap your Profile icon, open the Settings menu, Playback, then toggle off Autoplay next video</strong>. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47bAX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47bAX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/computing/mobile-apps/ive-been-watching-youtube-wrong-this-hidden-mobile-feature-is-a-game-changer">I've been watching YouTube wrong — this hidden mobile feature is a game changer</a></li><li><a href="https://www.tomsguide.com/phones/youtube-now-lets-you-hide-shorts-completely-heres-how-to-turn-them-off">YouTube now lets you hide Shorts completely — here's how to turn them off</a></li><li><a href="https://www.tomsguide.com/computing/vpns/i-hate-youtube-ads-and-i-just-discovered-how-to-get-rid-of-them-without-an-ad-blocker">I hate YouTube ads </a><a href="https://www.tomsguide.com/how-to/how-to-use-youtube-ai-tools-ios-android">—</a> <a href="https://www.tomsguide.com/computing/vpns/i-hate-youtube-ads-and-i-just-discovered-how-to-get-rid-of-them-without-an-ad-blocker">and I just discovered how to get rid of them without an ad-blocker</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to download the macOS Golden Gate public beta right now ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.tomsguide.com/computing/macos/macos-27">macOS Golden Gate</a> public beta is now live, giving you a chance to check out all the new features coming to the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a>.</p><p>Expected to launch this Fall, macOS Golden Gate primarily focuses on updating Apple Intelligence and Siri, with the latter now officially called <a href="https://www.tomsguide.com/ai/apple-finally-fixed-siri-heres-all-the-features-for-the-new-siri-ai-announced-at-wwdc">Siri AI</a>. You don’t get many new features, but improvements to Liquid Glass’s readability, easier customization, and smoother performance make for an overall better experience.</p><p>While Apple’s public betas are generally more stable than the developer builds, it might still be buggy and could cause issues for your Mac. I’ve never experienced serious issues using any of these betas over the years, but it’s worth being cautious. With that said, here’s how to download the macOS Golden Gate public beta.</p><h2 id="how-to-download-the-macos-golden-gate-developer-beta">How to download the macOS Golden Gate developer beta</h2><p>Downloading the macOS Golden Gate public beta is pretty simple. First, enroll your Apple ID in <a href="https://go.redirectingat.com/?id=92X1584493&xcust=tomsguide_us_6501826667653749260&xs=1&url=https%3A%2F%2Fbeta.apple.com%2F&sref=https%3A%2F%2Fwww.tomsguide.com" target="_blank">Apple's Beta Program</a> and make sure your Mac is compatible. Here's the full list of Macs that can install and run macOS Golden Gate:</p><ul><li><strong>MacBook Neo (2026)</strong></li><li><strong>MacBook Air with Apple silicon (2020 and later)</strong></li><li><strong>MacBook Pro with Apple silicon (2020 and later)</strong></li><li><strong>iMac with Apple silicon (2021 and later)</strong></li><li><strong>Mac mini with Apple silicon (2020 and later)</strong></li><li><strong>Mac Studio with Apple silicon (2022 and later)</strong></li><li><strong>Mac Pro with Apple silicon (2023 and later)</strong></li></ul><section class="howto-block">                    <h3>1. Open System Settings</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/VwiWUWktjrNv3uJFyMfMpn.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/VwiWUWktjrNv3uJFyMfMpn.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>To start, <strong>open the System Settings menu</strong> on your Mac by <strong>clicking on the Apple icon in the top-left corner</strong>, then <strong>select "System Settings" from the drop-down menu</strong>. Similarly, <strong>you can also click on the gear icon in the dock</strong>.</p></p>                </section><section class="howto-block">                    <h3>2. Navigate to General > Software Update</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/ASM9wMhQK6Vgae6MPBKatV.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/ASM9wMhQK6Vgae6MPBKatV.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>After that, <strong>navigate to the Software Update section of your General settings menu</strong>. To get there, <strong>click General in the left-hand menu of the System Settings menu</strong>, then <strong>click Software Update</strong>.</p></p>                </section><section class="howto-block">                    <h3>3. Enable Beta Updates and select macOS Golden Gate</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/Pgd6SzoQMj9LQ3GEeqnBgC.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/Pgd6SzoQMj9LQ3GEeqnBgC.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Apple)</div></figure>                    <p><p>Then, make sure the Beta Updates setting is switched to On. If it's switched Off, turn it on by clicking the corresponding button. <strong>When the Beta Updates menu opens, select macOS Golden Gate public Beta from the drop-down menu</strong>. Double-check that your Apple account is enrolled in Apple’s Beta Program if you don’t see the beta listed.</p></p>                </section><section class="howto-block">                    <h3>4. Install the beta</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/vuXcGtL37LYW58XQFZLKmg.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/vuXcGtL37LYW58XQFZLKmg.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Apple)</div></figure>                    <p><p>Once that's done, <strong>you should see the macOS 27 public Beta appear as available to download</strong>. All you have to do now is <strong>hit the Upgrade Now button to start downloading</strong>, and you're all set!</p></p>                </section><p>That’s all that’s required to download the macOS Golden Gate public beta. Your Mac will restart once the download finishes. After that, you can start trying out all the new features. Depending on your connection speed, the download might take a few minutes, so be patient.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/macos/i-just-downloaded-macos-27-public-beta-skip-the-ai-and-try-these-5-hidden-features-instead">I just downloaded macOS 27 public beta — skip Siri AI and try these 5 hidden features instead</a></li><li><a href="https://www.tomsguide.com/computing/laptops/haptic-vs-mechanical-trackpads-i-put-them-both-through-a-gauntlet-and-one-almost-made-me-throw-my-laptop-into-the-sun">Haptic vs. Mechanical trackpads: I put them both through a gauntlet, and one almost made me throw my laptop into the sun</a></li><li><a href="https://www.tomsguide.com/computing/monitors/exclusive-i-asked-lenovos-gm-to-predict-the-future-of-monitors-and-its-the-end-of-our-chaotic-cable-cluttered-desks-and-monitors-that-fry-your-retinas">Exclusive: I asked Lenovo’s GM to predict the future of monitors, and it's the end of our chaotic, cable-cluttered desks and monitors that fry your retinas</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/how-to-download-the-macos-golden-gate-public-beta-right-now</link>
                                                                            <description>
                            <![CDATA[ Apple's macOS Golden Gate public beta is now available. Here's how you can download it and test out all the new Apple Intelligence features for Macs. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Nqh3m4FZxMAgw4pbpXa4vh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6onBfgc6zZedV7zQBmGFw8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 14 Jul 2026 23:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[MacBooks]]></category>
                                                    <category><![CDATA[Apple Desktops]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Desktop Computers]]></category>
                                                                                                <author><![CDATA[ tony.polanco@futurenet.com (Tony Polanco) ]]></author>                    <dc:creator><![CDATA[ Tony Polanco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atzRNqFt5wYgEUPBDahWsD.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/6onBfgc6zZedV7zQBmGFw8-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[macOS 27]]></media:description>                                                            <media:text><![CDATA[macOS 27]]></media:text>
                                <media:title type="plain"><![CDATA[macOS 27]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6onBfgc6zZedV7zQBmGFw8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.tomsguide.com/computing/macos/macos-27">macOS Golden Gate</a> public beta is now live, giving you a chance to check out all the new features coming to the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a>.</p><p>Expected to launch this Fall, macOS Golden Gate primarily focuses on updating Apple Intelligence and Siri, with the latter now officially called <a href="https://www.tomsguide.com/ai/apple-finally-fixed-siri-heres-all-the-features-for-the-new-siri-ai-announced-at-wwdc">Siri AI</a>. You don’t get many new features, but improvements to Liquid Glass’s readability, easier customization, and smoother performance make for an overall better experience.</p><p>While Apple’s public betas are generally more stable than the developer builds, it might still be buggy and could cause issues for your Mac. I’ve never experienced serious issues using any of these betas over the years, but it’s worth being cautious. With that said, here’s how to download the macOS Golden Gate public beta.</p><h2 id="how-to-download-the-macos-golden-gate-developer-beta">How to download the macOS Golden Gate developer beta</h2><p>Downloading the macOS Golden Gate public beta is pretty simple. First, enroll your Apple ID in <a href="https://go.redirectingat.com/?id=92X1584493&xcust=tomsguide_us_6501826667653749260&xs=1&url=https%3A%2F%2Fbeta.apple.com%2F&sref=https%3A%2F%2Fwww.tomsguide.com" target="_blank">Apple's Beta Program</a> and make sure your Mac is compatible. Here's the full list of Macs that can install and run macOS Golden Gate:</p><ul><li><strong>MacBook Neo (2026)</strong></li><li><strong>MacBook Air with Apple silicon (2020 and later)</strong></li><li><strong>MacBook Pro with Apple silicon (2020 and later)</strong></li><li><strong>iMac with Apple silicon (2021 and later)</strong></li><li><strong>Mac mini with Apple silicon (2020 and later)</strong></li><li><strong>Mac Studio with Apple silicon (2022 and later)</strong></li><li><strong>Mac Pro with Apple silicon (2023 and later)</strong></li></ul><section class="howto-block">                    <h3>1. Open System Settings</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/VwiWUWktjrNv3uJFyMfMpn.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/VwiWUWktjrNv3uJFyMfMpn.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>To start, <strong>open the System Settings menu</strong> on your Mac by <strong>clicking on the Apple icon in the top-left corner</strong>, then <strong>select "System Settings" from the drop-down menu</strong>. Similarly, <strong>you can also click on the gear icon in the dock</strong>.</p></p>                </section><section class="howto-block">                    <h3>2. Navigate to General > Software Update</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/ASM9wMhQK6Vgae6MPBKatV.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/ASM9wMhQK6Vgae6MPBKatV.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>After that, <strong>navigate to the Software Update section of your General settings menu</strong>. To get there, <strong>click General in the left-hand menu of the System Settings menu</strong>, then <strong>click Software Update</strong>.</p></p>                </section><section class="howto-block">                    <h3>3. Enable Beta Updates and select macOS Golden Gate</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/Pgd6SzoQMj9LQ3GEeqnBgC.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/Pgd6SzoQMj9LQ3GEeqnBgC.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Apple)</div></figure>                    <p><p>Then, make sure the Beta Updates setting is switched to On. If it's switched Off, turn it on by clicking the corresponding button. <strong>When the Beta Updates menu opens, select macOS Golden Gate public Beta from the drop-down menu</strong>. Double-check that your Apple account is enrolled in Apple’s Beta Program if you don’t see the beta listed.</p></p>                </section><section class="howto-block">                    <h3>4. Install the beta</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/vuXcGtL37LYW58XQFZLKmg.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/vuXcGtL37LYW58XQFZLKmg.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Apple)</div></figure>                    <p><p>Once that's done, <strong>you should see the macOS 27 public Beta appear as available to download</strong>. All you have to do now is <strong>hit the Upgrade Now button to start downloading</strong>, and you're all set!</p></p>                </section><p>That’s all that’s required to download the macOS Golden Gate public beta. Your Mac will restart once the download finishes. After that, you can start trying out all the new features. Depending on your connection speed, the download might take a few minutes, so be patient.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/macos/i-just-downloaded-macos-27-public-beta-skip-the-ai-and-try-these-5-hidden-features-instead">I just downloaded macOS 27 public beta — skip Siri AI and try these 5 hidden features instead</a></li><li><a href="https://www.tomsguide.com/computing/laptops/haptic-vs-mechanical-trackpads-i-put-them-both-through-a-gauntlet-and-one-almost-made-me-throw-my-laptop-into-the-sun">Haptic vs. Mechanical trackpads: I put them both through a gauntlet, and one almost made me throw my laptop into the sun</a></li><li><a href="https://www.tomsguide.com/computing/monitors/exclusive-i-asked-lenovos-gm-to-predict-the-future-of-monitors-and-its-the-end-of-our-chaotic-cable-cluttered-desks-and-monitors-that-fry-your-retinas">Exclusive: I asked Lenovo’s GM to predict the future of monitors, and it's the end of our chaotic, cable-cluttered desks and monitors that fry your retinas</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I just downloaded macOS 27 public beta — skip Siri AI and try these 5 hidden features instead ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It’s official — the macOS 27 Golden Gate public beta has just launched, and with it we’re getting a slew of new features! Not that you’d know, because back at WWDC, Apple couldn’t stop talking about the new Siri AI that’s deeply integrated into everything here.</p><p>So while I’ll leave the <a href="https://www.tomsguide.com/computing/macos/macos-golden-gate-public-beta-hands-on-preview">hands-on impressions</a> of the OS and its big features to my boy Tony, I want to tell you about the lesser known additions that you should definitely be trying out first. Because this new version is about <strong>a lot </strong>more than just AI.</p><h2 id="refining-liquid-glass-improving-the-ui">Refining Liquid Glass - improving the UI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kbVSEAeYD7AF3N9vqnbxhG" name="macOS 27 liquid glass slider" alt="macOS 27 Liquid Glass" src="https://cdn.mos.cms.futurecdn.net/kbVSEAeYD7AF3N9vqnbxhG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide / Apple)</span></figcaption></figure><p>Let’s be real. Liquid Glass had a rough start. Personally, I thought it was kind of cool, but I can totally understand how it impacted readability and consistency of design across the OS. Apple’s addressed this with some small but impactful changes that bring it all together nicely.</p><p>First, there’s now a Liquid Glass slider to adjust how see-through the glassy elements are — great for improving legibility. Then there’s uniformity across macOS toolbars for more logical use, and the rounded corners of all the app windows match up now.</p><p>Like I said, it’s all small tweaks. But put them all together (as well as smoother animations for Mission Control and Spaces), and the end result is a nicer-feeling UI to get around.</p><h2 id="faster-airdrop">Faster AirDrop</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:766px;"><p class="vanilla-image-block" style="padding-top:63.71%;"><img id="rcdYtJtmeAot6ukrUGkTQ5" name="Screen Shot 2019-10-04 at 1.04.13 PM.png" alt="Airdrop on Mac" src="https://cdn.mos.cms.futurecdn.net/rcdYtJtmeAot6ukrUGkTQ5.png" mos="" align="middle" fullscreen="" width="766" height="488" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There’s been general performance upgrades across the board, as it seems Apple has gone all “Snow Leopard” on this version by looking under the hood and tweaking the efficiency of tasks.</p><p>But the real feature here is that AirDrop is going to get a turboboost. How much faster? I don’t know — but by optimizing the underlying network protocols, wireless file transfers are speedier. For someone who has a Final Cut Pro workload between my iPhone and MacBook Pro, this is huge for high capacity files.</p><p>Beyond this, Apple says you can look forward to faster app opens and JavaScript improvements to make Safari browsing a whole lot smoother. Speaking of Safari…</p><h2 id="safari-s-big-upgrade">Safari’s big upgrade</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="j37YCKEsDn3UwjGEkWTuz9" name="macos 27" alt="macos 27" src="https://cdn.mos.cms.futurecdn.net/j37YCKEsDn3UwjGEkWTuz9.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Safari is catching up with the likes of Chrome and Opera with some AI-powered features like automatic tab organization, but Apple’s browser facelift goes deeper than that.</p><p>First up is probably a significant one for those who has gig tickets to buy or want to wait for a price drop. With Notify Me, you can set some conditions to get a notification whenever the content on a webpage changes.</p><p>Second, with a little help from Apple Intelligence, you can use natural language to describe a browser extension, and Safari will build it. So whether it’s a Recipe Keeper like in Apple’s example or maybe a Tom’s Guide story feed, you’re not limited to the developer range of extensions.</p><p>Oh, and shout-out to one of the underrated game changers here — swipe down to refresh. Just like in iOS, you can scroll up on a webpage to trigger a page refresh, and bringing that intuitive piece of UI design to the desktop experience feels so natural in a “why didn’t they think of that before” kind of way.</p><h2 id="drawing-in-messages-notes-and-freeform">Drawing in Messages, Notes and Freeform</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2732px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="AhhTuxyCS296pURQkU9qtk" name="applefreeform2.png" alt="Apple Freeform app showing side-by-side asset retrieval" src="https://cdn.mos.cms.futurecdn.net/AhhTuxyCS296pURQkU9qtk.png" mos="" align="middle" fullscreen="" width="2732" height="1537" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On iPhone and iPad, you can draw directly into Notes and Freeform, and this feature is now (finally) coming to Mac too. Using the touchpad as a canvas, you can sketch out your mini masterpiece — plus this drawing app is also being added directly into iMessage too for a huge upgrade over the handwriting feature you used to get.</p><p>Now, this is definitely an understated feature that you may only use once or twice (depending on what your use cases are of course), but I see this as something different. Apple has snuck in a couple of things that I think may be setting the stage for some new devices coming in.</p><p>Having expanded drawing capabilities in your OS? To me, that feels like something more purpose-built for a touchscreen device…maybe the <a href="https://www.tomsguide.com/computing/laptops/macbook-ultra-everything-we-know-so-far">MacBook Ultra</a>?</p><h2 id="iphone-mirroring-that-teases-a-foldable">iPhone mirroring that teases a foldable</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="46TQG8D24qBjR9HsaRj4XG" name="Article - 3.png" alt="iPhone Mirroring on MacOs Sequoia" src="https://cdn.mos.cms.futurecdn.net/46TQG8D24qBjR9HsaRj4XG.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And this is the other feature that I believe is teasing a new device. iPhone mirroring has been one of the biggest features since its debut for me — giving me rapid access to my phone’s apps without needing to break my focus on my MacBook screen to pull out another device (and inevitably go down a TikTok wormhole).</p><p>With Golden Gate, you can watch DRM-protected video on your big screen now (Netflix content for example), and you can get into your iPhone’s Control Center. </p><p>But biggest of all, you can resize the app’s screen to be bigger and see more content on the screen.</p><p>Now again, this seems to be a weird addition. Why put that demand for responsive app design in iPhone mirroring? Well, you <em>may </em>have heard about this new foldable <a href="https://www.tomsguide.com/phones/iphones/iphone-ultra-vs-iphone-18-pro-max-five-biggest-expected-differences">iPhone Ultra</a> coming up…this seems too convenient to me.</p><h2 id="outlook">Outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="krBLMKLEe5WDr9uGduZ6w9" name="macos 27" alt="macos 27" src="https://cdn.mos.cms.futurecdn.net/krBLMKLEe5WDr9uGduZ6w9.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>All-in-all, this isn’t necessarily the most feature-packed macOS update, but Golden Gate does sharpen some things up while also giving us what I feel are some future hardware teases.</p><p>These alongside a complete rebuild in the way search works across Spotlight, Photos and Mail, the tweaks here will be felt throughout by both casual and pro users alike.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/laptops/haptic-vs-mechanical-trackpads-i-put-them-both-through-a-gauntlet-and-one-almost-made-me-throw-my-laptop-into-the-sun">Haptic vs. Mechanical trackpads: I put them both through a gauntlet, and one almost made me throw my laptop into the sun</a></li><li><a href="https://www.tomsguide.com/computing/monitors/exclusive-i-asked-lenovos-gm-to-predict-the-future-of-monitors-and-its-the-end-of-our-chaotic-cable-cluttered-desks-and-monitors-that-fry-your-retinas">Exclusive: I asked Lenovo’s GM to predict the future of monitors, and it's the end of our chaotic, cable-cluttered desks and monitors that fry your retinas</a></li><li><a href="https://www.tomsguide.com/best-picks/best-macbook">Which MacBook should you buy in 2026? I ranked the 5 best Apple laptops for every need</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/i-just-downloaded-macos-27-public-beta-skip-the-ai-and-try-these-5-hidden-features-instead</link>
                                                                            <description>
                            <![CDATA[ The macOS 27 Golden Gate public beta is here. Beyond Siri AI, here are the 5 best hidden features, design fixes, and Safari updates you should try first. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">sFnK3g3qiEmrYh8P4J7LGJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/otQPhMJG3G3aoN2Ddhr4zX-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Tue, 14 Jul 2026 06:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/otQPhMJG3G3aoN2Ddhr4zX-1280-80.png">
                                                            <media:credit><![CDATA[Apple ]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Siri on Mac]]></media:description>                                                            <media:text><![CDATA[Siri on Mac]]></media:text>
                                <media:title type="plain"><![CDATA[Siri on Mac]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/otQPhMJG3G3aoN2Ddhr4zX-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It’s official — the macOS 27 Golden Gate public beta has just launched, and with it we’re getting a slew of new features! Not that you’d know, because back at WWDC, Apple couldn’t stop talking about the new Siri AI that’s deeply integrated into everything here.</p><p>So while I’ll leave the <a href="https://www.tomsguide.com/computing/macos/macos-golden-gate-public-beta-hands-on-preview">hands-on impressions</a> of the OS and its big features to my boy Tony, I want to tell you about the lesser known additions that you should definitely be trying out first. Because this new version is about <strong>a lot </strong>more than just AI.</p><h2 id="refining-liquid-glass-improving-the-ui">Refining Liquid Glass - improving the UI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kbVSEAeYD7AF3N9vqnbxhG" name="macOS 27 liquid glass slider" alt="macOS 27 Liquid Glass" src="https://cdn.mos.cms.futurecdn.net/kbVSEAeYD7AF3N9vqnbxhG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide / Apple)</span></figcaption></figure><p>Let’s be real. Liquid Glass had a rough start. Personally, I thought it was kind of cool, but I can totally understand how it impacted readability and consistency of design across the OS. Apple’s addressed this with some small but impactful changes that bring it all together nicely.</p><p>First, there’s now a Liquid Glass slider to adjust how see-through the glassy elements are — great for improving legibility. Then there’s uniformity across macOS toolbars for more logical use, and the rounded corners of all the app windows match up now.</p><p>Like I said, it’s all small tweaks. But put them all together (as well as smoother animations for Mission Control and Spaces), and the end result is a nicer-feeling UI to get around.</p><h2 id="faster-airdrop">Faster AirDrop</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:766px;"><p class="vanilla-image-block" style="padding-top:63.71%;"><img id="rcdYtJtmeAot6ukrUGkTQ5" name="Screen Shot 2019-10-04 at 1.04.13 PM.png" alt="Airdrop on Mac" src="https://cdn.mos.cms.futurecdn.net/rcdYtJtmeAot6ukrUGkTQ5.png" mos="" align="middle" fullscreen="" width="766" height="488" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There’s been general performance upgrades across the board, as it seems Apple has gone all “Snow Leopard” on this version by looking under the hood and tweaking the efficiency of tasks.</p><p>But the real feature here is that AirDrop is going to get a turboboost. How much faster? I don’t know — but by optimizing the underlying network protocols, wireless file transfers are speedier. For someone who has a Final Cut Pro workload between my iPhone and MacBook Pro, this is huge for high capacity files.</p><p>Beyond this, Apple says you can look forward to faster app opens and JavaScript improvements to make Safari browsing a whole lot smoother. Speaking of Safari…</p><h2 id="safari-s-big-upgrade">Safari’s big upgrade</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="j37YCKEsDn3UwjGEkWTuz9" name="macos 27" alt="macos 27" src="https://cdn.mos.cms.futurecdn.net/j37YCKEsDn3UwjGEkWTuz9.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Safari is catching up with the likes of Chrome and Opera with some AI-powered features like automatic tab organization, but Apple’s browser facelift goes deeper than that.</p><p>First up is probably a significant one for those who has gig tickets to buy or want to wait for a price drop. With Notify Me, you can set some conditions to get a notification whenever the content on a webpage changes.</p><p>Second, with a little help from Apple Intelligence, you can use natural language to describe a browser extension, and Safari will build it. So whether it’s a Recipe Keeper like in Apple’s example or maybe a Tom’s Guide story feed, you’re not limited to the developer range of extensions.</p><p>Oh, and shout-out to one of the underrated game changers here — swipe down to refresh. Just like in iOS, you can scroll up on a webpage to trigger a page refresh, and bringing that intuitive piece of UI design to the desktop experience feels so natural in a “why didn’t they think of that before” kind of way.</p><h2 id="drawing-in-messages-notes-and-freeform">Drawing in Messages, Notes and Freeform</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2732px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="AhhTuxyCS296pURQkU9qtk" name="applefreeform2.png" alt="Apple Freeform app showing side-by-side asset retrieval" src="https://cdn.mos.cms.futurecdn.net/AhhTuxyCS296pURQkU9qtk.png" mos="" align="middle" fullscreen="" width="2732" height="1537" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On iPhone and iPad, you can draw directly into Notes and Freeform, and this feature is now (finally) coming to Mac too. Using the touchpad as a canvas, you can sketch out your mini masterpiece — plus this drawing app is also being added directly into iMessage too for a huge upgrade over the handwriting feature you used to get.</p><p>Now, this is definitely an understated feature that you may only use once or twice (depending on what your use cases are of course), but I see this as something different. Apple has snuck in a couple of things that I think may be setting the stage for some new devices coming in.</p><p>Having expanded drawing capabilities in your OS? To me, that feels like something more purpose-built for a touchscreen device…maybe the <a href="https://www.tomsguide.com/computing/laptops/macbook-ultra-everything-we-know-so-far">MacBook Ultra</a>?</p><h2 id="iphone-mirroring-that-teases-a-foldable">iPhone mirroring that teases a foldable</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="46TQG8D24qBjR9HsaRj4XG" name="Article - 3.png" alt="iPhone Mirroring on MacOs Sequoia" src="https://cdn.mos.cms.futurecdn.net/46TQG8D24qBjR9HsaRj4XG.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And this is the other feature that I believe is teasing a new device. iPhone mirroring has been one of the biggest features since its debut for me — giving me rapid access to my phone’s apps without needing to break my focus on my MacBook screen to pull out another device (and inevitably go down a TikTok wormhole).</p><p>With Golden Gate, you can watch DRM-protected video on your big screen now (Netflix content for example), and you can get into your iPhone’s Control Center. </p><p>But biggest of all, you can resize the app’s screen to be bigger and see more content on the screen.</p><p>Now again, this seems to be a weird addition. Why put that demand for responsive app design in iPhone mirroring? Well, you <em>may </em>have heard about this new foldable <a href="https://www.tomsguide.com/phones/iphones/iphone-ultra-vs-iphone-18-pro-max-five-biggest-expected-differences">iPhone Ultra</a> coming up…this seems too convenient to me.</p><h2 id="outlook">Outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="krBLMKLEe5WDr9uGduZ6w9" name="macos 27" alt="macos 27" src="https://cdn.mos.cms.futurecdn.net/krBLMKLEe5WDr9uGduZ6w9.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>All-in-all, this isn’t necessarily the most feature-packed macOS update, but Golden Gate does sharpen some things up while also giving us what I feel are some future hardware teases.</p><p>These alongside a complete rebuild in the way search works across Spotlight, Photos and Mail, the tweaks here will be felt throughout by both casual and pro users alike.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/laptops/haptic-vs-mechanical-trackpads-i-put-them-both-through-a-gauntlet-and-one-almost-made-me-throw-my-laptop-into-the-sun">Haptic vs. Mechanical trackpads: I put them both through a gauntlet, and one almost made me throw my laptop into the sun</a></li><li><a href="https://www.tomsguide.com/computing/monitors/exclusive-i-asked-lenovos-gm-to-predict-the-future-of-monitors-and-its-the-end-of-our-chaotic-cable-cluttered-desks-and-monitors-that-fry-your-retinas">Exclusive: I asked Lenovo’s GM to predict the future of monitors, and it's the end of our chaotic, cable-cluttered desks and monitors that fry your retinas</a></li><li><a href="https://www.tomsguide.com/best-picks/best-macbook">Which MacBook should you buy in 2026? I ranked the 5 best Apple laptops for every need</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ macOS Golden Gate public beta hands-on preview: Apple Intelligence is finally useful ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The public beta for macOS 27, also known as <a href="https://www.tomsguide.com/computing/macos/macos-27">macOS Golden Gate</a>, is here! While this update isn’t as monumental as <a href="https://www.tomsguide.com/computing/macos/macos-sequoia">macOS Sequoia</a>, it delivers a slew of AI features and smoother overall performance, making the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a> more personal and streamlined.</p><p>I’ve had the <a href="https://www.tomsguide.com/computing/macos/the-macos-golden-gate-developer-beta-is-live-heres-how-to-download-it">developer beta of macOS Golden Gate</a> installed for a month, with the latest version close to what the public beta is offering. While the beta is still very much a work in progress, I’ve had a smooth time using it and testing out its new features.</p><p>If you’re signed into the (free) <a href="https://beta.apple.com/" target="_blank">Apple beta software program</a>, you can try the public beta of macOS Golden Gate right now. Here are my thoughts on the beta and the key features worth checking out.</p><h3 class="article-body__section" id="section-macos-golden-gate-public-beta-hands-on-supported-macs"><span>macOS Golden Gate public beta hands-on: Supported Macs</span></h3><p>The Intel era is over, as macOS Golden Gate doesn’t run on those older machines. Here is a complete list of Macs that support Golden Gate.</p><ul><li><strong>MacBook Neo (2026)</strong></li><li><strong>MacBook Air with Apple silicon (2020 and later)</strong></li><li><strong>MacBook Pro with Apple silicon (2020 and later)</strong></li><li><strong>iMac with Apple silicon (2021 and later)</strong></li><li><strong>Mac mini with Apple silicon (2020 and later)</strong></li><li><strong>Mac Studio with Apple silicon (2022 and later)</strong></li><li><strong>Mac Pro with Apple silicon (2023 and later)</strong></li></ul><h3 class="article-body__section" id="section-macos-golden-gate-public-beta-hands-on-features"><span>macOS Golden Gate public beta hands-on: Features</span></h3><p>Most of macOS Golden Gate’s new features center around updated versions of Siri and Apple Intelligence. These are the ones that have stood out the most during my testing.</p><h2 id="siri-ai">Siri AI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3777px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="RJQ9US5qZUL5xu3z9FTSpn" name="macOS 27 Golden Gate Siri AI-5" alt="Siri AI on macOS 27" src="https://cdn.mos.cms.futurecdn.net/RJQ9US5qZUL5xu3z9FTSpn.jpg" mos="" align="middle" fullscreen="" width="3777" height="2125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>There is now a dedicated <a href="https://www.tomsguide.com/ai/apple-intelligence/i-spent-48-hours-with-siri-ai-on-macos-golden-gate-heres-what-i-like-and-what-i-dont">Siri AI app for macOS Golden Gate</a> that functions similarly to chatbots like ChatGPT and <a href="https://www.tomsguide.com/ai/google-gemini/google-gemini-everything-you-need-to-know">Google Gemini</a>. This app is also available on <a href="https://www.tomsguide.com/computing/vr-ar/ipados-27-everything-coming-to-the-apples-beloved-tablets">iPadOS 27</a> and <a href="https://www.tomsguide.com/phones/iphones/ios-27-11-biggest-features-coming-to-your-iphone">iOS 27,</a> and is arguably the biggest new feature for the Apple devices that support it.</p><p>You can access the Siri AI app either by clicking it in the Dock or in the Menu bar. You can also bring it up by pulling up Spotlight. Doing this brings up a dedicated chat window where you can ask Siri AI questions or just talk to it about whatever’s on your mind. Again, this functions exactly like the chatbots you’re already familiar with.</p><p>And since Siri AI is now baked into the operating system, it can do more than just chat. For example, if you’re looking at a schedule, you’ll see an “add to calendar” button appear. I’ve even had this happen when I suggest a date/time to meet with friends. When you right-click on folders, files, or apps, you’ll often see an “Ask Siri” option at the very top, where you can begin asking questions about whatever you’re highlighting.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5184px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zW8Y5gvHBBuuUMEQHd93FL" name="macOS 27 Golden Gate Siri AI-LIST2" alt="Siri AI on macOS 27" src="https://cdn.mos.cms.futurecdn.net/zW8Y5gvHBBuuUMEQHd93FL.jpg" mos="" align="middle" fullscreen="" width="5184" height="2916" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>You can even create Shortcuts by typing or speaking what you want instead of manually building complications. While I wouldn’t call this vibe coding, it can feel that way since you’re using natural language.</p><p>For those in the Apple ecosystem, Siri AI can be more useful than other chatbots because it’s integrated into the system. However, third-party integrations are still a work in progress, so Siri AI’s usability for you might be limited if you use Google apps like Gmail, since Siri AI doesn’t work with them (yet).</p><h2 id="liquid-glass-slider">Liquid Glass slider</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kbVSEAeYD7AF3N9vqnbxhG" name="macOS 27 liquid glass slider" alt="macOS 27 Liquid Glass" src="https://cdn.mos.cms.futurecdn.net/kbVSEAeYD7AF3N9vqnbxhG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide / Apple)</span></figcaption></figure><p>If you’re not a fan of the <a href="https://www.tomsguide.com/phones/iphones/ios-26s-liquid-glass-design-brings-big-changes-to-your-iphone-heres-everything-coming-in-the-public-beta">Liquid Glass UI</a>, you’ll be happy to know there’s now a slider to adjust its opacity. It lets you dial the effect up or down to your liking, and I’m surprised it took this long to implement it this way.</p><p>Beyond the slider, you’ll notice that more complex background visuals appear more diffused, which improves text readability (which was a big issue for some). The edges of icons are also more pronounced, so they stand out more from the background. All app windows now have a uniform corner radius to help them pop out as well.</p><p>I've never had a problem with Liquid Glass because I think it’s an interesting visual effect. That said, I’m glad that folks can now fine-tune it to their liking. The slider is especially neat because it’s easy to use and makes it clear how much of a difference there is when you go from one extreme to the other.</p><h2 id="spatial-reframing">Spatial Reframing</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2vyL4w3WxVGjQJPBPpoqq5.jpg" alt="MacBook Air M5" /><figcaption><small role="credit">Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vUC8TZ34UKYuqHaQC7jN6R.jpg" alt="MacBook Air M5" /><figcaption>A MacBook Air after Reframe<small role="credit">Tom's Guide</small></figcaption></figure></figure><p>Spatial Reframing isn’t exclusive to macOS Golden Gate, but since the <a href="https://www.tomsguide.com/phones/iphones/apples-ai-powered-spatial-reframing-tool-just-stole-the-show-at-wwdc"><u>Reframe tool stole the show at WWDC</u></a>, it’s a feature worth spotlighting if you take a lot of photos.</p><p>As its name suggests, Reframe lets you reframe existing photos and adjust the perspective to your liking. This can be especially handy if you need to take photos in a hurry, as you can come back to them later to fix them.</p><p>After you select Reframe in the new Tools option in Photos’ editing mode, Apple Intelligence scans the photo you’ve selected. After that, you can pull your finger across the touchpad to change the perspective. Sliders on the side also give you more precise control over the angle, orientation, or size. When you’re done, the AI shifts things around to fill in any blanks.</p><p>This isn’t a feature I use often since I like photos in their original form, even if they’re not perfect. That said, I can’t knock the results, as Reframe does an excellent job of living up to its name. And to be fair, the changes made don’t radically alter the image — you just get a better version of what you’ve already snapped.</p><h3 class="article-body__section" id="section-macos-golden-gate-public-beta-hands-on-outlook"><span>macOS Golden Gate public beta hands-on: Outlook</span></h3><p>Apple Intelligence didn’t live up to the hype after it was first announced, but it’s now living up to its potential on Macs and the other Apple devices it can run on. If you’re a big AI user already, then macOS Golden Gate could arguably be a significant update. I imagine Siri AI will only improve between now and the OS’ expected fall launch.</p><p>Other features such as the more customizable Liquid Glass UI and Spatial Reframing might not be monumental game-changers, but they’re nice additions regardless. Apple also said there’s improved performance on devices using the upcoming operating systems, but during my time with macOS Golden Gate, I haven’t seen any noticeable improvements or hiccups on that front.</p><p>Apple’s new operating systems are still being worked on, so things could change before the official launch. I’ll have a full review for you then, but based on my experience with macOS Golden Gate, I’ll say that the new features are a step in the right direction.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/apple-intelligence/the-apple-car-development-may-not-have-been-as-big-a-waste-of-time-and-money-as-everyone-thought-in-fact-it-may-be-the-thing-that-enabled-apples-new-ai-boom">The Apple Car development may not have been a waste of time</a></li><li><a href="https://www.tomsguide.com/phones/iphones/7-hidden-ios-27-features-apple-didnt-tell-you-about-at-wwdc">7 hidden iOS 27 features Apple didn't tell you about</a></li><li><a href="https://www.tomsguide.com/ai/the-4-biggest-allegations-in-apples-lawsuit-against-openai">The 4 biggest allegations in Apple's lawsuit against OpenAI</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/macos-golden-gate-public-beta-hands-on-preview</link>
                                                                            <description>
                            <![CDATA[ The public beta for macOS Golden Gate is now live for Apple beta software program participants. Here are the top features coming to Macs this fall. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tgPY5apaRRsn7L4Q4gxNU3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6onBfgc6zZedV7zQBmGFw8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 13 Jul 2026 20:44:14 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ tony.polanco@futurenet.com (Tony Polanco) ]]></author>                    <dc:creator><![CDATA[ Tony Polanco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atzRNqFt5wYgEUPBDahWsD.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/6onBfgc6zZedV7zQBmGFw8-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[macOS 27]]></media:description>                                                            <media:text><![CDATA[macOS 27]]></media:text>
                                <media:title type="plain"><![CDATA[macOS 27]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6onBfgc6zZedV7zQBmGFw8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The public beta for macOS 27, also known as <a href="https://www.tomsguide.com/computing/macos/macos-27">macOS Golden Gate</a>, is here! While this update isn’t as monumental as <a href="https://www.tomsguide.com/computing/macos/macos-sequoia">macOS Sequoia</a>, it delivers a slew of AI features and smoother overall performance, making the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a> more personal and streamlined.</p><p>I’ve had the <a href="https://www.tomsguide.com/computing/macos/the-macos-golden-gate-developer-beta-is-live-heres-how-to-download-it">developer beta of macOS Golden Gate</a> installed for a month, with the latest version close to what the public beta is offering. While the beta is still very much a work in progress, I’ve had a smooth time using it and testing out its new features.</p><p>If you’re signed into the (free) <a href="https://beta.apple.com/" target="_blank">Apple beta software program</a>, you can try the public beta of macOS Golden Gate right now. Here are my thoughts on the beta and the key features worth checking out.</p><h3 class="article-body__section" id="section-macos-golden-gate-public-beta-hands-on-supported-macs"><span>macOS Golden Gate public beta hands-on: Supported Macs</span></h3><p>The Intel era is over, as macOS Golden Gate doesn’t run on those older machines. Here is a complete list of Macs that support Golden Gate.</p><ul><li><strong>MacBook Neo (2026)</strong></li><li><strong>MacBook Air with Apple silicon (2020 and later)</strong></li><li><strong>MacBook Pro with Apple silicon (2020 and later)</strong></li><li><strong>iMac with Apple silicon (2021 and later)</strong></li><li><strong>Mac mini with Apple silicon (2020 and later)</strong></li><li><strong>Mac Studio with Apple silicon (2022 and later)</strong></li><li><strong>Mac Pro with Apple silicon (2023 and later)</strong></li></ul><h3 class="article-body__section" id="section-macos-golden-gate-public-beta-hands-on-features"><span>macOS Golden Gate public beta hands-on: Features</span></h3><p>Most of macOS Golden Gate’s new features center around updated versions of Siri and Apple Intelligence. These are the ones that have stood out the most during my testing.</p><h2 id="siri-ai">Siri AI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3777px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="RJQ9US5qZUL5xu3z9FTSpn" name="macOS 27 Golden Gate Siri AI-5" alt="Siri AI on macOS 27" src="https://cdn.mos.cms.futurecdn.net/RJQ9US5qZUL5xu3z9FTSpn.jpg" mos="" align="middle" fullscreen="" width="3777" height="2125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>There is now a dedicated <a href="https://www.tomsguide.com/ai/apple-intelligence/i-spent-48-hours-with-siri-ai-on-macos-golden-gate-heres-what-i-like-and-what-i-dont">Siri AI app for macOS Golden Gate</a> that functions similarly to chatbots like ChatGPT and <a href="https://www.tomsguide.com/ai/google-gemini/google-gemini-everything-you-need-to-know">Google Gemini</a>. This app is also available on <a href="https://www.tomsguide.com/computing/vr-ar/ipados-27-everything-coming-to-the-apples-beloved-tablets">iPadOS 27</a> and <a href="https://www.tomsguide.com/phones/iphones/ios-27-11-biggest-features-coming-to-your-iphone">iOS 27,</a> and is arguably the biggest new feature for the Apple devices that support it.</p><p>You can access the Siri AI app either by clicking it in the Dock or in the Menu bar. You can also bring it up by pulling up Spotlight. Doing this brings up a dedicated chat window where you can ask Siri AI questions or just talk to it about whatever’s on your mind. Again, this functions exactly like the chatbots you’re already familiar with.</p><p>And since Siri AI is now baked into the operating system, it can do more than just chat. For example, if you’re looking at a schedule, you’ll see an “add to calendar” button appear. I’ve even had this happen when I suggest a date/time to meet with friends. When you right-click on folders, files, or apps, you’ll often see an “Ask Siri” option at the very top, where you can begin asking questions about whatever you’re highlighting.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5184px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zW8Y5gvHBBuuUMEQHd93FL" name="macOS 27 Golden Gate Siri AI-LIST2" alt="Siri AI on macOS 27" src="https://cdn.mos.cms.futurecdn.net/zW8Y5gvHBBuuUMEQHd93FL.jpg" mos="" align="middle" fullscreen="" width="5184" height="2916" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>You can even create Shortcuts by typing or speaking what you want instead of manually building complications. While I wouldn’t call this vibe coding, it can feel that way since you’re using natural language.</p><p>For those in the Apple ecosystem, Siri AI can be more useful than other chatbots because it’s integrated into the system. However, third-party integrations are still a work in progress, so Siri AI’s usability for you might be limited if you use Google apps like Gmail, since Siri AI doesn’t work with them (yet).</p><h2 id="liquid-glass-slider">Liquid Glass slider</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kbVSEAeYD7AF3N9vqnbxhG" name="macOS 27 liquid glass slider" alt="macOS 27 Liquid Glass" src="https://cdn.mos.cms.futurecdn.net/kbVSEAeYD7AF3N9vqnbxhG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide / Apple)</span></figcaption></figure><p>If you’re not a fan of the <a href="https://www.tomsguide.com/phones/iphones/ios-26s-liquid-glass-design-brings-big-changes-to-your-iphone-heres-everything-coming-in-the-public-beta">Liquid Glass UI</a>, you’ll be happy to know there’s now a slider to adjust its opacity. It lets you dial the effect up or down to your liking, and I’m surprised it took this long to implement it this way.</p><p>Beyond the slider, you’ll notice that more complex background visuals appear more diffused, which improves text readability (which was a big issue for some). The edges of icons are also more pronounced, so they stand out more from the background. All app windows now have a uniform corner radius to help them pop out as well.</p><p>I've never had a problem with Liquid Glass because I think it’s an interesting visual effect. That said, I’m glad that folks can now fine-tune it to their liking. The slider is especially neat because it’s easy to use and makes it clear how much of a difference there is when you go from one extreme to the other.</p><h2 id="spatial-reframing">Spatial Reframing</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2vyL4w3WxVGjQJPBPpoqq5.jpg" alt="MacBook Air M5" /><figcaption><small role="credit">Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vUC8TZ34UKYuqHaQC7jN6R.jpg" alt="MacBook Air M5" /><figcaption>A MacBook Air after Reframe<small role="credit">Tom's Guide</small></figcaption></figure></figure><p>Spatial Reframing isn’t exclusive to macOS Golden Gate, but since the <a href="https://www.tomsguide.com/phones/iphones/apples-ai-powered-spatial-reframing-tool-just-stole-the-show-at-wwdc"><u>Reframe tool stole the show at WWDC</u></a>, it’s a feature worth spotlighting if you take a lot of photos.</p><p>As its name suggests, Reframe lets you reframe existing photos and adjust the perspective to your liking. This can be especially handy if you need to take photos in a hurry, as you can come back to them later to fix them.</p><p>After you select Reframe in the new Tools option in Photos’ editing mode, Apple Intelligence scans the photo you’ve selected. After that, you can pull your finger across the touchpad to change the perspective. Sliders on the side also give you more precise control over the angle, orientation, or size. When you’re done, the AI shifts things around to fill in any blanks.</p><p>This isn’t a feature I use often since I like photos in their original form, even if they’re not perfect. That said, I can’t knock the results, as Reframe does an excellent job of living up to its name. And to be fair, the changes made don’t radically alter the image — you just get a better version of what you’ve already snapped.</p><h3 class="article-body__section" id="section-macos-golden-gate-public-beta-hands-on-outlook"><span>macOS Golden Gate public beta hands-on: Outlook</span></h3><p>Apple Intelligence didn’t live up to the hype after it was first announced, but it’s now living up to its potential on Macs and the other Apple devices it can run on. If you’re a big AI user already, then macOS Golden Gate could arguably be a significant update. I imagine Siri AI will only improve between now and the OS’ expected fall launch.</p><p>Other features such as the more customizable Liquid Glass UI and Spatial Reframing might not be monumental game-changers, but they’re nice additions regardless. Apple also said there’s improved performance on devices using the upcoming operating systems, but during my time with macOS Golden Gate, I haven’t seen any noticeable improvements or hiccups on that front.</p><p>Apple’s new operating systems are still being worked on, so things could change before the official launch. I’ll have a full review for you then, but based on my experience with macOS Golden Gate, I’ll say that the new features are a step in the right direction.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/apple-intelligence/the-apple-car-development-may-not-have-been-as-big-a-waste-of-time-and-money-as-everyone-thought-in-fact-it-may-be-the-thing-that-enabled-apples-new-ai-boom">The Apple Car development may not have been a waste of time</a></li><li><a href="https://www.tomsguide.com/phones/iphones/7-hidden-ios-27-features-apple-didnt-tell-you-about-at-wwdc">7 hidden iOS 27 features Apple didn't tell you about</a></li><li><a href="https://www.tomsguide.com/ai/the-4-biggest-allegations-in-apples-lawsuit-against-openai">The 4 biggest allegations in Apple's lawsuit against OpenAI</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Waze is adding a bunch of AI-powered features including Motorcycle Mode, Personalized Navigation and more ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/how-to/best-waze-tips-and-tricks">Waze</a> is a very popular navigation app, and with good reason. The unique way it alters your route to avoid even the slightest bit of traffic has endeared it to many, and lets you drive through places you may not have seen otherwise. The good news is it sounds like Waze is about to get even better, with a bunch more features — including a brand new Motorcycle Mode.</p><p>While motorbikes can take many of the same routes as cars, which isn't always true for bicycles, they do still have different needs and abilities. Certain road surfaces don't agree with them, and they can travel down much narrower streets that are otherwise inaccessible to cars. Hence the addition of Motorcycle mode to Waze.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:56.38%;"><img id="J7GGm9hLEmAQeSigbiZ5vL" name="ezgif-2c7f7bc46deac85b" alt="waze ai updates" src="https://cdn.mos.cms.futurecdn.net/J7GGm9hLEmAQeSigbiZ5vL.gif" mos="" align="middle" fullscreen="" width="800" height="451" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Waze)</span></figcaption></figure><p>Motorcycle mode uses AI to identify two-wheeler shortcuts and restrictions, which will help bikers travel on the best route — while also offering more accurate arrival times. This mode also highlights bike-specific hazards such as potholes, speed bumps, narrow bridges and raised crosswalks. Effectively meaning that you, the rider, are aware of potential issues ahead of time.</p><p>Currently Motorcycle Mode is rolling out to countries with large populations of two-wheel drivers, including Argentina, Brazil, Colombia, Malaysia, Mexico, Peru and the Philippines — but Google promises that more countries are on the way.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OoDAGX"></div>                            </div>                            <script src="https://kwizly.com/embed/OoDAGX.js" async></script><p>Waze is also about to offer something you won't find on Google or Apple Maps, with personalized navigation. Essentially this will see Waze learn the kind of routes you like to take and take that into account. So if you prefer highways to back streets, your first route option will take that into consideration — though it sounds like it'll still route you around traffic wherever possible. </p><p>You will, of course, have the choice to pick alternate routes and turn off personalization if you wish. Personalized navigation is rolling out to Android and iOS users everywhere right now.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sENsxUJgYGCv7CngkBvpsL" name="Less Chatty Mode" alt="waze ai updates" src="https://cdn.mos.cms.futurecdn.net/sENsxUJgYGCv7CngkBvpsL.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Waze)</span></figcaption></figure><p>Nothing is worse than listening to a podcast or audiobook, and having your navigation app constantly interrupt the flow by offering non-stop instructions — many of which are totally redundant. Waze will be putting a stop to this with a new "less chatty" mode, which basically tells Waze to put a sock in it and minimize the number of voice prompts.</p><p>You will still get warnings about hazards, upcoming turns and lane changes, but they'll end up being used far less frequently, letting you concentrate on other things, be it music, conversation, podcasts or the road ahead. This is rolling out to every Waze user now.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SkLEVGq9xdCuegEqxFJqwL" name="Update to Conversational Reporting" alt="waze ai updates" src="https://cdn.mos.cms.futurecdn.net/SkLEVGq9xdCuegEqxFJqwL.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Waze)</span></figcaption></figure><p><a href="https://www.tomsguide.com/computing/mobile-apps/waze-is-getting-a-huge-ai-upgrade-that-fixes-one-of-its-most-dangerously-distracting-features">Conversational Reporting</a> has been around for a little while, letting drivers use Gemini AI to casually report traffic accidents and other hazards in a more conversational manner. An update is now rolling out around the world that lets drivers use Conversational Reporting to suggest map updates — including things like road closures, outdated addresses and so on. These suggestions will then be sent to local map editors who will verify them and update the Waze map accordingly.</p><p>Gemini is also being integrated into Waze's search feature, letting you search for new locations in a more conversational manner. Such as finding businesses that are open, parking close to certain locations, or even the gas station with the lowest prices in the area. This is rolling out to Waze beta users on Android and iOS right now.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/high-storage-phones-are-feeling-more-like-a-scam-than-ever-how-to-avoid-overpaying">High storage phones are feeling more like a scam than ever — how to avoid overpaying</a></li><li><a href="https://www.tomsguide.com/phones/iphones/7-hidden-ios-27-features-apple-didnt-tell-you-about-at-wwdc">7 hidden iOS 27 features Apple didn't tell you about</a></li><li><a href="https://www.tomsguide.com/phones/iphones/apple-is-paying-usd250-million-to-iphone-customers-over-delayed-ai-features-heres-how-to-get-your-share">Apple is paying $250 million to iPhone customers over delayed AI features — here's how to get your share</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/mobile-apps/waze-is-adding-a-bunch-of-ai-powered-features-including-motorcycle-mode-personalized-navigation-and-more</link>
                                                                            <description>
                            <![CDATA[ Waze is going big on new AI features, with a bunch of stuff you won't find on Google Maps or Apple Maps. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VyFSq2rV2pqePtJQb4eMm4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DhRFU6Ujh8Y7q9JEkESMk5-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 13 Jul 2026 16:06:37 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mobile Apps]]></category>
                                                    <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ tom.pritchard@futurenet.com (Tom Pritchard) ]]></author>                    <dc:creator><![CDATA[ Tom Pritchard ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/biCewUkKfSA6QnT2HxVc3f.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/DhRFU6Ujh8Y7q9JEkESMk5-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Waze app on iPhone in car ]]></media:description>                                                            <media:text><![CDATA[Waze app on iPhone in car ]]></media:text>
                                <media:title type="plain"><![CDATA[Waze app on iPhone in car ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DhRFU6Ujh8Y7q9JEkESMk5-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/how-to/best-waze-tips-and-tricks">Waze</a> is a very popular navigation app, and with good reason. The unique way it alters your route to avoid even the slightest bit of traffic has endeared it to many, and lets you drive through places you may not have seen otherwise. The good news is it sounds like Waze is about to get even better, with a bunch more features — including a brand new Motorcycle Mode.</p><p>While motorbikes can take many of the same routes as cars, which isn't always true for bicycles, they do still have different needs and abilities. Certain road surfaces don't agree with them, and they can travel down much narrower streets that are otherwise inaccessible to cars. Hence the addition of Motorcycle mode to Waze.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:56.38%;"><img id="J7GGm9hLEmAQeSigbiZ5vL" name="ezgif-2c7f7bc46deac85b" alt="waze ai updates" src="https://cdn.mos.cms.futurecdn.net/J7GGm9hLEmAQeSigbiZ5vL.gif" mos="" align="middle" fullscreen="" width="800" height="451" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Waze)</span></figcaption></figure><p>Motorcycle mode uses AI to identify two-wheeler shortcuts and restrictions, which will help bikers travel on the best route — while also offering more accurate arrival times. This mode also highlights bike-specific hazards such as potholes, speed bumps, narrow bridges and raised crosswalks. Effectively meaning that you, the rider, are aware of potential issues ahead of time.</p><p>Currently Motorcycle Mode is rolling out to countries with large populations of two-wheel drivers, including Argentina, Brazil, Colombia, Malaysia, Mexico, Peru and the Philippines — but Google promises that more countries are on the way.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OoDAGX"></div>                            </div>                            <script src="https://kwizly.com/embed/OoDAGX.js" async></script><p>Waze is also about to offer something you won't find on Google or Apple Maps, with personalized navigation. Essentially this will see Waze learn the kind of routes you like to take and take that into account. So if you prefer highways to back streets, your first route option will take that into consideration — though it sounds like it'll still route you around traffic wherever possible. </p><p>You will, of course, have the choice to pick alternate routes and turn off personalization if you wish. Personalized navigation is rolling out to Android and iOS users everywhere right now.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sENsxUJgYGCv7CngkBvpsL" name="Less Chatty Mode" alt="waze ai updates" src="https://cdn.mos.cms.futurecdn.net/sENsxUJgYGCv7CngkBvpsL.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Waze)</span></figcaption></figure><p>Nothing is worse than listening to a podcast or audiobook, and having your navigation app constantly interrupt the flow by offering non-stop instructions — many of which are totally redundant. Waze will be putting a stop to this with a new "less chatty" mode, which basically tells Waze to put a sock in it and minimize the number of voice prompts.</p><p>You will still get warnings about hazards, upcoming turns and lane changes, but they'll end up being used far less frequently, letting you concentrate on other things, be it music, conversation, podcasts or the road ahead. This is rolling out to every Waze user now.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SkLEVGq9xdCuegEqxFJqwL" name="Update to Conversational Reporting" alt="waze ai updates" src="https://cdn.mos.cms.futurecdn.net/SkLEVGq9xdCuegEqxFJqwL.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Waze)</span></figcaption></figure><p><a href="https://www.tomsguide.com/computing/mobile-apps/waze-is-getting-a-huge-ai-upgrade-that-fixes-one-of-its-most-dangerously-distracting-features">Conversational Reporting</a> has been around for a little while, letting drivers use Gemini AI to casually report traffic accidents and other hazards in a more conversational manner. An update is now rolling out around the world that lets drivers use Conversational Reporting to suggest map updates — including things like road closures, outdated addresses and so on. These suggestions will then be sent to local map editors who will verify them and update the Waze map accordingly.</p><p>Gemini is also being integrated into Waze's search feature, letting you search for new locations in a more conversational manner. Such as finding businesses that are open, parking close to certain locations, or even the gas station with the lowest prices in the area. This is rolling out to Waze beta users on Android and iOS right now.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/high-storage-phones-are-feeling-more-like-a-scam-than-ever-how-to-avoid-overpaying">High storage phones are feeling more like a scam than ever — how to avoid overpaying</a></li><li><a href="https://www.tomsguide.com/phones/iphones/7-hidden-ios-27-features-apple-didnt-tell-you-about-at-wwdc">7 hidden iOS 27 features Apple didn't tell you about</a></li><li><a href="https://www.tomsguide.com/phones/iphones/apple-is-paying-usd250-million-to-iphone-customers-over-delayed-ai-features-heres-how-to-get-your-share">Apple is paying $250 million to iPhone customers over delayed AI features — here's how to get your share</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Is your USA vs. Belgium stream buffering? A VPN can stop the lag — here’s how ]]></title>
                                                                                                <dc:content><![CDATA[ <p>USA vs. Belgium is one of the most anticipated matchups of the 2026 FIFA World Cup, and millions of fans will be settling in front of their screens on Monday to watch it unfold.</p><p>But there is a good chance your stream won't go quite as planned. Just as the referee blows the whistle for kickoff, your crisp picture could easily drop into a pixelated, low-res mess — or freeze entirely.</p><p>The culprit? Your Internet Service Provider (ISP).</p><p>During major live sporting events, internet service providers frequently throttle bandwidth to manage the surge in users. </p><p>The good news is there's a straightforward technical fix, and you don't need to be particularly tech-savvy to use it. </p><p>The<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPN</a>s encrypt your internet traffic before it leaves your device, masking it from your ISP. Because your provider can no longer see what kind of data you're consuming, it won't trigger its throttling algorithms — leaving you with a stable, high-def stream from kickoff to the final whistle. </p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard. </p><p><strong>What you'll get...</strong></p><p>🔒 Encryption that blocks ISP throttling<br>⚡️ High-speed servers built for stable 4K sports streaming<br>📺 Apps for Windows, Mac, Android, iOS, and smart TVs<br>🌍 Servers in 30+ countries worldwide</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="is-it-worth-keeping-after-the-match">Is it worth keeping after the match?</h2><p>If you decide to keep the service beyond Monday's match, an annual plan breaks down to less than a single match-day takeaway — and it will cover your connection for every remaining game for the rest of the year. </p><p>Because it comes with an industry-double 60-day money-back guarantee, you can essentially test it out completely risk-free. If it doesn't instantly stabilize your stream, you can claim a full refund without any hassle.</p><p>Either way, don't leave it until the last minute. Get the app downloaded and run a quick speed test before kickoff today — so when the first whistle blows, you're confident in your stream. </p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/is-your-usa-vs-belgium-stream-buffering-a-vpn-can-stop-the-lag-heres-how</link>
                                                                            <description>
                            <![CDATA[ ISPs often throttle streaming traffic during big live events — a VPN's encryption can keep your stream running smoothly ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">z9bXUgLnF2HrPphwVsk2bH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kZJyq9aikPwZaZQtdmWxuU-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 06 Jul 2026 22:59:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/kZJyq9aikPwZaZQtdmWxuU-1280-80.jpg">
                                                            <media:credit><![CDATA[Charlotte Wilson/Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Malik Tillman #17 of the United States celebrates scoring his team&#039;s second goal during the FIFA World Cup 2026 Round of 32 match between USA and Bosnia and Herzegovina]]></media:description>                                                            <media:text><![CDATA[Malik Tillman #17 of the United States celebrates scoring his team&#039;s second goal during the FIFA World Cup 2026 Round of 32 match between USA and Bosnia and Herzegovina]]></media:text>
                                <media:title type="plain"><![CDATA[Malik Tillman #17 of the United States celebrates scoring his team&#039;s second goal during the FIFA World Cup 2026 Round of 32 match between USA and Bosnia and Herzegovina]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kZJyq9aikPwZaZQtdmWxuU-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>USA vs. Belgium is one of the most anticipated matchups of the 2026 FIFA World Cup, and millions of fans will be settling in front of their screens on Monday to watch it unfold.</p><p>But there is a good chance your stream won't go quite as planned. Just as the referee blows the whistle for kickoff, your crisp picture could easily drop into a pixelated, low-res mess — or freeze entirely.</p><p>The culprit? Your Internet Service Provider (ISP).</p><p>During major live sporting events, internet service providers frequently throttle bandwidth to manage the surge in users. </p><p>The good news is there's a straightforward technical fix, and you don't need to be particularly tech-savvy to use it. </p><p>The<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPN</a>s encrypt your internet traffic before it leaves your device, masking it from your ISP. Because your provider can no longer see what kind of data you're consuming, it won't trigger its throttling algorithms — leaving you with a stable, high-def stream from kickoff to the final whistle. </p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard. </p><p><strong>What you'll get...</strong></p><p>🔒 Encryption that blocks ISP throttling<br>⚡️ High-speed servers built for stable 4K sports streaming<br>📺 Apps for Windows, Mac, Android, iOS, and smart TVs<br>🌍 Servers in 30+ countries worldwide</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="is-it-worth-keeping-after-the-match">Is it worth keeping after the match?</h2><p>If you decide to keep the service beyond Monday's match, an annual plan breaks down to less than a single match-day takeaway — and it will cover your connection for every remaining game for the rest of the year. </p><p>Because it comes with an industry-double 60-day money-back guarantee, you can essentially test it out completely risk-free. If it doesn't instantly stabilize your stream, you can claim a full refund without any hassle.</p><p>Either way, don't leave it until the last minute. Get the app downloaded and run a quick speed test before kickoff today — so when the first whistle blows, you're confident in your stream. </p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft extends Windows 10 support for another year: what you need to know ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Good news for those of you who have yet to upgrade to Windows 11: You're going to get another year of reprieve.</p><p>Microsoft officially <a href="https://www.tomsguide.com/news/live/windows-10-end-of-support-2025">ended support for Windows 10</a> in October 2025, but you could sign up for the Extended Security Update (ESU) program, which will keep support going through October 13,  2026. </p><p>At that point, support was going to be cut off for good. However, that's changed thanks to a <a href="https://www.microsoft.com/en-gb/windows/extended-security-updates?r=1" target="_blank">quiet change Microsoft introduced</a> this week and spotted by <a href="https://www.gsmarena.com/microsoft_quietly_extends_windows_10_support_for_another_year-news-73453.php" target="_blank">GSMArena</a>. The new end date has been extended to October 12, 2027. </p><h2 id="ram-crisis-relief">RAM crisis relief</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DucJVEzwF4KJNbcg2WW9PJ" name="RAM" alt="RAM" src="https://cdn.mos.cms.futurecdn.net/DucJVEzwF4KJNbcg2WW9PJ.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: fabrikasimf / Freepik)</span></figcaption></figure><p>I can't find anything beyond the FAQ page, but Microsoft hasn't really promoted this update. The company is desparate for people to upgrade to Windows 11, something users have avoided because of <a href="https://www.tomsguide.com/computing/windows-operating-systems/we-need-to-improve-windows-in-ways-that-are-meaningful-for-people-microsoft-is-urgently-trying-to-fix-windows-11-issues">core problems with the operating system</a>.</p><p>Still, this is extra breathing room for people who haven't upgraded. Plus, it alleviates the need to purchase a new laptop, just as every tech company is raising prices due to the <a href="https://www.tomsguide.com/computing/hardware/the-squeeze-is-real-i-spoke-to-ram-crisis-oracle-carmen-li-about-when-this-nightmare-ends-heres-what-she-told-me">ongoing memory shortage</a>.</p><p>PC makers have been <a href="https://www.tomsguide.com/computing/lenovo-is-planning-another-pc-price-hike-in-march-and-im-all-out-of-patience-with-this-ai-bubble">ringing the warning bell</a> since early 2026, with <a href="https://www.tomsguide.com/computing/buy-it-as-soon-as-you-can-lenovo-issues-urgent-warning-on-ram-crisis-spiking-prices">Lenovo saying "Buy it soon as you can"</a> in February.</p><p><a href="https://www.tomsguide.com/computing/macbooks/apple-price-hikes-are-official-heres-how-much-more-youll-pay-for-macbooks-and-ipads-now">Apple just raised prices</a> on its laptops and <a href="https://www.tomsguide.com/gaming/xbox/microsoft-blames-components-crisis-for-rising-xbox-prices-amidst-ai-greed-which-has-been-partly-caused-by-microsoft">Microsoft hiked Xbox console prices</a> for the third time in a year while blaming the memory shortage this week.</p><p>With purchasing power becoming untenable, even a year is a nice break.</p><h2 id="how-to-sign-up-for-the-esu">How to sign up for the ESU</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4642px;"><p class="vanilla-image-block" style="padding-top:62.32%;"><img id="fF7acrg8AUVF4uUadMVr69" name="Windows 10.jpg" alt="Windows 10" src="https://cdn.mos.cms.futurecdn.net/fF7acrg8AUVF4uUadMVr69.jpg" mos="" align="middle" fullscreen="" width="4642" height="2893" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>To sign up for the ESU program, <strong>your device needs to run Windows 10, version 22H2</strong> Home, Professional, Pro Education or Workstations edition.  It also needs to have the latest Windows update installed.</p><p>You need to have a Microsoft account that is an administrator.</p><p><strong>There's</strong> <strong>no cost if you sync your PC settings</strong>. You can also redeem 1,000 Microsoft Rewards points or make a one-time $30 purchase. </p><p>To get the ESU running you can go to Settings > Update & Security > Windows Update. If you meet the requirements you should see an Enroll Now button for ESU. </p><p>You can extend the ESU license on up to 10 devices. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/xbox/microsoft-blames-components-crisis-for-rising-xbox-prices-amidst-ai-greed-which-has-been-partly-caused-by-microsoft">Microsoft blames "components crisis" for rising Xbox prices amidst AI greed, which was partly caused by...Microsoft?</a></li><li><a href="https://www.tomsguide.com/ai/nvidia-claims-its-new-ai-data-centers-use-almost-no-water-heres-what-that-actually-means">NVIDIA claims its new AI data centers use almost no water — here's what that actually means</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/here-are-some-way-too-early-windows-12-predictions-based-on-how-microsoft-is-changing-windows-11">Here are some way-too-early Windows 12 predictions based on how Microsoft is changing Windows 11</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/microsoft-extends-windows-10-support-for-another-year-what-you-need-to-know</link>
                                                                            <description>
                            <![CDATA[ Windows 10 support was supposed to end for good this year, but Microsoft quietly extended it for at least one more. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XEwdeuuKYAKACuF84UZoJX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qNMZdaX6mztsXXhqkDijd3-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 26 Jun 2026 21:19:43 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/qNMZdaX6mztsXXhqkDijd3-1280-80.jpg">
                                                            <media:credit><![CDATA[Shuttershock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[How to update Windows 10 ]]></media:description>                                                            <media:text><![CDATA[How to update Windows 10 ]]></media:text>
                                <media:title type="plain"><![CDATA[How to update Windows 10 ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qNMZdaX6mztsXXhqkDijd3-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Good news for those of you who have yet to upgrade to Windows 11: You're going to get another year of reprieve.</p><p>Microsoft officially <a href="https://www.tomsguide.com/news/live/windows-10-end-of-support-2025">ended support for Windows 10</a> in October 2025, but you could sign up for the Extended Security Update (ESU) program, which will keep support going through October 13,  2026. </p><p>At that point, support was going to be cut off for good. However, that's changed thanks to a <a href="https://www.microsoft.com/en-gb/windows/extended-security-updates?r=1" target="_blank">quiet change Microsoft introduced</a> this week and spotted by <a href="https://www.gsmarena.com/microsoft_quietly_extends_windows_10_support_for_another_year-news-73453.php" target="_blank">GSMArena</a>. The new end date has been extended to October 12, 2027. </p><h2 id="ram-crisis-relief">RAM crisis relief</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DucJVEzwF4KJNbcg2WW9PJ" name="RAM" alt="RAM" src="https://cdn.mos.cms.futurecdn.net/DucJVEzwF4KJNbcg2WW9PJ.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: fabrikasimf / Freepik)</span></figcaption></figure><p>I can't find anything beyond the FAQ page, but Microsoft hasn't really promoted this update. The company is desparate for people to upgrade to Windows 11, something users have avoided because of <a href="https://www.tomsguide.com/computing/windows-operating-systems/we-need-to-improve-windows-in-ways-that-are-meaningful-for-people-microsoft-is-urgently-trying-to-fix-windows-11-issues">core problems with the operating system</a>.</p><p>Still, this is extra breathing room for people who haven't upgraded. Plus, it alleviates the need to purchase a new laptop, just as every tech company is raising prices due to the <a href="https://www.tomsguide.com/computing/hardware/the-squeeze-is-real-i-spoke-to-ram-crisis-oracle-carmen-li-about-when-this-nightmare-ends-heres-what-she-told-me">ongoing memory shortage</a>.</p><p>PC makers have been <a href="https://www.tomsguide.com/computing/lenovo-is-planning-another-pc-price-hike-in-march-and-im-all-out-of-patience-with-this-ai-bubble">ringing the warning bell</a> since early 2026, with <a href="https://www.tomsguide.com/computing/buy-it-as-soon-as-you-can-lenovo-issues-urgent-warning-on-ram-crisis-spiking-prices">Lenovo saying "Buy it soon as you can"</a> in February.</p><p><a href="https://www.tomsguide.com/computing/macbooks/apple-price-hikes-are-official-heres-how-much-more-youll-pay-for-macbooks-and-ipads-now">Apple just raised prices</a> on its laptops and <a href="https://www.tomsguide.com/gaming/xbox/microsoft-blames-components-crisis-for-rising-xbox-prices-amidst-ai-greed-which-has-been-partly-caused-by-microsoft">Microsoft hiked Xbox console prices</a> for the third time in a year while blaming the memory shortage this week.</p><p>With purchasing power becoming untenable, even a year is a nice break.</p><h2 id="how-to-sign-up-for-the-esu">How to sign up for the ESU</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4642px;"><p class="vanilla-image-block" style="padding-top:62.32%;"><img id="fF7acrg8AUVF4uUadMVr69" name="Windows 10.jpg" alt="Windows 10" src="https://cdn.mos.cms.futurecdn.net/fF7acrg8AUVF4uUadMVr69.jpg" mos="" align="middle" fullscreen="" width="4642" height="2893" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>To sign up for the ESU program, <strong>your device needs to run Windows 10, version 22H2</strong> Home, Professional, Pro Education or Workstations edition.  It also needs to have the latest Windows update installed.</p><p>You need to have a Microsoft account that is an administrator.</p><p><strong>There's</strong> <strong>no cost if you sync your PC settings</strong>. You can also redeem 1,000 Microsoft Rewards points or make a one-time $30 purchase. </p><p>To get the ESU running you can go to Settings > Update & Security > Windows Update. If you meet the requirements you should see an Enroll Now button for ESU. </p><p>You can extend the ESU license on up to 10 devices. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/xbox/microsoft-blames-components-crisis-for-rising-xbox-prices-amidst-ai-greed-which-has-been-partly-caused-by-microsoft">Microsoft blames "components crisis" for rising Xbox prices amidst AI greed, which was partly caused by...Microsoft?</a></li><li><a href="https://www.tomsguide.com/ai/nvidia-claims-its-new-ai-data-centers-use-almost-no-water-heres-what-that-actually-means">NVIDIA claims its new AI data centers use almost no water — here's what that actually means</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/here-are-some-way-too-early-windows-12-predictions-based-on-how-microsoft-is-changing-windows-11">Here are some way-too-early Windows 12 predictions based on how Microsoft is changing Windows 11</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to use a VPN to get better signal on crowded networks – stadiums, airports, World Cup fan zones ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Stadiums, airports, and fan parks are some of the worst environments imaginable for public Wi-Fi. Tens of thousands of people competing for the same signal means packet loss, crawling speeds, and connections that drop without warning. So, for example, if you're heading to a few games at the <a href="https://www.tomsguide.com/entertainment/streaming/theres-a-simple-way-to-watch-world-cup-2026-for-free">FIFA World Cup 2026</a>, things might not be as smooth as you'd like.</p><p>One of the<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPNs</a> is a handy tool to have at your disposal on networks like these. While it's fairly unlikely nowadays you'll be caught out by a <a href="https://www.tomsguide.com/computing/online-security/what-is-a-man-in-the-middle-attack">man-in-the-middle attack</a>, boosting your privacy can only be a good thing – and when a VPN is set up right, a VPN may also be able to increase your connection speeds significantly.</p><p>Here, I'll run down a few quick settings to tweak to make your public Wi-Fi experience more bearable.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="pick-your-protocol">Pick your protocol</h2><p>A VPN protocol is the set of rules that determines how your device encrypts and moves your data. On a congested or restrictive network, the wrong protocol can mean failed connections, throttled speeds, or both – and switching is often the quickest fix.</p><p>WireGuard should be your first port of call. It's a modern protocol built with a low data overhead and near-instant reconnection times, making it well suited to the kind of unstable connections you'll find in a packed stadium or airport terminal. Most VPN apps already default to it – but if you're on an iPhone, check your settings, as IKEv2 is often the default instead.</p><p>IKEv2 is a solid runner-up for mobile users who switch frequently between Wi-Fi and cellular data. It handles network changes smoothly, though speeds won't quite match WireGuard.</p><p>If you're struggling to connect at all, try OpenVPN. It's generally slower than WireGuard, but its ability to run on port 443 – the same port used by standard web traffic – means it's more likely to work on networks that try to block VPNs. For a deeper look at how the<a href="https://www.tomsguide.com/best-picks/best-fast-vpn"> fastest VPNs</a> handle different conditions, our dedicated guide is worth a read. </p><h2 id="stay-stealthy">Stay stealthy</h2><p>Many stadiums and airports actively manage their networks by throttling heavy data users – a necessary measure when tens of thousands of people are sharing the same connection, but one that can reduce your speeds to near-unusable levels during a big event.</p><p>VPNs can sidestep this by hiding your traffic from the network – if it can't see what you're doing, it can't single you out for throttling. The catch is that many venues have wised up to this, and will throttle any traffic that looks like VPN traffic too.</p><p>The fix is Stealth Mode – sometimes called Obfuscation or Scramble depending on which app you're using. It disguises your VPN traffic as ordinary web traffic, so the network treats it accordingly. You keep the speed benefits of bypassing throttling while your actual activity stays hidden.</p><p>Unfortunately, if the network you're connected to flat-out throttle's <em>everyone's</em> connection, regardless of how much data theyre using, a VPN won't make much of a difference. As always, there's an element of trial and error to this.</p><h2 id="set-switches-to-kill">Set switches to kill</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7687px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="Uge7NgrXmKH5Fcs7JCHRZ8" name="Kill switch image article header.jpg" alt="Green switch in the On position on a pastel yellow background" src="https://cdn.mos.cms.futurecdn.net/Uge7NgrXmKH5Fcs7JCHRZ8.jpg" mos="" align="middle" fullscreen="" width="7687" height="4323" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Javier Zayas Photography)</span></figcaption></figure><p>Switching between Wi-Fi and mobile data – or simply dropping out of range in a crowded venue – can cause your VPN connection to drop momentarily. That split second is enough for your real IP address to be exposed before the VPN reconnects, which defeats the purpose of using one in the first place.</p><p>A kill switch solves this by blocking all internet traffic the moment your VPN drops, preventing any leaks until the connection is restored. Pair this with Auto-Connect, which ensures your VPN engages automatically whenever you join an untrusted public network, and you've closed off the two most common sources of accidental exposure.</p><p>As a side-note, your VPN "blocking all internet traffic" sounds drastic, but in reality, it's nothing to worry about. This only equates to a second or two of downtime, which is very unlikely to be noticed.</p><h2 id="split-the-tunnel">Split the tunnel</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oHZ43H5QK9Ni6g6KV48Zvc" name="Seattle Stadium, temporarily renamed from Lumen Field, pictured ahead of World Cup 2026" alt="Seattle Stadium, temporarily renamed from Lumen Field, pictured ahead of World Cup 2026" src="https://cdn.mos.cms.futurecdn.net/oHZ43H5QK9Ni6g6KV48Zvc.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jason Redmond/AFP via Getty Images)</span></figcaption></figure><p>Running all your apps through a VPN simultaneously puts extra demand on both your device and the network – bandwidth you can't afford to waste when thousands of people are competing for the same signal.</p><p>Split tunneling lets you choose which apps use the VPN and which don't. Route your sensitive apps – banking, email, social media logins – through the encrypted tunnel, and let everything else connect directly. Checking live scores or streaming music in the background doesn't need VPN protection, and bypassing it for those apps can free up enough speed to make a real difference. Plus, by reducing the amount of data you need to encrypt will also save you precious battery life.</p><h2 id="bottom-line">Bottom line</h2><p>A few seconds spent in your VPN's settings can be the difference between a working connection and a frustrating one. </p><p>Switch your protocol – WireGuard for speed, OpenVPN if you're struggling to connect – enable Stealth mode, turn on your kill switch, and set up split tunneling. Do all of this, and you'll be in a far better position than the thousands of other people on the same network. </p><div ><table><caption>Quick Cheat Sheet</caption><thead><tr><th class="firstcol " ><p><strong>What to look for in your app</strong></p></th><th  ><p><strong>What to set it to</strong></p></th><th  ><p><strong>What it does for you</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Protocol / Connection Type</strong></p></td><td  ><p>WireGuard / OpenVPN</p></td><td  ><p>Generally gives you the fastest speed and quickest reconnections. If you have connection issues, try <strong>OpenVPN</strong>.</p></td></tr><tr><td class="firstcol " ><p><strong>Stealth / Obfuscation</strong></p></td><td  ><p>ON (if you struggle to connect)</p></td><td  ><p>Not always necessary, but helps stop the venue's Wi-Fi from blocking your VPN.</p></td></tr><tr><td class="firstcol " ><p><strong>Kill Switch</strong></p></td><td  ><p>ON (always)</p></td><td  ><p>Keeps you safe if the crowded Wi-Fi suddenly drops.</p></td></tr><tr><td class="firstcol " ><p><strong>Split Tunneling</strong></p></td><td  ><p>Enabled (Select apps)</p></td><td  ><p>Saves speed by only protecting your most important apps.</p></td></tr></tbody></table></div><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/how-to-use-a-vpn-to-get-better-signal-on-crowded-networks-stadiums-airports-world-cup-fan-zones</link>
                                                                            <description>
                            <![CDATA[ It's worth using a VPN on crowded public networks – and with the right settings, a few seconds of tweaking can keep your connection fast, secure, and leak-free. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4KnCNU2NrGEZxRoPeT7jLm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/iwe78CWeJYTaQrJKSEEr84-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 26 Jun 2026 15:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/iwe78CWeJYTaQrJKSEEr84-1280-80.png">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Fully packed stands in a large stadium]]></media:description>                                                            <media:text><![CDATA[Fully packed stands in a large stadium]]></media:text>
                                <media:title type="plain"><![CDATA[Fully packed stands in a large stadium]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/iwe78CWeJYTaQrJKSEEr84-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Stadiums, airports, and fan parks are some of the worst environments imaginable for public Wi-Fi. Tens of thousands of people competing for the same signal means packet loss, crawling speeds, and connections that drop without warning. So, for example, if you're heading to a few games at the <a href="https://www.tomsguide.com/entertainment/streaming/theres-a-simple-way-to-watch-world-cup-2026-for-free">FIFA World Cup 2026</a>, things might not be as smooth as you'd like.</p><p>One of the<a href="https://www.tomsguide.com/best-picks/best-vpn"> best VPNs</a> is a handy tool to have at your disposal on networks like these. While it's fairly unlikely nowadays you'll be caught out by a <a href="https://www.tomsguide.com/computing/online-security/what-is-a-man-in-the-middle-attack">man-in-the-middle attack</a>, boosting your privacy can only be a good thing – and when a VPN is set up right, a VPN may also be able to increase your connection speeds significantly.</p><p>Here, I'll run down a few quick settings to tweak to make your public Wi-Fi experience more bearable.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="pick-your-protocol">Pick your protocol</h2><p>A VPN protocol is the set of rules that determines how your device encrypts and moves your data. On a congested or restrictive network, the wrong protocol can mean failed connections, throttled speeds, or both – and switching is often the quickest fix.</p><p>WireGuard should be your first port of call. It's a modern protocol built with a low data overhead and near-instant reconnection times, making it well suited to the kind of unstable connections you'll find in a packed stadium or airport terminal. Most VPN apps already default to it – but if you're on an iPhone, check your settings, as IKEv2 is often the default instead.</p><p>IKEv2 is a solid runner-up for mobile users who switch frequently between Wi-Fi and cellular data. It handles network changes smoothly, though speeds won't quite match WireGuard.</p><p>If you're struggling to connect at all, try OpenVPN. It's generally slower than WireGuard, but its ability to run on port 443 – the same port used by standard web traffic – means it's more likely to work on networks that try to block VPNs. For a deeper look at how the<a href="https://www.tomsguide.com/best-picks/best-fast-vpn"> fastest VPNs</a> handle different conditions, our dedicated guide is worth a read. </p><h2 id="stay-stealthy">Stay stealthy</h2><p>Many stadiums and airports actively manage their networks by throttling heavy data users – a necessary measure when tens of thousands of people are sharing the same connection, but one that can reduce your speeds to near-unusable levels during a big event.</p><p>VPNs can sidestep this by hiding your traffic from the network – if it can't see what you're doing, it can't single you out for throttling. The catch is that many venues have wised up to this, and will throttle any traffic that looks like VPN traffic too.</p><p>The fix is Stealth Mode – sometimes called Obfuscation or Scramble depending on which app you're using. It disguises your VPN traffic as ordinary web traffic, so the network treats it accordingly. You keep the speed benefits of bypassing throttling while your actual activity stays hidden.</p><p>Unfortunately, if the network you're connected to flat-out throttle's <em>everyone's</em> connection, regardless of how much data theyre using, a VPN won't make much of a difference. As always, there's an element of trial and error to this.</p><h2 id="set-switches-to-kill">Set switches to kill</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7687px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="Uge7NgrXmKH5Fcs7JCHRZ8" name="Kill switch image article header.jpg" alt="Green switch in the On position on a pastel yellow background" src="https://cdn.mos.cms.futurecdn.net/Uge7NgrXmKH5Fcs7JCHRZ8.jpg" mos="" align="middle" fullscreen="" width="7687" height="4323" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Javier Zayas Photography)</span></figcaption></figure><p>Switching between Wi-Fi and mobile data – or simply dropping out of range in a crowded venue – can cause your VPN connection to drop momentarily. That split second is enough for your real IP address to be exposed before the VPN reconnects, which defeats the purpose of using one in the first place.</p><p>A kill switch solves this by blocking all internet traffic the moment your VPN drops, preventing any leaks until the connection is restored. Pair this with Auto-Connect, which ensures your VPN engages automatically whenever you join an untrusted public network, and you've closed off the two most common sources of accidental exposure.</p><p>As a side-note, your VPN "blocking all internet traffic" sounds drastic, but in reality, it's nothing to worry about. This only equates to a second or two of downtime, which is very unlikely to be noticed.</p><h2 id="split-the-tunnel">Split the tunnel</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oHZ43H5QK9Ni6g6KV48Zvc" name="Seattle Stadium, temporarily renamed from Lumen Field, pictured ahead of World Cup 2026" alt="Seattle Stadium, temporarily renamed from Lumen Field, pictured ahead of World Cup 2026" src="https://cdn.mos.cms.futurecdn.net/oHZ43H5QK9Ni6g6KV48Zvc.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jason Redmond/AFP via Getty Images)</span></figcaption></figure><p>Running all your apps through a VPN simultaneously puts extra demand on both your device and the network – bandwidth you can't afford to waste when thousands of people are competing for the same signal.</p><p>Split tunneling lets you choose which apps use the VPN and which don't. Route your sensitive apps – banking, email, social media logins – through the encrypted tunnel, and let everything else connect directly. Checking live scores or streaming music in the background doesn't need VPN protection, and bypassing it for those apps can free up enough speed to make a real difference. Plus, by reducing the amount of data you need to encrypt will also save you precious battery life.</p><h2 id="bottom-line">Bottom line</h2><p>A few seconds spent in your VPN's settings can be the difference between a working connection and a frustrating one. </p><p>Switch your protocol – WireGuard for speed, OpenVPN if you're struggling to connect – enable Stealth mode, turn on your kill switch, and set up split tunneling. Do all of this, and you'll be in a far better position than the thousands of other people on the same network. </p><div ><table><caption>Quick Cheat Sheet</caption><thead><tr><th class="firstcol " ><p><strong>What to look for in your app</strong></p></th><th  ><p><strong>What to set it to</strong></p></th><th  ><p><strong>What it does for you</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Protocol / Connection Type</strong></p></td><td  ><p>WireGuard / OpenVPN</p></td><td  ><p>Generally gives you the fastest speed and quickest reconnections. If you have connection issues, try <strong>OpenVPN</strong>.</p></td></tr><tr><td class="firstcol " ><p><strong>Stealth / Obfuscation</strong></p></td><td  ><p>ON (if you struggle to connect)</p></td><td  ><p>Not always necessary, but helps stop the venue's Wi-Fi from blocking your VPN.</p></td></tr><tr><td class="firstcol " ><p><strong>Kill Switch</strong></p></td><td  ><p>ON (always)</p></td><td  ><p>Keeps you safe if the crowded Wi-Fi suddenly drops.</p></td></tr><tr><td class="firstcol " ><p><strong>Split Tunneling</strong></p></td><td  ><p>Enabled (Select apps)</p></td><td  ><p>Saves speed by only protecting your most important apps.</p></td></tr></tbody></table></div><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Don't let ISP throttling ruin your USA vs Turkey stream – fix it with our top streaming VPN which has a 60-day money-back guarantee ]]></title>
                                                                                                <dc:content><![CDATA[ <p>USA vs Turkey is a chance for the USMNT to really flex their muscles, seeing as they're through to the Round of 32 regardless of the result. However, even if you've got a solid broadband connection at home, there's no guarantee of a smooth stream. ISPs routinely throttle bandwidth when they detect heavy streaming activity, and with millions of fans tuning in simultaneously, the risk of a buffering-plagued match is very real.</p><p>The <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> tackle this by making your traffic unreadable to your ISP. Without knowing what you're doing, it can't make the decision to slow you down – so instead of throttling your stream mid-match, it simply lets your connection run at full tilt.</p><p>Right now, Norton VPN sits at the top of our <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best streaming VPN</a> rankings, and a compelling World Cup deal makes it particularly well-timed for anyone wanting a buffer-free tournament.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-2">How does Norton VPN compare to other top VPNs?</h2><p>When it comes to sheer breadth, <a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> is hard to beat. Its network spans more than 9,000 servers across 149 countries, and in our speed tests it hit over 1,249 Mbps locally – figures that put it ahead of most of the competition. That firepower does come at a cost, though. NordVPN starts at <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, and that requires you to commit for two years. What's more, it comes with only a 30-day money-back guarantee, compared to Norton's 60-day window.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> undercuts both on price, with two-year plans coming in at just <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> – and unlike Norton, it places no cap on device connections, making it an appealing option for households with a lot of hardware. Speed-wise it's no slouch either, ranking among the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. Where it falls short is consistency: in our streaming tests, it has occasionally failed to unblock certain Netflix regions that Norton handles without issue.</p><p>For throttling specifically, what matters most is that your VPN can reliably access streaming sites and mask your traffic from your ISP – and that's precisely where Norton's streaming credentials count most. Add in the 60-day money-back guarantee, which is double the industry standard and comfortably covers the entire tournament, and the choice is easy. </p><p>NordVPN and Surfshark are both worth considering once the final whistle blows on the group stage, but if a buffer-free World Cup is the goal, Norton is the one to back.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/dont-let-isp-throttling-ruin-your-usa-vs-turkey-stream-fix-it-with-our-top-streaming-vpn-which-has-a-60-day-money-back-guarantee</link>
                                                                            <description>
                            <![CDATA[ Internet throttling can seriously mess up your streams – if you use too much bandwidth, your ISP may slow you down to keep things fair. However, using a VPN fixes this. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yNGV2RxVcZU8eBwvqu4fxA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dKPHULhwogJnk38dxm4F7m-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 25 Jun 2026 23:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/dKPHULhwogJnk38dxm4F7m-1280-80.png">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Christian Pulisic celebrating a goal for the USMNT]]></media:description>                                                            <media:text><![CDATA[Christian Pulisic celebrating a goal for the USMNT]]></media:text>
                                <media:title type="plain"><![CDATA[Christian Pulisic celebrating a goal for the USMNT]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dKPHULhwogJnk38dxm4F7m-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>USA vs Turkey is a chance for the USMNT to really flex their muscles, seeing as they're through to the Round of 32 regardless of the result. However, even if you've got a solid broadband connection at home, there's no guarantee of a smooth stream. ISPs routinely throttle bandwidth when they detect heavy streaming activity, and with millions of fans tuning in simultaneously, the risk of a buffering-plagued match is very real.</p><p>The <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> tackle this by making your traffic unreadable to your ISP. Without knowing what you're doing, it can't make the decision to slow you down – so instead of throttling your stream mid-match, it simply lets your connection run at full tilt.</p><p>Right now, Norton VPN sits at the top of our <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best streaming VPN</a> rankings, and a compelling World Cup deal makes it particularly well-timed for anyone wanting a buffer-free tournament.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-2">How does Norton VPN compare to other top VPNs?</h2><p>When it comes to sheer breadth, <a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> is hard to beat. Its network spans more than 9,000 servers across 149 countries, and in our speed tests it hit over 1,249 Mbps locally – figures that put it ahead of most of the competition. That firepower does come at a cost, though. NordVPN starts at <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, and that requires you to commit for two years. What's more, it comes with only a 30-day money-back guarantee, compared to Norton's 60-day window.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> undercuts both on price, with two-year plans coming in at just <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> – and unlike Norton, it places no cap on device connections, making it an appealing option for households with a lot of hardware. Speed-wise it's no slouch either, ranking among the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. Where it falls short is consistency: in our streaming tests, it has occasionally failed to unblock certain Netflix regions that Norton handles without issue.</p><p>For throttling specifically, what matters most is that your VPN can reliably access streaming sites and mask your traffic from your ISP – and that's precisely where Norton's streaming credentials count most. Add in the 60-day money-back guarantee, which is double the industry standard and comfortably covers the entire tournament, and the choice is easy. </p><p>NordVPN and Surfshark are both worth considering once the final whistle blows on the group stage, but if a buffer-free World Cup is the goal, Norton is the one to back.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Stay private while streaming Scotland vs Brazil – use our top streaming VPN which has a 60-day money-back guarantee ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Scotland vs Brazil is one of the most anticipated matches of the FIFA World Cup 2026's group stage – and whether you're watching from a bar, a hotel, or any other network that isn't your own, your connection may be more exposed than you think. Plus, if you accidentally end up on websites that aren't trustworthy, exposing your IP address to them can spell danger.</p><p>Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> closes that window by encrypting your traffic and masking your IP address, so nobody on the same network can see what you're doing. It also means your ISP can't monitor your streaming habits, and websites can't see your real IP – useful if you'd rather keep your viewing activity to yourself.</p><p>We currently rate Norton VPN as the <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best VPN for streaming</a>, and there's a sensational deal running right now that makes it an easy choice for World Cup coverage.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-3">How does Norton VPN compare to other top VPNs?</h2><p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> continues to outperform Norton VPN in our overall VPN rankings, and its testing record backs that up: speeds of over 1,249 Mbps locally, a server network spanning more than 8,000 servers across 135 countries, and a near-flawless streaming unblocking record. In comparison, Norton VPN only offers servers in 65+ countries – meaning potentially less choice when it comes to streaming services.</p><p>The catch is price – even on the discounted two-year plan, NordVPN works out at around <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, which is a little more than Norton. What's more, it only comes with a 30-day money-back guarantee. Norton also has the edge when it comes to raw streaming performance, unblocking every major streaming platform in our latest round of testing, despite its smaller network.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> is a budget alternative, with plans starting at a very reasonable <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> and the bonus of unlimited device connections. This is a contrast to Norton VPN, which has strict limits on how many devices you can install the VPN on. Surfshark's a capable all-rounder, too, and one of the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. However, its streaming unblocking has been less consistent than Norton's in our reviews, occasionally struggling with certain Netflix regions.</p><p>If your main priority is keeping your streaming activity private without interruption, Norton VPN is the clear choice. What's more, that performance currently comes with competitive pricing against NordVPN and a 60-day guarantee which is double what most competitors offer, giving you the entire tournament to decide if it's right for you.</p><p>NordVPN and Surfshark remain solid options for general use once the World Cup wraps up, but for streaming this tournament privately and securely, Norton's combination of unblocking power and excellent pricing is hard to beat.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/stay-private-while-streaming-england-vs-ghana-use-our-top-streaming-vpn-which-has-a-60-day-money-back-guarantee</link>
                                                                            <description>
                            <![CDATA[ If you're out and about or abroad and trying to stream, a VPN is the perfect companion. It hides your IP, and stops any dodgy sites recording your IP address. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">d5a7TT39CVKoybUvgvFh4R</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/iwVtzsLdhsxtR5TqhDPrzL-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 17:30:00 +0000</pubDate>                                                                                                                                <updated>Wed, 24 Jun 2026 15:22:23 +0000</updated>
                                                                                                                                            <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/iwVtzsLdhsxtR5TqhDPrzL-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images / Visionhaus]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ryan Christie of Scotland receives the ball in the FIFA World Cup 2026]]></media:description>                                                            <media:text><![CDATA[Ryan Christie of Scotland receives the ball in the FIFA World Cup 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Ryan Christie of Scotland receives the ball in the FIFA World Cup 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/iwVtzsLdhsxtR5TqhDPrzL-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Scotland vs Brazil is one of the most anticipated matches of the FIFA World Cup 2026's group stage – and whether you're watching from a bar, a hotel, or any other network that isn't your own, your connection may be more exposed than you think. Plus, if you accidentally end up on websites that aren't trustworthy, exposing your IP address to them can spell danger.</p><p>Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> closes that window by encrypting your traffic and masking your IP address, so nobody on the same network can see what you're doing. It also means your ISP can't monitor your streaming habits, and websites can't see your real IP – useful if you'd rather keep your viewing activity to yourself.</p><p>We currently rate Norton VPN as the <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best VPN for streaming</a>, and there's a sensational deal running right now that makes it an easy choice for World Cup coverage.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-3">How does Norton VPN compare to other top VPNs?</h2><p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> continues to outperform Norton VPN in our overall VPN rankings, and its testing record backs that up: speeds of over 1,249 Mbps locally, a server network spanning more than 8,000 servers across 135 countries, and a near-flawless streaming unblocking record. In comparison, Norton VPN only offers servers in 65+ countries – meaning potentially less choice when it comes to streaming services.</p><p>The catch is price – even on the discounted two-year plan, NordVPN works out at around <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, which is a little more than Norton. What's more, it only comes with a 30-day money-back guarantee. Norton also has the edge when it comes to raw streaming performance, unblocking every major streaming platform in our latest round of testing, despite its smaller network.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> is a budget alternative, with plans starting at a very reasonable <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> and the bonus of unlimited device connections. This is a contrast to Norton VPN, which has strict limits on how many devices you can install the VPN on. Surfshark's a capable all-rounder, too, and one of the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. However, its streaming unblocking has been less consistent than Norton's in our reviews, occasionally struggling with certain Netflix regions.</p><p>If your main priority is keeping your streaming activity private without interruption, Norton VPN is the clear choice. What's more, that performance currently comes with competitive pricing against NordVPN and a 60-day guarantee which is double what most competitors offer, giving you the entire tournament to decide if it's right for you.</p><p>NordVPN and Surfshark remain solid options for general use once the World Cup wraps up, but for streaming this tournament privately and securely, Norton's combination of unblocking power and excellent pricing is hard to beat.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Here are some way-too-early Windows 12 predictions based on how Microsoft is changing Windows 11 ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Now that <a href="https://www.tomsguide.com/news/live/microsoft-build-2026">Microsoft Build 2026</a> is in the rearview, we have a much clearer picture of the <a href="https://www.tomsguide.com/computing/windows-operating-systems/the-future-of-windows-11-what-is-microsoft-building-next">future of Windows 11</a>. Agentic AI systems! Smart work ID badges! Always-on personal assistants! The path ahead for Microsoft’s current operating system will clearly feature AI in some form or fashion at every turn. But what about <a href="https://www.tomsguide.com/news/windows-12">Windows 12</a>?</p><p>Though it wasn’t a surprise that Microsoft didn’t announce its next OS during this year's Build keynote, we’d be amazed if work on Windows 12 hasn’t been motoring away in the background for quite some time over in Redmond. As such, we thought now would be an opportune time to speculate on a platform that will likely usher in a new era of AI integration. </p><p>Whether dealing with the petaflop power of the Surface RTX Spark Dev Box or the potentially paradigm-shifting Project Solara, AI agents will be run both locally and through the cloud to forge next-level hybrid computing on Windows 12. </p><p>But it’s not all about AI with our predictions for an OS we’re expecting in the not-too-distant future. The future of Xbox could also be intrinsically tied to Windows 12. With <a href="https://www.tomsguide.com/gaming/xbox/all-windows-based-handheld-gaming-consoles-are-getting-the-xbox-full-screen-experience-what-you-need-to-know">Xbox Mode continuing to bloom on Windows 11</a>, don’t be surprised if Microsoft commits hard to PC gaming going forward, with more focus on creating a UI that can truly compete with Steam. </p><p>Without further ado, let’s get into some Windows 12 predictions, even if it does seem ludicrously early to be making them.</p><h2 id="windows-12-will-be-all-about-ai">Windows 12 will be all about AI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dMwUdeVcgTcgchLUnQgpQ3" name="Microsoft Surface Laptop (2026)-5" alt="Microsoft Surface Laptop 8" src="https://cdn.mos.cms.futurecdn.net/dMwUdeVcgTcgchLUnQgpQ3.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Forget Copilot. The level of AI integration Windows 12 is going to embrace will be far more impactful than asking a digital assistant what the weather will be in a couple of hours. Microsoft’s new OS will have AI baked into its very core, with agentic systems that exhibit real autonomy handling the jobs you’d previously have done with apps. </p><p>This year’s Build made it clear that <a href="https://www.tomsguide.com/ai/a-guide-to-agentic-ai-how-windows-is-going-to-do-more-things-for-you">AI agents are a huge priority for Microsoft</a>. As much as they’re shaping the future of your current OS, the use of agentic systems will likely leap to a new level with Windows 12. </p><p>Just take <a href="https://www.microsoft.com/en-us/microsoft-365/blog/2026/06/02/introducing-microsoft-scout-your-always-on-personal-agent/">Microsoft Scout</a>. This new Autopilot AI agent acts as an always-on personal agent. Rather than needing to be prompted like Copilot, Scout uses the MAI-Thinking-1 reasoning model to act autonomously. As such, it learns how you work over time, quickly becoming aware of your routines in order to better service your needs on any given day. </p><p>By the time Windows 12 launches, Scout and similar agentic systems will have had plenty of time to percolate. When Microsoft’s next OS is out in the wild, we could be looking at a platform where AI runs far deeper than mere surface-level window dressing. The days of manually setting meetings or switching between spreadsheets and emails could be over, as AI agents like Scout take control of your workflow, autonomously handling tasks so that you can fully focus on the most important aspects of your job. </p><p>Essentially, Windows 12 is going to be an AI OS, one that could potentially transform the way you work. </p><h2 id="hybrid-computing-will-be-central-to-windows-12">Hybrid computing will be central to Windows 12</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="B7VDkWBHZGqQNifR89nryg" name="Project-Solara (credit Microsoft)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/B7VDkWBHZGqQNifR89nryg.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>The era of AI PCs has been around for a while now, yet it looks like Windows 12 could fully realize the potential of AI, in part, by turning the focus more heavily on hybrid computing. In this future of Jaws 19, hoverboards and flying Deloreans, users won’t need to worry about whether tasks are running on their NPU, CPU or GPU. Instead, Windows 12’s AI-influenced OS will autonomously figure out where workloads should be handled. </p><p>This isn’t about Microsoft pitting cloud AI and local AI against each other. The future we envisage for Windows 12 is where hybrid workflows are commonplace, with AI agents running locally on the systems like the Spark Dev Box (which we’ll touch on shortly) and through the cloud, too. </p><p>Ideally, users won’t even know where tasks are running. Less demanding AI tasks may operate locally, while heavy duty rendering could be split up between hardware and cloud-based infrastructures. If Windows 12 fully embraces the concept of hybrid computing, the end result will hopefully be an OS that balances performance more efficiently, as tasks run discretely across local hardware and the cloud.</p><h2 id="ai-agents-will-replace-apps">AI agents will replace apps</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YsPaUc5ean2R2rGU87rDrg" name="Project-Solara-1" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/YsPaUc5ean2R2rGU87rDrg.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Much of the focus of this year’s Build centered around agentic systems. AI agents aren’t just the future of Windows, they’re the here and now. We’ve already touched on Microsoft Spark being rolled out to Frontier customers, and before too long <a href="https://commandline.microsoft.com/project-solara-build-2026/">Project Solara</a> will be upon this. </p><p>Built from the ground up on a Microsoft-tailored Android platform, the focus for Solara is on AI agents, not apps. Indeed, Solara seems keen to move away from traditional Windows hardware, instead taking the forms of a smart clock-like device and a work ID badge. The latter has been designed to assist users on the go, and it’s capable of recording notes before using AI to clean up audio that can then be sent to colleagues. It potentially represents a future of computing where you no longer need to be chained to a laptop to get work done. </p><p>Microsoft is clearly betting the farm on AI, and it’s entirely possible Windows 12 will be a heavily AI-assisted OS. Unlike past operating systems, AI agents will have far more importance than old-school apps. In this (potentially soon to be realized) future, your day will no longer be taken up by sifting through emails and spreadsheets. Rather, agentic systems will act as personal AI assistants, acting autonomously as they help declutter your workday to help you complete tasks more effortlessly and efficiently. </p><h2 id="windows-12-will-light-the-spark">Windows 12 will light the Spark</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rPdwCgeWPVoHuMhfpUNv5h" name="Microsoft-Build-2026 (credit Microsoft)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/rPdwCgeWPVoHuMhfpUNv5h.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>There’s a line of thinking that’s easy to buy into following Microsoft's Build keynote: Windows 12 will be a “dev-first” OS. Now, Redmond isn’t suddenly going to forget regular consumers. But looking forward, it’s hard not to see the Big M being more focused on servicing developers' needs than at any other point in its history.</p><p>Enter the <a href="https://blogs.windows.com/devices/2026/06/02/building-the-next-generation-of-devices-for-developers-surface-rtx-spark-dev-box/">Surface RTX Spark Dev Box</a>. Initially shipping as a Windows 11 Pro mini PC that’s built around the Nvidia RTX Spark superchip, there’s no question more enhanced versions of this little rig will support Windows 12 in the future. Designed to support locally-based AI development, this is a box that has been built to service agentic workflows that eat up huge compute costs. Thankfully, the numbers suggest the Spark Dev Box will be more than capable of handling such tasks, as this dev-focused mini marvel gives users up to an astonishing 1 petaflop of AI compute and 128GB of unified memory. </p><p>Rocking the power of a combined Nvidia Blackwell RTX GPU and Nvidia Grace CPU, the Spark Dev Box can power 120B+ parameter models locally. And that last word really is key. Spark has been designed to service the most demanding<em> local</em> AI tasks, in turn taking the focus away from cloud-based AI pipelines. Spark feels like a test run for what the future of high-end Windows 12 devices will look like: a workstation where the emphasis is on locally supporting AI agents to give developers more control.</p><h2 id="xbox-mode-could-change-the-game">Xbox Mode could change the game</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:832px;"><p class="vanilla-image-block" style="padding-top:56.61%;"><img id="YdX6MSjaSYxj7PKuhgJzwN" name="Screenshot 2026-05-20 155209" alt="xbox" src="https://cdn.mos.cms.futurecdn.net/YdX6MSjaSYxj7PKuhgJzwN.png" mos="" align="middle" fullscreen="" width="832" height="471" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>Microsoft didn’t shine any light on its gaming endeavors during the dev-focused Build keynote, and that wasn’t a surprise. That doesn’t mean there aren’t big plans for the future of Xbox, particularly with how it ties into Windows 12 going forward. </p><p>With Phil Spencer gone, replaced by new Head of Xbox Asha Sharma, don’t be shocked if Microsoft’s gaming division goes through big changes in the next couple of years. We’ve known about <a href="https://www.tomsguide.com/gaming/xbox/microsoft-reveals-new-details-on-its-project-helix-pc-console-hybrid-heres-all-the-latest-on-the-next-xbox">Project Helix</a> for ages at this point. And with the next Xbox promising to bridge the gap between consoles and PCs like never before, how Windows 12 handles Microsoft games may look quite different to the way Windows 11 currently deals with Xbox titles.</p><p><a href="https://www.tomsguide.com/gaming/xbox/all-windows-based-handheld-gaming-consoles-are-getting-the-xbox-full-screen-experience-what-you-need-to-know">Xbox Full Screen Mode</a> rolled out on Windows not too long ago, giving gamers an experience that’s more in line with Steam’s Big Picture. As Xbox integration continues to evolve, it would make sense for Microsoft to double down on providing a more console-like OS for next-gen games. </p><p>As for what Xbox Mode on Windows 12 could look like, there’s a reasonable chance we could see a gaming-focused app that’s more deeply integrated with Microsoft’s next OS. Imagine a more streamlined platform that you could boot directly into as soon as you fire up your PC. One that uses fewer Windows background processes to provide an experience that’s every bit as seamless as Steam. </p><p>It seems clear the future of Xbox is more deeply tied to Windows than ever before. As rumors swirl suggesting Sony could soon stop releasing PS5 games on PC, next-gen Xbox titles could provide the most premium console-like experience on Windows 12.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/im-a-windows-user-and-these-are-5-upgrades-i-want-from-windows-12">I’m a Windows user — and these are 5 upgrades I want from Windows 12</a></li><li><a href="https://www.tomsguide.com/best-picks/best-computers">The 7 best computers in 2026: tested by experts</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/15-top-windows-11-tips-everyone-needs-to-know">15 top Windows 11 tips everyone needs to know</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/here-are-some-way-too-early-windows-12-predictions-based-on-how-microsoft-is-changing-windows-11</link>
                                                                            <description>
                            <![CDATA[ We might not see Windows 12 for a good while yet, but in the wake of Microsoft Build 2026, now seems like an ideal time to start speculating on Microsoft’s next OS. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8VCE6ThwdjPdQXQLKCKEE7</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/43feUogzceEtWd5Y4KTf7e-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 21 Jun 2026 05:15:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ dave.meikleham@futurenet.com (Dave Meikleham) ]]></author>                    <dc:creator><![CDATA[ Dave Meikleham ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Rda8e7jGfyTdZLWYJQQ8VY.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave is a computing editor at Tom’s Guide and covers everything from cutting-edge laptops, the latest GPU tech, to ultrawide monitors. When he’s not worrying about dead pixels, Dave enjoys regularly rebuilding his PC for absolutely no reason at all. He built his first rig over 20 years ago, and he’s gone through more motherboards than he’s had hot dinners. Probably. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;In a previous life, he worked as a video game journalist during a career spanning the best part of two decades. Over that time he worked across both online and print, with bylines for GamesRadar+, PC Gamer, TechRadar, Edge and the Official UK PlayStation Magazine. He’s almost amassed an immeasurable amount of bad puns.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;An avid PC and console gamer, Dave enjoys breaking out Fraps way too often as he obsesses over frame rates. Despite owning a graphics card that costs roughly the same as your average used car, he still enjoys gaming on the go and is regularly glued to his Switch. Away from tech, most of Dave’s time is taken up by walking his husky, obsessing about his various OLED displays and sweating over the fitness of half a dozen Arsenal players on any given week.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/43feUogzceEtWd5Y4KTf7e-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[How to disable the Windows key]]></media:description>                                                            <media:text><![CDATA[How to disable the Windows key]]></media:text>
                                <media:title type="plain"><![CDATA[How to disable the Windows key]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/43feUogzceEtWd5Y4KTf7e-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Now that <a href="https://www.tomsguide.com/news/live/microsoft-build-2026">Microsoft Build 2026</a> is in the rearview, we have a much clearer picture of the <a href="https://www.tomsguide.com/computing/windows-operating-systems/the-future-of-windows-11-what-is-microsoft-building-next">future of Windows 11</a>. Agentic AI systems! Smart work ID badges! Always-on personal assistants! The path ahead for Microsoft’s current operating system will clearly feature AI in some form or fashion at every turn. But what about <a href="https://www.tomsguide.com/news/windows-12">Windows 12</a>?</p><p>Though it wasn’t a surprise that Microsoft didn’t announce its next OS during this year's Build keynote, we’d be amazed if work on Windows 12 hasn’t been motoring away in the background for quite some time over in Redmond. As such, we thought now would be an opportune time to speculate on a platform that will likely usher in a new era of AI integration. </p><p>Whether dealing with the petaflop power of the Surface RTX Spark Dev Box or the potentially paradigm-shifting Project Solara, AI agents will be run both locally and through the cloud to forge next-level hybrid computing on Windows 12. </p><p>But it’s not all about AI with our predictions for an OS we’re expecting in the not-too-distant future. The future of Xbox could also be intrinsically tied to Windows 12. With <a href="https://www.tomsguide.com/gaming/xbox/all-windows-based-handheld-gaming-consoles-are-getting-the-xbox-full-screen-experience-what-you-need-to-know">Xbox Mode continuing to bloom on Windows 11</a>, don’t be surprised if Microsoft commits hard to PC gaming going forward, with more focus on creating a UI that can truly compete with Steam. </p><p>Without further ado, let’s get into some Windows 12 predictions, even if it does seem ludicrously early to be making them.</p><h2 id="windows-12-will-be-all-about-ai">Windows 12 will be all about AI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dMwUdeVcgTcgchLUnQgpQ3" name="Microsoft Surface Laptop (2026)-5" alt="Microsoft Surface Laptop 8" src="https://cdn.mos.cms.futurecdn.net/dMwUdeVcgTcgchLUnQgpQ3.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Forget Copilot. The level of AI integration Windows 12 is going to embrace will be far more impactful than asking a digital assistant what the weather will be in a couple of hours. Microsoft’s new OS will have AI baked into its very core, with agentic systems that exhibit real autonomy handling the jobs you’d previously have done with apps. </p><p>This year’s Build made it clear that <a href="https://www.tomsguide.com/ai/a-guide-to-agentic-ai-how-windows-is-going-to-do-more-things-for-you">AI agents are a huge priority for Microsoft</a>. As much as they’re shaping the future of your current OS, the use of agentic systems will likely leap to a new level with Windows 12. </p><p>Just take <a href="https://www.microsoft.com/en-us/microsoft-365/blog/2026/06/02/introducing-microsoft-scout-your-always-on-personal-agent/">Microsoft Scout</a>. This new Autopilot AI agent acts as an always-on personal agent. Rather than needing to be prompted like Copilot, Scout uses the MAI-Thinking-1 reasoning model to act autonomously. As such, it learns how you work over time, quickly becoming aware of your routines in order to better service your needs on any given day. </p><p>By the time Windows 12 launches, Scout and similar agentic systems will have had plenty of time to percolate. When Microsoft’s next OS is out in the wild, we could be looking at a platform where AI runs far deeper than mere surface-level window dressing. The days of manually setting meetings or switching between spreadsheets and emails could be over, as AI agents like Scout take control of your workflow, autonomously handling tasks so that you can fully focus on the most important aspects of your job. </p><p>Essentially, Windows 12 is going to be an AI OS, one that could potentially transform the way you work. </p><h2 id="hybrid-computing-will-be-central-to-windows-12">Hybrid computing will be central to Windows 12</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="B7VDkWBHZGqQNifR89nryg" name="Project-Solara (credit Microsoft)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/B7VDkWBHZGqQNifR89nryg.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>The era of AI PCs has been around for a while now, yet it looks like Windows 12 could fully realize the potential of AI, in part, by turning the focus more heavily on hybrid computing. In this future of Jaws 19, hoverboards and flying Deloreans, users won’t need to worry about whether tasks are running on their NPU, CPU or GPU. Instead, Windows 12’s AI-influenced OS will autonomously figure out where workloads should be handled. </p><p>This isn’t about Microsoft pitting cloud AI and local AI against each other. The future we envisage for Windows 12 is where hybrid workflows are commonplace, with AI agents running locally on the systems like the Spark Dev Box (which we’ll touch on shortly) and through the cloud, too. </p><p>Ideally, users won’t even know where tasks are running. Less demanding AI tasks may operate locally, while heavy duty rendering could be split up between hardware and cloud-based infrastructures. If Windows 12 fully embraces the concept of hybrid computing, the end result will hopefully be an OS that balances performance more efficiently, as tasks run discretely across local hardware and the cloud.</p><h2 id="ai-agents-will-replace-apps">AI agents will replace apps</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YsPaUc5ean2R2rGU87rDrg" name="Project-Solara-1" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/YsPaUc5ean2R2rGU87rDrg.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Much of the focus of this year’s Build centered around agentic systems. AI agents aren’t just the future of Windows, they’re the here and now. We’ve already touched on Microsoft Spark being rolled out to Frontier customers, and before too long <a href="https://commandline.microsoft.com/project-solara-build-2026/">Project Solara</a> will be upon this. </p><p>Built from the ground up on a Microsoft-tailored Android platform, the focus for Solara is on AI agents, not apps. Indeed, Solara seems keen to move away from traditional Windows hardware, instead taking the forms of a smart clock-like device and a work ID badge. The latter has been designed to assist users on the go, and it’s capable of recording notes before using AI to clean up audio that can then be sent to colleagues. It potentially represents a future of computing where you no longer need to be chained to a laptop to get work done. </p><p>Microsoft is clearly betting the farm on AI, and it’s entirely possible Windows 12 will be a heavily AI-assisted OS. Unlike past operating systems, AI agents will have far more importance than old-school apps. In this (potentially soon to be realized) future, your day will no longer be taken up by sifting through emails and spreadsheets. Rather, agentic systems will act as personal AI assistants, acting autonomously as they help declutter your workday to help you complete tasks more effortlessly and efficiently. </p><h2 id="windows-12-will-light-the-spark">Windows 12 will light the Spark</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rPdwCgeWPVoHuMhfpUNv5h" name="Microsoft-Build-2026 (credit Microsoft)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/rPdwCgeWPVoHuMhfpUNv5h.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>There’s a line of thinking that’s easy to buy into following Microsoft's Build keynote: Windows 12 will be a “dev-first” OS. Now, Redmond isn’t suddenly going to forget regular consumers. But looking forward, it’s hard not to see the Big M being more focused on servicing developers' needs than at any other point in its history.</p><p>Enter the <a href="https://blogs.windows.com/devices/2026/06/02/building-the-next-generation-of-devices-for-developers-surface-rtx-spark-dev-box/">Surface RTX Spark Dev Box</a>. Initially shipping as a Windows 11 Pro mini PC that’s built around the Nvidia RTX Spark superchip, there’s no question more enhanced versions of this little rig will support Windows 12 in the future. Designed to support locally-based AI development, this is a box that has been built to service agentic workflows that eat up huge compute costs. Thankfully, the numbers suggest the Spark Dev Box will be more than capable of handling such tasks, as this dev-focused mini marvel gives users up to an astonishing 1 petaflop of AI compute and 128GB of unified memory. </p><p>Rocking the power of a combined Nvidia Blackwell RTX GPU and Nvidia Grace CPU, the Spark Dev Box can power 120B+ parameter models locally. And that last word really is key. Spark has been designed to service the most demanding<em> local</em> AI tasks, in turn taking the focus away from cloud-based AI pipelines. Spark feels like a test run for what the future of high-end Windows 12 devices will look like: a workstation where the emphasis is on locally supporting AI agents to give developers more control.</p><h2 id="xbox-mode-could-change-the-game">Xbox Mode could change the game</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:832px;"><p class="vanilla-image-block" style="padding-top:56.61%;"><img id="YdX6MSjaSYxj7PKuhgJzwN" name="Screenshot 2026-05-20 155209" alt="xbox" src="https://cdn.mos.cms.futurecdn.net/YdX6MSjaSYxj7PKuhgJzwN.png" mos="" align="middle" fullscreen="" width="832" height="471" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>Microsoft didn’t shine any light on its gaming endeavors during the dev-focused Build keynote, and that wasn’t a surprise. That doesn’t mean there aren’t big plans for the future of Xbox, particularly with how it ties into Windows 12 going forward. </p><p>With Phil Spencer gone, replaced by new Head of Xbox Asha Sharma, don’t be shocked if Microsoft’s gaming division goes through big changes in the next couple of years. We’ve known about <a href="https://www.tomsguide.com/gaming/xbox/microsoft-reveals-new-details-on-its-project-helix-pc-console-hybrid-heres-all-the-latest-on-the-next-xbox">Project Helix</a> for ages at this point. And with the next Xbox promising to bridge the gap between consoles and PCs like never before, how Windows 12 handles Microsoft games may look quite different to the way Windows 11 currently deals with Xbox titles.</p><p><a href="https://www.tomsguide.com/gaming/xbox/all-windows-based-handheld-gaming-consoles-are-getting-the-xbox-full-screen-experience-what-you-need-to-know">Xbox Full Screen Mode</a> rolled out on Windows not too long ago, giving gamers an experience that’s more in line with Steam’s Big Picture. As Xbox integration continues to evolve, it would make sense for Microsoft to double down on providing a more console-like OS for next-gen games. </p><p>As for what Xbox Mode on Windows 12 could look like, there’s a reasonable chance we could see a gaming-focused app that’s more deeply integrated with Microsoft’s next OS. Imagine a more streamlined platform that you could boot directly into as soon as you fire up your PC. One that uses fewer Windows background processes to provide an experience that’s every bit as seamless as Steam. </p><p>It seems clear the future of Xbox is more deeply tied to Windows than ever before. As rumors swirl suggesting Sony could soon stop releasing PS5 games on PC, next-gen Xbox titles could provide the most premium console-like experience on Windows 12.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/im-a-windows-user-and-these-are-5-upgrades-i-want-from-windows-12">I’m a Windows user — and these are 5 upgrades I want from Windows 12</a></li><li><a href="https://www.tomsguide.com/best-picks/best-computers">The 7 best computers in 2026: tested by experts</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/15-top-windows-11-tips-everyone-needs-to-know">15 top Windows 11 tips everyone needs to know</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Don't miss a second of England vs Croatia while you're abroad – Norton VPN is our top streaming VPN and has a 60-day money-back guarantee ]]></title>
                                                                                                <dc:content><![CDATA[ <p>England take on Croatia in a one of the most hotly anticipated games of the <a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams">2026 World Cup</a>'s group stage – and if you're traveling abroad or just away from your usual setup, you don't want to miss it. Streaming services often restrict access based on location, which can leave you locked out of the coverage you'd normally get at home.</p><p>Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> solves this by routing your connection through a server in your home country, letting you access your usual streaming service as if you'd never left. It also encrypts your traffic, which is useful if you're connecting via public Wi-Fi at an airport, hotel, or bar to catch the match.</p><p>We currently rate <a href="https://www.tomsguide.com/computing/vpns/norton-vpn-review">Norton VPN</a> as the <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best VPN for streaming</a>, and there's a sensational deal running right now that makes it an easy choice for World Cup coverage.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-4">How does Norton VPN compare to other top VPNs?</h2><p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> remains our top-rated VPN overall, and its testing backs that up: speeds of over 1,249 Mbps locally, a server network spanning more than 8,000 servers across a staggering 167 countries, and a near-flawless streaming unblocking record. In comparison, Norton only offers servers in a measly 65 countries – meaning potentially less choice when it comes to streaming services.</p><p>The catch is price – even on the discounted two-year plan, NordVPN works out to around <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, more than Norton's current World Cup deal. Norton also has the edge when it comes to raw streaming performance, unblocking every major streaming platform in our latest round of testing, despite its smaller network.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> is a budget alternative, with plans starting at a very reasonable <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> and the bonus of unlimited device connections. This is a bonus compared to Norton, which has strict limits on how many devices you can install the VPN on. Surfshark's a capable all-rounder, too, and one of the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. However, its streaming unblocking has been less consistent than Norton's in our reviews, occasionally struggling with certain Netflix regions.</p><p>If your main priority is locking in reliable access to every match without interruption, Norton VPN is the clear choice. What's more, that performance currently comes with competitive pricing against NordVPN and a 60-day guarantee which is double what most competitors offer, giving you the entire tournament to decide if it's right for you. </p><p>NordVPN and Surfshark remain solid options for general use once the World Cup wraps up, but for streaming this tournament specifically, Norton's combination of unblocking power and deal pricing is hard to beat.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/dont-miss-a-second-of-england-vs-croatia-while-youre-abroad-norton-vpn-is-our-top-streaming-vpn-and-has-a-60-day-money-back-guarantee</link>
                                                                            <description>
                            <![CDATA[ Norton VPN's 12-month plan now starts at $3.33 a month, backed by a money-back guarantee that covers the entire tournament ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">33yjnaEshAPEhz9HdvAQwN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LWRdbEnZruhyCeoStbzXYD-1280-80.webp" type="image/webp" length="0"></enclosure>
                                                                        <pubDate>Wed, 17 Jun 2026 15:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/webp" url="https://cdn.mos.cms.futurecdn.net/LWRdbEnZruhyCeoStbzXYD-1280-80.webp">
                                                            <media:credit><![CDATA[Michael Regan - The FA/The FA via Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Harry Kane of England scores a penalty for his team&#039;s third goal during the FIFA World Cup 2026 qualifier match between Latvia and England at Daugava Stadium on October 14, 2025 in Riga, Latvia.]]></media:description>                                                            <media:text><![CDATA[Harry Kane of England scores a penalty for his team&#039;s third goal during the FIFA World Cup 2026 qualifier match between Latvia and England at Daugava Stadium on October 14, 2025 in Riga, Latvia.]]></media:text>
                                <media:title type="plain"><![CDATA[Harry Kane of England scores a penalty for his team&#039;s third goal during the FIFA World Cup 2026 qualifier match between Latvia and England at Daugava Stadium on October 14, 2025 in Riga, Latvia.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LWRdbEnZruhyCeoStbzXYD-1280-80.webp" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>England take on Croatia in a one of the most hotly anticipated games of the <a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams">2026 World Cup</a>'s group stage – and if you're traveling abroad or just away from your usual setup, you don't want to miss it. Streaming services often restrict access based on location, which can leave you locked out of the coverage you'd normally get at home.</p><p>Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> solves this by routing your connection through a server in your home country, letting you access your usual streaming service as if you'd never left. It also encrypts your traffic, which is useful if you're connecting via public Wi-Fi at an airport, hotel, or bar to catch the match.</p><p>We currently rate <a href="https://www.tomsguide.com/computing/vpns/norton-vpn-review">Norton VPN</a> as the <a href="https://www.tomsguide.com/best-picks/streaming-vpn">best VPN for streaming</a>, and there's a sensational deal running right now that makes it an easy choice for World Cup coverage.</p><div class="product"><a data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_dealpost&param3=vpn&subid1=Deal_TG" target="_blank" rel="nofollow" data-dimension112="b3548274-ac8f-4465-8770-518b393dfed5" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="how-does-norton-vpn-compare-to-other-top-vpns-4">How does Norton VPN compare to other top VPNs?</h2><p><a href="https://www.tomsguide.com/reviews/nordvpn-review">NordVPN</a> remains our top-rated VPN overall, and its testing backs that up: speeds of over 1,249 Mbps locally, a server network spanning more than 8,000 servers across a staggering 167 countries, and a near-flawless streaming unblocking record. In comparison, Norton only offers servers in a measly 65 countries – meaning potentially less choice when it comes to streaming services.</p><p>The catch is price – even on the discounted two-year plan, NordVPN works out to around <a href="http://go.nordvpn.net/aff_c?offer_id=564&aff_id=3013&url_id=10992" target="_blank" rel="nofollow"><strong>$3.49 per month</strong></a>, more than Norton's current World Cup deal. Norton also has the edge when it comes to raw streaming performance, unblocking every major streaming platform in our latest round of testing, despite its smaller network.</p><p><a href="https://www.tomsguide.com/reviews/surfshark-vpn-review">Surfshark</a> is a budget alternative, with plans starting at a very reasonable <a href="http://get.surfshark.net/aff_c?offer_id=61&aff_id=1691" target="_blank" rel="nofollow"><strong>$1.99 per month</strong></a> and the bonus of unlimited device connections. This is a bonus compared to Norton, which has strict limits on how many devices you can install the VPN on. Surfshark's a capable all-rounder, too, and one of the <a href="https://www.tomsguide.com/best-picks/best-fast-vpn">fastest VPNs</a> we've tested. However, its streaming unblocking has been less consistent than Norton's in our reviews, occasionally struggling with certain Netflix regions.</p><p>If your main priority is locking in reliable access to every match without interruption, Norton VPN is the clear choice. What's more, that performance currently comes with competitive pricing against NordVPN and a 60-day guarantee which is double what most competitors offer, giving you the entire tournament to decide if it's right for you. </p><p>NordVPN and Surfshark remain solid options for general use once the World Cup wraps up, but for streaming this tournament specifically, Norton's combination of unblocking power and deal pricing is hard to beat.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ DoorDash was down live — app crashing and ordering was unavailable in major outage ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="live-content"><p>DoorDash was down for many users for a few hours. However, as of 12:39 pm ET, the online food delivery service is working normally again. Over 10,000 outage reports appeared on Downdetector, but at the moment, they have fallen to around 500, with reports continuing to plummet.</p><p>Here were all the updates as they happened.</p><h3 class="article-body__section" id="section-doordash-outage-live-updates"><span>DoorDash outage — live updates</span></h3></div><div class="live-content"><time datetime="2026-06-16T14:15:28+00:00">June 16, 2026 – 10:15 AM</time><h2 id="massive-spike-with-over-10-000-reports-on-downdetector">Massive spike with over 10,000 reports on Downdetector</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:915px;"><p class="vanilla-image-block" style="padding-top:52.02%;"><img id="u3qgk4nRdCubbR8tdvcJ6Z" name="Screenshot 2026-06-16 101338" alt="Screenshot showing Doordash outage on Downdetector." src="https://cdn.mos.cms.futurecdn.net/u3qgk4nRdCubbR8tdvcJ6Z.jpg" mos="" align="middle" fullscreen="" width="915" height="476" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>If you just tried using DoorDash this morning and found it not working properly, you're not alone because it appears to be down for many people. According to Downdetector, there's been over 10,000 reports so far.</p></div><div class="live-content"><time datetime="2026-06-16T14:19:50+00:00">June 16, 2026 – 10:19 AM</time><h2 id="doordash-is-aware-of-the-outage">DoorDash is aware of the outage</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2066887246054113295"><p lang="en" dir="ltr">We’re aware of an issue affecting our platform and are working urgently to resolve it. We thank our users for their patience and understanding, and apologize for any inconvenience.<a href="https://twitter.com/cantworkitout/status/2066887246054113295">June 16, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>With so many people reporting on social media about DoorDash not working for them, DoorDash officially posted on its <a href="https://x.com/DoorDash_Help/status/2066887246054113295" target="_blank">@DoorDash_Help</a> account on X to acknowledge that the service is down and that they're "aware of an issue affecting our platform and working urgently to resolve it."</p></div><div class="live-content"><time datetime="2026-06-16T14:26:21+00:00">June 16, 2026 – 10:26 AM</time><h2 id="outage-spikes-to-more-than-30-000">Outage spikes to more than 30,000</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:947px;"><p class="vanilla-image-block" style="padding-top:53.54%;"><img id="i7YfcwojACkvqMJkuXBTYA" name="Screenshot 2026-06-16 102114" alt="Doordash outage." src="https://cdn.mos.cms.futurecdn.net/i7YfcwojACkvqMJkuXBTYA.jpg" mos="" align="middle" fullscreen="" width="947" height="507" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>More and more people are reporting that DoorDash is down, with over 30,000 reports now about it according to <a href="https://downdetector.com/status/doordash/" target="_blank">Downdetector</a>. The issues range from log in issues, placing orders, and delivery drivers unable to complete orders.</p></div><div class="live-content"><time datetime="2026-06-16T14:32:43+00:00">June 16, 2026 – 10:32 AM</time><h2 id="this-is-what-greets-most-doordash-users-today">This is what greets most DoorDash users today</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="yG7Mq9P96WuGHP3Hd9Dr3n" name="Doordash down" alt="Doordash screenshots." src="https://cdn.mos.cms.futurecdn.net/yG7Mq9P96WuGHP3Hd9Dr3n.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>For most of the U.S., people are still starting their mornings and there's no better way to do that than ordering a coffee or breakfast on DoorDash. Unfortunately, users are unable to access the service through the app because of the outage. </p></div><div class="live-content"><time datetime="2026-06-16T14:37:00+00:00">June 16, 2026 – 10:37 AM</time><h2 id="log-in-issues-with-the-website-as-well">Log in issues with the website as well</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:40.94%;"><img id="y7zwt9QmKSZygdRci42qeV" name="Screenshot 2026-06-16 103436" alt="Doordash website log in." src="https://cdn.mos.cms.futurecdn.net/y7zwt9QmKSZygdRci42qeV.jpg" mos="" align="middle" fullscreen="" width="1920" height="786" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Sometimes these outages only affect certain platforms, like mobile apps, but this DoorDash outage appears to be more widespread because it's also affecting its online portal. If you try to log in with your account, you'll likely be greeted to some kind of error.</p></div><div class="live-content"><time datetime="2026-06-16T14:41:26+00:00">June 16, 2026 – 10:41 AM</time><h2 id="what-should-doordash-do-in-this-case">What should DoorDash do in this case?</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2066892626129773006"><p lang="en" dir="ltr">so this doordash outage will be interesting because the company literally has to refund everyone from the person who ordered the food, the restaurant that made the food, and the dasher bringing it all HAVE to be paid while the food and groceries all go to waste, brutal<a href="https://twitter.com/cantworkitout/status/2066892626129773006">June 16, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>User <a href="https://x.com/kel_fc/status/2066892626129773006" target="_blank">@kel_fc makes</a> on X makes a good point about this massive outage going on with DoorDash at the moment because of the orders that were placed prior to the outage.  What do you think DoorDash should do to compensate users who placed orders but are unable to receive them?</p></div><div class="live-content"><time datetime="2026-06-16T14:46:05+00:00">June 16, 2026 – 10:46 AM</time><h2 id="doordash-outage-is-ongoing-now-with-over-35-000-reports">DoorDash outage is ongoing, now with over 35,000 reports</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:934px;"><p class="vanilla-image-block" style="padding-top:52.36%;"><img id="DjcEbYzfdsmCQVts72ULoc" name="Screenshot 2026-06-16 104257" alt="DoorDash outage report." src="https://cdn.mos.cms.futurecdn.net/DjcEbYzfdsmCQVts72ULoc.jpg" mos="" align="middle" fullscreen="" width="934" height="489" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>This is a major outage because <a href="https://downdetector.com/status/doordash/" target="_blank">Downdetector </a>now has over 35,000 reports about DoorDash. It's been about an hour since the first spike occurred and users are still unable to access the app and service.</p></div><div class="live-content"><time datetime="2026-06-16T14:49:54+00:00">June 16, 2026 – 10:49 AM</time><h2 id="delivery-drivers-are-put-in-a-tough-position">Delivery drivers are put in a tough position</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2066895079076245803"><p lang="en" dir="ltr">I’m locked in for my hourly rate… I’m waiting at my pickup location patiently while still on the clock even though the app won’t let me log in!<a href="https://twitter.com/cantworkitout/status/2066895079076245803">June 16, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>While complaints continue to roll in with this DoorDash outage, which is preventing users from placing orders and accessing the app, delivery drivers are just as much in a tough position. Due to the outage, they're unable to log into the app to complete orders. <a href="https://x.com/paulyp845/status/2066895079076245803" target="_blank">@paulyp845</a> on X says that "I’m locked in for my hourly rate… I’m waiting at my pickup location patiently while still on the clock even though the app won’t let me log in!"</p></div><div class="live-content"><time datetime="2026-06-16T14:54:39+00:00">June 16, 2026 – 10:54 AM</time><h2 id="first-sign-of-life-support">First sign of life support?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:922px;"><p class="vanilla-image-block" style="padding-top:51.63%;"><img id="mmQECaBZSZi2BqdH3TiHe5" name="Screenshot 2026-06-16 105234" alt="DoorDash outage." src="https://cdn.mos.cms.futurecdn.net/mmQECaBZSZi2BqdH3TiHe5.jpg" mos="" align="middle" fullscreen="" width="922" height="476" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>There's been a drop in reports according to Downdetector at around 10:32 a.m. ET, which may be a clue to a potential fix in place. We've been trying to log into the app, but have no luck yet.</p></div><div class="live-content"><time datetime="2026-06-16T14:57:11+00:00">June 16, 2026 – 10:57 AM</time><h2 id="how-s-it-going-for-you">How's it going for you?</h2><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X169pe"></div>                            </div>                            <script src="https://kwizly.com/embed/X169pe.js" async></script><p>While we continue to look after the DoorDash outage, what's your experience like? Were you one of the people who placed an order, but unable to receive them due to drivers not able to access the app?</p></div><div class="live-content"><time datetime="2026-06-16T15:04:47+00:00">June 16, 2026 – 11:04 AM</time><h2 id="dns-error-pop-up">DNS error pop up</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1166px;"><p class="vanilla-image-block" style="padding-top:51.29%;"><img id="KCBGkKxbomKmhqREAEsFiN" name="Screenshot 2026-06-16 110129" alt="DoorDash Outage." src="https://cdn.mos.cms.futurecdn.net/KCBGkKxbomKmhqREAEsFiN.jpg" mos="" align="middle" fullscreen="" width="1166" height="598" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We tried logging into DoorDash again through a browser, but we're still unable to get anywhere. The error message above is what we're greeted to, with the Error Details report hinting to some sort of DNS error. From the looks of it, the outage could be related to its login and authentication system.</p></div><div class="live-content"><time datetime="2026-06-16T15:07:56+00:00">June 16, 2026 – 11:07 AM</time><h2 id="larger-drop-in-reported-outages">Larger drop in reported outages</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:914px;"><p class="vanilla-image-block" style="padding-top:51.09%;"><img id="9RXV936rCRUQXXQAwwfJ9n" name="Screenshot 2026-06-16 110524" alt="DoorDash outage." src="https://cdn.mos.cms.futurecdn.net/9RXV936rCRUQXXQAwwfJ9n.jpg" mos="" align="middle" fullscreen="" width="914" height="467" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>Even though there are still many users who are unable to access DoorDash, it could slowly be coming back online for some. According to <a href="https://downdetector.com/status/doordash/" target="_blank">Downdectector</a>, reports have dwindled to around 20,000 in the most recent update.</p></div><div class="live-content"><time datetime="2026-06-16T15:11:30+00:00">June 16, 2026 – 11:11 AM</time><h2 id="to-eat-or-not-to-eat-that-is-the-question">To eat, or not to eat? That is, the question</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2066886026899947588"><p lang="en" dir="ltr">@DoorDash is currently down yall think I should keep the food. Getting kinda hungry pic.twitter.com/gM4HqJrr0o<a href="https://twitter.com/cantworkitout/status/2066886026899947588">June 16, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>DoorDash drivers who picked up orders but were unable to deliver them due to the outage have a pickle of their own to deal with. Case in point: X user <a href="https://x.com/john_wall_ontop/status/2066886026899947588" target="_blank">@john_wall_ontop</a> shared a photo of a DoorDash delivery, asking if he should just keep the order at this point.</p></div><div class="live-content"><time datetime="2026-06-16T15:18:36+00:00">June 16, 2026 – 11:18 AM</time><h2 id="is-it-working-again-perhaps">Is it working again? Perhaps</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2066902337902334048"><p lang="en" dir="ltr">DoorDash working again y’all<a href="https://twitter.com/cantworkitout/status/2066902337902334048">June 16, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>We've been keeping an eye on what people are reporting online and it looks like DoorDash is slowly starting to work. <a href="https://x.com/alysonvelvet/status/2066902337902334048" target="_blank">@alysonvelvet</a> on X says that it's working again, which is a good sign that things are turning around. But now comes the hard part: compensating users and drivers for orders.</p></div><div class="live-content"><time datetime="2026-06-16T15:21:01+00:00">June 16, 2026 – 11:21 AM</time><h2 id="downdetector-reports-drop-down-to-17-000">Downdetector reports drop down to 17,000</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:913px;"><p class="vanilla-image-block" style="padding-top:52.90%;"><img id="qCu9dqgZxFfWTE2pu4FyKc" name="Screenshot 2026-06-16 111856" alt="DoorDash outage." src="https://cdn.mos.cms.futurecdn.net/qCu9dqgZxFfWTE2pu4FyKc.jpg" mos="" align="middle" fullscreen="" width="913" height="483" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p><a href="https://downdetector.com/status/doordash/" target="_blank">Downdetector </a>is showing fewer outage reports for DoorDash with the latest update at 11:01 a.m. ET, with about 17,000 reports. That's down from the over 35,000 reports at its height over an hour ago.</p></div><div class="live-content"><time datetime="2026-06-16T15:35:08+00:00">June 16, 2026 – 11:35 AM</time><h2 id="reports-keep-dropping">Reports keep dropping</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:845px;"><p class="vanilla-image-block" style="padding-top:37.40%;"><img id="GymL2hzMMr7YPsh362d5ak" name="DoorDash reports" alt="DoorDash" src="https://cdn.mos.cms.futurecdn.net/GymL2hzMMr7YPsh362d5ak.jpg" mos="" align="middle" fullscreen="" width="845" height="316" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DoorDash)</span></figcaption></figure><p>As of 11:31 am ET, reports of an outage have dropped steeply. Checking the app ourselves, everything seems to be fine. Hopefully, this trend continues, and DoorDash will resume normal operations for all users.</p></div><div class="live-content"><time datetime="2026-06-16T15:50:32+00:00">June 16, 2026 – 11:50 AM</time><h2 id="all-seems-normal">All seems normal</h2><p>Reports on Downdetector have fallen to just shy of 1,000, so we're going to say that things are back to normal. We'll keep monitoring the situation, but at least for now, it seems to have been resolved.</p></div><div class="live-content"><time datetime="2026-06-16T16:04:18+00:00">June 16, 2026 – 12:04 PM</time><h2 id="app-is-working">App is working</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6sDC5Rpps5yo7jPP4fuqL4" name="doordash-logo-phone-shutterstock.jpg" alt="DoorDash logo on a phone" src="https://cdn.mos.cms.futurecdn.net/6sDC5Rpps5yo7jPP4fuqL4.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Some of us on staff have checked our DoorDash apps, and they are up and running. However, given how reports are still close to 800 on Downdetector, this might not be the case for all users. Hopefully, it won't be much longer until those affected can use the app.</p></div><div class="live-content"><time datetime="2026-06-16T16:16:24+00:00">June 16, 2026 – 12:16 PM</time><h2 id="reports-keep-dropping-2">Reports keep dropping</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:835px;"><p class="vanilla-image-block" style="padding-top:37.72%;"><img id="VPr2JKEooH4hshBzktukbZ" name="DoorDash reports 2" alt="DoorDash" src="https://cdn.mos.cms.futurecdn.net/VPr2JKEooH4hshBzktukbZ.jpg" mos="" align="middle" fullscreen="" width="835" height="315" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DoorDash)</span></figcaption></figure><p>As of 12:13 pm ET, Downdetector has received 590 reports of a DoorDash outage. That continues the downward trend, so it shouldn't be long until all users can use the app without a problem. Of course, we'll keep an eye on this situation.</p></div><div class="live-content"><time datetime="2026-06-16T16:30:36+00:00">June 16, 2026 – 12:30 PM</time><h2 id="still-trending-down">Still trending down</h2><p>Outage reports for DoorDash continue to fall, which means it shouldn't be long before all users can use the app as they normally would. We've checked the app ourselves, and all is fine, so let's hope reports don't spike back up.</p></div><div class="live-content"><time datetime="2026-06-16T16:40:14+00:00">June 16, 2026 – 12:40 PM</time><h2 id="it-s-a-wrap">It's a wrap</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6sDC5Rpps5yo7jPP4fuqL4" name="doordash-logo-phone-shutterstock.jpg" alt="DoorDash logo on a phone" src="https://cdn.mos.cms.futurecdn.net/6sDC5Rpps5yo7jPP4fuqL4.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>With reports now around 500, we're going to say that DoorDash is now fully operational for the majority of users. Good hunting!</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/news/live/doordash-outage-june-16-2026</link>
                                                                            <description>
                            <![CDATA[ The popular food delivery service experienced a massive outage that affected online orders, deliveries, and more. Here's everything that happened. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">HgdTRtBD9bw3a6679vBp9C</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cDjHRfkFxfAMER3LCuf67U-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 16 Jun 2026 14:15:40 +0000</pubDate>                                                                                                                                <updated>Tue, 16 Jun 2026 16:40:16 +0000</updated>
                                                                                                                                            <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                                                                <author><![CDATA[ john.velasco@futurenet.com (John Velasco) ]]></author>                    <dc:creator><![CDATA[ John Velasco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/TSj224oX8d5ERXaDs8pDGd.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                        <dc:contributor><![CDATA[ Tony Polanco ]]></dc:contributor>
                                                                    <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/cDjHRfkFxfAMER3LCuf67U-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[DoorDash on phone]]></media:description>                                                            <media:text><![CDATA[DoorDash on phone]]></media:text>
                                <media:title type="plain"><![CDATA[DoorDash on phone]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cDjHRfkFxfAMER3LCuf67U-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="live-content"><p>DoorDash was down for many users for a few hours. However, as of 12:39 pm ET, the online food delivery service is working normally again. Over 10,000 outage reports appeared on Downdetector, but at the moment, they have fallen to around 500, with reports continuing to plummet.</p><p>Here were all the updates as they happened.</p><h3 class="article-body__section" id="section-doordash-outage-live-updates"><span>DoorDash outage — live updates</span></h3></div><div class="live-content"><time datetime="2026-06-16T14:15:28+00:00">June 16, 2026 – 10:15 AM</time><h2 id="massive-spike-with-over-10-000-reports-on-downdetector">Massive spike with over 10,000 reports on Downdetector</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:915px;"><p class="vanilla-image-block" style="padding-top:52.02%;"><img id="u3qgk4nRdCubbR8tdvcJ6Z" name="Screenshot 2026-06-16 101338" alt="Screenshot showing Doordash outage on Downdetector." src="https://cdn.mos.cms.futurecdn.net/u3qgk4nRdCubbR8tdvcJ6Z.jpg" mos="" align="middle" fullscreen="" width="915" height="476" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>If you just tried using DoorDash this morning and found it not working properly, you're not alone because it appears to be down for many people. According to Downdetector, there's been over 10,000 reports so far.</p></div><div class="live-content"><time datetime="2026-06-16T14:19:50+00:00">June 16, 2026 – 10:19 AM</time><h2 id="doordash-is-aware-of-the-outage">DoorDash is aware of the outage</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2066887246054113295"><p lang="en" dir="ltr">We’re aware of an issue affecting our platform and are working urgently to resolve it. We thank our users for their patience and understanding, and apologize for any inconvenience.<a href="https://twitter.com/cantworkitout/status/2066887246054113295">June 16, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>With so many people reporting on social media about DoorDash not working for them, DoorDash officially posted on its <a href="https://x.com/DoorDash_Help/status/2066887246054113295" target="_blank">@DoorDash_Help</a> account on X to acknowledge that the service is down and that they're "aware of an issue affecting our platform and working urgently to resolve it."</p></div><div class="live-content"><time datetime="2026-06-16T14:26:21+00:00">June 16, 2026 – 10:26 AM</time><h2 id="outage-spikes-to-more-than-30-000">Outage spikes to more than 30,000</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:947px;"><p class="vanilla-image-block" style="padding-top:53.54%;"><img id="i7YfcwojACkvqMJkuXBTYA" name="Screenshot 2026-06-16 102114" alt="Doordash outage." src="https://cdn.mos.cms.futurecdn.net/i7YfcwojACkvqMJkuXBTYA.jpg" mos="" align="middle" fullscreen="" width="947" height="507" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>More and more people are reporting that DoorDash is down, with over 30,000 reports now about it according to <a href="https://downdetector.com/status/doordash/" target="_blank">Downdetector</a>. The issues range from log in issues, placing orders, and delivery drivers unable to complete orders.</p></div><div class="live-content"><time datetime="2026-06-16T14:32:43+00:00">June 16, 2026 – 10:32 AM</time><h2 id="this-is-what-greets-most-doordash-users-today">This is what greets most DoorDash users today</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="yG7Mq9P96WuGHP3Hd9Dr3n" name="Doordash down" alt="Doordash screenshots." src="https://cdn.mos.cms.futurecdn.net/yG7Mq9P96WuGHP3Hd9Dr3n.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>For most of the U.S., people are still starting their mornings and there's no better way to do that than ordering a coffee or breakfast on DoorDash. Unfortunately, users are unable to access the service through the app because of the outage. </p></div><div class="live-content"><time datetime="2026-06-16T14:37:00+00:00">June 16, 2026 – 10:37 AM</time><h2 id="log-in-issues-with-the-website-as-well">Log in issues with the website as well</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:40.94%;"><img id="y7zwt9QmKSZygdRci42qeV" name="Screenshot 2026-06-16 103436" alt="Doordash website log in." src="https://cdn.mos.cms.futurecdn.net/y7zwt9QmKSZygdRci42qeV.jpg" mos="" align="middle" fullscreen="" width="1920" height="786" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Sometimes these outages only affect certain platforms, like mobile apps, but this DoorDash outage appears to be more widespread because it's also affecting its online portal. If you try to log in with your account, you'll likely be greeted to some kind of error.</p></div><div class="live-content"><time datetime="2026-06-16T14:41:26+00:00">June 16, 2026 – 10:41 AM</time><h2 id="what-should-doordash-do-in-this-case">What should DoorDash do in this case?</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2066892626129773006"><p lang="en" dir="ltr">so this doordash outage will be interesting because the company literally has to refund everyone from the person who ordered the food, the restaurant that made the food, and the dasher bringing it all HAVE to be paid while the food and groceries all go to waste, brutal<a href="https://twitter.com/cantworkitout/status/2066892626129773006">June 16, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>User <a href="https://x.com/kel_fc/status/2066892626129773006" target="_blank">@kel_fc makes</a> on X makes a good point about this massive outage going on with DoorDash at the moment because of the orders that were placed prior to the outage.  What do you think DoorDash should do to compensate users who placed orders but are unable to receive them?</p></div><div class="live-content"><time datetime="2026-06-16T14:46:05+00:00">June 16, 2026 – 10:46 AM</time><h2 id="doordash-outage-is-ongoing-now-with-over-35-000-reports">DoorDash outage is ongoing, now with over 35,000 reports</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:934px;"><p class="vanilla-image-block" style="padding-top:52.36%;"><img id="DjcEbYzfdsmCQVts72ULoc" name="Screenshot 2026-06-16 104257" alt="DoorDash outage report." src="https://cdn.mos.cms.futurecdn.net/DjcEbYzfdsmCQVts72ULoc.jpg" mos="" align="middle" fullscreen="" width="934" height="489" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>This is a major outage because <a href="https://downdetector.com/status/doordash/" target="_blank">Downdetector </a>now has over 35,000 reports about DoorDash. It's been about an hour since the first spike occurred and users are still unable to access the app and service.</p></div><div class="live-content"><time datetime="2026-06-16T14:49:54+00:00">June 16, 2026 – 10:49 AM</time><h2 id="delivery-drivers-are-put-in-a-tough-position">Delivery drivers are put in a tough position</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2066895079076245803"><p lang="en" dir="ltr">I’m locked in for my hourly rate… I’m waiting at my pickup location patiently while still on the clock even though the app won’t let me log in!<a href="https://twitter.com/cantworkitout/status/2066895079076245803">June 16, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>While complaints continue to roll in with this DoorDash outage, which is preventing users from placing orders and accessing the app, delivery drivers are just as much in a tough position. Due to the outage, they're unable to log into the app to complete orders. <a href="https://x.com/paulyp845/status/2066895079076245803" target="_blank">@paulyp845</a> on X says that "I’m locked in for my hourly rate… I’m waiting at my pickup location patiently while still on the clock even though the app won’t let me log in!"</p></div><div class="live-content"><time datetime="2026-06-16T14:54:39+00:00">June 16, 2026 – 10:54 AM</time><h2 id="first-sign-of-life-support">First sign of life support?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:922px;"><p class="vanilla-image-block" style="padding-top:51.63%;"><img id="mmQECaBZSZi2BqdH3TiHe5" name="Screenshot 2026-06-16 105234" alt="DoorDash outage." src="https://cdn.mos.cms.futurecdn.net/mmQECaBZSZi2BqdH3TiHe5.jpg" mos="" align="middle" fullscreen="" width="922" height="476" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>There's been a drop in reports according to Downdetector at around 10:32 a.m. ET, which may be a clue to a potential fix in place. We've been trying to log into the app, but have no luck yet.</p></div><div class="live-content"><time datetime="2026-06-16T14:57:11+00:00">June 16, 2026 – 10:57 AM</time><h2 id="how-s-it-going-for-you">How's it going for you?</h2><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X169pe"></div>                            </div>                            <script src="https://kwizly.com/embed/X169pe.js" async></script><p>While we continue to look after the DoorDash outage, what's your experience like? Were you one of the people who placed an order, but unable to receive them due to drivers not able to access the app?</p></div><div class="live-content"><time datetime="2026-06-16T15:04:47+00:00">June 16, 2026 – 11:04 AM</time><h2 id="dns-error-pop-up">DNS error pop up</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1166px;"><p class="vanilla-image-block" style="padding-top:51.29%;"><img id="KCBGkKxbomKmhqREAEsFiN" name="Screenshot 2026-06-16 110129" alt="DoorDash Outage." src="https://cdn.mos.cms.futurecdn.net/KCBGkKxbomKmhqREAEsFiN.jpg" mos="" align="middle" fullscreen="" width="1166" height="598" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We tried logging into DoorDash again through a browser, but we're still unable to get anywhere. The error message above is what we're greeted to, with the Error Details report hinting to some sort of DNS error. From the looks of it, the outage could be related to its login and authentication system.</p></div><div class="live-content"><time datetime="2026-06-16T15:07:56+00:00">June 16, 2026 – 11:07 AM</time><h2 id="larger-drop-in-reported-outages">Larger drop in reported outages</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:914px;"><p class="vanilla-image-block" style="padding-top:51.09%;"><img id="9RXV936rCRUQXXQAwwfJ9n" name="Screenshot 2026-06-16 110524" alt="DoorDash outage." src="https://cdn.mos.cms.futurecdn.net/9RXV936rCRUQXXQAwwfJ9n.jpg" mos="" align="middle" fullscreen="" width="914" height="467" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>Even though there are still many users who are unable to access DoorDash, it could slowly be coming back online for some. According to <a href="https://downdetector.com/status/doordash/" target="_blank">Downdectector</a>, reports have dwindled to around 20,000 in the most recent update.</p></div><div class="live-content"><time datetime="2026-06-16T15:11:30+00:00">June 16, 2026 – 11:11 AM</time><h2 id="to-eat-or-not-to-eat-that-is-the-question">To eat, or not to eat? That is, the question</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2066886026899947588"><p lang="en" dir="ltr">@DoorDash is currently down yall think I should keep the food. Getting kinda hungry pic.twitter.com/gM4HqJrr0o<a href="https://twitter.com/cantworkitout/status/2066886026899947588">June 16, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>DoorDash drivers who picked up orders but were unable to deliver them due to the outage have a pickle of their own to deal with. Case in point: X user <a href="https://x.com/john_wall_ontop/status/2066886026899947588" target="_blank">@john_wall_ontop</a> shared a photo of a DoorDash delivery, asking if he should just keep the order at this point.</p></div><div class="live-content"><time datetime="2026-06-16T15:18:36+00:00">June 16, 2026 – 11:18 AM</time><h2 id="is-it-working-again-perhaps">Is it working again? Perhaps</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2066902337902334048"><p lang="en" dir="ltr">DoorDash working again y’all<a href="https://twitter.com/cantworkitout/status/2066902337902334048">June 16, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>We've been keeping an eye on what people are reporting online and it looks like DoorDash is slowly starting to work. <a href="https://x.com/alysonvelvet/status/2066902337902334048" target="_blank">@alysonvelvet</a> on X says that it's working again, which is a good sign that things are turning around. But now comes the hard part: compensating users and drivers for orders.</p></div><div class="live-content"><time datetime="2026-06-16T15:21:01+00:00">June 16, 2026 – 11:21 AM</time><h2 id="downdetector-reports-drop-down-to-17-000">Downdetector reports drop down to 17,000</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:913px;"><p class="vanilla-image-block" style="padding-top:52.90%;"><img id="qCu9dqgZxFfWTE2pu4FyKc" name="Screenshot 2026-06-16 111856" alt="DoorDash outage." src="https://cdn.mos.cms.futurecdn.net/qCu9dqgZxFfWTE2pu4FyKc.jpg" mos="" align="middle" fullscreen="" width="913" height="483" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p><a href="https://downdetector.com/status/doordash/" target="_blank">Downdetector </a>is showing fewer outage reports for DoorDash with the latest update at 11:01 a.m. ET, with about 17,000 reports. That's down from the over 35,000 reports at its height over an hour ago.</p></div><div class="live-content"><time datetime="2026-06-16T15:35:08+00:00">June 16, 2026 – 11:35 AM</time><h2 id="reports-keep-dropping">Reports keep dropping</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:845px;"><p class="vanilla-image-block" style="padding-top:37.40%;"><img id="GymL2hzMMr7YPsh362d5ak" name="DoorDash reports" alt="DoorDash" src="https://cdn.mos.cms.futurecdn.net/GymL2hzMMr7YPsh362d5ak.jpg" mos="" align="middle" fullscreen="" width="845" height="316" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DoorDash)</span></figcaption></figure><p>As of 11:31 am ET, reports of an outage have dropped steeply. Checking the app ourselves, everything seems to be fine. Hopefully, this trend continues, and DoorDash will resume normal operations for all users.</p></div><div class="live-content"><time datetime="2026-06-16T15:50:32+00:00">June 16, 2026 – 11:50 AM</time><h2 id="all-seems-normal">All seems normal</h2><p>Reports on Downdetector have fallen to just shy of 1,000, so we're going to say that things are back to normal. We'll keep monitoring the situation, but at least for now, it seems to have been resolved.</p></div><div class="live-content"><time datetime="2026-06-16T16:04:18+00:00">June 16, 2026 – 12:04 PM</time><h2 id="app-is-working">App is working</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6sDC5Rpps5yo7jPP4fuqL4" name="doordash-logo-phone-shutterstock.jpg" alt="DoorDash logo on a phone" src="https://cdn.mos.cms.futurecdn.net/6sDC5Rpps5yo7jPP4fuqL4.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Some of us on staff have checked our DoorDash apps, and they are up and running. However, given how reports are still close to 800 on Downdetector, this might not be the case for all users. Hopefully, it won't be much longer until those affected can use the app.</p></div><div class="live-content"><time datetime="2026-06-16T16:16:24+00:00">June 16, 2026 – 12:16 PM</time><h2 id="reports-keep-dropping-2">Reports keep dropping</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:835px;"><p class="vanilla-image-block" style="padding-top:37.72%;"><img id="VPr2JKEooH4hshBzktukbZ" name="DoorDash reports 2" alt="DoorDash" src="https://cdn.mos.cms.futurecdn.net/VPr2JKEooH4hshBzktukbZ.jpg" mos="" align="middle" fullscreen="" width="835" height="315" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DoorDash)</span></figcaption></figure><p>As of 12:13 pm ET, Downdetector has received 590 reports of a DoorDash outage. That continues the downward trend, so it shouldn't be long until all users can use the app without a problem. Of course, we'll keep an eye on this situation.</p></div><div class="live-content"><time datetime="2026-06-16T16:30:36+00:00">June 16, 2026 – 12:30 PM</time><h2 id="still-trending-down">Still trending down</h2><p>Outage reports for DoorDash continue to fall, which means it shouldn't be long before all users can use the app as they normally would. We've checked the app ourselves, and all is fine, so let's hope reports don't spike back up.</p></div><div class="live-content"><time datetime="2026-06-16T16:40:14+00:00">June 16, 2026 – 12:40 PM</time><h2 id="it-s-a-wrap">It's a wrap</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6sDC5Rpps5yo7jPP4fuqL4" name="doordash-logo-phone-shutterstock.jpg" alt="DoorDash logo on a phone" src="https://cdn.mos.cms.futurecdn.net/6sDC5Rpps5yo7jPP4fuqL4.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>With reports now around 500, we're going to say that DoorDash is now fully operational for the majority of users. Good hunting!</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How to set up your Smart TV with a VPN for World Cup 2026 streaming ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.techradar.com/how-to-watch/football/world-cup-2026-live-stream">World Cup</a> only comes around every four years, and whether you're making the trip to the US, Canada, or Mexico, or you're based abroad for work, the last thing you want is to hit a geo-block on match day. Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> solves that by routing your connection through a server back home, giving you access to the same free streams you'd get on your couch – BBC iPlayer, ITV, or whatever your local broadcaster happens to be.</p><p>The good news is that Norton VPN has you covered with a 60-day money-back guarantee on annual plans – double the 30-day industry standard – which means you can sign in, stream every group stage game, knockout round, and the final itself, and still claim a full refund if you're not satisfied. That makes it completely risk-free for the entire tournament.</p><p>Before you dive in, though, there's one thing worth knowing: your smart TV's operating system determines exactly how you set up your VPN. Get that part wrong and you'll be troubleshooting during kick-off.</p><div class="product"><a data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow" data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow" data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="device-matters">Device matters</h2><p>Your TV's operating system dictates how – and whether – you can run a VPN directly on it, so it's worth knowing which camp you're in before kick-off.</p><p>If your TV or streaming device runs Google TV, Android TV, Amazon Fire OS, or Apple's tvOS (tvOS 17 or later), you're in luck. All of these platforms feature native app stores, meaning you can download the Norton VPN app directly, sign in, and be connected within minutes.</p><p>Samsung and LG owners face a different situation. Tizen and webOS – the operating systems powering those TVs respectively – block third-party network configurations entirely and offer no native VPN support. Your options are Smart DNS, which reroutes only your location data without full encryption, or setting up Norton on your router so that every device on your network is covered automatically.</p><p>If none of those options work for you, there's a reliable fallback: connect a laptop to your TV via HDMI. Run Norton VPN on the laptop, set it to your home country, and your stream plays on the big screen just as intended. Two things to sort before kick-off – set your laptop's power settings so it stays awake with the lid closed, and if sound isn't coming through the TV, manually switch your system's audio output to the TV speakers.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zmyLJwR3a2PoNUgYdhVJbA" name="World Cup edit" alt="World Cup edit" src="https://cdn.mos.cms.futurecdn.net/zmyLJwR3a2PoNUgYdhVJbA.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><h2 id="vpn-limitations">VPN Limitations</h2><p>A VPN adds a layer of encryption to your connection, and during a global event with millions of viewers doing the same thing, that comes with a couple of practical trade-offs worth knowing about.</p><p>The first is resolution. Many broadcasters stream in native 4K, and modern VPNs are fast enough to handle it under normal conditions – but when large numbers of users crowd onto the same VPN server simultaneously, that headroom shrinks quickly. If your stream starts buffering, drop the resolution manually to 1080p. A smooth, uninterrupted match beats a stuttering one in 4K every time.</p><p>The second concerns casting. If you're planning to stream from your phone and cast to the TV via AirPlay or Chromecast, you may run into connectivity issues. A VPN creates an encrypted point-to-point tunnel between your device and the server, which cuts your phone off from the local area network – and casting relies on that local connection. Some VPNs include a "allow local network access" setting that resolves this, but not all do. If yours doesn't, the HDMI + laptop method is your most reliable alternative.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/vpns/how-to-set-up-your-smart-tv-with-a-vpn-for-world-cup-2026-streaming</link>
                                                                            <description>
                            <![CDATA[ Not all smart TVs support VPN apps natively – Samsung and LG owners will need a workaround. Here's how to get a VPN running on your device in time for kick-off, whatever hardware you're working with. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oB8Vrnv4joQQyJeTtsJVcP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Labt2Xmf3fE6GcYnZ8QCm4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 15 Jun 2026 15:29:46 +0000</pubDate>                                                                                                                                <updated>Thu, 16 Jul 2026 15:01:25 +0000</updated>
                                                                                                                                            <category><![CDATA[VPNs]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                                    <dc:creator><![CDATA[ Aleksandar Stevanović ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Labt2Xmf3fE6GcYnZ8QCm4-1280-80.jpg">
                                                            <media:credit><![CDATA[baona/Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Family watching television and cheering soccer game on TV together in their living room.]]></media:description>                                                            <media:text><![CDATA[Family watching television and cheering soccer game on TV together in their living room.]]></media:text>
                                <media:title type="plain"><![CDATA[Family watching television and cheering soccer game on TV together in their living room.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Labt2Xmf3fE6GcYnZ8QCm4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.techradar.com/how-to-watch/football/world-cup-2026-live-stream">World Cup</a> only comes around every four years, and whether you're making the trip to the US, Canada, or Mexico, or you're based abroad for work, the last thing you want is to hit a geo-block on match day. Using one of the <a href="https://www.tomsguide.com/best-picks/best-vpn">best VPNs</a> solves that by routing your connection through a server back home, giving you access to the same free streams you'd get on your couch – BBC iPlayer, ITV, or whatever your local broadcaster happens to be.</p><p>The good news is that Norton VPN has you covered with a 60-day money-back guarantee on annual plans – double the 30-day industry standard – which means you can sign in, stream every group stage game, knockout round, and the final itself, and still claim a full refund if you're not satisfied. That makes it completely risk-free for the entire tournament.</p><p>Before you dive in, though, there's one thing worth knowing: your smart TV's operating system determines exactly how you set up your VPN. Get that part wrong and you'll be troubleshooting during kick-off.</p><div class="product"><a data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:280px;"><p class="vanilla-image-block" style="padding-top:56.43%;"><img id="cgidcx9LYVJedVXABk3BpC" name="nortonvpn_graphic_-_affiliates__5_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cgidcx9LYVJedVXABk3BpC.png" mos="" align="middle" fullscreen="" width="280" height="158" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow" data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$"><strong>Norton VPN | 60-day money-back guarantee</strong></a><br>Norton VPN is our top pick for World Cup 2026 streaming, with a 60-day money-back guarantee on annual plans – double the industry standard – covering the entire tournament risk-free.</p><p><strong>What you'll get...</strong></p><p>🔒 Native app for Amazon Fire TV devices<br>⚡️ WireGuard protocol across all Apple platforms<br>📺 Apps for Google TV, Android TV, and Apple TV<br>🌍 Servers in 30+ countries for home-country streaming</p><p>A 12-month Norton VPN plan starts at <a href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow"><strong>$3.33 per month</strong></a> ($39.99 upfront, pre-tax) and comes with a 60-day money-back guarantee on annual plans.<a class="view-deal button" href="https://norton.ow5a.net/c/221109/3913583/4405?sharedid=tg&param1=aff&param2=worldcup26_featurecontent&param3=vpn&subid1=feature" target="_blank" rel="nofollow" data-dimension112="28a380b8-8127-11f1-8719-b9ba4012bd6d" data-action="Deal Block" data-label="Norton VPN | 60-day money-back guarantee" data-dimension48="Norton VPN | 60-day money-back guarantee" data-dimension25="$">View Deal</a></p></div><h2 id="device-matters">Device matters</h2><p>Your TV's operating system dictates how – and whether – you can run a VPN directly on it, so it's worth knowing which camp you're in before kick-off.</p><p>If your TV or streaming device runs Google TV, Android TV, Amazon Fire OS, or Apple's tvOS (tvOS 17 or later), you're in luck. All of these platforms feature native app stores, meaning you can download the Norton VPN app directly, sign in, and be connected within minutes.</p><p>Samsung and LG owners face a different situation. Tizen and webOS – the operating systems powering those TVs respectively – block third-party network configurations entirely and offer no native VPN support. Your options are Smart DNS, which reroutes only your location data without full encryption, or setting up Norton on your router so that every device on your network is covered automatically.</p><p>If none of those options work for you, there's a reliable fallback: connect a laptop to your TV via HDMI. Run Norton VPN on the laptop, set it to your home country, and your stream plays on the big screen just as intended. Two things to sort before kick-off – set your laptop's power settings so it stays awake with the lid closed, and if sound isn't coming through the TV, manually switch your system's audio output to the TV speakers.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zmyLJwR3a2PoNUgYdhVJbA" name="World Cup edit" alt="World Cup edit" src="https://cdn.mos.cms.futurecdn.net/zmyLJwR3a2PoNUgYdhVJbA.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><h2 id="vpn-limitations">VPN Limitations</h2><p>A VPN adds a layer of encryption to your connection, and during a global event with millions of viewers doing the same thing, that comes with a couple of practical trade-offs worth knowing about.</p><p>The first is resolution. Many broadcasters stream in native 4K, and modern VPNs are fast enough to handle it under normal conditions – but when large numbers of users crowd onto the same VPN server simultaneously, that headroom shrinks quickly. If your stream starts buffering, drop the resolution manually to 1080p. A smooth, uninterrupted match beats a stuttering one in 4K every time.</p><p>The second concerns casting. If you're planning to stream from your phone and cast to the TV via AirPlay or Chromecast, you may run into connectivity issues. A VPN creates an encrypted point-to-point tunnel between your device and the server, which cuts your phone off from the local area network – and casting relies on that local connection. Some VPNs include a "allow local network access" setting that resolves this, but not all do. If yours doesn't, the HDMI + laptop method is your most reliable alternative.</p><div data-widget-type="merchantlink" data-model-name="Norton VPN"></div><p>We test and review VPN services in the context of legal recreational uses. For example:<strong>1.</strong> Accessing a service from another country (subject to the terms and conditions of that service).<strong>2.</strong> Protecting your online security and strengthening your online privacy when abroad.We do not support or condone the illegal or malicious use of VPN services. Consuming pirated content that is paid-for is neither endorsed nor approved by Future Publishing.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This hidden Google Maps feature is a great way to learn about your local area — here's how it works ]]></title>
                                                                                                <dc:content><![CDATA[ <p>There are a lot of great features in <a href="https://www.tomsguide.com/news/how-to-use-google-maps">Google Maps</a>, and a lot of them have absolutely nothing to do with navigation. One of those features is one you may not know about, or forgot was even possible — and it's designed to help you learn more about different areas throughout history. I am, of course, talking about Street View's "time travel" feature.</p><p>Everyone knows Street View is a great way to get a view of different spots from street level, but it is possible to give you a glimpse at history as well. In the past you stuck with the last load of Street View photos that Google's roving band of camera-laden cars had taken, but that changed a few years back when archived photos were added to Google Maps. </p><p>This essentially lets you travel back through time and see back into the past through the portal of Google Street view. I've found that this is a really great way to learn about the area around you, and just how much things have changed since Street View first launched.  Here's how to time travel through Google Maps.</p><section class="howto-block">                    <h3>1. Open Google Maps</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/osC2a3N9bo7GAJudZBnsVn.jpg"                                        alt="how to time travel in google maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/osC2a3N9bo7GAJudZBnsVn.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>First up you need to open up the Google Maps app on your phone, and navigate to the area you want to see</p></p>                </section><section class="howto-block">                    <h3>2. Open layers and select Street View</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/m9poXNPWzW8Wb4DYsp7ien.jpg"                                        alt="how to time travel in google maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/m9poXNPWzW8Wb4DYsp7ien.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>Next up you'll need to <strong>open the layers menu</strong>, which is the odd-looking double-square in the right-hand corner.  Then <strong>select the Street View option</strong> on the bottom left.</p></p>                </section><section class="howto-block">                    <h3>3. Tap the street you want to see in Street View</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/gDoehozVPz8arz9xJyEJXn.jpg"                                        alt="how to time travel in google maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/gDoehozVPz8arz9xJyEJXn.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>Street View layers the map with a lattice of blue lines, most of which follow the roadways. These are areas that have been covered by Street View cars. If the street is gray, then it's never been covered by Google Maps' drivers.</p><p><strong>Tap the spot you want to see</strong> from street level to continue.</p></p>                </section><section class="howto-block">                    <h3>4. Pick your period of history</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/C8BdmPswZtgrajrQN4RZin.jpg"                                        alt="how to time travel in google maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/C8BdmPswZtgrajrQN4RZin.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>At the bottom of the screen you'll see a menu with a blue link that says <strong>See more dates</strong>. Tap this, and Google Maps will show a bunch of different months and years that the Street View gallery was updated.</p><p>You can pull up this menu to expand it if you prefer, but otherwise you simply need to scroll through the gallery from left to right and pick the month you want to see.</p></p>                </section><section class="howto-block">                    <h3>5. </h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/6biwJZsyCGbe3Eaxe6CSin.jpg"                                        alt="how to time travel in google maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/6biwJZsyCGbe3Eaxe6CSin.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>The best part about Time Travel on Google Maps is that you can navigate just as freely as you can with the current iteration of street view. Tap on the virtual world to move around or, alternatively, use the on-screen arrows instead. </p><p>Just be aware that if you end up in a spot that doesn't have the right historical Street View photos, you'll be pushed forward in time to the next available year. This could be a small jump of just a few months, but depending on the location it could be several years. So make sure to keep an eye on the Street View gallery at the bottom to keep track of the year you're visiting.</p></p>                </section><p>There you have it, that's how you time travel in Google Maps, and see different parts of the world throughout history. Or throughout the period that Street View has been active, at the very least. In this case, we can see that the Central London street that houses Future Publishing's London office (Westbourne Terrace) hasn't actually changed all that much over the past 18 years, but other locations may see much more impressive transformations. Which is the biggest benefit of using time travel in the first place.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/iphones/7-things-the-leaks-got-wrong-about-apples-wwdc-2026-keynote">7 things the leaks got wrong about Apple’s WWDC 2026 keynote</a></li><li><a href="https://www.tomsguide.com/phones/i-tried-ios-27-clean-up-vs-galaxy-ai-photo-assist-in-a-7-round-test-and-i-was-surprised-with-how-close-it-was">I pitted iOS 27 Clean Up vs Galaxy AI in a 7-round eraser showdown — Apple makes it close, but here's where it stumbles</a></li><li><a href="https://www.tomsguide.com/phones/iphones/your-iphone-alarm-and-ringtone-dont-have-to-share-a-volume-slider-anymore-heres-how-to-split-them-in-ios-27">Your iPhone alarm and ringtone don’t have to share a volume slider anymore — here’s how to split them in iOS 27</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/mobile-apps/this-hidden-google-maps-feature-is-a-great-way-to-learn-about-your-local-area-heres-how-it-works</link>
                                                                            <description>
                            <![CDATA[ Google Maps has a hidden feature that lets you time  travel using old Street View photos. Here's how it works ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">nnq7icr7bfaDoX4RLFqaW4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ans9YsiLDKLzznpGZwUo5i-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 15 Jun 2026 06:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mobile Apps]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ tom.pritchard@futurenet.com (Tom Pritchard) ]]></author>                    <dc:creator><![CDATA[ Tom Pritchard ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/biCewUkKfSA6QnT2HxVc3f.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ans9YsiLDKLzznpGZwUo5i-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide/ Google]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Google Maps logo on an iPhone 17 Pro]]></media:description>                                                            <media:text><![CDATA[Google Maps logo on an iPhone 17 Pro]]></media:text>
                                <media:title type="plain"><![CDATA[Google Maps logo on an iPhone 17 Pro]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ans9YsiLDKLzznpGZwUo5i-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There are a lot of great features in <a href="https://www.tomsguide.com/news/how-to-use-google-maps">Google Maps</a>, and a lot of them have absolutely nothing to do with navigation. One of those features is one you may not know about, or forgot was even possible — and it's designed to help you learn more about different areas throughout history. I am, of course, talking about Street View's "time travel" feature.</p><p>Everyone knows Street View is a great way to get a view of different spots from street level, but it is possible to give you a glimpse at history as well. In the past you stuck with the last load of Street View photos that Google's roving band of camera-laden cars had taken, but that changed a few years back when archived photos were added to Google Maps. </p><p>This essentially lets you travel back through time and see back into the past through the portal of Google Street view. I've found that this is a really great way to learn about the area around you, and just how much things have changed since Street View first launched.  Here's how to time travel through Google Maps.</p><section class="howto-block">                    <h3>1. Open Google Maps</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/osC2a3N9bo7GAJudZBnsVn.jpg"                                        alt="how to time travel in google maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/osC2a3N9bo7GAJudZBnsVn.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>First up you need to open up the Google Maps app on your phone, and navigate to the area you want to see</p></p>                </section><section class="howto-block">                    <h3>2. Open layers and select Street View</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/m9poXNPWzW8Wb4DYsp7ien.jpg"                                        alt="how to time travel in google maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/m9poXNPWzW8Wb4DYsp7ien.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>Next up you'll need to <strong>open the layers menu</strong>, which is the odd-looking double-square in the right-hand corner.  Then <strong>select the Street View option</strong> on the bottom left.</p></p>                </section><section class="howto-block">                    <h3>3. Tap the street you want to see in Street View</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/gDoehozVPz8arz9xJyEJXn.jpg"                                        alt="how to time travel in google maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/gDoehozVPz8arz9xJyEJXn.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>Street View layers the map with a lattice of blue lines, most of which follow the roadways. These are areas that have been covered by Street View cars. If the street is gray, then it's never been covered by Google Maps' drivers.</p><p><strong>Tap the spot you want to see</strong> from street level to continue.</p></p>                </section><section class="howto-block">                    <h3>4. Pick your period of history</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/C8BdmPswZtgrajrQN4RZin.jpg"                                        alt="how to time travel in google maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/C8BdmPswZtgrajrQN4RZin.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>At the bottom of the screen you'll see a menu with a blue link that says <strong>See more dates</strong>. Tap this, and Google Maps will show a bunch of different months and years that the Street View gallery was updated.</p><p>You can pull up this menu to expand it if you prefer, but otherwise you simply need to scroll through the gallery from left to right and pick the month you want to see.</p></p>                </section><section class="howto-block">                    <h3>5. </h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/6biwJZsyCGbe3Eaxe6CSin.jpg"                                        alt="how to time travel in google maps"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/6biwJZsyCGbe3Eaxe6CSin.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>The best part about Time Travel on Google Maps is that you can navigate just as freely as you can with the current iteration of street view. Tap on the virtual world to move around or, alternatively, use the on-screen arrows instead. </p><p>Just be aware that if you end up in a spot that doesn't have the right historical Street View photos, you'll be pushed forward in time to the next available year. This could be a small jump of just a few months, but depending on the location it could be several years. So make sure to keep an eye on the Street View gallery at the bottom to keep track of the year you're visiting.</p></p>                </section><p>There you have it, that's how you time travel in Google Maps, and see different parts of the world throughout history. Or throughout the period that Street View has been active, at the very least. In this case, we can see that the Central London street that houses Future Publishing's London office (Westbourne Terrace) hasn't actually changed all that much over the past 18 years, but other locations may see much more impressive transformations. Which is the biggest benefit of using time travel in the first place.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/iphones/7-things-the-leaks-got-wrong-about-apples-wwdc-2026-keynote">7 things the leaks got wrong about Apple’s WWDC 2026 keynote</a></li><li><a href="https://www.tomsguide.com/phones/i-tried-ios-27-clean-up-vs-galaxy-ai-photo-assist-in-a-7-round-test-and-i-was-surprised-with-how-close-it-was">I pitted iOS 27 Clean Up vs Galaxy AI in a 7-round eraser showdown — Apple makes it close, but here's where it stumbles</a></li><li><a href="https://www.tomsguide.com/phones/iphones/your-iphone-alarm-and-ringtone-dont-have-to-share-a-volume-slider-anymore-heres-how-to-split-them-in-ios-27">Your iPhone alarm and ringtone don’t have to share a volume slider anymore — here’s how to split them in iOS 27</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Traffic lights are coming to Waze — but they don't seem to be visible to everyone ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/how-to/best-waze-tips-and-tricks">Waze</a> is officially adding a feature that drivers have been asking about for ages. After several months of testing, the navigation app is starting to roll out traffic light icons to the general public. But you it doesn't appear to be universally available just yet.</p><p>The original testing was <a href="https://www.tomsguide.com/computing/mobile-apps/waze-just-tipped-for-a-big-traffic-upgrade-that-will-make-your-life-easier">first spotted last December</a>, with on-and-off reports over the past few months. Now, though, it seems as though traffic lights are <a href="https://www.redditcom/r/waze/comments/1u2qbhe/when_did_waze_add_stop_lightstraffic_lights/">showing up</a> for a lot more people. Sadly, it seems the very nature of how Waze operates means their appearance on the map is a little inconsistent.</p><p>The thing you need to understand about Waze is that, <a href="https://www.tomsguide.com/face-off/google-maps-vs-waze">unlike Google Maps</a>, it doesn't rely on a huge archive of saved data. It's all about crowdsourced information, and it means the knowledge Waze has is only as good as what drivers have been reporting. That includes things like speed cameras and, I'm guessing, traffic lights.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8HAywckfSoZ4j5uMGb3GQL" name="waze" alt="traffic light icons in the waze app" src="https://cdn.mos.cms.futurecdn.net/8HAywckfSoZ4j5uMGb3GQL.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I took a quick look at my local area, since I have a good understanding of where all the lights are already. The map was pretty empty, for the most part, but I did see a few places that featured the iconic three-light design of traffic lights. But nowhere near as many as there are in reality.</p><p>That makes me wonder how Waze is identifying traffic lights, and whether it's picking and choosing where to actually show them. My initial thoughts were that the lights would only appear on active routes, but it seems they are visible on the standard map. </p><p>There's also no option to report working traffic lights within the Waze app (only broken ones), and the official <a href="https://www.waze.com/editor" target="_blank" rel="nofollow">Map Editor </a>doesn't seem to include them either. However, there may also be a chance that my low level has something to do with that</p><p>Knowing when traffic lights are coming up can be a big benefit if you're in an unfamiliar area. Being able to anticipate the fact you may need to stop means you can slow down smoothly and not destroy your gas mileage with harsh braking. </p><p>So keep an eye on Waze, because next time you drive, you may just get a helping hand anticipating the next set of lights.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORV5nO"></div>                            </div>                            <script src="https://kwizly.com/embed/ORV5nO.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/iphones/ios-27-hidden-features">I tested iOS 27 — and these 12 hidden features are more useful than Siri AI</a></li><li><a href="https://www.tomsguide.com/ai/apple-intelligence/some-ai-features-arent-available-on-older-iphones-but-are-you-actually-missing-that-much">Some AI features aren't available on older iPhones, but are you actually missing that much?</a></li><li><a href="https://www.tomsguide.com/phones/network-carriers/mint-mobile-just-gave-customers-a-rare-win-increased-data-at-no-extra-cost">Mint Mobile just gave customers a rare win —  increased data at no extra cost</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/mobile-apps/traffic-lights-are-coming-to-waze-but-they-dont-seem-to-be-visible-to-everyone</link>
                                                                            <description>
                            <![CDATA[ Traffic light icons are finally rolling out to Waze users, but they're still not available everywhere (or for everyone). ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ctAApv6aVTUoWxXj4nnVRQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/aLSxAMFHXFNzfsp4rQsMMe-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 12 Jun 2026 10:11:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mobile Apps]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ tom.pritchard@futurenet.com (Tom Pritchard) ]]></author>                    <dc:creator><![CDATA[ Tom Pritchard ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/biCewUkKfSA6QnT2HxVc3f.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/aLSxAMFHXFNzfsp4rQsMMe-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Waze app on phone]]></media:description>                                                            <media:text><![CDATA[Waze app on phone]]></media:text>
                                <media:title type="plain"><![CDATA[Waze app on phone]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/aLSxAMFHXFNzfsp4rQsMMe-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/how-to/best-waze-tips-and-tricks">Waze</a> is officially adding a feature that drivers have been asking about for ages. After several months of testing, the navigation app is starting to roll out traffic light icons to the general public. But you it doesn't appear to be universally available just yet.</p><p>The original testing was <a href="https://www.tomsguide.com/computing/mobile-apps/waze-just-tipped-for-a-big-traffic-upgrade-that-will-make-your-life-easier">first spotted last December</a>, with on-and-off reports over the past few months. Now, though, it seems as though traffic lights are <a href="https://www.redditcom/r/waze/comments/1u2qbhe/when_did_waze_add_stop_lightstraffic_lights/">showing up</a> for a lot more people. Sadly, it seems the very nature of how Waze operates means their appearance on the map is a little inconsistent.</p><p>The thing you need to understand about Waze is that, <a href="https://www.tomsguide.com/face-off/google-maps-vs-waze">unlike Google Maps</a>, it doesn't rely on a huge archive of saved data. It's all about crowdsourced information, and it means the knowledge Waze has is only as good as what drivers have been reporting. That includes things like speed cameras and, I'm guessing, traffic lights.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8HAywckfSoZ4j5uMGb3GQL" name="waze" alt="traffic light icons in the waze app" src="https://cdn.mos.cms.futurecdn.net/8HAywckfSoZ4j5uMGb3GQL.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I took a quick look at my local area, since I have a good understanding of where all the lights are already. The map was pretty empty, for the most part, but I did see a few places that featured the iconic three-light design of traffic lights. But nowhere near as many as there are in reality.</p><p>That makes me wonder how Waze is identifying traffic lights, and whether it's picking and choosing where to actually show them. My initial thoughts were that the lights would only appear on active routes, but it seems they are visible on the standard map. </p><p>There's also no option to report working traffic lights within the Waze app (only broken ones), and the official <a href="https://www.waze.com/editor" target="_blank" rel="nofollow">Map Editor </a>doesn't seem to include them either. However, there may also be a chance that my low level has something to do with that</p><p>Knowing when traffic lights are coming up can be a big benefit if you're in an unfamiliar area. Being able to anticipate the fact you may need to stop means you can slow down smoothly and not destroy your gas mileage with harsh braking. </p><p>So keep an eye on Waze, because next time you drive, you may just get a helping hand anticipating the next set of lights.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORV5nO"></div>                            </div>                            <script src="https://kwizly.com/embed/ORV5nO.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/iphones/ios-27-hidden-features">I tested iOS 27 — and these 12 hidden features are more useful than Siri AI</a></li><li><a href="https://www.tomsguide.com/ai/apple-intelligence/some-ai-features-arent-available-on-older-iphones-but-are-you-actually-missing-that-much">Some AI features aren't available on older iPhones, but are you actually missing that much?</a></li><li><a href="https://www.tomsguide.com/phones/network-carriers/mint-mobile-just-gave-customers-a-rare-win-increased-data-at-no-extra-cost">Mint Mobile just gave customers a rare win —  increased data at no extra cost</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I just tested the macOS Golden Gate developer beta — here are my early thoughts ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The macOS 27 or <a href="https://www.tomsguide.com/computing/macos/macos-27">macOS Golden Gate</a> developer beta is now live, and I’ve begun testing out some of the available features that this upcoming (and unfinished) operating system has to offer. </p><p>We don’t get a substantial update as we did with last year’s <a href="https://www.tomsguide.com/computing/macos/macos-26">macOS 26</a>. Instead, this year’s update is mostly focused on <a href="https://www.tomsguide.com/ai/apple-finally-fixed-siri-heres-all-the-features-for-the-new-siri-ai-announced-at-wwdc">Siri AI</a> and <a href="https://www.tomsguide.com/ai/apple-intelligence/apple-intelligence-finally-comes-into-its-own-but-wwdc-26-was-missing-something">Apple Intelligence</a>. While I’ve yet to try the former, the latter offers nifty tricks for Mac users to try out.</p><p>Keeping in mind that this is a developer beta and features are subject to change, here are my early thoughts on macOS Golden Gate and some features that stand out.</p><h2 id="spatial-reframing-2">Spatial Reframing</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2vyL4w3WxVGjQJPBPpoqq5.jpg" alt="MacBook Air M5" /><figcaption>A MacBook Air before Reframe<small role="credit">Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vUC8TZ34UKYuqHaQC7jN6R.jpg" alt="MacBook Air M5" /><figcaption>A MacBook Air after Reframe<small role="credit">Tom's Guide</small></figcaption></figure></figure><p>The new <a href="https://www.tomsguide.com/phones/iphones/apples-ai-powered-spatial-reframing-tool-just-stole-the-show-at-wwdc">Reframe tool stole the show at WWDC</a>, and it’s a lot of fun to use. The feature is self-explanatory: you can take existing photos and adjust the perspective to your liking. Basically, if you’re not happy with a photo’s angle, you can change that.</p><p>After selecting Reframe in the new Tools option in Photos’ editing mode, the AI scans your photo. When that’s done, you can pull your finger across the touchpad to change the perspective. There are also sliders on the side if you prefer more precise control over the angle, orientation, or size. Once you’re happy with the result, the AI shifts things around to fill in any blanks.</p><p>While you can argue that you’re not seeing the real image after you’ve effectively doctored it, the result isn’t radically different from the original. If you don’t worry about getting a perfect picture the first time around, Reframe can definitely remove that stress since you can always come back to your photo later.</p><h2 id="liquid-glass-slider-2">Liquid Glass slider</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kbVSEAeYD7AF3N9vqnbxhG" name="macOS 27 liquid glass slider" alt="macOS 27 Liquid Glass" src="https://cdn.mos.cms.futurecdn.net/kbVSEAeYD7AF3N9vqnbxhG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide / Apple)</span></figcaption></figure><p>I didn’t mind the Liquid Glass UI as much as others, but it has certainly been a controversial element introduced to iPhones, iPads, and Macs with their respective updates last year. Now, Apple has updated Liquid Glass so you can tailor it to your liking.</p><p>For example, there’s a new preference slider that lets you dial in the exact intensity of the Liquid Glass effect. You can go from highly transparent to more opaque. More complex background visuals are more diffuse, increasing text readability. The edges of icons are more pronounced, so they stand out from the background, and all app windows now have a uniform corner radius.</p><p>As before, I don’t mind Liquid Glass, but the relatively subtle updates do help windows, icons, and text pop out more.</p><h2 id="siri-ai-on-mac">Siri AI on Mac</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cFZGBBx3BSPBb2Us9ENxHK" name="Siri AI Mac" alt="Siri AI" src="https://cdn.mos.cms.futurecdn.net/cFZGBBx3BSPBb2Us9ENxHK.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This feature isn’t available in the developer beta yet for me, but Siri AI on macOS 27 should be a pretty big deal. This is especially true if you’re used to using chatbots like ChatGPT or <a href="https://www.tomsguide.com/ai/google-gemini/google-gemini-everything-you-need-to-know">Google Gemini</a>, as Siri AI now functions like them.</p><p>As Mark Spoonauer said when he <a href="https://www.tomsguide.com/ai/apple-intelligence/i-just-saw-the-new-siri-ai-in-action-at-wwdc-heres-what-i-like-and-what-still-needs-work">saw the new Siri AI in action</a> on a Mac, you can access it by simply pulling up Spotlight. When you begin typing, Spotlight knows which questions should go to Siri rather than launching apps. Siri will bring up answers in a new window, where you can continue the conversation if you need more in-depth information.</p><p>It can even go beyond simple conversations. For example, if you’re looking at a schedule, an “add to calendar” button will appear, letting you do just that. With AI agents being all the rage these days, it makes sense for Siri to function more like one.</p><p>If what Apple showed us is anything to go by, Siri AI could be used for more than just asking questions. Of course, I’d have to go hands-on to see whether Siri AI works with other apps outside the Apple ecosystem, since Mark noted it doesn’t work with Gmail at the moment.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eBj8ke"></div>                            </div>                            <script src="https://kwizly.com/embed/eBj8ke.js" async></script><h2 id="outlook-2">Outlook</h2><p>We should get a better sense of what macOS Golden Gate and the other Apple operating systems can truly do once Siri AI begins rolling out to those who signed up for it.</p><p>Beyond that, I like the refinements being made to Liquid Glass, and Spatial Reframing should be a game-changer for folks who love taking photos. These aren't monumental changes, but I like them for what they provide right now.</p><p>Again, keep in mind that I’m testing a developer beta of macOS 27, and things are likely to change between now and the full release this fall. I’m going to keep using it and will update you all on any new features it introduces. Stay tuned!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/vpns/apples-wwdc-is-the-perfect-time-to-lock-down-your-iphone-and-expressvpn-is-down-to-usd2-49-a-month-to-help-you-do-it">Apple's WWDC is the perfect time to lock down your iPhone – and ExpressVPN is down to $2.49 a month to help you do it</a></li><li><a href="https://www.tomsguide.com/phones/iphones/tomsguide.com/computing/smart-glasses/apples-john-ternus-orders-major-overhaul-for-vision-devices-weve-gone-from-6-products-to-these-2" target="_blank">Kuo: Apple is scrapping Vision headsets in favor of 2 smart glasses — but there's bad news for the release dates</a></li><li><a href="https://www.tomsguide.com/phones/iphones/i-just-installed-the-ios-27-beta-and-reframe-is-unlike-any-other-ai-feature-ive-come-across">I just installed the iOS 27 beta — and Reframe is unlike any other AI feature I’ve come across</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/i-just-tested-the-macos-golden-gate-developer-beta-here-are-my-early-thoughts</link>
                                                                            <description>
                            <![CDATA[ The macOS Golden Gate developer beta is now live, and I've gone hands-on with it to try some of the new features. Here's what I think so far. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">aJhsCMBJuLbjGxMQsXoHr6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vP4WAj95g5ew6J3KNXWH7E-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Wed, 10 Jun 2026 10:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ tony.polanco@futurenet.com (Tony Polanco) ]]></author>                    <dc:creator><![CDATA[ Tony Polanco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atzRNqFt5wYgEUPBDahWsD.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/vP4WAj95g5ew6J3KNXWH7E-1280-80.png">
                                                            <media:credit><![CDATA[Apple]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Describe an Extension in Safari at WWDC 2026]]></media:description>                                                            <media:text><![CDATA[Describe an Extension in Safari at WWDC 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Describe an Extension in Safari at WWDC 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vP4WAj95g5ew6J3KNXWH7E-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The macOS 27 or <a href="https://www.tomsguide.com/computing/macos/macos-27">macOS Golden Gate</a> developer beta is now live, and I’ve begun testing out some of the available features that this upcoming (and unfinished) operating system has to offer. </p><p>We don’t get a substantial update as we did with last year’s <a href="https://www.tomsguide.com/computing/macos/macos-26">macOS 26</a>. Instead, this year’s update is mostly focused on <a href="https://www.tomsguide.com/ai/apple-finally-fixed-siri-heres-all-the-features-for-the-new-siri-ai-announced-at-wwdc">Siri AI</a> and <a href="https://www.tomsguide.com/ai/apple-intelligence/apple-intelligence-finally-comes-into-its-own-but-wwdc-26-was-missing-something">Apple Intelligence</a>. While I’ve yet to try the former, the latter offers nifty tricks for Mac users to try out.</p><p>Keeping in mind that this is a developer beta and features are subject to change, here are my early thoughts on macOS Golden Gate and some features that stand out.</p><h2 id="spatial-reframing-2">Spatial Reframing</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2vyL4w3WxVGjQJPBPpoqq5.jpg" alt="MacBook Air M5" /><figcaption>A MacBook Air before Reframe<small role="credit">Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vUC8TZ34UKYuqHaQC7jN6R.jpg" alt="MacBook Air M5" /><figcaption>A MacBook Air after Reframe<small role="credit">Tom's Guide</small></figcaption></figure></figure><p>The new <a href="https://www.tomsguide.com/phones/iphones/apples-ai-powered-spatial-reframing-tool-just-stole-the-show-at-wwdc">Reframe tool stole the show at WWDC</a>, and it’s a lot of fun to use. The feature is self-explanatory: you can take existing photos and adjust the perspective to your liking. Basically, if you’re not happy with a photo’s angle, you can change that.</p><p>After selecting Reframe in the new Tools option in Photos’ editing mode, the AI scans your photo. When that’s done, you can pull your finger across the touchpad to change the perspective. There are also sliders on the side if you prefer more precise control over the angle, orientation, or size. Once you’re happy with the result, the AI shifts things around to fill in any blanks.</p><p>While you can argue that you’re not seeing the real image after you’ve effectively doctored it, the result isn’t radically different from the original. If you don’t worry about getting a perfect picture the first time around, Reframe can definitely remove that stress since you can always come back to your photo later.</p><h2 id="liquid-glass-slider-2">Liquid Glass slider</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kbVSEAeYD7AF3N9vqnbxhG" name="macOS 27 liquid glass slider" alt="macOS 27 Liquid Glass" src="https://cdn.mos.cms.futurecdn.net/kbVSEAeYD7AF3N9vqnbxhG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide / Apple)</span></figcaption></figure><p>I didn’t mind the Liquid Glass UI as much as others, but it has certainly been a controversial element introduced to iPhones, iPads, and Macs with their respective updates last year. Now, Apple has updated Liquid Glass so you can tailor it to your liking.</p><p>For example, there’s a new preference slider that lets you dial in the exact intensity of the Liquid Glass effect. You can go from highly transparent to more opaque. More complex background visuals are more diffuse, increasing text readability. The edges of icons are more pronounced, so they stand out from the background, and all app windows now have a uniform corner radius.</p><p>As before, I don’t mind Liquid Glass, but the relatively subtle updates do help windows, icons, and text pop out more.</p><h2 id="siri-ai-on-mac">Siri AI on Mac</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cFZGBBx3BSPBb2Us9ENxHK" name="Siri AI Mac" alt="Siri AI" src="https://cdn.mos.cms.futurecdn.net/cFZGBBx3BSPBb2Us9ENxHK.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This feature isn’t available in the developer beta yet for me, but Siri AI on macOS 27 should be a pretty big deal. This is especially true if you’re used to using chatbots like ChatGPT or <a href="https://www.tomsguide.com/ai/google-gemini/google-gemini-everything-you-need-to-know">Google Gemini</a>, as Siri AI now functions like them.</p><p>As Mark Spoonauer said when he <a href="https://www.tomsguide.com/ai/apple-intelligence/i-just-saw-the-new-siri-ai-in-action-at-wwdc-heres-what-i-like-and-what-still-needs-work">saw the new Siri AI in action</a> on a Mac, you can access it by simply pulling up Spotlight. When you begin typing, Spotlight knows which questions should go to Siri rather than launching apps. Siri will bring up answers in a new window, where you can continue the conversation if you need more in-depth information.</p><p>It can even go beyond simple conversations. For example, if you’re looking at a schedule, an “add to calendar” button will appear, letting you do just that. With AI agents being all the rage these days, it makes sense for Siri to function more like one.</p><p>If what Apple showed us is anything to go by, Siri AI could be used for more than just asking questions. Of course, I’d have to go hands-on to see whether Siri AI works with other apps outside the Apple ecosystem, since Mark noted it doesn’t work with Gmail at the moment.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eBj8ke"></div>                            </div>                            <script src="https://kwizly.com/embed/eBj8ke.js" async></script><h2 id="outlook-2">Outlook</h2><p>We should get a better sense of what macOS Golden Gate and the other Apple operating systems can truly do once Siri AI begins rolling out to those who signed up for it.</p><p>Beyond that, I like the refinements being made to Liquid Glass, and Spatial Reframing should be a game-changer for folks who love taking photos. These aren't monumental changes, but I like them for what they provide right now.</p><p>Again, keep in mind that I’m testing a developer beta of macOS 27, and things are likely to change between now and the full release this fall. I’m going to keep using it and will update you all on any new features it introduces. Stay tuned!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/vpns/apples-wwdc-is-the-perfect-time-to-lock-down-your-iphone-and-expressvpn-is-down-to-usd2-49-a-month-to-help-you-do-it">Apple's WWDC is the perfect time to lock down your iPhone – and ExpressVPN is down to $2.49 a month to help you do it</a></li><li><a href="https://www.tomsguide.com/phones/iphones/tomsguide.com/computing/smart-glasses/apples-john-ternus-orders-major-overhaul-for-vision-devices-weve-gone-from-6-products-to-these-2" target="_blank">Kuo: Apple is scrapping Vision headsets in favor of 2 smart glasses — but there's bad news for the release dates</a></li><li><a href="https://www.tomsguide.com/phones/iphones/i-just-installed-the-ios-27-beta-and-reframe-is-unlike-any-other-ai-feature-ive-come-across">I just installed the iOS 27 beta — and Reframe is unlike any other AI feature I’ve come across</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The macOS Golden Gate developer beta is live — here’s how to download it ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Apple announced <a href="https://www.tomsguide.com/computing/macos/macos-27">macOS Golden Gate</a> at <a href="https://www.tomsguide.com/news/live/wwdc-2026-live-news-updates">WWDC 2026</a>, which means developers are already working hard to update their apps for the upcoming operating system. The developer beta is now live, but it’s open to anyone who signs up for Apple’s Beta program and is willing to deal with potential headaches associated with in-development code.</p><p>This year, Apple has placed most of its focus on updating Apple Intelligence and Siri, which it now calls <a href="https://www.tomsguide.com/ai/apple-finally-fixed-siri-heres-all-the-features-for-the-new-siri-ai-announced-at-wwdc">Siri AI</a>. macOS 27 doesn’t include many new features, so the development team focused on improving performance, which should make this OS run more smoothly. Improvements have also been made to the Liquid Glass UI, making it more customizable (and readable).</p><p>A word of warning: macOS Golden Gate is unfinished, so it might be buggy and could cause issues for your Mac. If you’re willing to take the chance (most of these betas are relatively safe in my experience), then read on to find out how to download the macOS Golden Gate developer beta.</p><h2 id="how-to-download-the-macos-golden-gate-developer-beta-2">How to download the macOS Golden Gate developer beta</h2><p>Downloading the macOS Golden Gate developer beta is a relatively simple process. First, enroll your Apple ID in <a href="https://go.redirectingat.com/?id=92X1584493&xcust=tomsguide_us_2424893525236134601&xs=1&url=https%3A%2F%2Fbeta.apple.com%2F&sref=https%3A%2F%2Fwww.tomsguide.com" target="_blank"><u>Apple's Beta Program</u></a> and make sure your Mac is compatible. Here's the full list of Macs that can install and run macOS Golden Gate:</p><ul><li>MacBook Neo (2026)</li><li>MacBook Air with Apple silicon (2020 and later)</li><li>MacBook Pro with Apple silicon (2020 and later)</li><li>iMac with Apple silicon (2021 and later)</li><li>Mac mini with Apple silicon (2020 and later)</li><li>Mac Studio with Apple silicon (2022 and later)</li><li>Mac Pro with Apple silicon (2023 and later)</li></ul><section class="howto-block">                    <h3>1. Open System Settings</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/VwiWUWktjrNv3uJFyMfMpn.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/VwiWUWktjrNv3uJFyMfMpn.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>To start, <strong>open the System Settings menu on your Mac by clicking on the Apple icon in the top-left corner</strong>, then <strong>select "System Settings" from the drop-down menu</strong>. Similarly, <strong>you can also click on the gear icon in the dock</strong>.</p></p>                </section><section class="howto-block">                    <h3>2. Navigate to General > Software Update</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/ASM9wMhQK6Vgae6MPBKatV.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/ASM9wMhQK6Vgae6MPBKatV.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>After that, <strong>navigate to the Software Update section of your General settings menu</strong>. To get there, <strong>click General in the left-hand menu of the System Settings menu</strong>, then <strong>click Software Update</strong>.</p></p>                </section><section class="howto-block">                    <h3>3. Enable Beta Updates and select macOS Golden Gate</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/84hw5yBW7Ax4KWhLunkzt4.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/84hw5yBW7Ax4KWhLunkzt4.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>Then, <strong>make sure the Beta Updates setting is switched to On</strong>. If it's switched Off, turn it on by clicking the corresponding button. <strong>When the Beta Updates menu opens, select macOS Golden Gate Developer Beta from the dropdown menu</strong>. Double-check that your Apple account is enrolled in Apple’s Beta Program if you don’t see the beta listed.</p></p>                </section><section class="howto-block">                    <h3>4. Install the beta</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/CnQztVMjDEAGY5o3m2vjfJ.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/CnQztVMjDEAGY5o3m2vjfJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>Once that's done, <strong>you should see the macOS 27 Beta appear as available to download</strong>. All you have to do now is hit the <strong>Upgrade Now button to start downloading</strong>, and you're all set!</p></p>                </section><p>And that’s how you download the macOS Golden Gate developer beta. After the download finishes, your Mac will restart, and you’ll get your first taste of the upcoming OS. Depending on your connection speed, the download might take a few minutes, so be patient. Enjoy the new features!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/wwdc-2026-is-here-and-these-are-the-3-things-im-most-excited-for">3 things I'm excited to see revealed at today's WWDC 2026 keynote</a></li><li><a href="https://www.tomsguide.com/computing/vr-ar/ipados-27-everything-coming-to-the-apples-beloved-tablets">iPadOS 27: Everything announced for Apple's beloved tablets at WWDC 2026</a></li><li><a href="https://www.tomsguide.com/phones/iphones/ios-27-is-official-all-the-new-upgrades-and-features-announced-at-wwdc-2026">iOS 27 is official: All the new upgrades and features announced at WWDC 2026</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/the-macos-golden-gate-developer-beta-is-live-heres-how-to-download-it</link>
                                                                            <description>
                            <![CDATA[ Apple's macOS Golden Gate developer beta is available now. Here's how you can download it and test out all the new Apple Intelligence features for Macs. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2EZDEpTx2dvB7VbS6fPST5</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BKrgHb2ruGAESvEL7JGQ8f-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 09 Jun 2026 10:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 16 Jul 2026 13:29:36 +0000</updated>
                                                                                                                                            <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ tony.polanco@futurenet.com (Tony Polanco) ]]></author>                    <dc:creator><![CDATA[ Tony Polanco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atzRNqFt5wYgEUPBDahWsD.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/BKrgHb2ruGAESvEL7JGQ8f-1280-80.jpg">
                                                            <media:credit><![CDATA[Apple]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[macOS 27]]></media:description>                                                            <media:text><![CDATA[macOS 27]]></media:text>
                                <media:title type="plain"><![CDATA[macOS 27]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BKrgHb2ruGAESvEL7JGQ8f-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Apple announced <a href="https://www.tomsguide.com/computing/macos/macos-27">macOS Golden Gate</a> at <a href="https://www.tomsguide.com/news/live/wwdc-2026-live-news-updates">WWDC 2026</a>, which means developers are already working hard to update their apps for the upcoming operating system. The developer beta is now live, but it’s open to anyone who signs up for Apple’s Beta program and is willing to deal with potential headaches associated with in-development code.</p><p>This year, Apple has placed most of its focus on updating Apple Intelligence and Siri, which it now calls <a href="https://www.tomsguide.com/ai/apple-finally-fixed-siri-heres-all-the-features-for-the-new-siri-ai-announced-at-wwdc">Siri AI</a>. macOS 27 doesn’t include many new features, so the development team focused on improving performance, which should make this OS run more smoothly. Improvements have also been made to the Liquid Glass UI, making it more customizable (and readable).</p><p>A word of warning: macOS Golden Gate is unfinished, so it might be buggy and could cause issues for your Mac. If you’re willing to take the chance (most of these betas are relatively safe in my experience), then read on to find out how to download the macOS Golden Gate developer beta.</p><h2 id="how-to-download-the-macos-golden-gate-developer-beta-2">How to download the macOS Golden Gate developer beta</h2><p>Downloading the macOS Golden Gate developer beta is a relatively simple process. First, enroll your Apple ID in <a href="https://go.redirectingat.com/?id=92X1584493&xcust=tomsguide_us_2424893525236134601&xs=1&url=https%3A%2F%2Fbeta.apple.com%2F&sref=https%3A%2F%2Fwww.tomsguide.com" target="_blank"><u>Apple's Beta Program</u></a> and make sure your Mac is compatible. Here's the full list of Macs that can install and run macOS Golden Gate:</p><ul><li>MacBook Neo (2026)</li><li>MacBook Air with Apple silicon (2020 and later)</li><li>MacBook Pro with Apple silicon (2020 and later)</li><li>iMac with Apple silicon (2021 and later)</li><li>Mac mini with Apple silicon (2020 and later)</li><li>Mac Studio with Apple silicon (2022 and later)</li><li>Mac Pro with Apple silicon (2023 and later)</li></ul><section class="howto-block">                    <h3>1. Open System Settings</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/VwiWUWktjrNv3uJFyMfMpn.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/VwiWUWktjrNv3uJFyMfMpn.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>To start, <strong>open the System Settings menu on your Mac by clicking on the Apple icon in the top-left corner</strong>, then <strong>select "System Settings" from the drop-down menu</strong>. Similarly, <strong>you can also click on the gear icon in the dock</strong>.</p></p>                </section><section class="howto-block">                    <h3>2. Navigate to General > Software Update</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/ASM9wMhQK6Vgae6MPBKatV.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/ASM9wMhQK6Vgae6MPBKatV.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>After that, <strong>navigate to the Software Update section of your General settings menu</strong>. To get there, <strong>click General in the left-hand menu of the System Settings menu</strong>, then <strong>click Software Update</strong>.</p></p>                </section><section class="howto-block">                    <h3>3. Enable Beta Updates and select macOS Golden Gate</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/84hw5yBW7Ax4KWhLunkzt4.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/84hw5yBW7Ax4KWhLunkzt4.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>Then, <strong>make sure the Beta Updates setting is switched to On</strong>. If it's switched Off, turn it on by clicking the corresponding button. <strong>When the Beta Updates menu opens, select macOS Golden Gate Developer Beta from the dropdown menu</strong>. Double-check that your Apple account is enrolled in Apple’s Beta Program if you don’t see the beta listed.</p></p>                </section><section class="howto-block">                    <h3>4. Install the beta</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/CnQztVMjDEAGY5o3m2vjfJ.jpg"                                        alt="macOS 27"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/CnQztVMjDEAGY5o3m2vjfJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / Apple)</div></figure>                    <p><p>Once that's done, <strong>you should see the macOS 27 Beta appear as available to download</strong>. All you have to do now is hit the <strong>Upgrade Now button to start downloading</strong>, and you're all set!</p></p>                </section><p>And that’s how you download the macOS Golden Gate developer beta. After the download finishes, your Mac will restart, and you’ll get your first taste of the upcoming OS. Depending on your connection speed, the download might take a few minutes, so be patient. Enjoy the new features!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/wwdc-2026-is-here-and-these-are-the-3-things-im-most-excited-for">3 things I'm excited to see revealed at today's WWDC 2026 keynote</a></li><li><a href="https://www.tomsguide.com/computing/vr-ar/ipados-27-everything-coming-to-the-apples-beloved-tablets">iPadOS 27: Everything announced for Apple's beloved tablets at WWDC 2026</a></li><li><a href="https://www.tomsguide.com/phones/iphones/ios-27-is-official-all-the-new-upgrades-and-features-announced-at-wwdc-2026">iOS 27 is official: All the new upgrades and features announced at WWDC 2026</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ macOS Golden Gate: The biggest updates coming to Macs ]]></title>
                                                                                                <dc:content><![CDATA[ <p>At <a href="https://www.tomsguide.com/news/live/wwdc-2026-live-news-updates">WWDC 2026</a>, Apple announced a slew of updates coming to macOS 27, now called macOS Golden Gate. This OS update officially sees the end of the Intel era, but is more future-focused thanks to better AI and smoother performance.</p><p>Apple Intelligence and Siri are getting big upgrades for macOS 27, iPadOS 27, and iOS 27. Powered by Google Gemini, Apple's AI is now on par with competitors and is specifically designed to work with the Apple ecosystem.</p><p>While most of the updates for macOS Golden Gate are part of the company's greater AI efforts, features like on-device editing and a more conversational Siri should make using Macs more seamless and intuitive.</p><p>Here is everything announced for macOS 27 at WWDC.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gK4rJ8" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-macos-27-quick-news"><span>macOS 27: Quick news</span></h3><ul><li>macOS Golden Gate is the name for macOS 27</li><li>Under-the-hood performance upgrades</li><li>Smarter Siri and better Apple Intelligence</li><li>Liquid Glass UI is more customizable</li></ul><h3 class="article-body__section" id="section-siri-ai-and-apple-intelligence"><span>Siri AI and Apple Intelligence</span></h3><p>Powered by Google Gemini, the new AI-infused Siri acts like a proper chatbot. It has features such as contextual awareness, conversational capabilities, improved natural-language support, and more.</p><p>You can use Siri AI through Spotlight to easily find files or messages you need. For example, you can ask or type to find a PDF invoice in one of your emails and add its contents to your Numbers budget spreadsheet. This should make Siri a true assistant rather than just an AI that helps you with recipes.</p><p>For writers, Siri AI can help you generate drafts from scratch and help proofread your work. And since it's powered by AI, it can learn how you respond to specific people, and even give you suggestions as you write. This should make it a better writing assistant, whether you're working on a big project or just checking in with friends.</p><p>Visual Intelligence with Siri is arriving on Macs for the first time. This feature lets you search visually, ask questions, and take actions on your screen. There is a dedicated keyboard shortcut that lets you select something on your Mac's display and type directly to Siri to get answers.</p><h3 class="article-body__section" id="section-liquid-glass"><span>Liquid Glass</span></h3><p>Liquid Glass was introduced last year as the big design overhaul for Apple's operating systems, but it didn't go over well with many Mac users. While Liquid Glass isn't going anywhere, it has been fine-tuned for better readability on Macs.</p><p>For instance, you now have finer control over its opacity and color. The edges of apps are also more defined, so they stand out more from the background. These updates should alleviate some of the issues users have had since macOS 26.</p><h3 class="article-body__section" id="section-smoother-performance"><span>Smoother performance</span></h3><p>Since macOS Golden Gate doesn't introduce major changes from macOS 26, the team was able to make more under-the-hood updates to help everything run more smoothly.</p><p>On iPhones, performance has apparently increased by 30%. We don't have exact numbers for macOS, but it should be in that range. This should also lead to better battery life, which would be interesting given how M-series MacBooks already have astonishing battery life.</p><h3 class="article-body__section" id="section-macos-golden-gate-outlook"><span>macOS Golden Gate: Outlook</span></h3><p>macOS Golden Gate primarily focuses on the latest updates to Apple Intelligence and Siri.  While we didn't hear about any macOS-specific updates, what we're getting should create a more unified ecosystem across Apple's devices. Beyond all the AI updates, the claimed performance boost for Macs and other devices should be especially beneficial.</p><p>We'll update this post with the latest macOS Golden Gate news as we hear it, so stay tuned for more.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/macos-27</link>
                                                                            <description>
                            <![CDATA[ During WWDC 2026, Apple detailed what's coming to macOS 27. From a more intelligent Siri to performance upgrades and UI updates, here's what you need to know. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wXY7aU493uwzjftfRkANm4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/pWw6pR2WPasWkQFcaXPQnX-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Mon, 08 Jun 2026 17:20:06 +0000</pubDate>                                                                                                                                <updated>Mon, 08 Jun 2026 18:57:12 +0000</updated>
                                                                                                                                            <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ tony.polanco@futurenet.com (Tony Polanco) ]]></author>                    <dc:creator><![CDATA[ Tony Polanco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atzRNqFt5wYgEUPBDahWsD.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/pWw6pR2WPasWkQFcaXPQnX-1280-80.png">
                                                            <media:credit><![CDATA[Apple]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Write with Siri on Mac at WWDC 2026]]></media:description>                                                            <media:text><![CDATA[Write with Siri on Mac at WWDC 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Write with Siri on Mac at WWDC 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/pWw6pR2WPasWkQFcaXPQnX-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>At <a href="https://www.tomsguide.com/news/live/wwdc-2026-live-news-updates">WWDC 2026</a>, Apple announced a slew of updates coming to macOS 27, now called macOS Golden Gate. This OS update officially sees the end of the Intel era, but is more future-focused thanks to better AI and smoother performance.</p><p>Apple Intelligence and Siri are getting big upgrades for macOS 27, iPadOS 27, and iOS 27. Powered by Google Gemini, Apple's AI is now on par with competitors and is specifically designed to work with the Apple ecosystem.</p><p>While most of the updates for macOS Golden Gate are part of the company's greater AI efforts, features like on-device editing and a more conversational Siri should make using Macs more seamless and intuitive.</p><p>Here is everything announced for macOS 27 at WWDC.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gK4rJ8" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-macos-27-quick-news"><span>macOS 27: Quick news</span></h3><ul><li>macOS Golden Gate is the name for macOS 27</li><li>Under-the-hood performance upgrades</li><li>Smarter Siri and better Apple Intelligence</li><li>Liquid Glass UI is more customizable</li></ul><h3 class="article-body__section" id="section-siri-ai-and-apple-intelligence"><span>Siri AI and Apple Intelligence</span></h3><p>Powered by Google Gemini, the new AI-infused Siri acts like a proper chatbot. It has features such as contextual awareness, conversational capabilities, improved natural-language support, and more.</p><p>You can use Siri AI through Spotlight to easily find files or messages you need. For example, you can ask or type to find a PDF invoice in one of your emails and add its contents to your Numbers budget spreadsheet. This should make Siri a true assistant rather than just an AI that helps you with recipes.</p><p>For writers, Siri AI can help you generate drafts from scratch and help proofread your work. And since it's powered by AI, it can learn how you respond to specific people, and even give you suggestions as you write. This should make it a better writing assistant, whether you're working on a big project or just checking in with friends.</p><p>Visual Intelligence with Siri is arriving on Macs for the first time. This feature lets you search visually, ask questions, and take actions on your screen. There is a dedicated keyboard shortcut that lets you select something on your Mac's display and type directly to Siri to get answers.</p><h3 class="article-body__section" id="section-liquid-glass"><span>Liquid Glass</span></h3><p>Liquid Glass was introduced last year as the big design overhaul for Apple's operating systems, but it didn't go over well with many Mac users. While Liquid Glass isn't going anywhere, it has been fine-tuned for better readability on Macs.</p><p>For instance, you now have finer control over its opacity and color. The edges of apps are also more defined, so they stand out more from the background. These updates should alleviate some of the issues users have had since macOS 26.</p><h3 class="article-body__section" id="section-smoother-performance"><span>Smoother performance</span></h3><p>Since macOS Golden Gate doesn't introduce major changes from macOS 26, the team was able to make more under-the-hood updates to help everything run more smoothly.</p><p>On iPhones, performance has apparently increased by 30%. We don't have exact numbers for macOS, but it should be in that range. This should also lead to better battery life, which would be interesting given how M-series MacBooks already have astonishing battery life.</p><h3 class="article-body__section" id="section-macos-golden-gate-outlook"><span>macOS Golden Gate: Outlook</span></h3><p>macOS Golden Gate primarily focuses on the latest updates to Apple Intelligence and Siri.  While we didn't hear about any macOS-specific updates, what we're getting should create a more unified ecosystem across Apple's devices. Beyond all the AI updates, the claimed performance boost for Macs and other devices should be especially beneficial.</p><p>We'll update this post with the latest macOS Golden Gate news as we hear it, so stay tuned for more.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Windows laptops are entering their MacBook Neo era, but is Windows 11 actually ready for it? 8GB of RAM has me worried ]]></title>
                                                                                                <dc:content><![CDATA[ <p>One thing was clear at <a href="https://www.tomsguide.com/computing/best-of-computex-2026">Computex 2026</a>: every laptop maker is terrified of the <a href="https://www.tomsguide.com/computing/macbooks/apple-macbook-neo-review">MacBook Neo</a>, and they’re <a href="https://www.tomsguide.com/computing/laptops/forget-the-macbook-neo-these-4-windows-laptops-are-just-as-powerful">fighting back in a big way</a>. But I’m worried about whether Windows 11 is <em>actually </em>ready for this shift.</p><p>A $599 machine powered by an A18 Pro chip, Apple has essentially forced the hands of PC manufacturers who had gotten far too comfortable giving us mid systems at this price. But I’m glad the Neo-shaped earthquake has shaken up some change here. The <a href="https://www.tomsguide.com/computing/laptops/i-held-the-macbook-neo-in-one-hand-and-the-new-xps-13-in-the-other-and-dells-affordable-laptop-is-surprisingly-lighter">new Dell XPS 13</a> is looking mighty tasty at that lower price, but with better I/O and a touchscreen display, alongside that aluminum body.</p><p>But there’s a big Windows 11-related question here, because as <a href="https://www.tomsguide.com/computing/macbooks/windows-fans-say-macbook-neos-8gb-ram-is-ridiculous-so-i-tested-it-and-the-results-are-shocking">I found out testing it</a>, the way it's built makes it quite RAM hungry. I caught it using nearly 3X more memory than macOS, and with all the new features announced at <a href="https://www.tomsguide.com/news/live/microsoft-build-2026">Microsoft Build</a>, things could get worse.</p><div ><table><thead><tr><th class="firstcol " ><p><strong>Laptop</strong></p></th><th  ><p>MacBook Neo</p></th><th  ><p>Asus ProArt GoPro Edition</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Google Chrome + 20 Tabs RAM usage</strong></p></td><td  ><p>1.67 GB</p></td><td  ><p>4.76 GB</p></td></tr><tr><td class="firstcol " ><p><strong>Adobe Photoshop RAM usage</strong></p></td><td  ><p>3.86 GB</p></td><td  ><p>3.85 GB</p></td></tr><tr><td class="firstcol " ><p><strong>Apple Music RAM usage</strong></p></td><td  ><p>157.6 MB</p></td><td  ><p>239.1 MB</p></td></tr><tr><td class="firstcol " ><p><strong>System memory usage TOTAL</strong></p></td><td  ><p><strong>7.24 GB</strong></p></td><td  ><p><strong>27.1 GB</strong></p></td></tr></tbody></table></div><p>So while it’s all fair and good in the world of RAMageddon to shift to 8GB (not something I like to see, but something that is necessary given the insane pricing), Windows has to follow suit and trim some of the fat. Here are some ideas.</p><h2 id="give-me-a-compact-mode">Give me a compact mode</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hqB3iMGH3DpBcLNjw8SSJX" name="Asus ProArt GoPro Edition (PX13)" alt="Asus ProArt GoPro Edition (PX13)" src="https://cdn.mos.cms.futurecdn.net/hqB3iMGH3DpBcLNjw8SSJX.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Right now, Windows 11 treats a $600 8GB thin-and-light the same way it treats a $3,000 workstation with 64GB of RAM. Yes, the OS’ memory management can be highly dynamic, but the core fundamentals take around 6GB, and the system aggressively caches background apps, so as to not waste any unused RAM.</p><p>This may work if you have a ton of memory, but we’re not in that world at the moment and every precious bit is sacred. So what we need is a modular, adaptive OS shell. If Windows 11 detects 8GB, it should trigger an aggressive “Compact mode” right out of the box to throttle background tasks, pause any non-essential tasks and prioritize anything active in the foreground.</p><h2 id="kill-the-widget-and-web-overhear">Kill the “widget and web” overhear</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9hJiHSP3dYfHR6gQC88xu5" name="MSI Modern 14S AI+" alt="MSI Modern 14S AI+" src="https://cdn.mos.cms.futurecdn.net/9hJiHSP3dYfHR6gQC88xu5.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There’s this thing called WebView 2, which is actually the culprit behind some of the most unnecessary bloat within Windows 11 — namely web-heavy dependencies like news widgets you never look at or some of the always-connected elements like Start Menu details or Copilot feeds.</p><p>A user should never have to lose up to 1.5GB of RAM to useless stuff like this, so it needs to be decoupled from the core UI. If a feature isn’t actively on screen (or used) it’s background RAM allocation should be aggressively cut down.</p><h2 id="standardize-the-vanilla-baseline">Standardize the vanilla baseline</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hp2ttKct7XEsSX9q3Jnknm" name="Asus Zenbook 14" alt="Asus Zenbook 14" src="https://cdn.mos.cms.futurecdn.net/hp2ttKct7XEsSX9q3Jnknm.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Bloatware. You hate it — you’ve heard us complain excessively about it. Asus, Dell, MSI and Acer all ship their budget laptops layered with their own resource-heavy management software, which on an 8GB system is a death sentence.</p><p>Microsoft needs to enforce strict RAM-usage guardrails for laptop makers who create 8GB configurations, ensuring that third-party battery trackers, lighting software and trial anti-virus programs don’t choke that last slot of 2GB remaining after the OS.</p><h2 id="outlook-3">Outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oYLxEGMrcPAJTZy2V4Uu8g" name="Acer Swift Air 14" alt="Acer Swift Air 14" src="https://cdn.mos.cms.futurecdn.net/oYLxEGMrcPAJTZy2V4Uu8g.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>PC makers have just proven they can match Apple’s budget hardware pricing. Now, it’s up to Microsoft to prove that Windows 11 can survive the diet Apple forced upon it.</p><p>And sure, there are other things that can be done here, such as smarter compression of background apps, getting on with moving the entire OS over to WinUI 3 framework (the thing that’s removing some of that memory overhead) and much more. But these three items are the main RAM killers here.</p><p>Will it happen? God I hope so, otherwise this fightback against the MacBook Neo is over before it even begins.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/laptops/ive-gone-hands-on-with-every-nvidia-rtx-spark-laptop-coming-this-fall-heres-my-ranked-list-of-the-best-options">I’ve gone hands-on with every Nvidia RTX Spark laptop coming this fall — here’s my brutal tier list of the best options</a></li><li><a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-vincent-van-gogh-edition-hands-on-review">I just held the most beautiful laptop, but I’m not sure Vincent van Gogh would be happy with his name connected to AI</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/windows-laptops-are-entering-their-macbook-neo-era-but-is-windows-11-actually-ready-for-it-8gb-of-ram-has-me-worried</link>
                                                                            <description>
                            <![CDATA[ Windows laptops are fighting back against the MacBook Neo, but Windows 11 needs to lose weight fast for 8GB of RAM! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">feEN8u8rHwsygggmoc7r5U</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/TYkv4WneuaJrWRbBapzdyR-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 07 Jun 2026 11:15:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/TYkv4WneuaJrWRbBapzdyR-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Dell XPS 13 (2026) side by side with the MacBook Neo]]></media:description>                                                            <media:text><![CDATA[The Dell XPS 13 (2026) side by side with the MacBook Neo]]></media:text>
                                <media:title type="plain"><![CDATA[The Dell XPS 13 (2026) side by side with the MacBook Neo]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/TYkv4WneuaJrWRbBapzdyR-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>One thing was clear at <a href="https://www.tomsguide.com/computing/best-of-computex-2026">Computex 2026</a>: every laptop maker is terrified of the <a href="https://www.tomsguide.com/computing/macbooks/apple-macbook-neo-review">MacBook Neo</a>, and they’re <a href="https://www.tomsguide.com/computing/laptops/forget-the-macbook-neo-these-4-windows-laptops-are-just-as-powerful">fighting back in a big way</a>. But I’m worried about whether Windows 11 is <em>actually </em>ready for this shift.</p><p>A $599 machine powered by an A18 Pro chip, Apple has essentially forced the hands of PC manufacturers who had gotten far too comfortable giving us mid systems at this price. But I’m glad the Neo-shaped earthquake has shaken up some change here. The <a href="https://www.tomsguide.com/computing/laptops/i-held-the-macbook-neo-in-one-hand-and-the-new-xps-13-in-the-other-and-dells-affordable-laptop-is-surprisingly-lighter">new Dell XPS 13</a> is looking mighty tasty at that lower price, but with better I/O and a touchscreen display, alongside that aluminum body.</p><p>But there’s a big Windows 11-related question here, because as <a href="https://www.tomsguide.com/computing/macbooks/windows-fans-say-macbook-neos-8gb-ram-is-ridiculous-so-i-tested-it-and-the-results-are-shocking">I found out testing it</a>, the way it's built makes it quite RAM hungry. I caught it using nearly 3X more memory than macOS, and with all the new features announced at <a href="https://www.tomsguide.com/news/live/microsoft-build-2026">Microsoft Build</a>, things could get worse.</p><div ><table><thead><tr><th class="firstcol " ><p><strong>Laptop</strong></p></th><th  ><p>MacBook Neo</p></th><th  ><p>Asus ProArt GoPro Edition</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Google Chrome + 20 Tabs RAM usage</strong></p></td><td  ><p>1.67 GB</p></td><td  ><p>4.76 GB</p></td></tr><tr><td class="firstcol " ><p><strong>Adobe Photoshop RAM usage</strong></p></td><td  ><p>3.86 GB</p></td><td  ><p>3.85 GB</p></td></tr><tr><td class="firstcol " ><p><strong>Apple Music RAM usage</strong></p></td><td  ><p>157.6 MB</p></td><td  ><p>239.1 MB</p></td></tr><tr><td class="firstcol " ><p><strong>System memory usage TOTAL</strong></p></td><td  ><p><strong>7.24 GB</strong></p></td><td  ><p><strong>27.1 GB</strong></p></td></tr></tbody></table></div><p>So while it’s all fair and good in the world of RAMageddon to shift to 8GB (not something I like to see, but something that is necessary given the insane pricing), Windows has to follow suit and trim some of the fat. Here are some ideas.</p><h2 id="give-me-a-compact-mode">Give me a compact mode</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hqB3iMGH3DpBcLNjw8SSJX" name="Asus ProArt GoPro Edition (PX13)" alt="Asus ProArt GoPro Edition (PX13)" src="https://cdn.mos.cms.futurecdn.net/hqB3iMGH3DpBcLNjw8SSJX.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Right now, Windows 11 treats a $600 8GB thin-and-light the same way it treats a $3,000 workstation with 64GB of RAM. Yes, the OS’ memory management can be highly dynamic, but the core fundamentals take around 6GB, and the system aggressively caches background apps, so as to not waste any unused RAM.</p><p>This may work if you have a ton of memory, but we’re not in that world at the moment and every precious bit is sacred. So what we need is a modular, adaptive OS shell. If Windows 11 detects 8GB, it should trigger an aggressive “Compact mode” right out of the box to throttle background tasks, pause any non-essential tasks and prioritize anything active in the foreground.</p><h2 id="kill-the-widget-and-web-overhear">Kill the “widget and web” overhear</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9hJiHSP3dYfHR6gQC88xu5" name="MSI Modern 14S AI+" alt="MSI Modern 14S AI+" src="https://cdn.mos.cms.futurecdn.net/9hJiHSP3dYfHR6gQC88xu5.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There’s this thing called WebView 2, which is actually the culprit behind some of the most unnecessary bloat within Windows 11 — namely web-heavy dependencies like news widgets you never look at or some of the always-connected elements like Start Menu details or Copilot feeds.</p><p>A user should never have to lose up to 1.5GB of RAM to useless stuff like this, so it needs to be decoupled from the core UI. If a feature isn’t actively on screen (or used) it’s background RAM allocation should be aggressively cut down.</p><h2 id="standardize-the-vanilla-baseline">Standardize the vanilla baseline</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hp2ttKct7XEsSX9q3Jnknm" name="Asus Zenbook 14" alt="Asus Zenbook 14" src="https://cdn.mos.cms.futurecdn.net/hp2ttKct7XEsSX9q3Jnknm.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Bloatware. You hate it — you’ve heard us complain excessively about it. Asus, Dell, MSI and Acer all ship their budget laptops layered with their own resource-heavy management software, which on an 8GB system is a death sentence.</p><p>Microsoft needs to enforce strict RAM-usage guardrails for laptop makers who create 8GB configurations, ensuring that third-party battery trackers, lighting software and trial anti-virus programs don’t choke that last slot of 2GB remaining after the OS.</p><h2 id="outlook-3">Outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oYLxEGMrcPAJTZy2V4Uu8g" name="Acer Swift Air 14" alt="Acer Swift Air 14" src="https://cdn.mos.cms.futurecdn.net/oYLxEGMrcPAJTZy2V4Uu8g.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>PC makers have just proven they can match Apple’s budget hardware pricing. Now, it’s up to Microsoft to prove that Windows 11 can survive the diet Apple forced upon it.</p><p>And sure, there are other things that can be done here, such as smarter compression of background apps, getting on with moving the entire OS over to WinUI 3 framework (the thing that’s removing some of that memory overhead) and much more. But these three items are the main RAM killers here.</p><p>Will it happen? God I hope so, otherwise this fightback against the MacBook Neo is over before it even begins.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/laptops/ive-gone-hands-on-with-every-nvidia-rtx-spark-laptop-coming-this-fall-heres-my-ranked-list-of-the-best-options">I’ve gone hands-on with every Nvidia RTX Spark laptop coming this fall — here’s my brutal tier list of the best options</a></li><li><a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-vincent-van-gogh-edition-hands-on-review">I just held the most beautiful laptop, but I’m not sure Vincent van Gogh would be happy with his name connected to AI</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ macOS 27: 5 biggest WWDC 2026 announcements we expect ]]></title>
                                                                                                <dc:content><![CDATA[ <p>With <a href="https://www.tomsguide.com/phones/iphones/wwdc-2026">WWDC 2026</a> kicking off on June 8, we’ll soon learn about all the latest updates coming to macOS 27. According to rumors, the Mac-based operating system should receive iterative updates rather than substantial ones. That doesn’t mean there isn’t anything to look forward to, however.</p><p>The biggest thing happening for operating systems like <a href="https://www.tomsguide.com/phones/iphones/ios-27-7-biggest-rumored-upgrades-coming-to-your-iphone-this-fall">iOS 27</a>, iPadOS 27, and macOS 27 is an upgrade for <a href="https://www.tomsguide.com/ai/apple-intelligence">Apple Intelligence</a> and Siri. Apple launched its AI back in 2024, but it’s lagged behind competitors. Ironically enough, Apple Intelligence should now be more useful since <a href="https://www.tomsguide.com/ai/google-gemini/google-gemini-everything-you-need-to-know">Google Gemini</a> will power it.</p><p>The other big thing is the end of support for Intel-based Macs. We knew this was coming since last year, but it’s now happening. Other than that, we expect fixes for Liquid Glass so it works better on Macs, built-in app updates, and perhaps a glimpse (or full reveal) of the <a href="https://www.tomsguide.com/computing/macbooks/a-touchscreen-macbook-is-reportedly-on-the-way-but-it-might-not-be-what-you-want">first touch-screen MacBook</a>.</p><p>Here are some of the macOS announcements we expect to see at WWDC 2026.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gK4rJ8" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-end-of-the-intel-era"><span>End of the Intel era</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="B9nsuipLajySKH8FjfdovX" name="MacBook Pro 13 2020_front2.jpg" alt="Apple MacBook Pro 13-inch (2020) review" src="https://cdn.mos.cms.futurecdn.net/B9nsuipLajySKH8FjfdovX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Apple already announced that <a href="https://www.tomsguide.com/computing/macos/apple-is-ending-support-for-all-intel-based-macs-next-year-heres-whats-getting-cut">macOS 26 would be the last macOS for Intel Macs</a>, so this one doesn’t come as a big surprise. Still, if you’re rocking an older Intel Mac, you won’t be able to run the new operating system. That said, you won’t be completely left adrift.</p><p>Apple has confirmed that macOS 26 will continue receiving critical security updates for about the next three years. If you’re not ready to upgrade yet, this is certainly good news. Just keep in mind that while you are getting security updates, you won’t get the fancy new features coming to macOS 27.</p><p>Here are the Intel-based Macs that can run macOS 26 but won’t support macOS 27:</p><ul><li><strong>MacBook Pro 13-inch (2020)</strong></li><li><strong>MacBook Pro 16-inch (2019)</strong></li><li><strong>iMac 27-inch (2020)</strong></li><li><strong>Mac Pro (2019)</strong></li></ul><h3 class="article-body__section" id="section-a-smarter-siri-for-real-this-time"><span>A smarter Siri (for real this time)</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bfJ2tCCf47YP4JK8FJQZyi" name="WWDC 2024 — June 10 _ Apple 1-20-23 screenshot.png" alt="WWDC 2024" src="https://cdn.mos.cms.futurecdn.net/bfJ2tCCf47YP4JK8FJQZyi.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Powered by Google Gemini, the new AI-infused Siri will reportedly be a proper AI chatbot. That means it should include features such as contextual awareness, conversational capabilities, improved natural-language support, and more. Expect Google’s multimodal capabilities and agentic AI to come to Siri as well. In short, Siri should behave much more like <a href="https://www.tomsguide.com/news/chatgpt">ChatGPT</a> or <a href="https://www.tomsguide.com/ai/claude-is-my-favorite-ai-model-heres-how-i-use-it">Claude</a>.</p><p>Apple will reportedly let you integrate third-party models (such as Claude or ChatGPT) into Siri via a new “<a href="https://www.tomsguide.com/phones/iphones/beyond-chatgpt-ios-27-extensions-will-reportedly-allow-siri-to-use-google-gemini-and-claude">Extensions</a>” marketplace in the App Store. You might be able to choose distinct voices for these third-party AI responses so you know which one is answering.</p><p>Agentic AI is the latest buzz term, and Siri may have deeper system-level context to execute multi-step tasks across apps. For example, you can ask it to find a PDF invoice in one of your emails and add its contents to your Numbers budget spreadsheet. This would make Siri a true assistant.</p><h3 class="article-body__section" id="section-liquid-glass-fixes"><span>Liquid Glass fixes</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aBR3HP2VVMPQteUEbMehfF" name="WWDC 2025 — June 9 _ Apple 58-49 screenshot" alt="Clear Command Center" src="https://cdn.mos.cms.futurecdn.net/aBR3HP2VVMPQteUEbMehfF.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Liquid Glass was the major design overhaul introduced last year, but some users weren’t exactly happy with it, as it drew criticism for its lack of contrast, harsh transparency, and poor sidebar readability.</p><p>According to Bloomberg’s Mark Gurman, <a href="https://www.tomsguide.com/phones/iphones/liquid-glass-will-be-sticking-around-for-ios-27-but-theres-some-good-news">macOS 27 will have a visual tune-up to address these complaints</a>. If true, we could see the sleek, polished look that Apple’s design team originally intended. There are also reports of a Mac-adapted version of the iPhone’s Dynamic Island coming to the menu bar.</p><h3 class="article-body__section" id="section-built-in-app-upgrades"><span>Built-in app upgrades</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EyYgyZa5ktC9tLjhxr3ZwE" name="TG_MacBook-Pro-16_M1-Max_LIST-1.jpg" alt="MacBook Pro 2021 (16-inch) review unit sitting on a coffee table" src="https://cdn.mos.cms.futurecdn.net/EyYgyZa5ktC9tLjhxr3ZwE.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>A feature that’s also expected for iOS 27 and iPadOS 27 will bring three AI-powered tools to Photos. This includes <a href="https://www.tomsguide.com/phones/iphones/ios-27-reportedly-getting-ai-photo-editing-overhaul-heres-all-the-new-features">Extend, Enhance, and Reframe</a>. The first two are self-explanatory, while Reframe is designed to change the perspective in spatial photos seen in 3D.</p><p>For fans of the Safari browser, a new AI feature is rumored to automatically categorize and organize browser tabs into clean, contextual groups. If you frequently have dozens of tabs open, this should be a major win.</p><p>Since macOS 27 isn’t a huge overhaul from last year, the team has reportedly focused on fixing bugs and improving performance. As with OS X Snow Leopard, a chunk of code is being optimized for raw efficiency, stability, and better battery life. The latter would be especially interesting given that MacBooks with M-series chips already have epic battery life.</p><h3 class="article-body__section" id="section-preparing-for-touchscreen-macs"><span>Preparing for touchscreen Macs</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bYKZ5S3aKLFWZQPU3t6aZJ" name="Intricuit Magic Screen" alt="Intricuit Magic Screen" src="https://cdn.mos.cms.futurecdn.net/bYKZ5S3aKLFWZQPU3t6aZJ.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>WWDC usually focuses on software, but we have seen hardware announcements, such as the <a href="https://www.tomsguide.com/reviews/macbook-air-2022-m2">M2 MacBook Air</a> at WWDC 2022. Rumors suggest that <a href="https://www.tomsguide.com/computing/macbooks/a-touchscreen-macbook-is-reportedly-on-the-way-but-it-might-not-be-what-you-want">Apple is working on the first touchscreen MacBook</a>, so it’s possible it could debut at WWDC 2026 — or at least be teased.</p><p>To take advantage of a touchscreen, macOS 27 will reportedly have a dynamic user interface that adjusts on the fly. For instance, if you click on an item with the mouse cursor, the UI remains compact. If you tap the screen, menus and controls will automatically expand to be touch-friendly. It should also incorporate iPad-style gestures like fast scrolling and pinch-to-zoom.</p><p>Of all the rumors we’ve heard, this one is arguably the most exciting and would bring something substantially new to Macs. I’m curious to see if these touch features will be exclusive to the rumored <a href="https://www.tomsguide.com/computing/laptops/macbook-ultra-everything-we-know-so-far">MacBook Ultra</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xk3M3X"></div>                            </div>                            <script src="https://kwizly.com/embed/Xk3M3X.js" async></script><h3 class="article-body__section" id="section-macos-27-outlook"><span>macOS 27: Outlook</span></h3><p>If rumors are correct, then we shouldn’t see a massive overhaul of macOS 27. That said, an improved Siri could actually be a game-changer if it’s as helpful as intended. The same is true if MacBooks with touchscreens get announced.</p><p>Nothing is set in stone, so let’s look forward to WWDC giving us some concrete answers. June 8 is almost here, so it won’t be long. We’ll be live on the ground covering the event as it happens, so keep it locked here for the latest!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/iphones/how-to-watch-the-apple-wwdc-2026-keynote-live">How to watch the Apple WWDC 2026 keynote live</a></li><li><a href="https://www.tomsguide.com/phones/iphones/wwdc-2026-7-biggest-announcements-we-expect">Apple WWDC 2026 event — 9 biggest announcements we expect</a></li><li><a href="https://www.tomsguide.com/computing/macos/ive-been-covering-apple-events-for-8-years-heres-what-im-excited-for-from-wwdc-2026">Here's what I'm excited for from WWDC 2026</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/macos-27-the-5-biggest-wwdc-2026-announcements-we-expect</link>
                                                                            <description>
                            <![CDATA[ WWDC 2026 is days away, and we'll soon learn about all the new features coming to macOS 26. Here's what we expect to hear, based on rumors and reports. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oktsuifR8FgCfUnApb7Xci</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WW8of96PXTSaCwTnfGABUQ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 06 Jun 2026 09:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 08 Jun 2026 18:56:00 +0000</updated>
                                                                                                                                            <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ tony.polanco@futurenet.com (Tony Polanco) ]]></author>                    <dc:creator><![CDATA[ Tony Polanco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atzRNqFt5wYgEUPBDahWsD.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/WW8of96PXTSaCwTnfGABUQ-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide/Apple/Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[macOS 27 logo shown on a MacBook Pro 16]]></media:description>                                                            <media:text><![CDATA[macOS 27 logo shown on a MacBook Pro 16]]></media:text>
                                <media:title type="plain"><![CDATA[macOS 27 logo shown on a MacBook Pro 16]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WW8of96PXTSaCwTnfGABUQ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>With <a href="https://www.tomsguide.com/phones/iphones/wwdc-2026">WWDC 2026</a> kicking off on June 8, we’ll soon learn about all the latest updates coming to macOS 27. According to rumors, the Mac-based operating system should receive iterative updates rather than substantial ones. That doesn’t mean there isn’t anything to look forward to, however.</p><p>The biggest thing happening for operating systems like <a href="https://www.tomsguide.com/phones/iphones/ios-27-7-biggest-rumored-upgrades-coming-to-your-iphone-this-fall">iOS 27</a>, iPadOS 27, and macOS 27 is an upgrade for <a href="https://www.tomsguide.com/ai/apple-intelligence">Apple Intelligence</a> and Siri. Apple launched its AI back in 2024, but it’s lagged behind competitors. Ironically enough, Apple Intelligence should now be more useful since <a href="https://www.tomsguide.com/ai/google-gemini/google-gemini-everything-you-need-to-know">Google Gemini</a> will power it.</p><p>The other big thing is the end of support for Intel-based Macs. We knew this was coming since last year, but it’s now happening. Other than that, we expect fixes for Liquid Glass so it works better on Macs, built-in app updates, and perhaps a glimpse (or full reveal) of the <a href="https://www.tomsguide.com/computing/macbooks/a-touchscreen-macbook-is-reportedly-on-the-way-but-it-might-not-be-what-you-want">first touch-screen MacBook</a>.</p><p>Here are some of the macOS announcements we expect to see at WWDC 2026.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gK4rJ8" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-end-of-the-intel-era"><span>End of the Intel era</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="B9nsuipLajySKH8FjfdovX" name="MacBook Pro 13 2020_front2.jpg" alt="Apple MacBook Pro 13-inch (2020) review" src="https://cdn.mos.cms.futurecdn.net/B9nsuipLajySKH8FjfdovX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Apple already announced that <a href="https://www.tomsguide.com/computing/macos/apple-is-ending-support-for-all-intel-based-macs-next-year-heres-whats-getting-cut">macOS 26 would be the last macOS for Intel Macs</a>, so this one doesn’t come as a big surprise. Still, if you’re rocking an older Intel Mac, you won’t be able to run the new operating system. That said, you won’t be completely left adrift.</p><p>Apple has confirmed that macOS 26 will continue receiving critical security updates for about the next three years. If you’re not ready to upgrade yet, this is certainly good news. Just keep in mind that while you are getting security updates, you won’t get the fancy new features coming to macOS 27.</p><p>Here are the Intel-based Macs that can run macOS 26 but won’t support macOS 27:</p><ul><li><strong>MacBook Pro 13-inch (2020)</strong></li><li><strong>MacBook Pro 16-inch (2019)</strong></li><li><strong>iMac 27-inch (2020)</strong></li><li><strong>Mac Pro (2019)</strong></li></ul><h3 class="article-body__section" id="section-a-smarter-siri-for-real-this-time"><span>A smarter Siri (for real this time)</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bfJ2tCCf47YP4JK8FJQZyi" name="WWDC 2024 — June 10 _ Apple 1-20-23 screenshot.png" alt="WWDC 2024" src="https://cdn.mos.cms.futurecdn.net/bfJ2tCCf47YP4JK8FJQZyi.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Powered by Google Gemini, the new AI-infused Siri will reportedly be a proper AI chatbot. That means it should include features such as contextual awareness, conversational capabilities, improved natural-language support, and more. Expect Google’s multimodal capabilities and agentic AI to come to Siri as well. In short, Siri should behave much more like <a href="https://www.tomsguide.com/news/chatgpt">ChatGPT</a> or <a href="https://www.tomsguide.com/ai/claude-is-my-favorite-ai-model-heres-how-i-use-it">Claude</a>.</p><p>Apple will reportedly let you integrate third-party models (such as Claude or ChatGPT) into Siri via a new “<a href="https://www.tomsguide.com/phones/iphones/beyond-chatgpt-ios-27-extensions-will-reportedly-allow-siri-to-use-google-gemini-and-claude">Extensions</a>” marketplace in the App Store. You might be able to choose distinct voices for these third-party AI responses so you know which one is answering.</p><p>Agentic AI is the latest buzz term, and Siri may have deeper system-level context to execute multi-step tasks across apps. For example, you can ask it to find a PDF invoice in one of your emails and add its contents to your Numbers budget spreadsheet. This would make Siri a true assistant.</p><h3 class="article-body__section" id="section-liquid-glass-fixes"><span>Liquid Glass fixes</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aBR3HP2VVMPQteUEbMehfF" name="WWDC 2025 — June 9 _ Apple 58-49 screenshot" alt="Clear Command Center" src="https://cdn.mos.cms.futurecdn.net/aBR3HP2VVMPQteUEbMehfF.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Liquid Glass was the major design overhaul introduced last year, but some users weren’t exactly happy with it, as it drew criticism for its lack of contrast, harsh transparency, and poor sidebar readability.</p><p>According to Bloomberg’s Mark Gurman, <a href="https://www.tomsguide.com/phones/iphones/liquid-glass-will-be-sticking-around-for-ios-27-but-theres-some-good-news">macOS 27 will have a visual tune-up to address these complaints</a>. If true, we could see the sleek, polished look that Apple’s design team originally intended. There are also reports of a Mac-adapted version of the iPhone’s Dynamic Island coming to the menu bar.</p><h3 class="article-body__section" id="section-built-in-app-upgrades"><span>Built-in app upgrades</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EyYgyZa5ktC9tLjhxr3ZwE" name="TG_MacBook-Pro-16_M1-Max_LIST-1.jpg" alt="MacBook Pro 2021 (16-inch) review unit sitting on a coffee table" src="https://cdn.mos.cms.futurecdn.net/EyYgyZa5ktC9tLjhxr3ZwE.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>A feature that’s also expected for iOS 27 and iPadOS 27 will bring three AI-powered tools to Photos. This includes <a href="https://www.tomsguide.com/phones/iphones/ios-27-reportedly-getting-ai-photo-editing-overhaul-heres-all-the-new-features">Extend, Enhance, and Reframe</a>. The first two are self-explanatory, while Reframe is designed to change the perspective in spatial photos seen in 3D.</p><p>For fans of the Safari browser, a new AI feature is rumored to automatically categorize and organize browser tabs into clean, contextual groups. If you frequently have dozens of tabs open, this should be a major win.</p><p>Since macOS 27 isn’t a huge overhaul from last year, the team has reportedly focused on fixing bugs and improving performance. As with OS X Snow Leopard, a chunk of code is being optimized for raw efficiency, stability, and better battery life. The latter would be especially interesting given that MacBooks with M-series chips already have epic battery life.</p><h3 class="article-body__section" id="section-preparing-for-touchscreen-macs"><span>Preparing for touchscreen Macs</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bYKZ5S3aKLFWZQPU3t6aZJ" name="Intricuit Magic Screen" alt="Intricuit Magic Screen" src="https://cdn.mos.cms.futurecdn.net/bYKZ5S3aKLFWZQPU3t6aZJ.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>WWDC usually focuses on software, but we have seen hardware announcements, such as the <a href="https://www.tomsguide.com/reviews/macbook-air-2022-m2">M2 MacBook Air</a> at WWDC 2022. Rumors suggest that <a href="https://www.tomsguide.com/computing/macbooks/a-touchscreen-macbook-is-reportedly-on-the-way-but-it-might-not-be-what-you-want">Apple is working on the first touchscreen MacBook</a>, so it’s possible it could debut at WWDC 2026 — or at least be teased.</p><p>To take advantage of a touchscreen, macOS 27 will reportedly have a dynamic user interface that adjusts on the fly. For instance, if you click on an item with the mouse cursor, the UI remains compact. If you tap the screen, menus and controls will automatically expand to be touch-friendly. It should also incorporate iPad-style gestures like fast scrolling and pinch-to-zoom.</p><p>Of all the rumors we’ve heard, this one is arguably the most exciting and would bring something substantially new to Macs. I’m curious to see if these touch features will be exclusive to the rumored <a href="https://www.tomsguide.com/computing/laptops/macbook-ultra-everything-we-know-so-far">MacBook Ultra</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xk3M3X"></div>                            </div>                            <script src="https://kwizly.com/embed/Xk3M3X.js" async></script><h3 class="article-body__section" id="section-macos-27-outlook"><span>macOS 27: Outlook</span></h3><p>If rumors are correct, then we shouldn’t see a massive overhaul of macOS 27. That said, an improved Siri could actually be a game-changer if it’s as helpful as intended. The same is true if MacBooks with touchscreens get announced.</p><p>Nothing is set in stone, so let’s look forward to WWDC giving us some concrete answers. June 8 is almost here, so it won’t be long. We’ll be live on the ground covering the event as it happens, so keep it locked here for the latest!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/iphones/how-to-watch-the-apple-wwdc-2026-keynote-live">How to watch the Apple WWDC 2026 keynote live</a></li><li><a href="https://www.tomsguide.com/phones/iphones/wwdc-2026-7-biggest-announcements-we-expect">Apple WWDC 2026 event — 9 biggest announcements we expect</a></li><li><a href="https://www.tomsguide.com/computing/macos/ive-been-covering-apple-events-for-8-years-heres-what-im-excited-for-from-wwdc-2026">Here's what I'm excited for from WWDC 2026</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Vibe coding is coming to Windows — how Microsoft Copilot turns anyone into a creator ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The AI Age has begun, and our digital assistants are ready and waiting to take on translation, transcription, complex calculations and many other processes. What used to take hours can now be achieved with the right prompts and tools in just minutes.</p><p>The same can be said of software development. Whether building apps to share with the world or just building tools to solve issues you’re facing in your daily workflows, <a href="https://www.tomsguide.com/ai/i-write-about-ai-for-a-living-and-vibe-coding-is-going-to-change-everything-heres-why">“vibe coding” is here to stay</a> and has democratized the development process for all. </p><p>Ten years ago, building software required years of programming knowledge. Now, you can describe an app in plain English, and AI can generate large portions of it for you. When you need to refine or debug, the AI will do that for you too. Microsoft's Copilot lays claim to be a particularly useful co-developer basically since it’s baked into just about every facet of Windows by now.</p><h2 id="what-vibe-coding-actually-means">What 'vibe coding' actually means</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cGuhwEyqrXLG6iuwGBu29h" name="GitHub-Copilot-(credit Shutterstock)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/cGuhwEyqrXLG6iuwGBu29h.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Vibe coding is all about making sure you’re feeling comfortable while building. To that end, it relies on natural language input to build code that would otherwise have taken years to learn, like asking for a certain UI element to be resized, or suggesting color changes.</p><p>It’s less about digging through code, and more about explaining what you want: Intent over syntax. Copilot is already doing much of the lifting for the development community, too.</p><p>GitHub Copilot helps suggest how to finish lines of code while you’re in the zone, while you iterate using words instead of numbers and brackets. <a href="https://www.tomsguide.com/ai/a-guide-to-agentic-ai-how-windows-is-going-to-do-more-things-for-you">Agentic AI can run in the background</a> while you’re working on Task A, getting Tasks B to Z done down to your specifications.</p><p>It’s not just apps, either. Ask Copilot to put together a spreadsheet that tracks your workouts, or a website for your personal blog, and it’ll do just that while following guardrails you put in place.</p><h2 id="why-copilot">Why Copilot?</h2><p>Microsoft is in a unique spot when it comes to AI integration, because it’s running it across the Windows OS that <em>millions</em> of people use daily. Oh, and it also owns GitHub, Azure servers, enterprise apps, and much more.</p><p>There’s an argument to be made that Microsoft is very close to creating the ultimate “vibe coding ecosystem” where Copilot writes code, Windows tests it, Azure deploys it, and GitHub distributes it. It could mean that having access to Microsoft’s Copilot AI can turn you from a solo bedroom dev into an app entrepreneur who’s able to share projects across the globe.</p><p>An app factory in your home? That’s the dream.</p><h2 id="following-a-precedent">Following a precedent</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gEJ6YcYEpSoiPbQZqEAwJ7" name="Woman on laptop" alt="Woman on laptop" src="https://cdn.mos.cms.futurecdn.net/gEJ6YcYEpSoiPbQZqEAwJ7.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>OK, we’re not quite there yet, but it feels like Copilot is on the cusp of delivering something that we’ve not seen since, well, ever.</p><p>That kind of code-to-user pipeline is unheard of right now, but there are other examples of how AI and web tools have smoothed out challenging computing and design concepts.</p><p>It’s not all that long ago that you’d need pro-level software like Photoshop to make an awesome design, but now Canva can build what you’re looking for in minutes.</p><p>It used to take hours of research to compare products you were trying to decide between, but AI tools like Claude, ChatGPT and our own <a href="https://www.tomsguide.com/products">Tom's Guide Product Finder</a> can now pull up every minor detail with ease.</p><p>Microsoft now stands on the verge of doing something similar for every aspiring developer, letting you build something for your phone, your PC, or someone else’s screen and provide support after release, too.</p><h2 id="what-about-the-risks">What about the risks?</h2><p>That’s not to say there’s not due diligence needed when building an app through an AI tool. Bugs will need to be ironed out, and security best practices will be imperative.</p><p>After all, if you build an app in 5 minutes but it requires a month of fixes afterward, is the process really as smooth as you need it to be?</p><p>From another perspective, however, it means development teams will still be needed, and with the power of GitHub and Azure, you could even build an app by day and help others fix theirs by night.</p><h2 id="looking-out-for-the-little-guy">Looking out for the little guy</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QWK2Lmd9N6RQDaJqAj2w3n" name="GettyImages-1189144531E.jpg" alt="Programmers and developer teams are coding and developing software" src="https://cdn.mos.cms.futurecdn.net/QWK2Lmd9N6RQDaJqAj2w3n.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>If you’re a teacher building a bespoke app for a single lesson, you can put together a small piece of interactive software in minutes, built to your exact specifications. New parents can automate bedtime, feeding, and chore schedules, while aspiring artists can build a professional website to showcase their work.</p><p>Small businesses can avoid expensive accounting tools and keep everything in-house, using Copilot to jot down Excel formulas they could only have dreamt of.</p><p>The potential applications are colossal, and it could end up feeling like a second coming of Windows 11. Forget Windows 12, you could be telling your PC what applications you need to get through the day more quickly and watching them build in real time.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/the-future-of-windows-11-what-is-microsoft-building-next">The future of Windows 11 — what is Microsoft building next?</a></li><li><a href="https://www.tomsguide.com/ai/i-reclaimed-15-hours-this-week-with-ai-agents-here-is-the-exact-setup-i-used-to-automate-my-workflow">I reclaimed 15 hours this week with AI Agents — here is the exact setup I used to automate my workflow</a></li><li><a href="https://www.tomsguide.com/ai/google-gemini/google-unveils-gemini-spark-a-24-7-personal-ai-agent-that-could-be-a-game-changer-for-agentic-ai">Google unveils Gemini Spark — a '24/7 personal AI agent'</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/vibe-coding-is-coming-to-windows-how-microsoft-copilot-turns-anyone-into-a-creator</link>
                                                                            <description>
                            <![CDATA[ Vibe coding is going mainstream and Microsoft is in a unique position to capitalize with Copilot integrating itself across the Windows platform. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Nt9nCiuXcvwTPHxdNYNkBK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QWf8Be7J98BCAJpgkMdu9Z-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 06 Jun 2026 08:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Lloyd Coombes ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xcWocVTwa9yiwXRs559XNA.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lloyd Coombes is a freelance tech and fitness writer. He&#039;s an expert in all things Apple as well as in computer and gaming tech, with previous works published on TechRadar, Tom&#039;s Guide, Live Science and more. You&#039;ll find him regularly testing the latest MacBook or iPhone, but he spends most of his time writing about video games as Gaming Editor for the Daily Star. He also covers board games and virtual reality, just to round out the nerdy pursuits.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/QWf8Be7J98BCAJpgkMdu9Z-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Windows 11 Copilot]]></media:description>                                                            <media:text><![CDATA[Windows 11 Copilot]]></media:text>
                                <media:title type="plain"><![CDATA[Windows 11 Copilot]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QWf8Be7J98BCAJpgkMdu9Z-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The AI Age has begun, and our digital assistants are ready and waiting to take on translation, transcription, complex calculations and many other processes. What used to take hours can now be achieved with the right prompts and tools in just minutes.</p><p>The same can be said of software development. Whether building apps to share with the world or just building tools to solve issues you’re facing in your daily workflows, <a href="https://www.tomsguide.com/ai/i-write-about-ai-for-a-living-and-vibe-coding-is-going-to-change-everything-heres-why">“vibe coding” is here to stay</a> and has democratized the development process for all. </p><p>Ten years ago, building software required years of programming knowledge. Now, you can describe an app in plain English, and AI can generate large portions of it for you. When you need to refine or debug, the AI will do that for you too. Microsoft's Copilot lays claim to be a particularly useful co-developer basically since it’s baked into just about every facet of Windows by now.</p><h2 id="what-vibe-coding-actually-means">What 'vibe coding' actually means</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cGuhwEyqrXLG6iuwGBu29h" name="GitHub-Copilot-(credit Shutterstock)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/cGuhwEyqrXLG6iuwGBu29h.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Vibe coding is all about making sure you’re feeling comfortable while building. To that end, it relies on natural language input to build code that would otherwise have taken years to learn, like asking for a certain UI element to be resized, or suggesting color changes.</p><p>It’s less about digging through code, and more about explaining what you want: Intent over syntax. Copilot is already doing much of the lifting for the development community, too.</p><p>GitHub Copilot helps suggest how to finish lines of code while you’re in the zone, while you iterate using words instead of numbers and brackets. <a href="https://www.tomsguide.com/ai/a-guide-to-agentic-ai-how-windows-is-going-to-do-more-things-for-you">Agentic AI can run in the background</a> while you’re working on Task A, getting Tasks B to Z done down to your specifications.</p><p>It’s not just apps, either. Ask Copilot to put together a spreadsheet that tracks your workouts, or a website for your personal blog, and it’ll do just that while following guardrails you put in place.</p><h2 id="why-copilot">Why Copilot?</h2><p>Microsoft is in a unique spot when it comes to AI integration, because it’s running it across the Windows OS that <em>millions</em> of people use daily. Oh, and it also owns GitHub, Azure servers, enterprise apps, and much more.</p><p>There’s an argument to be made that Microsoft is very close to creating the ultimate “vibe coding ecosystem” where Copilot writes code, Windows tests it, Azure deploys it, and GitHub distributes it. It could mean that having access to Microsoft’s Copilot AI can turn you from a solo bedroom dev into an app entrepreneur who’s able to share projects across the globe.</p><p>An app factory in your home? That’s the dream.</p><h2 id="following-a-precedent">Following a precedent</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gEJ6YcYEpSoiPbQZqEAwJ7" name="Woman on laptop" alt="Woman on laptop" src="https://cdn.mos.cms.futurecdn.net/gEJ6YcYEpSoiPbQZqEAwJ7.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>OK, we’re not quite there yet, but it feels like Copilot is on the cusp of delivering something that we’ve not seen since, well, ever.</p><p>That kind of code-to-user pipeline is unheard of right now, but there are other examples of how AI and web tools have smoothed out challenging computing and design concepts.</p><p>It’s not all that long ago that you’d need pro-level software like Photoshop to make an awesome design, but now Canva can build what you’re looking for in minutes.</p><p>It used to take hours of research to compare products you were trying to decide between, but AI tools like Claude, ChatGPT and our own <a href="https://www.tomsguide.com/products">Tom's Guide Product Finder</a> can now pull up every minor detail with ease.</p><p>Microsoft now stands on the verge of doing something similar for every aspiring developer, letting you build something for your phone, your PC, or someone else’s screen and provide support after release, too.</p><h2 id="what-about-the-risks">What about the risks?</h2><p>That’s not to say there’s not due diligence needed when building an app through an AI tool. Bugs will need to be ironed out, and security best practices will be imperative.</p><p>After all, if you build an app in 5 minutes but it requires a month of fixes afterward, is the process really as smooth as you need it to be?</p><p>From another perspective, however, it means development teams will still be needed, and with the power of GitHub and Azure, you could even build an app by day and help others fix theirs by night.</p><h2 id="looking-out-for-the-little-guy">Looking out for the little guy</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QWK2Lmd9N6RQDaJqAj2w3n" name="GettyImages-1189144531E.jpg" alt="Programmers and developer teams are coding and developing software" src="https://cdn.mos.cms.futurecdn.net/QWK2Lmd9N6RQDaJqAj2w3n.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>If you’re a teacher building a bespoke app for a single lesson, you can put together a small piece of interactive software in minutes, built to your exact specifications. New parents can automate bedtime, feeding, and chore schedules, while aspiring artists can build a professional website to showcase their work.</p><p>Small businesses can avoid expensive accounting tools and keep everything in-house, using Copilot to jot down Excel formulas they could only have dreamt of.</p><p>The potential applications are colossal, and it could end up feeling like a second coming of Windows 11. Forget Windows 12, you could be telling your PC what applications you need to get through the day more quickly and watching them build in real time.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/the-future-of-windows-11-what-is-microsoft-building-next">The future of Windows 11 — what is Microsoft building next?</a></li><li><a href="https://www.tomsguide.com/ai/i-reclaimed-15-hours-this-week-with-ai-agents-here-is-the-exact-setup-i-used-to-automate-my-workflow">I reclaimed 15 hours this week with AI Agents — here is the exact setup I used to automate my workflow</a></li><li><a href="https://www.tomsguide.com/ai/google-gemini/google-unveils-gemini-spark-a-24-7-personal-ai-agent-that-could-be-a-game-changer-for-agentic-ai">Google unveils Gemini Spark — a '24/7 personal AI agent'</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The future of Windows 11 — what is Microsoft building next? ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Now that <a href="https://www.tomsguide.com/news/live/microsoft-build-2026">Microsoft Build 2026</a> is officially in the can, a clearer picture of the future of Windows 11 has appeared. Rather than announcing <a href="https://www.tomsguide.com/computing/windows-operating-systems/im-a-windows-user-and-these-are-5-upgrades-i-want-from-windows-12">Windows 12</a>, Microsoft is utterly dedicated to its current OS. That doesn’t mean the operating system you’re currently using is going to remain the same, though. Far from it. </p><p>After CEO Satya Nadella wrapped his keynote, it was hard to shake the feeling that the traditional desktop OS may soon be a thing of the past. Microsoft’s focus seems to be squarely aimed on delivering an AI-centred platform, where agentic systems are cooked into every corner of the Windows 11 experience. </p><p>Perhaps the main takeaway from Build concerning Windows 11’s future is that the OS could well make your day job easier going forward… well, unless you're a trapeze artist or a lion tamer. Using Microsoft IQ and MAI-Thinking-1, always-on AI agents will deploy real workplace knowledge to help users structure their daily workflow. The first of these to be announced was Microsoft Scout, and it could be a legit lifesaver for folks who struggle to organize hectic work schedules.    </p><p>Microsoft is giving developers more tools to assist users with day-to-day tasks. That’s where the GitHub Copilot app (that uses the Big M’s new reasoning model) enters the equation. It’s available in preview to <a href="https://www.microsoft.com/en-us/windowsinsider/" target="_blank">Microsoft Insider Program</a> members now, and it’s just one of a number of productivity-focused features that could transform Windows 11 going forward. Let’s get into what that shiny new future might look like.</p><h2 id="scout-and-about">Scout and about</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qirrUcA4m4GjSrpyJXaaug" name="Microsoft-Scout (credit Microsoft)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/qirrUcA4m4GjSrpyJXaaug.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Following the latest Microsoft Build keynote, there can be little doubt as to where Microsoft’s focus is on when it comes to the future of Windows 11. Productivity-focused AI agents are going to play a key part in the evolution of the operating system, which is where <a href="https://www.microsoft.com/en-us/microsoft-365/blog/2026/06/02/introducing-microsoft-scout-your-always-on-personal-agent/" target="_blank">Microsoft Scout</a> enters the picture. </p><p>Available now to Microsoft Frontier customers, Scout is Microsoft’s first Autopilot agent. Focused on full Microsoft 365 app integration, this “always on” agentic AI can operate across the cloud, web and desktop, allowing users to connect to Outlook, Teams and OneDrive. To put that in more digestible terms, think of Scout as your very own personal assistant; one that constantly organizes your day as it learns and adapts to how you work. </p><p>Whereas traditional agents constantly needed to be prompted, Scout has been designed to work autonomously, allowing it to take proactive actions. This means it can help shape your working day by coordinating your schedule through 365 apps, be it organizing meetings across time zones or monitoring your inbox and Teams to flag any outstanding responses that need to be made. In theory, this should mean you no longer have to constantly flit between emails, docs and browser tabs, as much of this plate-spinning busywork can be delegated to Scout. </p><p>Powered by <a href="https://www.tomsguide.com/ai/openclaw-is-the-viral-ai-assistant-that-lives-on-your-device-what-you-need-to-know">OpenClaw</a>, Scout monitors your working habits through Work IQ, in turn becoming more efficient at helping you complete tasks the more it observes your daily practices. Clearly, Scout is going to be more useful for business environments than Windows 11 users lounging around on the couch. Yet if this Autopilot agent lives up to its virtual co-worker potential, it could genuinely change the way people go about their jobs.</p><h2 id="windows-is-thinking-on-its-feet">Windows is thinking on its feet</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="chUUcacsFZEJ3n3N5vK9pW" name="Microsoft Build 2025" alt="Microsoft Build 2025." src="https://cdn.mos.cms.futurecdn.net/chUUcacsFZEJ3n3N5vK9pW.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Another huge announcement at Build — one that is directly tied to Scout — was the unveiling of <a href="https://microsoft.ai/news/building-a-hillclimbing-machine-launching-seven-new-mai-models/">MAI-Thinking-1</a>. Microsoft’s new reasoning model helps the Autopilot AI out with planning tasks, and senior product manager Tanaya Yadav briefly demoed the tech during the keynote. While the task of training Scout could take hours, the endgame benefit should hopefully be AI agents that prove hugely useful for workflow purposes. </p><p>MAI Thinking could have a big and broad impact across Windows 11 going forward. With the future of Copilot and 365 tied to agentic systems, this reasoning model may shape Microsoft’s AI-focused goals going forward. </p><p>The pivot to MAI is also interesting in that it looks to free Microsoft from being reliant on OpenAI. As Windows 11 continues to evolve, Copilot should primarily take instructions from the Redmond giant’s internal reasoning tech. MAI is just the starting point too, as Microsoft’s AI Superintelligence Team (that must be one seriously cool business card) is also developing a further six in-house reasoning models.</p><h2 id="say-hello-to-solara">Say hello to Solara</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="B7VDkWBHZGqQNifR89nryg" name="Project-Solara (credit Microsoft)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/B7VDkWBHZGqQNifR89nryg.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>One of the most pleasant surprises to come out of Build this year was the announcement of <a href="https://commandline.microsoft.com/project-solara-build-2026/" target="_blank">Project Solara</a>. This chip-to-cloud platform has been built from the ground up to ensure interacting with AI agents works in seamless fashion. </p><p>Probably the coolest feature of Solara is its eye-catching form factor. Because it’s been designed for spaces where traditional PCs and laptops might not be around, Microsoft has focused on delivering products that don’t take up much space. Enter devices which resemble a smart clock, and even more niftily, a work ID badge. </p><p>The clock-aping gizmo is intended to remain stationary, whereas the badge has been designed to be used while you’re on the move. On the latter, it can be unlocked with your fingerprint. The badge can even record video and take voice instructions, and it will subsequently clean up said audio so that you can send the note to colleagues in easily decipherable chunks.    </p><p>Engineered with a new era of AI agents in mind, Project Solara takes cues from Android devices. The daring design of this new agent-focused OS seems to suggest Microsoft is fully committed to a new era of AI that thumbs its nose at traditional hardware by embracing imaginative new forms.</p><h2 id="security-is-being-geared-for-ai-agents">Security is being geared for AI agents</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rCPAPKNcNyTT7HNtYFu6Dh" name="Microsoft-Execution-Containers (credit Windows Forum)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/rCPAPKNcNyTT7HNtYFu6Dh.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>With Microsoft increasingly pivoting towards AI as the future of Windows 11 takes shape, the matter of security becomes ever more vital. While the prospect of Scout mapping out your workday as you sip on your morning mocha is undoubtedly an appealing one for folks who get easily flustered, protections do need to be in place. </p><p>This is where the announcement of <a href="https://blogs.windows.com/windowsdeveloper/2026/06/02/windows-platform-security-for-ai-agents/">Microsoft Execution Containers</a> (MXC) becomes crucial. Now in preview, this security framework allows developers to run containment boundaries that are enforced by Windows 11. Essentially, a dev describes the security parameters it needs its agents to adhere to, then the OS enforces them everywhere these agentic systems run. </p><p>Now, while this probably sounds roughly as exciting to you as the prospect of dining in a restaurant that only serves steamed celery, MXC is important to the future of AI agents. As they become more autonomous, it’s crucial that these agents can’t accidentally access sensitive info or make decisions they’re not permitted to. With MXC in place, admins should be able to rest safe in the knowledge that this agent-native runtime is operating under safe security parameters.</p><h2 id="github-copilot-shifts-the-focus-to-devs">GitHub Copilot shifts the focus to devs</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cGuhwEyqrXLG6iuwGBu29h" name="GitHub-Copilot-(credit Shutterstock)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/cGuhwEyqrXLG6iuwGBu29h.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Now available in preview to developers, the GitHub Copilot app is an AI-assisted engineering platform that brings agentic workflows to native desktop experiences. One of the major Build takeaways concerning the app is how it will work autonomously, though not in an unfettered manner (devs will most definitely still be in control). </p><p>GitHub Copilot will use the newly revealed MAI-Code-1-Flash, an internal coding model that should improve coding performance through latency reduction. The deployment of this MAI model is to ensure the GitHub Copilot app is more aware of good workspace practices. In turn, this allows it to function like a true agentic assistant, rather than a glorified chatbot that continually needs to be prompted. </p><p>Going forward, GitHub Copilot should make developers' lives easier, taking some coding pressures off their shoulders as it tests and deploys code with genuine autonomy thanks to AI agents. In an ideal world, this app will decrease developer workloads, rather than physically replacing them. </p><p>Again, none of this is particularly focused on the Average Joe/Jenny Windows 11 experience. Then again, Build has always been focused on developers over consumers. Ultimately, the agentic benefits of GitHub Copilot that developers receive will ideally lead to smoother OS experiences for all of us.</p><h2 id="the-future-of-windows-11-centers-around-ai">The future of Windows 11 centers around AI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Yd5Q8e8pXNBAzLmiovivbY" name="Microsoft Build 2025" alt="Microsoft Build 2025." src="https://cdn.mos.cms.futurecdn.net/Yd5Q8e8pXNBAzLmiovivbY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>If Windows 11 is just a gateway that allows you to jump into the <a href="https://www.tomsguide.com/best-picks/best-PC-games">best PC games</a>, there likely wasn’t much for you to get excited about coming out of Build 2026. Yet if you’re a dev or someone who is looking to use AI tools to coordinate workflows, the latest keynote definitely provided a peek into the future of Microsoft’s OS.</p><p>Rather than revealing <a href="https://www.tomsguide.com/news/windows-12">Windows 12</a>, Microsoft doubled down on its commitment to its current operating system. Moving forward, AI is clearly going to be the cornerstone of everyday Windows functions. With agentic systems like Microsoft Scout leaning on reasoning models to help business-minded folks map out their day by coordinating schedules, and Project Solara devices that have been crafted to replace traditional hardware, the focus is on agents that have real autonomy in order to assist users. The Redmond Giant is going hard on a vision for Windows 11 where agentic AI is baked into its very fabric.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/15-top-windows-11-tips-everyone-needs-to-know">15 top Windows 11 tips everyone needs to know</a></li><li><a href="https://www.tomsguide.com/computing/laptops/best-windows-laptops">The best Windows laptops of 2026, tested by experts</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/i-sped-up-my-sluggish-windows-11-pc-with-these-6-free-tricks-heres-how">I sped up my sluggish Windows 11 PC with these 6 free tricks — here's how</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/the-future-of-windows-11-what-is-microsoft-building-next</link>
                                                                            <description>
                            <![CDATA[ The latest Microsoft Build keynote pointed to a future for Windows 11 where the focus is on deeply baked in agentic systems that could transform the way you work. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VGAvj9wCPSfuDoxq9vbAvQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rPdwCgeWPVoHuMhfpUNv5h-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Jun 2026 15:46:18 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ dave.meikleham@futurenet.com (Dave Meikleham) ]]></author>                    <dc:creator><![CDATA[ Dave Meikleham ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Rda8e7jGfyTdZLWYJQQ8VY.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave is a computing editor at Tom’s Guide and covers everything from cutting-edge laptops, the latest GPU tech, to ultrawide monitors. When he’s not worrying about dead pixels, Dave enjoys regularly rebuilding his PC for absolutely no reason at all. He built his first rig over 20 years ago, and he’s gone through more motherboards than he’s had hot dinners. Probably. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;In a previous life, he worked as a video game journalist during a career spanning the best part of two decades. Over that time he worked across both online and print, with bylines for GamesRadar+, PC Gamer, TechRadar, Edge and the Official UK PlayStation Magazine. He’s almost amassed an immeasurable amount of bad puns.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;An avid PC and console gamer, Dave enjoys breaking out Fraps way too often as he obsesses over frame rates. Despite owning a graphics card that costs roughly the same as your average used car, he still enjoys gaming on the go and is regularly glued to his Switch. Away from tech, most of Dave’s time is taken up by walking his husky, obsessing about his various OLED displays and sweating over the fitness of half a dozen Arsenal players on any given week.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/rPdwCgeWPVoHuMhfpUNv5h-1280-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft Build press images]]></media:description>                                                            <media:text><![CDATA[Microsoft Build press images]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft Build press images]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rPdwCgeWPVoHuMhfpUNv5h-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Now that <a href="https://www.tomsguide.com/news/live/microsoft-build-2026">Microsoft Build 2026</a> is officially in the can, a clearer picture of the future of Windows 11 has appeared. Rather than announcing <a href="https://www.tomsguide.com/computing/windows-operating-systems/im-a-windows-user-and-these-are-5-upgrades-i-want-from-windows-12">Windows 12</a>, Microsoft is utterly dedicated to its current OS. That doesn’t mean the operating system you’re currently using is going to remain the same, though. Far from it. </p><p>After CEO Satya Nadella wrapped his keynote, it was hard to shake the feeling that the traditional desktop OS may soon be a thing of the past. Microsoft’s focus seems to be squarely aimed on delivering an AI-centred platform, where agentic systems are cooked into every corner of the Windows 11 experience. </p><p>Perhaps the main takeaway from Build concerning Windows 11’s future is that the OS could well make your day job easier going forward… well, unless you're a trapeze artist or a lion tamer. Using Microsoft IQ and MAI-Thinking-1, always-on AI agents will deploy real workplace knowledge to help users structure their daily workflow. The first of these to be announced was Microsoft Scout, and it could be a legit lifesaver for folks who struggle to organize hectic work schedules.    </p><p>Microsoft is giving developers more tools to assist users with day-to-day tasks. That’s where the GitHub Copilot app (that uses the Big M’s new reasoning model) enters the equation. It’s available in preview to <a href="https://www.microsoft.com/en-us/windowsinsider/" target="_blank">Microsoft Insider Program</a> members now, and it’s just one of a number of productivity-focused features that could transform Windows 11 going forward. Let’s get into what that shiny new future might look like.</p><h2 id="scout-and-about">Scout and about</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qirrUcA4m4GjSrpyJXaaug" name="Microsoft-Scout (credit Microsoft)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/qirrUcA4m4GjSrpyJXaaug.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Following the latest Microsoft Build keynote, there can be little doubt as to where Microsoft’s focus is on when it comes to the future of Windows 11. Productivity-focused AI agents are going to play a key part in the evolution of the operating system, which is where <a href="https://www.microsoft.com/en-us/microsoft-365/blog/2026/06/02/introducing-microsoft-scout-your-always-on-personal-agent/" target="_blank">Microsoft Scout</a> enters the picture. </p><p>Available now to Microsoft Frontier customers, Scout is Microsoft’s first Autopilot agent. Focused on full Microsoft 365 app integration, this “always on” agentic AI can operate across the cloud, web and desktop, allowing users to connect to Outlook, Teams and OneDrive. To put that in more digestible terms, think of Scout as your very own personal assistant; one that constantly organizes your day as it learns and adapts to how you work. </p><p>Whereas traditional agents constantly needed to be prompted, Scout has been designed to work autonomously, allowing it to take proactive actions. This means it can help shape your working day by coordinating your schedule through 365 apps, be it organizing meetings across time zones or monitoring your inbox and Teams to flag any outstanding responses that need to be made. In theory, this should mean you no longer have to constantly flit between emails, docs and browser tabs, as much of this plate-spinning busywork can be delegated to Scout. </p><p>Powered by <a href="https://www.tomsguide.com/ai/openclaw-is-the-viral-ai-assistant-that-lives-on-your-device-what-you-need-to-know">OpenClaw</a>, Scout monitors your working habits through Work IQ, in turn becoming more efficient at helping you complete tasks the more it observes your daily practices. Clearly, Scout is going to be more useful for business environments than Windows 11 users lounging around on the couch. Yet if this Autopilot agent lives up to its virtual co-worker potential, it could genuinely change the way people go about their jobs.</p><h2 id="windows-is-thinking-on-its-feet">Windows is thinking on its feet</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="chUUcacsFZEJ3n3N5vK9pW" name="Microsoft Build 2025" alt="Microsoft Build 2025." src="https://cdn.mos.cms.futurecdn.net/chUUcacsFZEJ3n3N5vK9pW.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Another huge announcement at Build — one that is directly tied to Scout — was the unveiling of <a href="https://microsoft.ai/news/building-a-hillclimbing-machine-launching-seven-new-mai-models/">MAI-Thinking-1</a>. Microsoft’s new reasoning model helps the Autopilot AI out with planning tasks, and senior product manager Tanaya Yadav briefly demoed the tech during the keynote. While the task of training Scout could take hours, the endgame benefit should hopefully be AI agents that prove hugely useful for workflow purposes. </p><p>MAI Thinking could have a big and broad impact across Windows 11 going forward. With the future of Copilot and 365 tied to agentic systems, this reasoning model may shape Microsoft’s AI-focused goals going forward. </p><p>The pivot to MAI is also interesting in that it looks to free Microsoft from being reliant on OpenAI. As Windows 11 continues to evolve, Copilot should primarily take instructions from the Redmond giant’s internal reasoning tech. MAI is just the starting point too, as Microsoft’s AI Superintelligence Team (that must be one seriously cool business card) is also developing a further six in-house reasoning models.</p><h2 id="say-hello-to-solara">Say hello to Solara</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="B7VDkWBHZGqQNifR89nryg" name="Project-Solara (credit Microsoft)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/B7VDkWBHZGqQNifR89nryg.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>One of the most pleasant surprises to come out of Build this year was the announcement of <a href="https://commandline.microsoft.com/project-solara-build-2026/" target="_blank">Project Solara</a>. This chip-to-cloud platform has been built from the ground up to ensure interacting with AI agents works in seamless fashion. </p><p>Probably the coolest feature of Solara is its eye-catching form factor. Because it’s been designed for spaces where traditional PCs and laptops might not be around, Microsoft has focused on delivering products that don’t take up much space. Enter devices which resemble a smart clock, and even more niftily, a work ID badge. </p><p>The clock-aping gizmo is intended to remain stationary, whereas the badge has been designed to be used while you’re on the move. On the latter, it can be unlocked with your fingerprint. The badge can even record video and take voice instructions, and it will subsequently clean up said audio so that you can send the note to colleagues in easily decipherable chunks.    </p><p>Engineered with a new era of AI agents in mind, Project Solara takes cues from Android devices. The daring design of this new agent-focused OS seems to suggest Microsoft is fully committed to a new era of AI that thumbs its nose at traditional hardware by embracing imaginative new forms.</p><h2 id="security-is-being-geared-for-ai-agents">Security is being geared for AI agents</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rCPAPKNcNyTT7HNtYFu6Dh" name="Microsoft-Execution-Containers (credit Windows Forum)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/rCPAPKNcNyTT7HNtYFu6Dh.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>With Microsoft increasingly pivoting towards AI as the future of Windows 11 takes shape, the matter of security becomes ever more vital. While the prospect of Scout mapping out your workday as you sip on your morning mocha is undoubtedly an appealing one for folks who get easily flustered, protections do need to be in place. </p><p>This is where the announcement of <a href="https://blogs.windows.com/windowsdeveloper/2026/06/02/windows-platform-security-for-ai-agents/">Microsoft Execution Containers</a> (MXC) becomes crucial. Now in preview, this security framework allows developers to run containment boundaries that are enforced by Windows 11. Essentially, a dev describes the security parameters it needs its agents to adhere to, then the OS enforces them everywhere these agentic systems run. </p><p>Now, while this probably sounds roughly as exciting to you as the prospect of dining in a restaurant that only serves steamed celery, MXC is important to the future of AI agents. As they become more autonomous, it’s crucial that these agents can’t accidentally access sensitive info or make decisions they’re not permitted to. With MXC in place, admins should be able to rest safe in the knowledge that this agent-native runtime is operating under safe security parameters.</p><h2 id="github-copilot-shifts-the-focus-to-devs">GitHub Copilot shifts the focus to devs</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cGuhwEyqrXLG6iuwGBu29h" name="GitHub-Copilot-(credit Shutterstock)" alt="Microsoft Build press images" src="https://cdn.mos.cms.futurecdn.net/cGuhwEyqrXLG6iuwGBu29h.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Now available in preview to developers, the GitHub Copilot app is an AI-assisted engineering platform that brings agentic workflows to native desktop experiences. One of the major Build takeaways concerning the app is how it will work autonomously, though not in an unfettered manner (devs will most definitely still be in control). </p><p>GitHub Copilot will use the newly revealed MAI-Code-1-Flash, an internal coding model that should improve coding performance through latency reduction. The deployment of this MAI model is to ensure the GitHub Copilot app is more aware of good workspace practices. In turn, this allows it to function like a true agentic assistant, rather than a glorified chatbot that continually needs to be prompted. </p><p>Going forward, GitHub Copilot should make developers' lives easier, taking some coding pressures off their shoulders as it tests and deploys code with genuine autonomy thanks to AI agents. In an ideal world, this app will decrease developer workloads, rather than physically replacing them. </p><p>Again, none of this is particularly focused on the Average Joe/Jenny Windows 11 experience. Then again, Build has always been focused on developers over consumers. Ultimately, the agentic benefits of GitHub Copilot that developers receive will ideally lead to smoother OS experiences for all of us.</p><h2 id="the-future-of-windows-11-centers-around-ai">The future of Windows 11 centers around AI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Yd5Q8e8pXNBAzLmiovivbY" name="Microsoft Build 2025" alt="Microsoft Build 2025." src="https://cdn.mos.cms.futurecdn.net/Yd5Q8e8pXNBAzLmiovivbY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>If Windows 11 is just a gateway that allows you to jump into the <a href="https://www.tomsguide.com/best-picks/best-PC-games">best PC games</a>, there likely wasn’t much for you to get excited about coming out of Build 2026. Yet if you’re a dev or someone who is looking to use AI tools to coordinate workflows, the latest keynote definitely provided a peek into the future of Microsoft’s OS.</p><p>Rather than revealing <a href="https://www.tomsguide.com/news/windows-12">Windows 12</a>, Microsoft doubled down on its commitment to its current operating system. Moving forward, AI is clearly going to be the cornerstone of everyday Windows functions. With agentic systems like Microsoft Scout leaning on reasoning models to help business-minded folks map out their day by coordinating schedules, and Project Solara devices that have been crafted to replace traditional hardware, the focus is on agents that have real autonomy in order to assist users. The Redmond Giant is going hard on a vision for Windows 11 where agentic AI is baked into its very fabric.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/15-top-windows-11-tips-everyone-needs-to-know">15 top Windows 11 tips everyone needs to know</a></li><li><a href="https://www.tomsguide.com/computing/laptops/best-windows-laptops">The best Windows laptops of 2026, tested by experts</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/i-sped-up-my-sluggish-windows-11-pc-with-these-6-free-tricks-heres-how">I sped up my sluggish Windows 11 PC with these 6 free tricks — here's how</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Tom's Guide app is live — how to get it for free and everything that's new ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Exciting news alert: hot on the heels of <a href="https://www.tomsguide.com/computing/internet/upgrade-your-life-with-the-new-toms-guide-smarter-shopping-expert-answers-and-the-clarity-you-need-to-avoid-bad-buys">our recent website relaunch</a>, we've just released a slick new Tom's Guide app for iOS and Android — and we're inviting you to be one of the first to download it! The new app delivers our articles, videos, quizzes and more in an enhanced smartphone-friendly format that actually made me breathe a sigh of contentment when I got to test it.</p><p>Our team of developers have worked hard to bring you an interface that's cleaner, faster to load, and helps you find the content you're most interested in, quicker. </p><p><strong>Why we think you'll love it:</strong></p><ul><li>Clutter-free reading experience tailored for phone and tablet users</li><li>Personalize your feed to just see what you're into</li><li>Save articles to easily find again later</li><li>Smart search tool helps you find things fast</li><li>Download it on <a href="https://play.google.com/store/apps/details?id=com.futureplc.peregrine.tomsguide" target="_blank" rel="nofollow">Google Play</a> or <a href="https://apps.apple.com/ng/app/toms-guide-tech-reviews/id6761195019" target="_blank" rel="nofollow">Apple App Store</a></li></ul><p>Here's a sneak preview of what you can find inside.</p><h2 id="slick-article-pages-and-save-for-later">Slick article pages and save for later</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wGDX7n6NCZAMRq4te9oFmb" name="Tom's Guide app reading an article" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/wGDX7n6NCZAMRq4te9oFmb.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Download the app</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5jbaaF9JBNyB9i4nrRTXhb" name="Tom's Guide app square icon" caption="" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/5jbaaF9JBNyB9i4nrRTXhb.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><ul><li><a data-analytics-id="inline-link" href="https://play.google.com/store/apps/details?id=com.futureplc.peregrine.tomsguide" target="_blank" rel="nofollow">Google Play</a></li><li><a data-analytics-id="inline-link" href="https://apps.apple.com/ng/app/toms-guide-tech-reviews/id6761195019" target="_blank" rel="nofollow">Apple App Store</a></li></ul></p></div></div><p>Reading articles on the Tom's Guide app is just <em>nicer</em> than in my phone's browser. Our developers have streamlined the page furniture so you can get to the main event quicker, and have made elements like product boxes smaller, so you can expand them for more information when you're ready.</p><p>We guessed that reading the articles is the main thing you're here for, so we really wanted to make it easier for you to glean our advice/news/analysis as quickly as possible, with faster loading times and fewer interruptions.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="R7igK7uHjCs3o2HM3GFNfb" name="Tom's Guide app saved list" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/R7igK7uHjCs3o2HM3GFNfb.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Similarly, sometimes you'll come across an article on your commute that you know you'll want to refer back to at home later. In the app, just tap the bookmark icon on any article page to quickly add it to your Saved list. Keep it there for as long as you like or delete it when you're done — it's up to you.</p><h2 id="personalize-your-feed-and-find-things-with-ease">Personalize your feed and find things with ease</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BKqD2Fp5EL2jjuU4JcNXeb" name="Tom's Guide app Explore" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/BKqD2Fp5EL2jjuU4JcNXeb.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I'll let you into a secret: there was talk of launching the app earlier, without this, but we were adamant that feed personalization was important. We cover a broad remit here at Tom's Guide — from phones to Fitbits, and graphics cards to gardening — and, with the best will in the world, we understand that you might not be equally as passionate about every single topic that we cover.</p><p>So with that in mind, in the Explore tab you can select the categories (and sub-categories) that you're interested in to see a more curated feed of our latest content. It's a work in progress, and future updates to the app will refine the settings, but I think it's a great start that will save you a lot of time.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJkmVW"></div>                            </div>                            <script src="https://kwizly.com/embed/eJkmVW.js" async></script><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rWLDnoyuLPSwnT2757Bmib" name="Tom's Guide app search and recommend" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/rWLDnoyuLPSwnT2757Bmib.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You can also find what you're looking for using our smart-powered Search tool — which I've tested a few times and actually find more reliable than the one on our desktop site. Frontend developers of Tom's Guide, take note! </p><p>Each article is also appended with Recommended articles on similar topics, and Trending articles in that category of the website, to inspire your next read.</p><p>And of course, the Home tab is packed with the highlights from all of our main channels, including our <a href="https://www.tomsguide.com/uk/savings-squad">all-important Savings Squad</a>.</p><h2 id="commenting-video-wordle-and-puzzles">Commenting, video, Wordle and puzzles</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hjC3LpogtJ8qYXLWoHKrcb" name="Tom's Guide app homepage features" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/hjC3LpogtJ8qYXLWoHKrcb.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Hundreds of thousands of you rely on our <a href="https://www.tomsguide.com/news/what-is-todays-wordle-answer">daily Wordle hints</a> and enjoy playing our collection of <a href="https://www.tomsguide.com/play">puzzles and quizzes</a>, so we've made sure they appear on the Home tab in the App. You should be prompted to sign in or sign up to become a free member of the Tom's Guide Club when you first open the app, so that you can save your score on our puzzles and access other <a href="https://www.tomsguide.com/membership">membership benefits</a>.</p><p>The app also has a carousel of our latest <a href="https://www.tiktok.com/@tomsguide" target="_blank">TikTok videos</a> on the Home tab, as well as videos embedded in many of our article pages.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RxvAF8bShNEmJUc6p9hWcb" name="Tom's Guide app commenting" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/RxvAF8bShNEmJUc6p9hWcb.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We love hearing from readers, and often publish '<a href="https://www.tomsguide.com/tag/polls">Have Your Say</a>' articles and <a href="https://www.tomsguide.com/tag/live-q-and-a">Live Q&As</a> that are explicitly designed to have you ask questions and share your thoughts on specific topics. But you can leave a comment on almost any of our articles on the site, so it was important to us that you can join in the conversation in the app as well. </p><p>As the screenshot above shows, you can leave the first comment on any story or see which conversations are hotting up already.</p><p>I've already mentioned that our developers aren't resting on their laurels; they're already working on the next iteration of the app, with ideas for better personalisation and exclusive membership features. What do you like about the new app, and what would you like to see next? Let us know in the comments below.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/internet/upgrade-your-life-with-the-new-toms-guide-smarter-shopping-expert-answers-and-the-clarity-you-need-to-avoid-bad-buys">Upgrade your life with the new Tom's Guide: Smarter shopping, expert answers and the clarity you need to avoid bad buys</a></li><li><a href="https://www.tomsguide.com/home/live/exclusive-gardening-experts-live-q-and-a">Exclusive: Our gardening experts answered your lawn care and yard questions live — here's what you asked</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/james-bond-casting-is-underway-but-who-do-you-think-should-play-the-next-007">James Bond casting is underway — who do you think should play the next 007?</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/mobile-apps/the-toms-guide-app-is-live-how-to-get-it-for-free-and-everything-thats-new</link>
                                                                            <description>
                            <![CDATA[ Get a cleaner smartphone-first reading environment, personalize your feed, join conversations and more — for free ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">mkVAfYbtnjJe3iXL39k6t6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UvpuSBRcXidBC7oSGDYVeb-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Jun 2026 09:55:15 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mobile Apps]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ ella.taylor@futurenet.com (Ella Taylor) ]]></author>                    <dc:creator><![CDATA[ Ella Taylor ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W2nC7HFA6avQHdFNFbFPNa.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Ella is Tom’s Guide’s Engagement Editor, on a mission to get to know all about our readers, to help you with your burning questions, and to create an exciting mix of content that entices you to keep coming back to the site – whether you’re a regular reader or a &lt;a href=&quot;https://www.tomsguide.com/membership&quot;&gt;member&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;She has more than 15 years of editorial experience, graduating from Kingston University with a First Class Honours degree in Journalism in 2008. She has written for and edited magazines and websites, including fellow Future titles &lt;em&gt;TechRadar.com, CreativeBloq.com, Digital Camera magazine, NPhoto, BikeRadar.com, Mollie Makes&lt;/em&gt; and more. &lt;/p&gt;&lt;p&gt;Most recently, she was Managing Editor of &lt;em&gt;womanandhome.com&lt;/em&gt;, where she co-launched its &lt;a href=&quot;https://www.womanandhome.com/tag/quiz/&quot; target=&quot;_blank&quot;&gt;Quiz of the Day&lt;/a&gt; and led the charge for articles that actively asked readers for their views. Before that, she was Editor of professional photography website &lt;em&gt;canon-europe.com/pro&lt;/em&gt;, having worked her way up from Production Editor. As such, she&#039;s a stickler for fact-checking, has too many opinions about grammar and is easily excited by a beautiful photo.&lt;/p&gt;&lt;p&gt;A mum of two young children, she keeps fit by typically carrying at least one of them on her shoulders around the hilly streets of Bristol. When not chasing her sons around the play parks and soft plays of South West England and worshipping her three rescue cats, she&#039;s likely to be in the garden, steadily turning it from a neglected concrete jungle to a usable green space. She’s also finally embarking on a kitchen extension in May, so 2026 looks set to be a year of big home improvements and lots of builders’ tea.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/UvpuSBRcXidBC7oSGDYVeb-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Tom&#039;s Guide app screens]]></media:description>                                                            <media:text><![CDATA[Tom&#039;s Guide app screens]]></media:text>
                                <media:title type="plain"><![CDATA[Tom&#039;s Guide app screens]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UvpuSBRcXidBC7oSGDYVeb-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Exciting news alert: hot on the heels of <a href="https://www.tomsguide.com/computing/internet/upgrade-your-life-with-the-new-toms-guide-smarter-shopping-expert-answers-and-the-clarity-you-need-to-avoid-bad-buys">our recent website relaunch</a>, we've just released a slick new Tom's Guide app for iOS and Android — and we're inviting you to be one of the first to download it! The new app delivers our articles, videos, quizzes and more in an enhanced smartphone-friendly format that actually made me breathe a sigh of contentment when I got to test it.</p><p>Our team of developers have worked hard to bring you an interface that's cleaner, faster to load, and helps you find the content you're most interested in, quicker. </p><p><strong>Why we think you'll love it:</strong></p><ul><li>Clutter-free reading experience tailored for phone and tablet users</li><li>Personalize your feed to just see what you're into</li><li>Save articles to easily find again later</li><li>Smart search tool helps you find things fast</li><li>Download it on <a href="https://play.google.com/store/apps/details?id=com.futureplc.peregrine.tomsguide" target="_blank" rel="nofollow">Google Play</a> or <a href="https://apps.apple.com/ng/app/toms-guide-tech-reviews/id6761195019" target="_blank" rel="nofollow">Apple App Store</a></li></ul><p>Here's a sneak preview of what you can find inside.</p><h2 id="slick-article-pages-and-save-for-later">Slick article pages and save for later</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wGDX7n6NCZAMRq4te9oFmb" name="Tom's Guide app reading an article" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/wGDX7n6NCZAMRq4te9oFmb.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Download the app</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5jbaaF9JBNyB9i4nrRTXhb" name="Tom's Guide app square icon" caption="" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/5jbaaF9JBNyB9i4nrRTXhb.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><ul><li><a data-analytics-id="inline-link" href="https://play.google.com/store/apps/details?id=com.futureplc.peregrine.tomsguide" target="_blank" rel="nofollow">Google Play</a></li><li><a data-analytics-id="inline-link" href="https://apps.apple.com/ng/app/toms-guide-tech-reviews/id6761195019" target="_blank" rel="nofollow">Apple App Store</a></li></ul></p></div></div><p>Reading articles on the Tom's Guide app is just <em>nicer</em> than in my phone's browser. Our developers have streamlined the page furniture so you can get to the main event quicker, and have made elements like product boxes smaller, so you can expand them for more information when you're ready.</p><p>We guessed that reading the articles is the main thing you're here for, so we really wanted to make it easier for you to glean our advice/news/analysis as quickly as possible, with faster loading times and fewer interruptions.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="R7igK7uHjCs3o2HM3GFNfb" name="Tom's Guide app saved list" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/R7igK7uHjCs3o2HM3GFNfb.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Similarly, sometimes you'll come across an article on your commute that you know you'll want to refer back to at home later. In the app, just tap the bookmark icon on any article page to quickly add it to your Saved list. Keep it there for as long as you like or delete it when you're done — it's up to you.</p><h2 id="personalize-your-feed-and-find-things-with-ease">Personalize your feed and find things with ease</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BKqD2Fp5EL2jjuU4JcNXeb" name="Tom's Guide app Explore" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/BKqD2Fp5EL2jjuU4JcNXeb.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I'll let you into a secret: there was talk of launching the app earlier, without this, but we were adamant that feed personalization was important. We cover a broad remit here at Tom's Guide — from phones to Fitbits, and graphics cards to gardening — and, with the best will in the world, we understand that you might not be equally as passionate about every single topic that we cover.</p><p>So with that in mind, in the Explore tab you can select the categories (and sub-categories) that you're interested in to see a more curated feed of our latest content. It's a work in progress, and future updates to the app will refine the settings, but I think it's a great start that will save you a lot of time.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJkmVW"></div>                            </div>                            <script src="https://kwizly.com/embed/eJkmVW.js" async></script><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rWLDnoyuLPSwnT2757Bmib" name="Tom's Guide app search and recommend" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/rWLDnoyuLPSwnT2757Bmib.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You can also find what you're looking for using our smart-powered Search tool — which I've tested a few times and actually find more reliable than the one on our desktop site. Frontend developers of Tom's Guide, take note! </p><p>Each article is also appended with Recommended articles on similar topics, and Trending articles in that category of the website, to inspire your next read.</p><p>And of course, the Home tab is packed with the highlights from all of our main channels, including our <a href="https://www.tomsguide.com/uk/savings-squad">all-important Savings Squad</a>.</p><h2 id="commenting-video-wordle-and-puzzles">Commenting, video, Wordle and puzzles</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hjC3LpogtJ8qYXLWoHKrcb" name="Tom's Guide app homepage features" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/hjC3LpogtJ8qYXLWoHKrcb.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Hundreds of thousands of you rely on our <a href="https://www.tomsguide.com/news/what-is-todays-wordle-answer">daily Wordle hints</a> and enjoy playing our collection of <a href="https://www.tomsguide.com/play">puzzles and quizzes</a>, so we've made sure they appear on the Home tab in the App. You should be prompted to sign in or sign up to become a free member of the Tom's Guide Club when you first open the app, so that you can save your score on our puzzles and access other <a href="https://www.tomsguide.com/membership">membership benefits</a>.</p><p>The app also has a carousel of our latest <a href="https://www.tiktok.com/@tomsguide" target="_blank">TikTok videos</a> on the Home tab, as well as videos embedded in many of our article pages.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RxvAF8bShNEmJUc6p9hWcb" name="Tom's Guide app commenting" alt="Tom's Guide app screens" src="https://cdn.mos.cms.futurecdn.net/RxvAF8bShNEmJUc6p9hWcb.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We love hearing from readers, and often publish '<a href="https://www.tomsguide.com/tag/polls">Have Your Say</a>' articles and <a href="https://www.tomsguide.com/tag/live-q-and-a">Live Q&As</a> that are explicitly designed to have you ask questions and share your thoughts on specific topics. But you can leave a comment on almost any of our articles on the site, so it was important to us that you can join in the conversation in the app as well. </p><p>As the screenshot above shows, you can leave the first comment on any story or see which conversations are hotting up already.</p><p>I've already mentioned that our developers aren't resting on their laurels; they're already working on the next iteration of the app, with ideas for better personalisation and exclusive membership features. What do you like about the new app, and what would you like to see next? Let us know in the comments below.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/internet/upgrade-your-life-with-the-new-toms-guide-smarter-shopping-expert-answers-and-the-clarity-you-need-to-avoid-bad-buys">Upgrade your life with the new Tom's Guide: Smarter shopping, expert answers and the clarity you need to avoid bad buys</a></li><li><a href="https://www.tomsguide.com/home/live/exclusive-gardening-experts-live-q-and-a">Exclusive: Our gardening experts answered your lawn care and yard questions live — here's what you asked</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/james-bond-casting-is-underway-but-who-do-you-think-should-play-the-next-007">James Bond casting is underway — who do you think should play the next 007?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I've been covering Apple events for 8 years: Here's what I'm excited for from WWDC 2026 ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/phones/iphones/wwdc-2026">Apple’s Worldwide Developers Conference</a>, or WWDC, returns on June 8, 2026. While Tom’s Guide will be covering the event live, there’s nothing quite like a good wishlist.</p><p>I’ve been a fan of Apple for decades, and since I moved into writing as a career, I’ve gone from a hand-me-down iMac to writing on the <a href="https://www.tomsguide.com/computing/ipads/ipad-pro-m5-review">iPad Pro M5</a> and covering Apple events for plenty of outlets in the meantime.</p><p>With that in mind, here are the three things I’m most excited about at WWDC 26.</p><h2 id="ipados">iPadOS</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TUJmhtVWGraSXDJp3oy887" name="iPad Pro M5" alt="iPad Pro M5 on a blue background" src="https://cdn.mos.cms.futurecdn.net/TUJmhtVWGraSXDJp3oy887.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>For years, I’ve owned an iPad Pro and not really known why, because I basically use it for movies while travelling and reading books and digital magazines.</p><p>That all changed with the recent improvements to iPadOS, and while there’s still a way to go, last year’s iPadOS 26 felt like it <a href="https://www.tomsguide.com/computing/i-switched-from-my-laptop-to-the-ipad-pro-m5-and-its-now-a-tablet-i-can-finally-work-on">ticked plenty of boxes for me</a>.</p><p>Multitasking got a huge boost (and without Stage Manager, too!), apps got Menu Bar-like interfaces, the Journal app finally arrived, and we got Preview on an iPad at long last. Then there were background tasks and more, all of which coalesced into making the iPad feel fresh again. I loved it so much I picked up the M5 model.</p><p>As a result, I’m curious to know what Apple brings this year. Will we finally get multi-user support? Clamshell mode with an external monitor? The addition of small, utility apps? Time will tell.</p><h2 id="a-new-mac-mini">A new Mac Mini?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NPkgT3FdyUHiFWrEfxaAZo" name="Mac mini M4-05-LIST2" alt="The Mac mini M4 on top of a desk riser shelf" src="https://cdn.mos.cms.futurecdn.net/NPkgT3FdyUHiFWrEfxaAZo.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Sure, it’s not likely. Apple traditionally goes all-in on software for WWDC, but 2023 was a big year for hardware between M2 chips and Apple Vision Pro.</p><p>We’re expecting Apple Watch and iPhone around the usual September slot, but I can’t think of a better place to debut a new Mac Mini model than at WWDC with the devs who will have fallen in love with the prior versions.</p><p>Apple’s diminutive desktop is tough to get hold of, partially due to people getting particularly inventive with its AI potential, but it’s also a very capable family or work computer in its own right. With MacBook Neo turning Windows users into Mac newcomers, this could be a great time to showcase the desktop side of the product lineup.</p><h2 id="siri-and-gemini">Siri and Gemini</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nChN6QF6WoLSu7FdeqPcdX" name="siri.shutterstock_2476041331" alt="Siri logo on phone" src="https://cdn.mos.cms.futurecdn.net/nChN6QF6WoLSu7FdeqPcdX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>This is the big one, isn’t it? Apple Intelligence and Siri should go hand-in-hand, but it’s been anything but smooth sailing so far. In fact, I’d wager no one would have predicted Apple would be this far behind its peers.</p><p>I use Siri less than ever, leaning on just about anything else to get an answer for something, be that a Google Search or Claude, but if Apple can successfully work out a way to power its assistant with Google’s Gemini (<a href="https://www.tomsguide.com/ai/google-promises-siri-powered-by-gemini-is-coming-later-this-year">which it sounds like it will</a>) it could be like the ChatGPT connection taken to a whole new level.</p><p>What kind of additions can we expect? Well, we may be some way off of the screen-reading, context-aware Siri that was infamously confirmed to be vaporware a couple of years back, but we’re getting some big improvements worth the money Apple will have to siphon off to Google.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/phones/iphones/ios-27-and-siri-could-have-a-new-darker-look-at-wwdc-2026">iOS 27 and Siri could have a new darker look at WWDC 2026</a></li><li><a href="https://www.tomsguide.com/news/live/computex-2026">Computex 2026 Day 1 LIVE — Nvidia RTX Spark tested, and can Dell XPS 13 beat MacBook Neo?</a></li><li><a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">I spoke to Nvidia CEO Jensen Huang about RTX Spark — he is ‘willing to work’ on an RTX gaming handheld, N2X and N3X are already planned and the chip is 'more like R2D2’ than a laptop CPU</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/ive-been-covering-apple-events-for-8-years-heres-what-im-excited-for-from-wwdc-2026</link>
                                                                            <description>
                            <![CDATA[ A trio of treats awaits at WWDC - here’s what I’m most excited for. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rpk5Mu8tqto6FJQXXdmD3K</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mBG2BLb2nByp25qbZsfocP-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Tue, 02 Jun 2026 10:44:44 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Lloyd Coombes ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xcWocVTwa9yiwXRs559XNA.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lloyd Coombes is a freelance tech and fitness writer. He&#039;s an expert in all things Apple as well as in computer and gaming tech, with previous works published on TechRadar, Tom&#039;s Guide, Live Science and more. You&#039;ll find him regularly testing the latest MacBook or iPhone, but he spends most of his time writing about video games as Gaming Editor for the Daily Star. He also covers board games and virtual reality, just to round out the nerdy pursuits.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/mBG2BLb2nByp25qbZsfocP-1280-80.png">
                                                            <media:credit><![CDATA[Apple]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Mac Mini M4]]></media:description>                                                            <media:text><![CDATA[Mac Mini M4]]></media:text>
                                <media:title type="plain"><![CDATA[Mac Mini M4]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mBG2BLb2nByp25qbZsfocP-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/phones/iphones/wwdc-2026">Apple’s Worldwide Developers Conference</a>, or WWDC, returns on June 8, 2026. While Tom’s Guide will be covering the event live, there’s nothing quite like a good wishlist.</p><p>I’ve been a fan of Apple for decades, and since I moved into writing as a career, I’ve gone from a hand-me-down iMac to writing on the <a href="https://www.tomsguide.com/computing/ipads/ipad-pro-m5-review">iPad Pro M5</a> and covering Apple events for plenty of outlets in the meantime.</p><p>With that in mind, here are the three things I’m most excited about at WWDC 26.</p><h2 id="ipados">iPadOS</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TUJmhtVWGraSXDJp3oy887" name="iPad Pro M5" alt="iPad Pro M5 on a blue background" src="https://cdn.mos.cms.futurecdn.net/TUJmhtVWGraSXDJp3oy887.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>For years, I’ve owned an iPad Pro and not really known why, because I basically use it for movies while travelling and reading books and digital magazines.</p><p>That all changed with the recent improvements to iPadOS, and while there’s still a way to go, last year’s iPadOS 26 felt like it <a href="https://www.tomsguide.com/computing/i-switched-from-my-laptop-to-the-ipad-pro-m5-and-its-now-a-tablet-i-can-finally-work-on">ticked plenty of boxes for me</a>.</p><p>Multitasking got a huge boost (and without Stage Manager, too!), apps got Menu Bar-like interfaces, the Journal app finally arrived, and we got Preview on an iPad at long last. Then there were background tasks and more, all of which coalesced into making the iPad feel fresh again. I loved it so much I picked up the M5 model.</p><p>As a result, I’m curious to know what Apple brings this year. Will we finally get multi-user support? Clamshell mode with an external monitor? The addition of small, utility apps? Time will tell.</p><h2 id="a-new-mac-mini">A new Mac Mini?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NPkgT3FdyUHiFWrEfxaAZo" name="Mac mini M4-05-LIST2" alt="The Mac mini M4 on top of a desk riser shelf" src="https://cdn.mos.cms.futurecdn.net/NPkgT3FdyUHiFWrEfxaAZo.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Sure, it’s not likely. Apple traditionally goes all-in on software for WWDC, but 2023 was a big year for hardware between M2 chips and Apple Vision Pro.</p><p>We’re expecting Apple Watch and iPhone around the usual September slot, but I can’t think of a better place to debut a new Mac Mini model than at WWDC with the devs who will have fallen in love with the prior versions.</p><p>Apple’s diminutive desktop is tough to get hold of, partially due to people getting particularly inventive with its AI potential, but it’s also a very capable family or work computer in its own right. With MacBook Neo turning Windows users into Mac newcomers, this could be a great time to showcase the desktop side of the product lineup.</p><h2 id="siri-and-gemini">Siri and Gemini</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nChN6QF6WoLSu7FdeqPcdX" name="siri.shutterstock_2476041331" alt="Siri logo on phone" src="https://cdn.mos.cms.futurecdn.net/nChN6QF6WoLSu7FdeqPcdX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>This is the big one, isn’t it? Apple Intelligence and Siri should go hand-in-hand, but it’s been anything but smooth sailing so far. In fact, I’d wager no one would have predicted Apple would be this far behind its peers.</p><p>I use Siri less than ever, leaning on just about anything else to get an answer for something, be that a Google Search or Claude, but if Apple can successfully work out a way to power its assistant with Google’s Gemini (<a href="https://www.tomsguide.com/ai/google-promises-siri-powered-by-gemini-is-coming-later-this-year">which it sounds like it will</a>) it could be like the ChatGPT connection taken to a whole new level.</p><p>What kind of additions can we expect? Well, we may be some way off of the screen-reading, context-aware Siri that was infamously confirmed to be vaporware a couple of years back, but we’re getting some big improvements worth the money Apple will have to siphon off to Google.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/phones/iphones/ios-27-and-siri-could-have-a-new-darker-look-at-wwdc-2026">iOS 27 and Siri could have a new darker look at WWDC 2026</a></li><li><a href="https://www.tomsguide.com/news/live/computex-2026">Computex 2026 Day 1 LIVE — Nvidia RTX Spark tested, and can Dell XPS 13 beat MacBook Neo?</a></li><li><a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">I spoke to Nvidia CEO Jensen Huang about RTX Spark — he is ‘willing to work’ on an RTX gaming handheld, N2X and N3X are already planned and the chip is 'more like R2D2’ than a laptop CPU</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Airbnb may have just convinced me to make my next vacation booking with them thanks to these 4 huge new changes ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I've had mixed feelings about <a href="https://www.tomsguide.com/computing/mobile-apps/im-not-on-vacation-but-airbnbs-latest-update-makes-me-want-to-plan-one-heres-why">Airbnb</a>. Sometimes I'd find the perfect cozy stay, other times it was just easier to book a hotel. But their 2026 summer update is the first time I've looked at the platform and thought this might actually be the most convenient way to book an entire trip. </p><p>On top of now offering boutique hotels, which was a huge surprise in itself, they're not just about helping you figure out where you want to stay, they want to be your one stop shop from the moment you land to what you do when you get to your destination. Here's what caught my attention and why I'm booking my next vacation with them.</p><div class="instagram-embed"><blockquote class="instagram-media"  data-instgrm-version="6" style="width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><p><a href="https://www.instagram.com/p/DYuWMYmxD38/" target="_blank">A post shared by Tom's Guide (@tomsguide)</a></p><p>A photo posted by </p></blockquote></div><h2 id="boutique-hotels-the-update-i-didn-t-see-coming">Boutique hotels - the update I didn't see coming</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3020px;"><p class="vanilla-image-block" style="padding-top:59.27%;"><img id="tRoHU98NzgPkPWZAP7ZuRa" name="Airbnb Boutique Hotels bookings" alt="Airbnb Boutique Hotels bookings" src="https://cdn.mos.cms.futurecdn.net/tRoHU98NzgPkPWZAP7ZuRa.png" mos="" align="middle" fullscreen="" width="3020" height="1790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Airbnb)</span></figcaption></figure><p>The biggest announcement? Airbnb now lists boutique and independent hotels across 20 top destinations including New York, Paris, London, Madrid, Rome, and Singapore which they say is hand-selected for its neighborhood, design, and hospitality. </p><p>I'm someone who is always looking for interesting, one-off places to stay rather than defaulting to a standard hotel chain. No shame to the Holiday Inns, but there's something special about staying somewhere like the Paramount which still has its 1928 charm. I'm excited to try this for my next long weekend getaway: somewhere with character and history but still has the convenience of a hotel.</p><p>Especially in cities like New York where short term Airbnb rentals aren't as easy to find, this could fill a real gap. Similar to competing booking sites like Priceline or Expedia, they have a price match guarantee, so if you find the same hotel cheaper anywhere else, Airbnb will give you the difference as credit. Taking things further, though, if you book one of the featured properties, you can receive up to 15% credit back toward your next Airbnb home stay. <br><br>What has me curious, though, is if this competes with potential home bookings or if these hotels fill a different demand. It'll be interesting to see if Airbnb hosts have any concerns or pushback as time goes on. </p><h2 id="groceries-waiting-at-check-in">Groceries waiting at check-in</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="XLmxn3aYb9QsgqtLAuQet3" name="Airbnb partners with Instacart" alt="Airbnb partners with Instacart" src="https://cdn.mos.cms.futurecdn.net/XLmxn3aYb9QsgqtLAuQet3.png" mos="" align="middle" fullscreen="" width="6000" height="4000" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Airbnb)</span></figcaption></figure><p>After a long travel day, figuring out where the nearest grocery store is or what I want to eat is usually the last thing I want to deal with. Airbnb has partnered with Instacart so guests can pre-order groceries in select cities, with free delivery and $10 off an order of $50 or more. </p><p>What I'm especially interested in testing is the pre-stocking option where in select homes  you may have the option to have your groceries stocked in your kitchen by your host before you arrive. This service is no additional cost and is available before check-in and throughout your stay, which sounds very convenient. </p><h2 id="car-rentals-built-into-the-booking">Car rentals built into the booking</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="LCocqiKgmKPekcJ88P7ZgN" name="Airbnb car rentals" alt="Airbnb car rentals" src="https://cdn.mos.cms.futurecdn.net/LCocqiKgmKPekcJ88P7ZgN.png" mos="" align="middle" fullscreen="" width="6000" height="4000" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Airbnb)</span></figcaption></figure><p>According to Airbnb, nearly a quarter of their guests also rent a car during their stay, so it makes sense that want a cut of that business too. Since Airbnb already has your trip dates and group size, it can suggest the right vehicle without you having to re-enter everything from scratch in a separate app. </p><p>Your existing loyalty status with rental partners like Hertz still carries over now with the benefit of being able to track the details of your rental in the same place as your stay. </p><h2 id="did-they-solve-the-hardest-part-of-planning-a-vacation">Did they solve the hardest part of planning a vacation?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4hV9uJgEYdNWRHUr8tVBFZ" name="Airbnb sightseeing experience" alt="Airbnb sightseeing experience" src="https://cdn.mos.cms.futurecdn.net/4hV9uJgEYdNWRHUr8tVBFZ.jpg" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Paul Antill / Tom's Guide)</span></figcaption></figure><p>Finding where to stay has never really been my problem. Figuring out what to actually do when I get there is where things usually fall apart. Airbnb now offers more than 3,000 landmark experiences led by local experts, from guided photo walks to culture experiences, including a 6-course wine pairing dinner.</p><p>For fans of football, they are beginning to offer exclusive FIFA World Cup experiences including watch parties with World Cup champions Abby Wambach and Julie Foudy in LA, and on-pitch training sessions with Javier Mascherano. While not my cup of tea, those are the types of experiences that can really make your trip memorable.</p><h2 id="planning-your-next-vacation-is-going-to-be-less-stressful">Planning your next vacation is going to be less stressful</h2><p>For someone who finds managing multiple bookings across different platforms tedious, the consolidation seems like it'll be a huge help. With experiences, car rentals, and stays all in one place, you can more easily price out and compare full trip itineraries across different destinations before you commit. </p><p>It'll be interesting to see if this is part of a bigger rollout and if Airbnb has their sights on grabbing the flight market too, which could have an even greater shake up. For now though, as someone who kind of forgot about Airbnb years ago, they've got my attention now.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness/packing-cubes-are-the-ultimate-travel-hack-and-these-are-my-5-favorites">Packing cubes are the ultimate travel hack — and these are my 5 favorites</a></li><li><a href="https://www.tomsguide.com/sales-events/these-are-the-12-travel-essentials-i-recommend-packing-for-a-stress-free-vacation">These are the 12 travel essentials I recommend packing for a stress-free vacation</a></li><li><a href="https://www.tomsguide.com/phones/network-carriers/traveling-to-the-world-cup-heres-what-you-need-to-know-about-international-data-plans">Traveling to the World Cup? Here's what you need to know about international data plans</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/mobile-apps/airbnb-may-have-just-convinced-me-to-make-my-next-vacation-booking-with-them-thanks-to-these-4-huge-new-changes</link>
                                                                            <description>
                            <![CDATA[ More than just home rentals, Airbnb wants to be your one stop shop for booking your entire vacation. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xoBZd4uTbgox7iDTvfSgKT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8JbMZhT6FNkCgzWFufLHn8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 28 May 2026 15:15:33 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mobile Apps]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                                                                <author><![CDATA[ Paul.antill@futurenet.com (Paul Antill) ]]></author>                    <dc:creator><![CDATA[ Paul Antill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/7MyNkF6oJfDnS9kZG658oC.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Paul Antill is a Video Producer and Content Creator at Tom&#039;s Guide, specializing in video/audio recording, smart home technology, and laptops. His passion lies in making tech coverage not just informative but also fun and accessible to everyone answering the question “Why does this new product or feature matter to me?” Paul has been a tech host and video producer since 2019 where he has also covered major tech and gaming events. His love for tech and video began on his&amp;nbsp;&lt;a href=&quot;https://www.youtube.com/@paulAntill&quot;&gt;&lt;strong&gt;YouTube channel&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;where for the low price of one subscription he shares head-to-head comparisons and clever ways to make the most of your gear. You can also see the behind-the-scenes and the magic that goes into our Tom’s Guide videos over on his&amp;nbsp;&lt;a href=&quot;https://www.instagram.com/thepaulantill/&quot;&gt;&lt;strong&gt;Instagram&lt;/strong&gt;&lt;/a&gt;. Paul graduated from the Mason School of Business at William &amp;amp; Mary, Williamsburg, VA, with a degree in Marketing and Business Analytics. When he&#039;s not on camera, you’ll probably still spot him behind one doing street photography and videography. Back home he’s probably in a heated Overwatch 2 match with his friends.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/8JbMZhT6FNkCgzWFufLHn8-1280-80.jpg">
                                                            <media:credit><![CDATA[Paul Antill / Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Airbnb boutique hotels in app]]></media:description>                                                            <media:text><![CDATA[Airbnb boutique hotels in app]]></media:text>
                                <media:title type="plain"><![CDATA[Airbnb boutique hotels in app]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8JbMZhT6FNkCgzWFufLHn8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I've had mixed feelings about <a href="https://www.tomsguide.com/computing/mobile-apps/im-not-on-vacation-but-airbnbs-latest-update-makes-me-want-to-plan-one-heres-why">Airbnb</a>. Sometimes I'd find the perfect cozy stay, other times it was just easier to book a hotel. But their 2026 summer update is the first time I've looked at the platform and thought this might actually be the most convenient way to book an entire trip. </p><p>On top of now offering boutique hotels, which was a huge surprise in itself, they're not just about helping you figure out where you want to stay, they want to be your one stop shop from the moment you land to what you do when you get to your destination. Here's what caught my attention and why I'm booking my next vacation with them.</p><div class="instagram-embed"><blockquote class="instagram-media"  data-instgrm-version="6" style="width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><p><a href="https://www.instagram.com/p/DYuWMYmxD38/" target="_blank">A post shared by Tom's Guide (@tomsguide)</a></p><p>A photo posted by </p></blockquote></div><h2 id="boutique-hotels-the-update-i-didn-t-see-coming">Boutique hotels - the update I didn't see coming</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3020px;"><p class="vanilla-image-block" style="padding-top:59.27%;"><img id="tRoHU98NzgPkPWZAP7ZuRa" name="Airbnb Boutique Hotels bookings" alt="Airbnb Boutique Hotels bookings" src="https://cdn.mos.cms.futurecdn.net/tRoHU98NzgPkPWZAP7ZuRa.png" mos="" align="middle" fullscreen="" width="3020" height="1790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Airbnb)</span></figcaption></figure><p>The biggest announcement? Airbnb now lists boutique and independent hotels across 20 top destinations including New York, Paris, London, Madrid, Rome, and Singapore which they say is hand-selected for its neighborhood, design, and hospitality. </p><p>I'm someone who is always looking for interesting, one-off places to stay rather than defaulting to a standard hotel chain. No shame to the Holiday Inns, but there's something special about staying somewhere like the Paramount which still has its 1928 charm. I'm excited to try this for my next long weekend getaway: somewhere with character and history but still has the convenience of a hotel.</p><p>Especially in cities like New York where short term Airbnb rentals aren't as easy to find, this could fill a real gap. Similar to competing booking sites like Priceline or Expedia, they have a price match guarantee, so if you find the same hotel cheaper anywhere else, Airbnb will give you the difference as credit. Taking things further, though, if you book one of the featured properties, you can receive up to 15% credit back toward your next Airbnb home stay. <br><br>What has me curious, though, is if this competes with potential home bookings or if these hotels fill a different demand. It'll be interesting to see if Airbnb hosts have any concerns or pushback as time goes on. </p><h2 id="groceries-waiting-at-check-in">Groceries waiting at check-in</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="XLmxn3aYb9QsgqtLAuQet3" name="Airbnb partners with Instacart" alt="Airbnb partners with Instacart" src="https://cdn.mos.cms.futurecdn.net/XLmxn3aYb9QsgqtLAuQet3.png" mos="" align="middle" fullscreen="" width="6000" height="4000" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Airbnb)</span></figcaption></figure><p>After a long travel day, figuring out where the nearest grocery store is or what I want to eat is usually the last thing I want to deal with. Airbnb has partnered with Instacart so guests can pre-order groceries in select cities, with free delivery and $10 off an order of $50 or more. </p><p>What I'm especially interested in testing is the pre-stocking option where in select homes  you may have the option to have your groceries stocked in your kitchen by your host before you arrive. This service is no additional cost and is available before check-in and throughout your stay, which sounds very convenient. </p><h2 id="car-rentals-built-into-the-booking">Car rentals built into the booking</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="LCocqiKgmKPekcJ88P7ZgN" name="Airbnb car rentals" alt="Airbnb car rentals" src="https://cdn.mos.cms.futurecdn.net/LCocqiKgmKPekcJ88P7ZgN.png" mos="" align="middle" fullscreen="" width="6000" height="4000" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Airbnb)</span></figcaption></figure><p>According to Airbnb, nearly a quarter of their guests also rent a car during their stay, so it makes sense that want a cut of that business too. Since Airbnb already has your trip dates and group size, it can suggest the right vehicle without you having to re-enter everything from scratch in a separate app. </p><p>Your existing loyalty status with rental partners like Hertz still carries over now with the benefit of being able to track the details of your rental in the same place as your stay. </p><h2 id="did-they-solve-the-hardest-part-of-planning-a-vacation">Did they solve the hardest part of planning a vacation?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4hV9uJgEYdNWRHUr8tVBFZ" name="Airbnb sightseeing experience" alt="Airbnb sightseeing experience" src="https://cdn.mos.cms.futurecdn.net/4hV9uJgEYdNWRHUr8tVBFZ.jpg" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Paul Antill / Tom's Guide)</span></figcaption></figure><p>Finding where to stay has never really been my problem. Figuring out what to actually do when I get there is where things usually fall apart. Airbnb now offers more than 3,000 landmark experiences led by local experts, from guided photo walks to culture experiences, including a 6-course wine pairing dinner.</p><p>For fans of football, they are beginning to offer exclusive FIFA World Cup experiences including watch parties with World Cup champions Abby Wambach and Julie Foudy in LA, and on-pitch training sessions with Javier Mascherano. While not my cup of tea, those are the types of experiences that can really make your trip memorable.</p><h2 id="planning-your-next-vacation-is-going-to-be-less-stressful">Planning your next vacation is going to be less stressful</h2><p>For someone who finds managing multiple bookings across different platforms tedious, the consolidation seems like it'll be a huge help. With experiences, car rentals, and stays all in one place, you can more easily price out and compare full trip itineraries across different destinations before you commit. </p><p>It'll be interesting to see if this is part of a bigger rollout and if Airbnb has their sights on grabbing the flight market too, which could have an even greater shake up. For now though, as someone who kind of forgot about Airbnb years ago, they've got my attention now.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness/packing-cubes-are-the-ultimate-travel-hack-and-these-are-my-5-favorites">Packing cubes are the ultimate travel hack — and these are my 5 favorites</a></li><li><a href="https://www.tomsguide.com/sales-events/these-are-the-12-travel-essentials-i-recommend-packing-for-a-stress-free-vacation">These are the 12 travel essentials I recommend packing for a stress-free vacation</a></li><li><a href="https://www.tomsguide.com/phones/network-carriers/traveling-to-the-world-cup-heres-what-you-need-to-know-about-international-data-plans">Traveling to the World Cup? Here's what you need to know about international data plans</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft admits Windows users 'experienced some challenges' with the forced CoPilot key — now it's finally doing something about it ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Microsoft made the biggest change to Windows keyboards in 30 years by adding a dedicated <a href="https://www.tomsguide.com/news/windows-copilot-is-getting-its-own-key-on-the-keyboard-heres-why-thats-a-big-deal">Copilot key</a> to its <a href="https://www.tomsguide.com/news/windows-11-ai-copilot-now-available-to-try-heres-everything-you-can-do">Copilot+ PCs when they started rolling out </a>a couple of years ago. </p><p>Unfortunately, what looked like a means of leveraging Windows' massive adoption into an AI leadership position seems to have backfired. All it takes is a scroll through <a href="https://www.reddit.com/r/microsoft/comments/1oay0qg/the_copilot_key_was_a_terrible_idea/">Reddit</a> to see how much people dislike the button, and my colleague Tony Polanco called it the<a href="https://www.tomsguide.com/computing/microsoft-may-finally-fix-the-worst-thing-about-copilot-pcs"> worst thing about Copilot+ PCs last year</a>.</p><p>Now, Microsoft appears to be relenting by officially announcing it will let users remap the Copilot button back to the Right Ctrl or Context menu options it replaced. </p><p>In a recently published <a href="https://support.microsoft.com/en-us/accessibility/windows/copilot/understand-updates-to-the-copilot-key-on-windows-devices#cw" target="_blank">support document</a>, Microsoft stated: "Customers who rely on the Right Ctrl key or Context menu key for keyboard shortcuts or assistive technologies (such as screen readers) experienced some challenges to their workflows when using these devices."</p><p>"A Windows 11 update will ship later this year that will add a setting option to let you remap the Copilot key to act as the Context menu key or Right Ctrl key. When available, you can find this setting in: <strong>Settings</strong> > <strong>Bluetooth & devices</strong> > <strong>Keyboard</strong>" </p><div><blockquote><p>A Windows 11 update will ship later this year that will add a setting option to let you remap the Copilot key</p><p>Microsoft</p></blockquote></div><p>While I've never needed the Right Ctrl or Context menu for my own typical workflow, I've lost count of the number of times I've accidentally triggered Copilot by hitting that key. And while I use a number of different AI assistants over the course of a week, Copilot is very rarely among them.</p><div><blockquote><p>I've lost count of the number of times I've accidentally triggered Copilot by hitting that key.</p></blockquote></div><p>Some PC manufacturers do let users remap the Copilot key with their own on-device software and we have our own Tom's Guide tutorial on <a href="https://www.tomsguide.com/computing/windows-operating-systems/how-to-remap-the-copilot-key-on-windows-11">how to remap the Copilot key on Windows 11</a>. However, both of those solutions will require additional steps and won't be as simple as a native solution within the OS that applies universally to all Windows 11 laptops with a Copilot key.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1384px;"><p class="vanilla-image-block" style="padding-top:56.21%;"><img id="yvkdgPgnazUMRxASPCg3BA" name="copilotkeylead1.jpg" alt="Windows Copilot key" src="https://cdn.mos.cms.futurecdn.net/yvkdgPgnazUMRxASPCg3BA.jpg" mos="" align="middle" fullscreen="" width="1384" height="778" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft hasn't specified exactly when we may see this update, only noting it will be in a "future Windows 11 update." Microsoft typically drops major updates for Windows in October and, occasionally, in September. So in all likelihood, it could still be another five months before we see this change rolled out. </p><p>In the meantime, here are <a href="https://www.tomsguide.com/ai/7-copilot-prompts-that-make-windows-11-way-more-useful">7 genius Copilot prompts that make Windows 11 instantly more useful</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpJL8W"></div>                            </div>                            <script src="https://kwizly.com/embed/XpJL8W.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/online-security/do-you-use-microsoft-exchange-hackers-are-actively-exploiting-a-new-zero-day-flaw">Do you use Microsoft Exchange? Hackers are actively exploiting a new zero-day flaw</a></li><li><a href="https://www.tomsguide.com/home/home-office/corsair-platform-4-elevate-review">I’ve spent almost a year testing the Corsair Platform 4 — and it’s my gaming desk setup endgame</a></li><li><a href="https://www.tomsguide.com/computing/laptops/9-laptop-accessories-under-usd50-id-buy-with-my-own-money-right-now">9 laptop accessories under $50 I'd buy with my own money right now</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/microsoft-admits-windows-users-experienced-some-challenges-with-the-forced-copilot-key-now-its-finally-doing-something-about-it</link>
                                                                            <description>
                            <![CDATA[ Microsoft has acknowledged the dedicated Copilot key on Windows hasn't been universally loved, and a future Windows 11 update will allow users to remap it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XmUBzPF3ccGMxGeJc8MVEB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/p4EYbySyHqVQhoTUeNqd5Z-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 18 May 2026 12:27:36 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Copilot]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                    <category><![CDATA[AI]]></category>
                                                                                                <author><![CDATA[ jeff.parsons@futurenet.com (Jeff Parsons) ]]></author>                    <dc:creator><![CDATA[ Jeff Parsons ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/7z3UTGGrmSokMKxTWHmhjX.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jeff is U.K. Editor-in-Chief for Tom’s Guide looking after the day-to-day output of the site’s British contingent. &lt;/p&gt;&lt;p&gt;Rising early and heading straight for the coffee machine, Jeff loves nothing more than dialling into the zeitgeist of the day’s tech news. A journalist for over a decade, he&#039;s travelled around the world testing and reviewing any gadget he can get his hands on.&lt;/p&gt;&lt;p&gt;Before joining the team at Tom’s Guide, Jeff covered technology and science for two of the U.K.’s biggest national news sites: Metro.co.uk and the Daily Mirror. Memorable moments include getting lost in Vienna in an electric Audi, touring Lockheed Martin’s mile-long jet factory in Fort Worth and filming a Netflix documentary about Elon Musk in West London.&lt;/p&gt;&lt;p&gt;When not plugged into the current news agenda, editing or commissioning a series of articles or debating the merits of Apple vs Android, Jeff can usually be found out for a run trying to shave precious seconds off his PB. Or lifting weights in a vain attempt to offset the ageing process.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/p4EYbySyHqVQhoTUeNqd5Z-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Windows 11 Copilot]]></media:description>                                                            <media:text><![CDATA[Windows 11 Copilot]]></media:text>
                                <media:title type="plain"><![CDATA[Windows 11 Copilot]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/p4EYbySyHqVQhoTUeNqd5Z-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Microsoft made the biggest change to Windows keyboards in 30 years by adding a dedicated <a href="https://www.tomsguide.com/news/windows-copilot-is-getting-its-own-key-on-the-keyboard-heres-why-thats-a-big-deal">Copilot key</a> to its <a href="https://www.tomsguide.com/news/windows-11-ai-copilot-now-available-to-try-heres-everything-you-can-do">Copilot+ PCs when they started rolling out </a>a couple of years ago. </p><p>Unfortunately, what looked like a means of leveraging Windows' massive adoption into an AI leadership position seems to have backfired. All it takes is a scroll through <a href="https://www.reddit.com/r/microsoft/comments/1oay0qg/the_copilot_key_was_a_terrible_idea/">Reddit</a> to see how much people dislike the button, and my colleague Tony Polanco called it the<a href="https://www.tomsguide.com/computing/microsoft-may-finally-fix-the-worst-thing-about-copilot-pcs"> worst thing about Copilot+ PCs last year</a>.</p><p>Now, Microsoft appears to be relenting by officially announcing it will let users remap the Copilot button back to the Right Ctrl or Context menu options it replaced. </p><p>In a recently published <a href="https://support.microsoft.com/en-us/accessibility/windows/copilot/understand-updates-to-the-copilot-key-on-windows-devices#cw" target="_blank">support document</a>, Microsoft stated: "Customers who rely on the Right Ctrl key or Context menu key for keyboard shortcuts or assistive technologies (such as screen readers) experienced some challenges to their workflows when using these devices."</p><p>"A Windows 11 update will ship later this year that will add a setting option to let you remap the Copilot key to act as the Context menu key or Right Ctrl key. When available, you can find this setting in: <strong>Settings</strong> > <strong>Bluetooth & devices</strong> > <strong>Keyboard</strong>" </p><div><blockquote><p>A Windows 11 update will ship later this year that will add a setting option to let you remap the Copilot key</p><p>Microsoft</p></blockquote></div><p>While I've never needed the Right Ctrl or Context menu for my own typical workflow, I've lost count of the number of times I've accidentally triggered Copilot by hitting that key. And while I use a number of different AI assistants over the course of a week, Copilot is very rarely among them.</p><div><blockquote><p>I've lost count of the number of times I've accidentally triggered Copilot by hitting that key.</p></blockquote></div><p>Some PC manufacturers do let users remap the Copilot key with their own on-device software and we have our own Tom's Guide tutorial on <a href="https://www.tomsguide.com/computing/windows-operating-systems/how-to-remap-the-copilot-key-on-windows-11">how to remap the Copilot key on Windows 11</a>. However, both of those solutions will require additional steps and won't be as simple as a native solution within the OS that applies universally to all Windows 11 laptops with a Copilot key.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1384px;"><p class="vanilla-image-block" style="padding-top:56.21%;"><img id="yvkdgPgnazUMRxASPCg3BA" name="copilotkeylead1.jpg" alt="Windows Copilot key" src="https://cdn.mos.cms.futurecdn.net/yvkdgPgnazUMRxASPCg3BA.jpg" mos="" align="middle" fullscreen="" width="1384" height="778" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft hasn't specified exactly when we may see this update, only noting it will be in a "future Windows 11 update." Microsoft typically drops major updates for Windows in October and, occasionally, in September. So in all likelihood, it could still be another five months before we see this change rolled out. </p><p>In the meantime, here are <a href="https://www.tomsguide.com/ai/7-copilot-prompts-that-make-windows-11-way-more-useful">7 genius Copilot prompts that make Windows 11 instantly more useful</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpJL8W"></div>                            </div>                            <script src="https://kwizly.com/embed/XpJL8W.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/online-security/do-you-use-microsoft-exchange-hackers-are-actively-exploiting-a-new-zero-day-flaw">Do you use Microsoft Exchange? Hackers are actively exploiting a new zero-day flaw</a></li><li><a href="https://www.tomsguide.com/home/home-office/corsair-platform-4-elevate-review">I’ve spent almost a year testing the Corsair Platform 4 — and it’s my gaming desk setup endgame</a></li><li><a href="https://www.tomsguide.com/computing/laptops/9-laptop-accessories-under-usd50-id-buy-with-my-own-money-right-now">9 laptop accessories under $50 I'd buy with my own money right now</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Is your Mac slowing down? Try these 3 monthly resets before you give up ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Your Mac isn't as fast as it used to be. Apps take longer to open, the spinning wheel appears constantly, and simple tasks feel sluggish. Before assuming you need a new computer or expensive upgrades, try basic maintenance that actually works.</p><p>Macs slow down over time not because hardware fails, but because software accumulates. Files pile up, apps run in the background you forgot about, and startup processes multiply until your Mac is struggling under the weight of digital clutter.</p><p>I run these three maintenance tasks on my MacBook every month. They take about 15 minutes total and consistently improve performance without costing anything. Here's what keeps my aging Mac running smoothly.</p><section class="howto-block">                    <h3> 1. Free up storage space</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/zvggxRQ7DLTXjq9TBTuGM6.jpg"                                        alt="Mac storage in settings"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/zvggxRQ7DLTXjq9TBTuGM6.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>A full hard drive is the primary cause of Mac slowdowns. When storage fills beyond 85-90% capacity, macOS struggles to manage files and runs noticeably slower.</p><p>macOS includes a built-in storage optimizer that automatically identifies what's consuming space and suggests actions to free it up. This does the heavy lifting without requiring manual file hunting.</p><p><strong>Click the Apple logo in the top left corner and select "System Settings." Then go to General, Storage</strong>. The "Recommendations" section displays optimization options like <strong>"Store in iCloud"</strong> (moves older files to cloud storage) and <strong>"Optimize Storage" </strong>(removes watched movies and email attachments automatically).</p><p><strong>Hover over the colored storage bar</strong> at the top to see exactly what's consuming space — Apps, Documents, System Data, Photos, and other categories. Each color represents a different file type, making it easy to identify the biggest storage hogs at a glance.</p><p><strong>Click individual recommendations to enable them</strong>. These settings work continuously in the background, automatically managing storage without you manually hunting through folders deciding what to delete.</p></p>                </section><section class="howto-block">                    <h3>2. Check Activity Monitor for resource hogs</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/Qd5diKbD64u2QfGwZWN36V.jpg"                                        alt="Mac Activity Monitor"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/Qd5diKbD64u2QfGwZWN36V.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>Activity Monitor shows which apps consume CPU power, memory, and energy in real time. A single misbehaving app can slow your entire Mac.</p><p><strong>Open Finder, go to Applications, Utilities, and Activity Monitor</strong>. Next, <strong>click the "CPU" tab and sort by "% CPU" </strong>to see which apps use the most processing power. Anything consistently above 80-100% is problematic.</p><p>To <a href="https://www.tomsguide.com/how-to/how-to-check-ram-usage-on-mac">check RAM usage</a>, <strong>click the "Memory" tab</strong>.<strong> </strong>The "Memory Pressure" graph at the bottom should stay green. If it's yellow or red, your Mac is running out of RAM and slowing down.</p><p>Quit apps using excessive resources that you're not actively using. <strong>Select the app in Activity Monitor and click the X button in the toolbar</strong> to force quit it.</p><p>You can also check the "Energy" tab to see which apps drain battery fastest. Reducing energy-intensive apps extends battery life and reduces heat.</p></p>                </section><section class="howto-block">                    <h3>3. Update macOS and apps if possible </h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/msgbFFdTymieFpvewFyty8.jpg"                                        alt="Software Update highlighted in Mac settings"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/msgbFFdTymieFpvewFyty8.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>Outdated software often runs slower than newer versions with performance optimizations and bug fixes. Updates frequently include speed improvements specifically designed to help older Macs run more smoothly.</p><p>Check for macOS updates by going to <strong>System Settings, General, and Software Update</strong>.<strong> </strong>If an update is available, <strong>install it</strong>. Major updates can take a while, so plan accordingly.</p><p>Update installed apps through the App Store.<strong> Open the App Store app and click "Updates" in the sidebar</strong>. Install all available updates, even apps you rarely use can slow your Mac if they're outdated and running background processes.</p><p>You could also enable automatic updates to handle this maintenance without remembering. In System Settings<strong> go to General, Software Update, click the info button next to "Automatic Updates" and turn on all options</strong>.</p></p>                </section><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONV22O"></div>                            </div>                            <script src="https://kwizly.com/embed/ONV22O.js" async></script><figure class="van-image-figure pull-right inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:676px;"><p class="vanilla-image-block" style="padding-top:31.51%;"><img id="8RpLeaq6UZxfGpTcqGj7HX" name="Google" alt="Google" src="https://cdn.mos.cms.futurecdn.net/8RpLeaq6UZxfGpTcqGj7HX.jpg" mos="" align="right" fullscreen="" width="676" height="213" attribution="" endorsement="" class="pull-rightinline"></p></div></div></figure><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/computing/macos/ive-been-using-macs-for-years-here-are-3-power-user-tweaks-that-changed-everything">I've been using Macs for years — here are 3 power user tweaks that changed everything</a></li><li><a href="https://www.tomsguide.com/phones/you-can-schedule-your-mac-to-turn-off-and-on-heres-how">You can schedule your Mac to turn off and on — here's how</a></li><li><a href="https://www.tomsguide.com/ai/this-new-mac-shortcut-is-the-fastest-way-to-use-google-gemini">This new Mac shortcut is the fastest way to use Google Gemini</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/is-your-mac-slowing-down-try-these-3-monthly-resets-before-you-give-up</link>
                                                                            <description>
                            <![CDATA[ Keep your aging Mac running smoothly with these three monthly maintenance tasks. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QvaxUsWpDQisxga8nCFZCK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6aKndonNntj8ta66tvXPJT-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 17 May 2026 05:45:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xHn6RmpEqg87cvtLwrBu9G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/6aKndonNntj8ta66tvXPJT-1280-80.jpg">
                                                            <media:credit><![CDATA[Krisda/Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[MacBook]]></media:description>                                                            <media:text><![CDATA[MacBook]]></media:text>
                                <media:title type="plain"><![CDATA[MacBook]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6aKndonNntj8ta66tvXPJT-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Your Mac isn't as fast as it used to be. Apps take longer to open, the spinning wheel appears constantly, and simple tasks feel sluggish. Before assuming you need a new computer or expensive upgrades, try basic maintenance that actually works.</p><p>Macs slow down over time not because hardware fails, but because software accumulates. Files pile up, apps run in the background you forgot about, and startup processes multiply until your Mac is struggling under the weight of digital clutter.</p><p>I run these three maintenance tasks on my MacBook every month. They take about 15 minutes total and consistently improve performance without costing anything. Here's what keeps my aging Mac running smoothly.</p><section class="howto-block">                    <h3> 1. Free up storage space</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/zvggxRQ7DLTXjq9TBTuGM6.jpg"                                        alt="Mac storage in settings"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/zvggxRQ7DLTXjq9TBTuGM6.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>A full hard drive is the primary cause of Mac slowdowns. When storage fills beyond 85-90% capacity, macOS struggles to manage files and runs noticeably slower.</p><p>macOS includes a built-in storage optimizer that automatically identifies what's consuming space and suggests actions to free it up. This does the heavy lifting without requiring manual file hunting.</p><p><strong>Click the Apple logo in the top left corner and select "System Settings." Then go to General, Storage</strong>. The "Recommendations" section displays optimization options like <strong>"Store in iCloud"</strong> (moves older files to cloud storage) and <strong>"Optimize Storage" </strong>(removes watched movies and email attachments automatically).</p><p><strong>Hover over the colored storage bar</strong> at the top to see exactly what's consuming space — Apps, Documents, System Data, Photos, and other categories. Each color represents a different file type, making it easy to identify the biggest storage hogs at a glance.</p><p><strong>Click individual recommendations to enable them</strong>. These settings work continuously in the background, automatically managing storage without you manually hunting through folders deciding what to delete.</p></p>                </section><section class="howto-block">                    <h3>2. Check Activity Monitor for resource hogs</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/Qd5diKbD64u2QfGwZWN36V.jpg"                                        alt="Mac Activity Monitor"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/Qd5diKbD64u2QfGwZWN36V.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>Activity Monitor shows which apps consume CPU power, memory, and energy in real time. A single misbehaving app can slow your entire Mac.</p><p><strong>Open Finder, go to Applications, Utilities, and Activity Monitor</strong>. Next, <strong>click the "CPU" tab and sort by "% CPU" </strong>to see which apps use the most processing power. Anything consistently above 80-100% is problematic.</p><p>To <a href="https://www.tomsguide.com/how-to/how-to-check-ram-usage-on-mac">check RAM usage</a>, <strong>click the "Memory" tab</strong>.<strong> </strong>The "Memory Pressure" graph at the bottom should stay green. If it's yellow or red, your Mac is running out of RAM and slowing down.</p><p>Quit apps using excessive resources that you're not actively using. <strong>Select the app in Activity Monitor and click the X button in the toolbar</strong> to force quit it.</p><p>You can also check the "Energy" tab to see which apps drain battery fastest. Reducing energy-intensive apps extends battery life and reduces heat.</p></p>                </section><section class="howto-block">                    <h3>3. Update macOS and apps if possible </h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/msgbFFdTymieFpvewFyty8.jpg"                                        alt="Software Update highlighted in Mac settings"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/msgbFFdTymieFpvewFyty8.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>Outdated software often runs slower than newer versions with performance optimizations and bug fixes. Updates frequently include speed improvements specifically designed to help older Macs run more smoothly.</p><p>Check for macOS updates by going to <strong>System Settings, General, and Software Update</strong>.<strong> </strong>If an update is available, <strong>install it</strong>. Major updates can take a while, so plan accordingly.</p><p>Update installed apps through the App Store.<strong> Open the App Store app and click "Updates" in the sidebar</strong>. Install all available updates, even apps you rarely use can slow your Mac if they're outdated and running background processes.</p><p>You could also enable automatic updates to handle this maintenance without remembering. In System Settings<strong> go to General, Software Update, click the info button next to "Automatic Updates" and turn on all options</strong>.</p></p>                </section><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONV22O"></div>                            </div>                            <script src="https://kwizly.com/embed/ONV22O.js" async></script><figure class="van-image-figure pull-right inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:676px;"><p class="vanilla-image-block" style="padding-top:31.51%;"><img id="8RpLeaq6UZxfGpTcqGj7HX" name="Google" alt="Google" src="https://cdn.mos.cms.futurecdn.net/8RpLeaq6UZxfGpTcqGj7HX.jpg" mos="" align="right" fullscreen="" width="676" height="213" attribution="" endorsement="" class="pull-rightinline"></p></div></div></figure><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/computing/macos/ive-been-using-macs-for-years-here-are-3-power-user-tweaks-that-changed-everything">I've been using Macs for years — here are 3 power user tweaks that changed everything</a></li><li><a href="https://www.tomsguide.com/phones/you-can-schedule-your-mac-to-turn-off-and-on-heres-how">You can schedule your Mac to turn off and on — here's how</a></li><li><a href="https://www.tomsguide.com/ai/this-new-mac-shortcut-is-the-fastest-way-to-use-google-gemini">This new Mac shortcut is the fastest way to use Google Gemini</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft will soon automatically uninstall bad Windows drivers and this new tool could be a game changer for your PC ]]></title>
                                                                                                <dc:content><![CDATA[ <p>This week Microsoft introduced a new tool that allows the company to remotely roll back bad Windows drivers even after they're delivered via Windows Update. The tool, Cloud-Initiated Driver Recovery, makes it so hardware makers and users don't need to manually fix bad drivers once they've been distributed.</p><p>According to a <a href="https://techcommunity.microsoft.com/blog/hardware-dev-center/introducing-cloud-initiated-driver-recovery-for-windows-update/4519075" target="_blank">Microsoft Hardware Dev Center blog post</a>, once a bad driver is identified Microsoft can initiate a recovery action that replaces the the faulty driver without intervention from you or a device maker. The problematic driver will be rolled back to the last known good version. </p><p>Seemingly, it's the latest in a series of moves from Microsoft to fix Windows 11. The company has spent much of 2026 <a href="https://www.tomsguide.com/computing/windows-operating-systems/we-need-to-improve-windows-in-ways-that-are-meaningful-for-people-microsoft-is-urgently-trying-to-fix-windows-11-issues">promising to make Windows better</a> with a <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-promises-windows-11-reset-new-focus-on-performance-reliability-and-reducing-unnecessary-copilot-ai">Windows 11 reset</a>, <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-reportedly-redesigning-start-menu-in-windows-11-after-actually-listening-to-user-complaints">redesigning the Start menu</a> and now, better driver patching.</p><h2 id="how-it-works">How it works</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GnxC9DC3NTqVEkaufcRyM6" name="delete key" alt="Trash can key" src="https://cdn.mos.cms.futurecdn.net/GnxC9DC3NTqVEkaufcRyM6.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>The action will only be initiated if a bad driver is rejected during "shiproom evaluation." That process evaluates drivers and notes quality issues.</p><p>Currently, when a bad driver ships in a Windows Update, a hardware partner must submit a replacement driver, or end users have to manually uninstall the faulty driver, which can leave PCs with outdated drivers for too long.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5rm3O"></div>                            </div>                            <script src="https://kwizly.com/embed/W5rm3O.js" async></script><p>"Today, when a driver published through Windows Update is identified after distribution to have quality issues, the remediation path relies on the hardware partner to submit an updated driver — or on end users to manually uninstall the problematic driver themselves.," Microsoft said.</p><p>Microsoft does note that if a "Driver Shiproom-approved" driver cannot be found a CIDR action will not be attempted. </p><p>However, if one is identified, recovery will be sent via the existing Windows Update infrastructure. You won't need a new client or update from the third-party manufacturer.</p><h2 id="better-drivers-in-general">Better drivers in general</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3423px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="KQbE8W9xF5htWqfEL2b2K5" name="Microsoft HQ" alt="View of Microsoft Romania headquarters in City Gate Towers situated in Free Press Square, in Bucharest, Romania" src="https://cdn.mos.cms.futurecdn.net/KQbE8W9xF5htWqfEL2b2K5.jpg" mos="" align="middle" fullscreen="" width="3423" height="1925" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>According to the blog, the company is testing the tool between May and August this year. Microsoft is shooting to roll back rejected drivers starting in September 2026.</p><p>It appears this could be part of an overall initiative by Microsoft to improve the overall quality of drivers. As pointed out by <a href="https://www.bleepingcomputer.com/news/microsoft/microsoft-to-automatically-roll-back-faulty-windows-drivers/" target="_blank">Bleeping Computer</a>, the company announced a new<a href="https://blogs.windows.com/windowsexperience/2026/05/14/raising-the-bar-together-introducing-the-driver-quality-initiative-at-winhec-2026/" target="_blank"> Driver Quality Initiative</a> last week at the WinHEC 2026 conference in Taipei.</p><p>"When drivers are high quality, customers experience reliable, secure, performant devices. When drivers fail, customers experience it as a device problem, regardless of where the root cause sits," the company said in an announcement.</p><p>Microsoft announced it will invest in partners and tools to improve drivers overall.</p><p>"In the months ahead, we will keep investing in the fundamentals that matter most to customers: reliability, security, performance, compatibility and quality."</p><p>If these tools and initiatives hold up, it could mean the end of frustrating driver experiences on your PC. Instead of hunting down the faulty driver, now Microsoft will do it for you. Fingers crossed this new tool works well.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/online-security/microsofts-urgent-window-11-patch-fixes-30-critical-bugs-update-your-pc-now">Microsoft's urgent Window 11 patch fixes 30 'critical' bugs — update your PC now</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/dells-own-support-software-is-crashing-its-pcs-and-laptops-the-irony-is-strong-but-there-is-a-quick-fix">Dell's own support software is crashing its PCs and laptops — the irony is strong, but there is a quick fix</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-reportedly-redesigning-start-menu-in-windows-11-after-actually-listening-to-user-complaints">Microsoft reportedly redesigning Start Menu in Windows 11 after actually listening to user complaints</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/microsoft-will-soon-automatically-uninstall-bad-windows-drivers-and-this-new-tool-could-be-a-game-changer-for-your-pc</link>
                                                                            <description>
                            <![CDATA[ Microsoft has released a new Windows 11 tool that lets it remove faulty drivers after updates. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">evs2CHE6SJxqyPbrAuwgE7</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/nM2QA9SAJTB9Hq3ATzrtdC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 15 May 2026 23:05:32 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/nM2QA9SAJTB9Hq3ATzrtdC-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Windows 11 logo on a laptop screen]]></media:description>                                                            <media:text><![CDATA[Windows 11 logo on a laptop screen]]></media:text>
                                <media:title type="plain"><![CDATA[Windows 11 logo on a laptop screen]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/nM2QA9SAJTB9Hq3ATzrtdC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>This week Microsoft introduced a new tool that allows the company to remotely roll back bad Windows drivers even after they're delivered via Windows Update. The tool, Cloud-Initiated Driver Recovery, makes it so hardware makers and users don't need to manually fix bad drivers once they've been distributed.</p><p>According to a <a href="https://techcommunity.microsoft.com/blog/hardware-dev-center/introducing-cloud-initiated-driver-recovery-for-windows-update/4519075" target="_blank">Microsoft Hardware Dev Center blog post</a>, once a bad driver is identified Microsoft can initiate a recovery action that replaces the the faulty driver without intervention from you or a device maker. The problematic driver will be rolled back to the last known good version. </p><p>Seemingly, it's the latest in a series of moves from Microsoft to fix Windows 11. The company has spent much of 2026 <a href="https://www.tomsguide.com/computing/windows-operating-systems/we-need-to-improve-windows-in-ways-that-are-meaningful-for-people-microsoft-is-urgently-trying-to-fix-windows-11-issues">promising to make Windows better</a> with a <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-promises-windows-11-reset-new-focus-on-performance-reliability-and-reducing-unnecessary-copilot-ai">Windows 11 reset</a>, <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-reportedly-redesigning-start-menu-in-windows-11-after-actually-listening-to-user-complaints">redesigning the Start menu</a> and now, better driver patching.</p><h2 id="how-it-works">How it works</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GnxC9DC3NTqVEkaufcRyM6" name="delete key" alt="Trash can key" src="https://cdn.mos.cms.futurecdn.net/GnxC9DC3NTqVEkaufcRyM6.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>The action will only be initiated if a bad driver is rejected during "shiproom evaluation." That process evaluates drivers and notes quality issues.</p><p>Currently, when a bad driver ships in a Windows Update, a hardware partner must submit a replacement driver, or end users have to manually uninstall the faulty driver, which can leave PCs with outdated drivers for too long.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5rm3O"></div>                            </div>                            <script src="https://kwizly.com/embed/W5rm3O.js" async></script><p>"Today, when a driver published through Windows Update is identified after distribution to have quality issues, the remediation path relies on the hardware partner to submit an updated driver — or on end users to manually uninstall the problematic driver themselves.," Microsoft said.</p><p>Microsoft does note that if a "Driver Shiproom-approved" driver cannot be found a CIDR action will not be attempted. </p><p>However, if one is identified, recovery will be sent via the existing Windows Update infrastructure. You won't need a new client or update from the third-party manufacturer.</p><h2 id="better-drivers-in-general">Better drivers in general</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3423px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="KQbE8W9xF5htWqfEL2b2K5" name="Microsoft HQ" alt="View of Microsoft Romania headquarters in City Gate Towers situated in Free Press Square, in Bucharest, Romania" src="https://cdn.mos.cms.futurecdn.net/KQbE8W9xF5htWqfEL2b2K5.jpg" mos="" align="middle" fullscreen="" width="3423" height="1925" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>According to the blog, the company is testing the tool between May and August this year. Microsoft is shooting to roll back rejected drivers starting in September 2026.</p><p>It appears this could be part of an overall initiative by Microsoft to improve the overall quality of drivers. As pointed out by <a href="https://www.bleepingcomputer.com/news/microsoft/microsoft-to-automatically-roll-back-faulty-windows-drivers/" target="_blank">Bleeping Computer</a>, the company announced a new<a href="https://blogs.windows.com/windowsexperience/2026/05/14/raising-the-bar-together-introducing-the-driver-quality-initiative-at-winhec-2026/" target="_blank"> Driver Quality Initiative</a> last week at the WinHEC 2026 conference in Taipei.</p><p>"When drivers are high quality, customers experience reliable, secure, performant devices. When drivers fail, customers experience it as a device problem, regardless of where the root cause sits," the company said in an announcement.</p><p>Microsoft announced it will invest in partners and tools to improve drivers overall.</p><p>"In the months ahead, we will keep investing in the fundamentals that matter most to customers: reliability, security, performance, compatibility and quality."</p><p>If these tools and initiatives hold up, it could mean the end of frustrating driver experiences on your PC. Instead of hunting down the faulty driver, now Microsoft will do it for you. Fingers crossed this new tool works well.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/online-security/microsofts-urgent-window-11-patch-fixes-30-critical-bugs-update-your-pc-now">Microsoft's urgent Window 11 patch fixes 30 'critical' bugs — update your PC now</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/dells-own-support-software-is-crashing-its-pcs-and-laptops-the-irony-is-strong-but-there-is-a-quick-fix">Dell's own support software is crashing its PCs and laptops — the irony is strong, but there is a quick fix</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-reportedly-redesigning-start-menu-in-windows-11-after-actually-listening-to-user-complaints">Microsoft reportedly redesigning Start Menu in Windows 11 after actually listening to user complaints</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft's urgent Window 11 patch fixes 30 'critical' bugs — update your PC now ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Now is the perfect time to update your laptop or desktop PC as Microsoft has released its <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-May" target="_blank">May Patch Tuesday</a> updates which contain fixes for 30 flaws rated as important or critical severity. </p><p>In total, the latest security patch applies fixes to 138 bugs including many that made network privileges vulnerable. Fortunately, none of the bugs are listed as publicly known or under active attack. </p><p>The patch was released at the same time as one from Google that addressed 127 security flaws in Chromium, which undergirds the Microsoft Edge browser.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OzLE0e"></div>                            </div>                            <script src="https://kwizly.com/embed/OzLE0e.js" async></script><p>Many of the flaws appear to be related to Azure and more business-focused Microsoft products. However, one of the more severe bugs impacts Windows DNS via a <a href="https://www.tomsguide.com/news/chrome-zero-day-fix-feb21">heap-based buffer overflow flaw</a> that would let a malicious actor execute code over a network.</p><p>"An attacker could exploit this vulnerability by sending a specially crafted DNS response to a vulnerable Windows system, causing the DNS Client to incorrectly process the response and corrupt memory," Microsoft said in its patch notes. "In certain configurations, this could allow the attacker to run code remotely on the affected system without authentication."</p><h2 id="hundreds-of-flaws-fixed-this-year">Hundreds of flaws fixed this year</h2><p>Since January, when the <a href="https://www.tomsguide.com/computing/online-security/microsofts-first-patch-tuesday-of-2026-fixes-over-100-bugs-and-one-active-zero-day-flaw-dont-wait-to-update-your-pc">first patch Tuesday of 2026 </a>fixed 114 flaws, Microsoft has apparently fixed more than 500 CVE bugs already this year. </p><p>According to <a href="https://thehackernews.com/2026/05/microsoft-patches-138-vulnerabilities.html" target="_blank">Hacker News</a>, this can be attributed to a greater focus by Microsoft on vulnerability discovery, some of which is heavily assisted by AI-based flagging. Microsoft claimed as much in a recent <a href="https://www.microsoft.com/en-us/msrc/blog/2026/05/a-note-on-patch-tuesday" target="_blank">Microsoft Security Response Center report</a> released this week.</p><p>"Microsoft engineers and the wider security community alike are <a href="https://www.microsoft.com/en-us/msrc/blog/2026/04/strengthening-secure-software-global-scale-how-msrc-is-evolving-with-ai">increasingly using AI</a> to examine software more carefully and more often than was practical even a few years ago," Tom Gallagher said in the report.</p><h2 id="how-to-stay-safe-with-patch-tuesday">How to stay safe with Patch Tuesday</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5342px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MC3iNmQLKLcYS2fWGgAouZ" name="shutterstock_631810814" alt="A man clicking on a mouse while browsing the web on his laptop" src="https://cdn.mos.cms.futurecdn.net/MC3iNmQLKLcYS2fWGgAouZ.jpg" mos="" align="middle" fullscreen="" width="5342" height="3005" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>First and foremost, update your Windows laptop or desktop with the latest system update or patches. You also want to make sure that <a href="https://www.tomsguide.com/news/windows-defender-good-enough-for-new-laptop">Windows Defender</a> is enabled so that it can scan your system for <a href="https://www.tomsguide.com/computing/malware-adware/dont-click-this-malicious-ads-impersonating-google-chrome-spreading-dangerous-malware">dangerous malware</a>.</p><p>Of course, we always recommend using one of the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a> packages for extra protection. </p><p>In the MSRC report, Gallagher recommends practicing good cyber hygiene, which we wholeheartedly agree with. This includes enabling <a href="https://www.tomsguide.com/computing/online-security/two-factor-authentication-provides-an-easy-way-to-secure-your-accounts-heres-how-it-works-and-how-to-enable-it">multi-factor authentication</a>, creating <a href="https://www.tomsguide.com/computing/password-managers/people-are-the-password-problem-how-youre-creating-your-biggest-security-risks">strong passwords</a>, and using one of the <a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">best password managers</a></p><p>As always, and in general, don't click links or attachments from <a href="https://www.tomsguide.com/news/avoid-these-email-attachments-if-you-dont-want-to-get-phished">unknown </a><a href="https://www.tomsguide.com/news/avoid-these-email-attachments-if-you-dont-want-to-get-phished" target="_blank">senders</a>, as they could contain malware or send you to <a href="https://www.tomsguide.com/news/hackers-often-use-this-clever-trick-to-take-you-to-phishing-sites-can-you-spot-it">phishing sites</a> designed to steal your personal information. </p><p>By practicing good cyber hygiene and regularly updating your computer, you should be safe from most attacks. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/online-security/is-your-personal-information-public-the-simple-step-to-securing-your-privacy-online">Is your personal information public? The simple step to securing your privacy online</a></li><li><a href="https://www.tomsguide.com/computing/online-security/android-alert-7-million-users-downloaded-stalking-apps-that-were-actually-scams">Android alert: 7 million users downloaded ‘stalking’ apps that were actually scams</a></li><li><a href="https://www.tomsguide.com/computing/online-security/what-is-agego-and-is-it-safe-to-use">What is AgeGO, and is it safe to use?</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/online-security/microsofts-urgent-window-11-patch-fixes-30-critical-bugs-update-your-pc-now</link>
                                                                            <description>
                            <![CDATA[ Microsoft's big May 2026 Patch Tuesday fixes more than 138 vulnerabilities overall. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">9PYXF7f4Aa9u8mYLuifMdT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/hDNix4fYdmJGsVB26D4tkN-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 13 May 2026 20:24:26 +0000</pubDate>                                                                                                                                <updated>Wed, 13 May 2026 20:54:28 +0000</updated>
                                                                                                                                            <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/hDNix4fYdmJGsVB26D4tkN-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A laptop with the Windows 11 logo]]></media:description>                                                            <media:text><![CDATA[A laptop with the Windows 11 logo]]></media:text>
                                <media:title type="plain"><![CDATA[A laptop with the Windows 11 logo]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/hDNix4fYdmJGsVB26D4tkN-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Now is the perfect time to update your laptop or desktop PC as Microsoft has released its <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-May" target="_blank">May Patch Tuesday</a> updates which contain fixes for 30 flaws rated as important or critical severity. </p><p>In total, the latest security patch applies fixes to 138 bugs including many that made network privileges vulnerable. Fortunately, none of the bugs are listed as publicly known or under active attack. </p><p>The patch was released at the same time as one from Google that addressed 127 security flaws in Chromium, which undergirds the Microsoft Edge browser.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OzLE0e"></div>                            </div>                            <script src="https://kwizly.com/embed/OzLE0e.js" async></script><p>Many of the flaws appear to be related to Azure and more business-focused Microsoft products. However, one of the more severe bugs impacts Windows DNS via a <a href="https://www.tomsguide.com/news/chrome-zero-day-fix-feb21">heap-based buffer overflow flaw</a> that would let a malicious actor execute code over a network.</p><p>"An attacker could exploit this vulnerability by sending a specially crafted DNS response to a vulnerable Windows system, causing the DNS Client to incorrectly process the response and corrupt memory," Microsoft said in its patch notes. "In certain configurations, this could allow the attacker to run code remotely on the affected system without authentication."</p><h2 id="hundreds-of-flaws-fixed-this-year">Hundreds of flaws fixed this year</h2><p>Since January, when the <a href="https://www.tomsguide.com/computing/online-security/microsofts-first-patch-tuesday-of-2026-fixes-over-100-bugs-and-one-active-zero-day-flaw-dont-wait-to-update-your-pc">first patch Tuesday of 2026 </a>fixed 114 flaws, Microsoft has apparently fixed more than 500 CVE bugs already this year. </p><p>According to <a href="https://thehackernews.com/2026/05/microsoft-patches-138-vulnerabilities.html" target="_blank">Hacker News</a>, this can be attributed to a greater focus by Microsoft on vulnerability discovery, some of which is heavily assisted by AI-based flagging. Microsoft claimed as much in a recent <a href="https://www.microsoft.com/en-us/msrc/blog/2026/05/a-note-on-patch-tuesday" target="_blank">Microsoft Security Response Center report</a> released this week.</p><p>"Microsoft engineers and the wider security community alike are <a href="https://www.microsoft.com/en-us/msrc/blog/2026/04/strengthening-secure-software-global-scale-how-msrc-is-evolving-with-ai">increasingly using AI</a> to examine software more carefully and more often than was practical even a few years ago," Tom Gallagher said in the report.</p><h2 id="how-to-stay-safe-with-patch-tuesday">How to stay safe with Patch Tuesday</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5342px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MC3iNmQLKLcYS2fWGgAouZ" name="shutterstock_631810814" alt="A man clicking on a mouse while browsing the web on his laptop" src="https://cdn.mos.cms.futurecdn.net/MC3iNmQLKLcYS2fWGgAouZ.jpg" mos="" align="middle" fullscreen="" width="5342" height="3005" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>First and foremost, update your Windows laptop or desktop with the latest system update or patches. You also want to make sure that <a href="https://www.tomsguide.com/news/windows-defender-good-enough-for-new-laptop">Windows Defender</a> is enabled so that it can scan your system for <a href="https://www.tomsguide.com/computing/malware-adware/dont-click-this-malicious-ads-impersonating-google-chrome-spreading-dangerous-malware">dangerous malware</a>.</p><p>Of course, we always recommend using one of the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a> packages for extra protection. </p><p>In the MSRC report, Gallagher recommends practicing good cyber hygiene, which we wholeheartedly agree with. This includes enabling <a href="https://www.tomsguide.com/computing/online-security/two-factor-authentication-provides-an-easy-way-to-secure-your-accounts-heres-how-it-works-and-how-to-enable-it">multi-factor authentication</a>, creating <a href="https://www.tomsguide.com/computing/password-managers/people-are-the-password-problem-how-youre-creating-your-biggest-security-risks">strong passwords</a>, and using one of the <a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">best password managers</a></p><p>As always, and in general, don't click links or attachments from <a href="https://www.tomsguide.com/news/avoid-these-email-attachments-if-you-dont-want-to-get-phished">unknown </a><a href="https://www.tomsguide.com/news/avoid-these-email-attachments-if-you-dont-want-to-get-phished" target="_blank">senders</a>, as they could contain malware or send you to <a href="https://www.tomsguide.com/news/hackers-often-use-this-clever-trick-to-take-you-to-phishing-sites-can-you-spot-it">phishing sites</a> designed to steal your personal information. </p><p>By practicing good cyber hygiene and regularly updating your computer, you should be safe from most attacks. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/online-security/is-your-personal-information-public-the-simple-step-to-securing-your-privacy-online">Is your personal information public? The simple step to securing your privacy online</a></li><li><a href="https://www.tomsguide.com/computing/online-security/android-alert-7-million-users-downloaded-stalking-apps-that-were-actually-scams">Android alert: 7 million users downloaded ‘stalking’ apps that were actually scams</a></li><li><a href="https://www.tomsguide.com/computing/online-security/what-is-agego-and-is-it-safe-to-use">What is AgeGO, and is it safe to use?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Mac mini's ridiculously-placed power button just became irrelevant thanks to this new macOS 26.5 feature — here's how to activate it ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The Mac mini is a great computer, and we love it here at Tom's Guide, but that doesn't mean we won't criticise Apple's design choices. In fact, in my colleague Anthony's review of the <a href="https://www.tomsguide.com/computing/desktop-computers/mac-mini-m4-review">Mac mini M4</a>, he said that, "if only Apple hadn’t put the power button on the bottom of the device, this would be a near perfect upgrade over the Mac mini M2."</p><p>Well, there's some good news to share today because with the release of <a href="https://www.tomsguide.com/computing/macbooks/macos-26-supported-devices-these-macs-may-not-make-the-cut">macOS 26.5 Tahoe</a>, Apple has finally delivered a software solution to this hardware headache.</p><p>The latest update introduces a new 'Power Control' section within the Energy settings, specifically designed for Mac desktops like the Mac mini, <a href="https://www.tomsguide.com/computing/apple-desktops/apple-mac-studio-m4-max-review">Mac Studio</a>, and <a href="https://www.tomsguide.com/computing/apple-desktops/apple-imac-m4-review">iMac</a>. The standout feature as far as a lot of users (and Anthony) are concerned? Support for external switches. </p><p>That means you'll be able to use compatible accessories to power off or restart the Mac mini without ever needing to access the physical button on the underside of the chassis. What's more, according to Apple's <a href="https://support.apple.com/en-us/125517" target="_blank">support document</a>, the new update will also give users the choice to have their Mac mini, Mac Studio, or iMac automatically turn on when connected to power. Nice!</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TUpMErrBpjcZASartetyE8" name="Mac mini M4-06" alt="Lifting the Mac mini M4 up in order to press its power button" src="https://cdn.mos.cms.futurecdn.net/TUpMErrBpjcZASartetyE8.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Despite Apple categorizing this as an accessibility feature, I'd argue the addition of switch support is a big quality-of-life upgrade for all users. Especially if you like to tinker with your desk setup. For example, you could mount a compatible third-party switch to the side of your keyboard and have it always within reach.</p><p>Apple itself seems to quietly acknowledge the design misstep, noting this new feature is particularly helpful, “when you don't have easy access to the computer's power button.” </p><h2 id="how-to-enable-power-control">How to enable Power Control</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mBG2BLb2nByp25qbZsfocP" name="Apple-Mac-mini-lifestyle-music-studio-min" alt="Mac Mini M4" src="https://cdn.mos.cms.futurecdn.net/mBG2BLb2nByp25qbZsfocP.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>If you’ve updated to macOS 26.5, you can find these new options by navigating to <strong>System Settings > Energy</strong>. From there, a new <strong>Power Control</strong> menu allows you to pair your external switches. </p><p>Additionally, the update includes a toggle to have your Mac automatically boot up as soon as it’s connected to power — a feature previously reserved for server-grade hardware but now available to the Mac mini M4, iMac M4, and the 2025 Mac Studio.</p><h2 id="bottom-line-2">Bottom line</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QmjZCJY7EmTEVJPLPFiCn3" name="Mac mini M4--1-LEDE" alt="A desk setup built around the Mac mini M4 with an Apple Studio Display on an all wooden desk" src="https://cdn.mos.cms.futurecdn.net/QmjZCJY7EmTEVJPLPFiCn3.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The macOS 26.5 is a relatively small update for Mac, but this particular addition does seem like it'll make a meaningful difference. </p><p>Hopefully, this small change means Apple is taking on board feedback that users and reviewers are pointing out — even if it's through software solutions rather than hardware revamps. </p><p>Of course, whether or not the next iteration of the Mac mini keeps the power button on the underside remains to be seen. Maybe that's a question for John Ternus to answer when he <a href="https://www.tomsguide.com/phones/iphones/massive-changes-at-apple-john-ternus-takes-over-as-ceo-sept-1-while-tim-cook-moves-to-executive-chairman">takes the reins at Apple in September</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-egn65X"></div>                            </div>                            <script src="https://kwizly.com/embed/egn65X.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/dells-own-support-software-is-crashing-its-pcs-and-laptops-the-irony-is-strong-but-there-is-a-quick-fix">Dell's own support software is crashing its PCs and laptops — the irony is strong, but there is a quick fix</a></li><li><a href="https://www.tomsguide.com/ai/i-tried-the-goldfish-prompt-with-chatgpt-and-it-instantly-stopped-my-overthinking">I tried the ‘Goldfish Prompt’ with ChatGPT — and it instantly stopped my overthinking</a></li><li><a href="https://www.tomsguide.com/phones/iphones/your-iphone-keyboard-can-do-math-heres-how-to-use-the-secret-calculator">Your iPhone keyboard can do math — here's how to use the secret calculator</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/the-mac-minis-ridiculously-placed-power-button-just-became-irrelevant-thanks-to-this-new-macos-26-5-feature-heres-how-to-activate-it</link>
                                                                            <description>
                            <![CDATA[ The Mac mini is a great computer with a badly-designed power switch, but Apple has introduced a software solution with macOS 26.5. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VL4H8cNWzuQCAMxTTKXFnL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ipJ7pLV33kb9Csq3heQYEV-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 12 May 2026 11:35:47 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ jeff.parsons@futurenet.com (Jeff Parsons) ]]></author>                    <dc:creator><![CDATA[ Jeff Parsons ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/7z3UTGGrmSokMKxTWHmhjX.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jeff is U.K. Editor-in-Chief for Tom’s Guide looking after the day-to-day output of the site’s British contingent. &lt;/p&gt;&lt;p&gt;Rising early and heading straight for the coffee machine, Jeff loves nothing more than dialling into the zeitgeist of the day’s tech news. A journalist for over a decade, he&#039;s travelled around the world testing and reviewing any gadget he can get his hands on.&lt;/p&gt;&lt;p&gt;Before joining the team at Tom’s Guide, Jeff covered technology and science for two of the U.K.’s biggest national news sites: Metro.co.uk and the Daily Mirror. Memorable moments include getting lost in Vienna in an electric Audi, touring Lockheed Martin’s mile-long jet factory in Fort Worth and filming a Netflix documentary about Elon Musk in West London.&lt;/p&gt;&lt;p&gt;When not plugged into the current news agenda, editing or commissioning a series of articles or debating the merits of Apple vs Android, Jeff can usually be found out for a run trying to shave precious seconds off his PB. Or lifting weights in a vain attempt to offset the ageing process.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ipJ7pLV33kb9Csq3heQYEV-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Mac Mini M4 front and underside ]]></media:description>                                                            <media:text><![CDATA[Mac Mini M4 front and underside ]]></media:text>
                                <media:title type="plain"><![CDATA[Mac Mini M4 front and underside ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ipJ7pLV33kb9Csq3heQYEV-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Mac mini is a great computer, and we love it here at Tom's Guide, but that doesn't mean we won't criticise Apple's design choices. In fact, in my colleague Anthony's review of the <a href="https://www.tomsguide.com/computing/desktop-computers/mac-mini-m4-review">Mac mini M4</a>, he said that, "if only Apple hadn’t put the power button on the bottom of the device, this would be a near perfect upgrade over the Mac mini M2."</p><p>Well, there's some good news to share today because with the release of <a href="https://www.tomsguide.com/computing/macbooks/macos-26-supported-devices-these-macs-may-not-make-the-cut">macOS 26.5 Tahoe</a>, Apple has finally delivered a software solution to this hardware headache.</p><p>The latest update introduces a new 'Power Control' section within the Energy settings, specifically designed for Mac desktops like the Mac mini, <a href="https://www.tomsguide.com/computing/apple-desktops/apple-mac-studio-m4-max-review">Mac Studio</a>, and <a href="https://www.tomsguide.com/computing/apple-desktops/apple-imac-m4-review">iMac</a>. The standout feature as far as a lot of users (and Anthony) are concerned? Support for external switches. </p><p>That means you'll be able to use compatible accessories to power off or restart the Mac mini without ever needing to access the physical button on the underside of the chassis. What's more, according to Apple's <a href="https://support.apple.com/en-us/125517" target="_blank">support document</a>, the new update will also give users the choice to have their Mac mini, Mac Studio, or iMac automatically turn on when connected to power. Nice!</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TUpMErrBpjcZASartetyE8" name="Mac mini M4-06" alt="Lifting the Mac mini M4 up in order to press its power button" src="https://cdn.mos.cms.futurecdn.net/TUpMErrBpjcZASartetyE8.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Despite Apple categorizing this as an accessibility feature, I'd argue the addition of switch support is a big quality-of-life upgrade for all users. Especially if you like to tinker with your desk setup. For example, you could mount a compatible third-party switch to the side of your keyboard and have it always within reach.</p><p>Apple itself seems to quietly acknowledge the design misstep, noting this new feature is particularly helpful, “when you don't have easy access to the computer's power button.” </p><h2 id="how-to-enable-power-control">How to enable Power Control</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mBG2BLb2nByp25qbZsfocP" name="Apple-Mac-mini-lifestyle-music-studio-min" alt="Mac Mini M4" src="https://cdn.mos.cms.futurecdn.net/mBG2BLb2nByp25qbZsfocP.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>If you’ve updated to macOS 26.5, you can find these new options by navigating to <strong>System Settings > Energy</strong>. From there, a new <strong>Power Control</strong> menu allows you to pair your external switches. </p><p>Additionally, the update includes a toggle to have your Mac automatically boot up as soon as it’s connected to power — a feature previously reserved for server-grade hardware but now available to the Mac mini M4, iMac M4, and the 2025 Mac Studio.</p><h2 id="bottom-line-2">Bottom line</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QmjZCJY7EmTEVJPLPFiCn3" name="Mac mini M4--1-LEDE" alt="A desk setup built around the Mac mini M4 with an Apple Studio Display on an all wooden desk" src="https://cdn.mos.cms.futurecdn.net/QmjZCJY7EmTEVJPLPFiCn3.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The macOS 26.5 is a relatively small update for Mac, but this particular addition does seem like it'll make a meaningful difference. </p><p>Hopefully, this small change means Apple is taking on board feedback that users and reviewers are pointing out — even if it's through software solutions rather than hardware revamps. </p><p>Of course, whether or not the next iteration of the Mac mini keeps the power button on the underside remains to be seen. Maybe that's a question for John Ternus to answer when he <a href="https://www.tomsguide.com/phones/iphones/massive-changes-at-apple-john-ternus-takes-over-as-ceo-sept-1-while-tim-cook-moves-to-executive-chairman">takes the reins at Apple in September</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-egn65X"></div>                            </div>                            <script src="https://kwizly.com/embed/egn65X.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/dells-own-support-software-is-crashing-its-pcs-and-laptops-the-irony-is-strong-but-there-is-a-quick-fix">Dell's own support software is crashing its PCs and laptops — the irony is strong, but there is a quick fix</a></li><li><a href="https://www.tomsguide.com/ai/i-tried-the-goldfish-prompt-with-chatgpt-and-it-instantly-stopped-my-overthinking">I tried the ‘Goldfish Prompt’ with ChatGPT — and it instantly stopped my overthinking</a></li><li><a href="https://www.tomsguide.com/phones/iphones/your-iphone-keyboard-can-do-math-heres-how-to-use-the-secret-calculator">Your iPhone keyboard can do math — here's how to use the secret calculator</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Dell's own support software is crashing its PCs and laptops — the irony is strong, but there is a quick fix ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you’re a Windows 11 user, you’re already familiar with the Blue Screen of Death (BSOD) — popping up when a critical error forces the operating system to stop. Normally, the blame falls on Microsoft (although its team is working hard on improving Windows soon). But if you’ve been seeing this happen on your Dell PC, it turns out the culprit is so much more ironic.</p><p>As spotted by <a href="https://www.neowin.net/news/dell-pcs-are-running-into-constant-bsod-reboot-loops-and-windows-11-isnt-the-culprit/" target="_blank">Neowin</a>, Dell’s own SupportAssist software (the company calls it “your personalized PC support experience”) is causing some Dell PCs to hit a BSOD every 30 minutes after a recent update. So far, we’re seeing confirmation that the following laptops are affected:</p><ul><li><a href="https://www.tomsguide.com/reviews/alienware-m16-r2">Alienware M16 R2</a></li><li>Dell Pro 16 Plus</li><li>Dell Pro 14 Plus</li><li>Dell XPS 16</li><li>Dell XPS 15</li><li><a href="https://www.tomsguide.com/computing/laptops/dell-xps-14-2026-review">Dell XPS 14</a></li><li>Dell XPS 13</li></ul><p>This is based on what Dell forum members are saying, but given it’s widespread, I wouldn’t be surprised if it’s a far wider problem than this. If you’re one of these folks who just installed the Dell software update and are seeing this issue, there is a simple fix.</p><h2 id="just-uninstall-supportassist">Just uninstall SupportAssist</h2><p>The situation was revealed after <a href="https://www.dell.com/community/en/conversations/supportassist-for-pcs/bsod-random-reboots-may-2026-dell-updates-dell-support-assist-probable-cause/6a017bde657052398888e805" target="_blank">keen-eyed users</a> took a look into the system log to see what was going on. It was identified after some people reported their laptops “kept randomly rebooting” roughly every 30 minutes. This suggests that the SupportAssist is trying to check system health on a regular half-hour schedule, where it hits a corrupted piece of code and crashes it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:901px;"><p class="vanilla-image-block" style="padding-top:96.56%;"><img id="z2DtRHZQEkvQ69BKk9FUsh" name="Dell System event checker" alt="Dell System event checker" src="https://cdn.mos.cms.futurecdn.net/z2DtRHZQEkvQ69BKk9FUsh.png" mos="" align="middle" fullscreen="" width="901" height="870" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dell)</span></figcaption></figure><p>As you can see, there’s a lot of critical errors at the Kernel-Power level — basically the system level — and after a check, the critical process that dies has consistently been the “Dell SupportAssist Remediation” service. Giving a “CRITICAL_PROCESS_DIED (0xEF)” code, it’s taking down the entire operating system with it.</p><p>And it’s not the first time this has happened, with a similar SupportAssist problem happening at the end of 2024. Luckily, just like the last time, the issue is simple. <strong>Go to Settings > Apps > Installed Apps, find Dell SupportAssist, select More > Uninstall.</strong></p><p>Users who have already done this are reporting that it fixes the issue and they’re not seeing any more random BSOD crashes.</p><h2 id="can-we-cool-it-with-the-bloatware">Can we cool it with the bloatware?</h2><p><a href="https://www.tomsguide.com/computing/macbooks/windows-fans-say-macbook-neos-8gb-ram-is-ridiculous-so-i-tested-it-and-the-results-are-shocking">Windows 11 already has a RAM problem</a>. It’s inherent to how the OS prioritizes preloading parts of apps into system memory before you click them, but what that means is all these little additions actually harm the experience rather than enrich it.</p><p>Things like Dell SupportAssist take up another chunk of that precious RAM that could be better used elsewhere on apps people actually use. And while the <a href="https://www.windowscentral.com/microsoft/windows-11/what-is-windows-k2-everything-you-need-to-know-saving-windows-11" target="_blank">Windows K2</a> project may be aiming squarely at tackling some of these challenges at an OS-level, I can only imagine that the additional bloatware won’t help the situation. </p><p>So I beg of you, Dell and others, please just let us have a clean install, so we don’t have to uninstall all the unnecessary heft!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/macbooks/i-can-finally-turn-my-macbook-pro-into-a-gaming-laptop-sort-of-gamehub-just-fixed-my-macs-biggest-weakness-in-minutes">I can finally turn my MacBook Pro into a gaming laptop (sort of) — GameHub just fixed my Mac’s biggest weakness in minutes</a></li><li><a href="https://www.tomsguide.com/computing/laptops/asus-zenbook-a14-a16-2026-review">I loved Asus’s Zenbook A14 and A16 — but a $200 price hike changes everything</a></li><li><a href="https://www.tomsguide.com/computing/macos/ai-is-changing-how-we-transcribe-and-this-might-be-the-best-example-of-it-on-mac-yet">AI is changing how we transcribe, and this might be the best example of it on Mac yet</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/dells-own-support-software-is-crashing-its-pcs-and-laptops-the-irony-is-strong-but-there-is-a-quick-fix</link>
                                                                            <description>
                            <![CDATA[ Dell’s SupportAssist software is causing constant BSOD crashes on XPS and Alienware laptops. After a buggy May 2026 update, users are seeing reboots every 30 minutes. Here is the simple fix to stop the crashes and reclaim your RAM. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">t8AJfgCayhiT8gQS8mbucQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/nhsTmywy9QLjWLsPZk7zAe-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 12 May 2026 10:47:15 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/nhsTmywy9QLjWLsPZk7zAe-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Dell XPS 14 (2026)]]></media:description>                                                            <media:text><![CDATA[Dell XPS 14 (2026)]]></media:text>
                                <media:title type="plain"><![CDATA[Dell XPS 14 (2026)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/nhsTmywy9QLjWLsPZk7zAe-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you’re a Windows 11 user, you’re already familiar with the Blue Screen of Death (BSOD) — popping up when a critical error forces the operating system to stop. Normally, the blame falls on Microsoft (although its team is working hard on improving Windows soon). But if you’ve been seeing this happen on your Dell PC, it turns out the culprit is so much more ironic.</p><p>As spotted by <a href="https://www.neowin.net/news/dell-pcs-are-running-into-constant-bsod-reboot-loops-and-windows-11-isnt-the-culprit/" target="_blank">Neowin</a>, Dell’s own SupportAssist software (the company calls it “your personalized PC support experience”) is causing some Dell PCs to hit a BSOD every 30 minutes after a recent update. So far, we’re seeing confirmation that the following laptops are affected:</p><ul><li><a href="https://www.tomsguide.com/reviews/alienware-m16-r2">Alienware M16 R2</a></li><li>Dell Pro 16 Plus</li><li>Dell Pro 14 Plus</li><li>Dell XPS 16</li><li>Dell XPS 15</li><li><a href="https://www.tomsguide.com/computing/laptops/dell-xps-14-2026-review">Dell XPS 14</a></li><li>Dell XPS 13</li></ul><p>This is based on what Dell forum members are saying, but given it’s widespread, I wouldn’t be surprised if it’s a far wider problem than this. If you’re one of these folks who just installed the Dell software update and are seeing this issue, there is a simple fix.</p><h2 id="just-uninstall-supportassist">Just uninstall SupportAssist</h2><p>The situation was revealed after <a href="https://www.dell.com/community/en/conversations/supportassist-for-pcs/bsod-random-reboots-may-2026-dell-updates-dell-support-assist-probable-cause/6a017bde657052398888e805" target="_blank">keen-eyed users</a> took a look into the system log to see what was going on. It was identified after some people reported their laptops “kept randomly rebooting” roughly every 30 minutes. This suggests that the SupportAssist is trying to check system health on a regular half-hour schedule, where it hits a corrupted piece of code and crashes it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:901px;"><p class="vanilla-image-block" style="padding-top:96.56%;"><img id="z2DtRHZQEkvQ69BKk9FUsh" name="Dell System event checker" alt="Dell System event checker" src="https://cdn.mos.cms.futurecdn.net/z2DtRHZQEkvQ69BKk9FUsh.png" mos="" align="middle" fullscreen="" width="901" height="870" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dell)</span></figcaption></figure><p>As you can see, there’s a lot of critical errors at the Kernel-Power level — basically the system level — and after a check, the critical process that dies has consistently been the “Dell SupportAssist Remediation” service. Giving a “CRITICAL_PROCESS_DIED (0xEF)” code, it’s taking down the entire operating system with it.</p><p>And it’s not the first time this has happened, with a similar SupportAssist problem happening at the end of 2024. Luckily, just like the last time, the issue is simple. <strong>Go to Settings > Apps > Installed Apps, find Dell SupportAssist, select More > Uninstall.</strong></p><p>Users who have already done this are reporting that it fixes the issue and they’re not seeing any more random BSOD crashes.</p><h2 id="can-we-cool-it-with-the-bloatware">Can we cool it with the bloatware?</h2><p><a href="https://www.tomsguide.com/computing/macbooks/windows-fans-say-macbook-neos-8gb-ram-is-ridiculous-so-i-tested-it-and-the-results-are-shocking">Windows 11 already has a RAM problem</a>. It’s inherent to how the OS prioritizes preloading parts of apps into system memory before you click them, but what that means is all these little additions actually harm the experience rather than enrich it.</p><p>Things like Dell SupportAssist take up another chunk of that precious RAM that could be better used elsewhere on apps people actually use. And while the <a href="https://www.windowscentral.com/microsoft/windows-11/what-is-windows-k2-everything-you-need-to-know-saving-windows-11" target="_blank">Windows K2</a> project may be aiming squarely at tackling some of these challenges at an OS-level, I can only imagine that the additional bloatware won’t help the situation. </p><p>So I beg of you, Dell and others, please just let us have a clean install, so we don’t have to uninstall all the unnecessary heft!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/macbooks/i-can-finally-turn-my-macbook-pro-into-a-gaming-laptop-sort-of-gamehub-just-fixed-my-macs-biggest-weakness-in-minutes">I can finally turn my MacBook Pro into a gaming laptop (sort of) — GameHub just fixed my Mac’s biggest weakness in minutes</a></li><li><a href="https://www.tomsguide.com/computing/laptops/asus-zenbook-a14-a16-2026-review">I loved Asus’s Zenbook A14 and A16 — but a $200 price hike changes everything</a></li><li><a href="https://www.tomsguide.com/computing/macos/ai-is-changing-how-we-transcribe-and-this-might-be-the-best-example-of-it-on-mac-yet">AI is changing how we transcribe, and this might be the best example of it on Mac yet</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ AI is changing how we transcribe, and this might be the best example of it on Mac yet ]]></title>
                                                                                                <dc:content><![CDATA[ <p>For all the things I (and many others) are wary about in the <a href="https://www.tomsguide.com/uk/ai">AI future</a>, there are certainly some obvious uses for the technology.</p><p>Running huge calculations in a fraction of the time, translating text, and other “donkey work” is what it should be used for, rather than an excuse to overwrite humankind’s propensity for creativity.</p><p>As a writer, one of the most frustrating parts of interviews has long been transcribing voice to text. It’s got much better in recent years, but it’s often required expensive, sometimes demanding software tools.</p><p>I stumbled upon <a href="https://www.typewhisper.com/en/" target="_blank" rel="nofollow">TypeWhisper</a>, and it’s a fantastic AI tool for transcription - and it runs locally.</p><h2 id="talking-to-myself">Talking to myself</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TYWj6m5egvgdri6hJeUAXH" name="Dictionary" alt="TypeWhisper App macOS" src="https://cdn.mos.cms.futurecdn.net/TYWj6m5egvgdri6hJeUAXH.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TypeWhisper)</span></figcaption></figure><p>TypeWhisper is free to use for non-commercial purposes, but you can pay for additional models. I’ve been testing the app with the WhisperKit LLM, installed locally on my MacBook Air.</p><p>This means there are multiple sizes to choose from, and I’ve settled on the Large v3 model at 1.5GB - but some models are as small as 40MB.</p><p>Out of the box, though, it’s pretty fantastic. I use a hotkey (tied to <a href="https://www.tomsguide.com/computing/i-found-the-ultimate-mac-productivity-hack-and-its-completely-free" target="_blank" rel="nofollow">HyperKey</a>, which I wrote about recently) to trigger voice-to-text, and that allows me to speak and see live transcription at the top of my screen within the Mac’s ‘notch’ - almost like an iPhone’s Dynamic Island.</p><p>In my testing, I’ve found it’s a great way to get ideas down so I can copy them into my writing app of choice (usually Drafts or Google Docs). It’s not perfect, but when pointing it at an American Dad episode playing in the room, it did a great job of transcribing its absurdist humor to text.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nVGGu39RShBNWKT7bDc4RH" name="Header" alt="TypeWhisper App macOS" src="https://cdn.mos.cms.futurecdn.net/nVGGu39RShBNWKT7bDc4RH.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TypeWhisper)</span></figcaption></figure><p>I can add phrases to the dictionary so that “Eggs Box” becomes “Xbox” more consistently, and more besides.</p><h2 id="you-talking-to-me">You talking to me?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s2hB2B4GowHRLWobX25BWH" name="Workflows" alt="TypeWhisper App macOS" src="https://cdn.mos.cms.futurecdn.net/s2hB2B4GowHRLWobX25BWH.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TypeWhisper)</span></figcaption></figure><p>That brings us to the real draw, though - file transcription. The majority of interviews I’ve conducted are recorded on messaging platforms and sent over as audio or video files.</p><p>What once involved slowly working through with headphones on now needs to be dragged, dropped, and transcribed by TypeWhisper. Naturally, larger models will have more consistent results (particularly if you’re plugging in cloud models like Chat-GPT), but in wanting to keep my environmental footprint to a minimum, I’ve been very pleased with the local model. It can even export to subtitle files with timestamps - ideal for content creation.</p><p>There’s a Workflow function to take transcriptions and run automations on them, like dropping them into a specific application.</p><p>All in all, what began as a curiosity in my own workflows has become something I can see myself using more and more often.</p><p>TypeWhisper is stable in macOS right now, and it’s in beta for Windows and alpha for iOS.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/software/i-ditched-apple-mail-for-this-game-changing-app-and-im-not-going-back">I ditched Apple Mail for this game-changing app and I’m not going back</a></li><li><a href="https://www.tomsguide.com/computing/i-found-the-ultimate-mac-productivity-hack-and-its-completely-free">I found the ultimate Mac productivity hack and it's completely free</a></li><li><a href="https://www.tomsguide.com/computing/this-mac-app-made-me-realize-how-easily-distracted-i-am-and-helped-me-combat-it">I tried the Monocle app for Mac and it completely changed how I handle digital distractions</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/ai-is-changing-how-we-transcribe-and-this-might-be-the-best-example-of-it-on-mac-yet</link>
                                                                            <description>
                            <![CDATA[ TypeWhisper is a local AI model that’s ideal for transcription and runs right on your Mac. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BY2XRj8gAFJRF4zW4vzbzB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SupVSbx9xbZoDmUN6ncjUj-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 11 May 2026 11:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Lloyd Coombes ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xcWocVTwa9yiwXRs559XNA.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lloyd Coombes is a freelance tech and fitness writer. He&#039;s an expert in all things Apple as well as in computer and gaming tech, with previous works published on TechRadar, Tom&#039;s Guide, Live Science and more. You&#039;ll find him regularly testing the latest MacBook or iPhone, but he spends most of his time writing about video games as Gaming Editor for the Daily Star. He also covers board games and virtual reality, just to round out the nerdy pursuits.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/SupVSbx9xbZoDmUN6ncjUj-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[How to check Macbook battery health]]></media:description>                                                            <media:text><![CDATA[How to check Macbook battery health]]></media:text>
                                <media:title type="plain"><![CDATA[How to check Macbook battery health]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SupVSbx9xbZoDmUN6ncjUj-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>For all the things I (and many others) are wary about in the <a href="https://www.tomsguide.com/uk/ai">AI future</a>, there are certainly some obvious uses for the technology.</p><p>Running huge calculations in a fraction of the time, translating text, and other “donkey work” is what it should be used for, rather than an excuse to overwrite humankind’s propensity for creativity.</p><p>As a writer, one of the most frustrating parts of interviews has long been transcribing voice to text. It’s got much better in recent years, but it’s often required expensive, sometimes demanding software tools.</p><p>I stumbled upon <a href="https://www.typewhisper.com/en/" target="_blank" rel="nofollow">TypeWhisper</a>, and it’s a fantastic AI tool for transcription - and it runs locally.</p><h2 id="talking-to-myself">Talking to myself</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TYWj6m5egvgdri6hJeUAXH" name="Dictionary" alt="TypeWhisper App macOS" src="https://cdn.mos.cms.futurecdn.net/TYWj6m5egvgdri6hJeUAXH.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TypeWhisper)</span></figcaption></figure><p>TypeWhisper is free to use for non-commercial purposes, but you can pay for additional models. I’ve been testing the app with the WhisperKit LLM, installed locally on my MacBook Air.</p><p>This means there are multiple sizes to choose from, and I’ve settled on the Large v3 model at 1.5GB - but some models are as small as 40MB.</p><p>Out of the box, though, it’s pretty fantastic. I use a hotkey (tied to <a href="https://www.tomsguide.com/computing/i-found-the-ultimate-mac-productivity-hack-and-its-completely-free" target="_blank" rel="nofollow">HyperKey</a>, which I wrote about recently) to trigger voice-to-text, and that allows me to speak and see live transcription at the top of my screen within the Mac’s ‘notch’ - almost like an iPhone’s Dynamic Island.</p><p>In my testing, I’ve found it’s a great way to get ideas down so I can copy them into my writing app of choice (usually Drafts or Google Docs). It’s not perfect, but when pointing it at an American Dad episode playing in the room, it did a great job of transcribing its absurdist humor to text.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nVGGu39RShBNWKT7bDc4RH" name="Header" alt="TypeWhisper App macOS" src="https://cdn.mos.cms.futurecdn.net/nVGGu39RShBNWKT7bDc4RH.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TypeWhisper)</span></figcaption></figure><p>I can add phrases to the dictionary so that “Eggs Box” becomes “Xbox” more consistently, and more besides.</p><h2 id="you-talking-to-me">You talking to me?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s2hB2B4GowHRLWobX25BWH" name="Workflows" alt="TypeWhisper App macOS" src="https://cdn.mos.cms.futurecdn.net/s2hB2B4GowHRLWobX25BWH.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TypeWhisper)</span></figcaption></figure><p>That brings us to the real draw, though - file transcription. The majority of interviews I’ve conducted are recorded on messaging platforms and sent over as audio or video files.</p><p>What once involved slowly working through with headphones on now needs to be dragged, dropped, and transcribed by TypeWhisper. Naturally, larger models will have more consistent results (particularly if you’re plugging in cloud models like Chat-GPT), but in wanting to keep my environmental footprint to a minimum, I’ve been very pleased with the local model. It can even export to subtitle files with timestamps - ideal for content creation.</p><p>There’s a Workflow function to take transcriptions and run automations on them, like dropping them into a specific application.</p><p>All in all, what began as a curiosity in my own workflows has become something I can see myself using more and more often.</p><p>TypeWhisper is stable in macOS right now, and it’s in beta for Windows and alpha for iOS.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/software/i-ditched-apple-mail-for-this-game-changing-app-and-im-not-going-back">I ditched Apple Mail for this game-changing app and I’m not going back</a></li><li><a href="https://www.tomsguide.com/computing/i-found-the-ultimate-mac-productivity-hack-and-its-completely-free">I found the ultimate Mac productivity hack and it's completely free</a></li><li><a href="https://www.tomsguide.com/computing/this-mac-app-made-me-realize-how-easily-distracted-i-am-and-helped-me-combat-it">I tried the Monocle app for Mac and it completely changed how I handle digital distractions</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ macOS 27 set to launch with three huge new features — and no, Apple’s not killing Liquid Glass at WWDC 2026 ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/phones/iphones/wwdc-2026">WWDC 2026</a> is just around the corner, and so is macOS 27. Will Apple get rid of Liquid Glass? No, but according to the latest <a href="https://www.bloomberg.com/news/newsletters/2026-05-10/apple-plans-macos-27-design-changes-latest-on-ios-27-visionos-safari-wwdc-26-mozuaz9m" target="_blank">Mark Gurman report</a>, the company looks set to address some of the key frustrations about it — all while adding some nifty new features and optimizations to the OS too.</p><p>With it being quite the make-or-break year for Apple’s AI ambitions, Safari looks set to get awesome new tech to automate tab grouping (alongside the revamped Gemini-infused Siri), and there is even talk about prepping the desktop OS for touch.</p><h2 id="a-slight-redesign-to-tackle-liquid-glass-problems">A ‘slight redesign’ to tackle Liquid Glass problems</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aBR3HP2VVMPQteUEbMehfF" name="WWDC 2025 — June 9 _ Apple 58-49 screenshot" alt="Clear Command Center" src="https://cdn.mos.cms.futurecdn.net/aBR3HP2VVMPQteUEbMehfF.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>In his newsletter, Gurman has reported that a “slight redesign” is coming to help address the readability problems that Liquid Glass has caused — namely the “shadows and transparency quirks.”</p><p>It’s been one of my biggest pet peeves with macOS over the past few months, but also one I’ve been conflicted about because I do actually like the transparency of Liquid Glass giving me subtle context clues of where my windows are. So if we could get better text visibility, improved scroll bar placement and less shadow effects taking over the screen, that would be a damn good place to start.</p><h2 id="thoughtful-ai-usage-in-safari">Thoughtful AI usage in Safari</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Gvdmm9HZT4DwWH6WPi4FW8" name="TG-safari-iphone-shutterstock.jpg" alt="An image of an iPhone screen showing the Safari app icon in the center" src="https://cdn.mos.cms.futurecdn.net/Gvdmm9HZT4DwWH6WPi4FW8.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Same as what Gurman has been told about test versions of iOS 27, a new “Organize Tabs” button is set to be added to Safari for AI-infused automatic tab grouping in Apple’s Safari.</p><p>Taking the manual process out of figuring out all your browser tabs (and catching up with other browsers that have been doing this for a while), Apple is dealing with the groups for you and “you can choose whether you want the grouping to occur automatically or not.”</p><h2 id="touch-ready-for-macbook-ultra">Touch-ready for MacBook Ultra</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wEVUQu4Nkt57ntu3kiC4eS" name="ALogic Aspekt Touch-2" alt="Browsing the web on the ALogic Aspekt Touch 32-inch touchscreen monitor connected to a Mac mini" src="https://cdn.mos.cms.futurecdn.net/wEVUQu4Nkt57ntu3kiC4eS.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>This is the big question mark. All rumors are pointing to a touchscreen <a href="https://www.tomsguide.com/computing/laptops/macbook-ultra-everything-we-know-so-far">MacBook Ultra</a> launching later this year — it’s gotten us so excited that we got impatient and <a href="https://www.tomsguide.com/computing/i-got-tired-of-waiting-for-a-touchscreen-imac-so-i-made-one-myself-heres-how-i-did-it">created our own touch iMac</a>. </p><p>So it stands to reason that with new hardware, the software needs to catch up. macOS may look rather touch-friendly with its iOS stylings, but it’s certainly a bit awkward to use in this way. In another <a href="https://www.bloomberg.com/news/articles/2026-02-24/apple-s-touch-screen-macbook-pro-to-have-dynamic-island-new-interface" target="_blank">Gurman report</a>, it sounds like this is finally the year where we’ll see it happen.</p><p>However, don’t expect it to be out in the wild for you to test in betas. Given it’s potentially connected to new devices, you can expect the Cupertino Crew to keep this one hidden until the Ultra reportedly breaks cover towards the end of this year/beginning of next year.</p><h2 id="this-needs-to-be-a-snow-leopard-moment">This needs to be a ‘Snow Leopard’ moment</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aeAsuGHPsdeNftt767USaK" name="MacBook Pro M5--01-LIST" alt="MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/aeAsuGHPsdeNftt767USaK.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Remember Snow Leopard? This came after a particularly massive feature-rich version of macOS Leopard — bringing a lot of stuff to the table while introducing some bloat to say the least.</p><p>Snow Leopard is easily my favorite version of the OS that Apple has ever launched because it focused simply on everything under the hood. It was a night-and-day difference in speeds and feeds, and everything just felt much more “put together.” </p><p>And it’s this feeling that I’ll be looking for in macOS 27. An improved Siri looks ready to potentially bring some agentic capabilities, Liquid Glass needs a tune-up, and while macOS is in a much more power-optimized place now with Apple Silicon, there are still plenty of stability improvements to be made.</p><p>If we get this version of Craig Federighi (and his magnificent hair) on stage in June, then you’ll know Apple’s been cooking.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/android-phones/honor-600-hands-on-review">I’m an iPhone stan, but the Honor 600 is making me seriously consider switching — here’s why</a></li><li><a href="https://www.tomsguide.com/best-picks/best-macbook">Which MacBook should you buy in 2026? I ranked the 5 best Apple laptops for every need</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/i-can-finally-turn-my-macbook-pro-into-a-gaming-laptop-sort-of-gamehub-just-fixed-my-macs-biggest-weakness-in-minutes">I can finally turn my MacBook Pro into a gaming laptop (sort of) — GameHub just fixed my Mac’s biggest weakness in minutes</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/macos/macos-27-set-to-launch-with-three-huge-new-features-and-no-apples-not-killing-liquid-glass-at-wwdc-2026</link>
                                                                            <description>
                            <![CDATA[ macOS 27 is set to be unveiled at WWDC 2026, and rumors are pointing to a "Snow Leopard" focus on stability, a crucial Liquid Glass redesign and an AI-powered Safari. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">gHqDHX3yT5jv2NvJSuVugJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9WewLFGGuEX6mfwAKBrohk-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 11 May 2026 08:23:08 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[macOS]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/9WewLFGGuEX6mfwAKBrohk-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[MacBook Neo open on a desk]]></media:description>                                                            <media:text><![CDATA[MacBook Neo open on a desk]]></media:text>
                                <media:title type="plain"><![CDATA[MacBook Neo open on a desk]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9WewLFGGuEX6mfwAKBrohk-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/phones/iphones/wwdc-2026">WWDC 2026</a> is just around the corner, and so is macOS 27. Will Apple get rid of Liquid Glass? No, but according to the latest <a href="https://www.bloomberg.com/news/newsletters/2026-05-10/apple-plans-macos-27-design-changes-latest-on-ios-27-visionos-safari-wwdc-26-mozuaz9m" target="_blank">Mark Gurman report</a>, the company looks set to address some of the key frustrations about it — all while adding some nifty new features and optimizations to the OS too.</p><p>With it being quite the make-or-break year for Apple’s AI ambitions, Safari looks set to get awesome new tech to automate tab grouping (alongside the revamped Gemini-infused Siri), and there is even talk about prepping the desktop OS for touch.</p><h2 id="a-slight-redesign-to-tackle-liquid-glass-problems">A ‘slight redesign’ to tackle Liquid Glass problems</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aBR3HP2VVMPQteUEbMehfF" name="WWDC 2025 — June 9 _ Apple 58-49 screenshot" alt="Clear Command Center" src="https://cdn.mos.cms.futurecdn.net/aBR3HP2VVMPQteUEbMehfF.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>In his newsletter, Gurman has reported that a “slight redesign” is coming to help address the readability problems that Liquid Glass has caused — namely the “shadows and transparency quirks.”</p><p>It’s been one of my biggest pet peeves with macOS over the past few months, but also one I’ve been conflicted about because I do actually like the transparency of Liquid Glass giving me subtle context clues of where my windows are. So if we could get better text visibility, improved scroll bar placement and less shadow effects taking over the screen, that would be a damn good place to start.</p><h2 id="thoughtful-ai-usage-in-safari">Thoughtful AI usage in Safari</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Gvdmm9HZT4DwWH6WPi4FW8" name="TG-safari-iphone-shutterstock.jpg" alt="An image of an iPhone screen showing the Safari app icon in the center" src="https://cdn.mos.cms.futurecdn.net/Gvdmm9HZT4DwWH6WPi4FW8.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Same as what Gurman has been told about test versions of iOS 27, a new “Organize Tabs” button is set to be added to Safari for AI-infused automatic tab grouping in Apple’s Safari.</p><p>Taking the manual process out of figuring out all your browser tabs (and catching up with other browsers that have been doing this for a while), Apple is dealing with the groups for you and “you can choose whether you want the grouping to occur automatically or not.”</p><h2 id="touch-ready-for-macbook-ultra">Touch-ready for MacBook Ultra</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wEVUQu4Nkt57ntu3kiC4eS" name="ALogic Aspekt Touch-2" alt="Browsing the web on the ALogic Aspekt Touch 32-inch touchscreen monitor connected to a Mac mini" src="https://cdn.mos.cms.futurecdn.net/wEVUQu4Nkt57ntu3kiC4eS.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>This is the big question mark. All rumors are pointing to a touchscreen <a href="https://www.tomsguide.com/computing/laptops/macbook-ultra-everything-we-know-so-far">MacBook Ultra</a> launching later this year — it’s gotten us so excited that we got impatient and <a href="https://www.tomsguide.com/computing/i-got-tired-of-waiting-for-a-touchscreen-imac-so-i-made-one-myself-heres-how-i-did-it">created our own touch iMac</a>. </p><p>So it stands to reason that with new hardware, the software needs to catch up. macOS may look rather touch-friendly with its iOS stylings, but it’s certainly a bit awkward to use in this way. In another <a href="https://www.bloomberg.com/news/articles/2026-02-24/apple-s-touch-screen-macbook-pro-to-have-dynamic-island-new-interface" target="_blank">Gurman report</a>, it sounds like this is finally the year where we’ll see it happen.</p><p>However, don’t expect it to be out in the wild for you to test in betas. Given it’s potentially connected to new devices, you can expect the Cupertino Crew to keep this one hidden until the Ultra reportedly breaks cover towards the end of this year/beginning of next year.</p><h2 id="this-needs-to-be-a-snow-leopard-moment">This needs to be a ‘Snow Leopard’ moment</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aeAsuGHPsdeNftt767USaK" name="MacBook Pro M5--01-LIST" alt="MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/aeAsuGHPsdeNftt767USaK.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Remember Snow Leopard? This came after a particularly massive feature-rich version of macOS Leopard — bringing a lot of stuff to the table while introducing some bloat to say the least.</p><p>Snow Leopard is easily my favorite version of the OS that Apple has ever launched because it focused simply on everything under the hood. It was a night-and-day difference in speeds and feeds, and everything just felt much more “put together.” </p><p>And it’s this feeling that I’ll be looking for in macOS 27. An improved Siri looks ready to potentially bring some agentic capabilities, Liquid Glass needs a tune-up, and while macOS is in a much more power-optimized place now with Apple Silicon, there are still plenty of stability improvements to be made.</p><p>If we get this version of Craig Federighi (and his magnificent hair) on stage in June, then you’ll know Apple’s been cooking.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/phones/android-phones/honor-600-hands-on-review">I’m an iPhone stan, but the Honor 600 is making me seriously consider switching — here’s why</a></li><li><a href="https://www.tomsguide.com/best-picks/best-macbook">Which MacBook should you buy in 2026? I ranked the 5 best Apple laptops for every need</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/i-can-finally-turn-my-macbook-pro-into-a-gaming-laptop-sort-of-gamehub-just-fixed-my-macs-biggest-weakness-in-minutes">I can finally turn my MacBook Pro into a gaming laptop (sort of) — GameHub just fixed my Mac’s biggest weakness in minutes</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Software feeling buggy lately? It’s not your device — it might be AI 'Slop' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Over the past few weeks, I’ve noticed something strange. My apps are freezing mid-scroll, features quietly breaking after updates or my phone just needs to be entirely shut down. The tools I rely on every day suddenly feel broken or need to be rebooted more often. <br><br>If you've noticed this too and if you've been paying attention to the news lately, you know exactly what I mean. Just days ago, a routine <a href="https://www.tomsguide.com/computing/microsoft-needed-a-win-with-windows-latest-update-but-even-its-fix-needed-fixing">Windows 11 update broke the Remote Desktop </a>feature for anyone using multiple monitors with different scaling, a bizarre UI glitch that resulted in overlapping text and hidden buttons. Worse, that same April update was linked to sudden boot loops on Dell and HP laptops.</p><p>Then there was the massive global <a href="https://www.tomsguide.com/news/live/outlook-down-live-outage-updates-4-27">Microsoft Outlook outage</a> at the end of April. As millions of users were locked out of their emails, Microsoft pushed a fix, only to publicly admit a few hours later that the fix "did not appear to have provided the intended relief," and they were still trying to find the source of the errors.<br><br>I've also noticed that just before or after a major model update, chatbots go down. Earlier this week, <a href="https://www.tomsguide.com/ai/live/claude-april-28-2026">Claude was down</a> after some<a href="https://www.tomsguide.com/ai/claude-now-connects-to-more-everyday-apps-heres-what-you-can-do-now"> feature updates</a>. </p><p>Is AI to blame? Well, there's a growing theory, that has been covered by the <a href="https://www.nytimes.com/2026/04/06/technology/ai-code-overload.html" target="_blank">New York Times</a> and in <a href="https://arxiv.org/html/2512.05239v1" target="_blank">studies</a>, that while AI is helping build software faster, it's the very thing making it more fragile. </p><h2 id="the-speed-boom-no-one-is-questioning">The speed boom no one is questioning</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QWK2Lmd9N6RQDaJqAj2w3n" name="GettyImages-1189144531E.jpg" alt="Programmers and developer teams are coding and developing software" src="https://cdn.mos.cms.futurecdn.net/QWK2Lmd9N6RQDaJqAj2w3n.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>I recently read an <a href="https://mariozechner.at/posts/2026-03-25-thoughts-on-slowing-the-fuck-down/" target="_blank">article </a>by developer Mario Zechner that helps to put all of this into perspective. Essentially, AI coding tools like <a href="https://www.tomsguide.com/news/chatgpt">ChatGPT</a> and <a href="https://www.tomsguide.com/ai/what-is-claude-everything-you-need-to-know-about-anthropics-ai-powerhouse">Claude</a> have completely changed how software gets built, making the process faster than ever.</p><p>Developers can now generate entire functions in seconds, ship updates faster than ever and automate large chunks of their workflow. In many ways, it’s a breakthrough because what used to take hours or days, now can happen almost instantly. But speed comes with a tradeoff, and we're starting to feel it. </p><h2 id="faster-code-weaker-understanding">Faster code, weaker understanding</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vWcbsx37FX4zaxqDgA3RND" name="shutterstock_2496872487-16x9" alt="Person coding on computer" src="https://cdn.mos.cms.futurecdn.net/vWcbsx37FX4zaxqDgA3RND.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>The problem is, AI is replacing human intelligence for speed. AI writes the code and developers don’t always fully understand it. That’s not a knock on developers, it's the nature of the output.</p><p>AI can easily produce code that looks correct and introduce subtle bugs that are hard to trace. It can also generate logic that technically works, but isn’t well structured. So, multiply that across thousands of updates, and small issues start stacking up. The result is software that works, but not very well, then ultimately breaks. </p><h2 id="the-rise-of-slop-software">The rise of “slop” software</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iJKvacosvMoCwbKjwcVGbP" name="hacker computer.jpg" alt="A hand typing at a computer in a dark room, lit up by the laptop's keyboard LEDs and red LED light" src="https://cdn.mos.cms.futurecdn.net/iJKvacosvMoCwbKjwcVGbP.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>Instead of big, obvious failures, we’re seeing something random glitches, inconsistent behavior, features that break after unrelated updates. Sure, these aren't catastrophic, but I don't know about you, but I like my software to be reliable. </p><p>That's why some developers have started calling this "slop." Essentially code that is generated so fast by AI agents that it becomes a bloated, tangled mess. It holds together on the surface, but cracks under pressure.</p><p>And if you’ve caught yourself thinking, “Why is this app suddenly so weird?” well, this might just be the new norm. The reason this is happening now is because we're seeing how AI changes behavior. When building software becomes faster, more code gets shipped and less time is spent reviewing it. Fewer bottlenecks slow things down. </p><p>In the past, human exhaustion acted as a natural speed limit for bugs. We get tired, we sleep and we learn not to make the same mistake twice. But the mistakes AI makes are compounding at lightning speed. Bottlenecks used to be a form of quality filter, but that friction is disappearing along with the oversight. </p><h2 id="bottom-line-3">Bottom line </h2><p>I’ve spent a lot of time using AI to speed up my own work, and I've felt this firsthand. And the faster I move, I've noticed it's easier to accept an answer without fully checking it or move on before fully understand it. Building on top of something slightly flawed is also more possible than ever. Speed isn't the real advantage all the time and we're seeing that. </p><p>But to be clear, this doesn't mean AI is bad for software. Far from it. It means we’re in a transition phase and the industry is still figuring out how to maintain quality without the traditional human bottleneck.</p><p>What do you think? Have you seen more glitches lately? Let me know what you think in the comments. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/i-used-naval-ravikants-leverage-rule-with-chatgpt-agents-and-it-cut-my-workload-in-half">I used Naval Ravikant’s 'Leverage' rule with ChatGPT agents — and it cut my workload in half</a></li><li><a href="https://www.tomsguide.com/ai/7-0-wipeout-i-put-chatgpt-5-5-and-claude-4-7-through-7-impossible-tests-and-the-results-shocked-me" target="_blank">7-0 wipeout: I put ChatGPT-5.5 vs Claude 4.7 through 7 impossible tests — and the results shocked me</a></li><li><a href="https://www.tomsguide.com/ai/study-ai-might-take-your-partner-before-it-takes-your-job">Study: AI might take your partner before it takes your job</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/software-feeling-buggy-lately-its-not-your-device-it-might-be-ai-slop</link>
                                                                            <description>
                            <![CDATA[ Software bugs are rising fast — and the AI coding boom may be the reason. Here’s why your favorite apps suddenly feel more glitchy. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Eu48TBpfdaQb6wzmbYcdT9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/b2mMG8DYGUpuM8cJD78UiG-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 02 May 2026 11:24:17 +0000</pubDate>                                                                                                                                <updated>Thu, 14 May 2026 21:59:24 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                                                                <author><![CDATA[ amanda.caswell@futurenet.com (Amanda Caswell) ]]></author>                    <dc:creator><![CDATA[ Amanda Caswell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/zYjevim2q7FjQiefqpjZRB.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/b2mMG8DYGUpuM8cJD78UiG-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[main using iPhone ]]></media:description>                                                            <media:text><![CDATA[main using iPhone ]]></media:text>
                                <media:title type="plain"><![CDATA[main using iPhone ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/b2mMG8DYGUpuM8cJD78UiG-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Over the past few weeks, I’ve noticed something strange. My apps are freezing mid-scroll, features quietly breaking after updates or my phone just needs to be entirely shut down. The tools I rely on every day suddenly feel broken or need to be rebooted more often. <br><br>If you've noticed this too and if you've been paying attention to the news lately, you know exactly what I mean. Just days ago, a routine <a href="https://www.tomsguide.com/computing/microsoft-needed-a-win-with-windows-latest-update-but-even-its-fix-needed-fixing">Windows 11 update broke the Remote Desktop </a>feature for anyone using multiple monitors with different scaling, a bizarre UI glitch that resulted in overlapping text and hidden buttons. Worse, that same April update was linked to sudden boot loops on Dell and HP laptops.</p><p>Then there was the massive global <a href="https://www.tomsguide.com/news/live/outlook-down-live-outage-updates-4-27">Microsoft Outlook outage</a> at the end of April. As millions of users were locked out of their emails, Microsoft pushed a fix, only to publicly admit a few hours later that the fix "did not appear to have provided the intended relief," and they were still trying to find the source of the errors.<br><br>I've also noticed that just before or after a major model update, chatbots go down. Earlier this week, <a href="https://www.tomsguide.com/ai/live/claude-april-28-2026">Claude was down</a> after some<a href="https://www.tomsguide.com/ai/claude-now-connects-to-more-everyday-apps-heres-what-you-can-do-now"> feature updates</a>. </p><p>Is AI to blame? Well, there's a growing theory, that has been covered by the <a href="https://www.nytimes.com/2026/04/06/technology/ai-code-overload.html" target="_blank">New York Times</a> and in <a href="https://arxiv.org/html/2512.05239v1" target="_blank">studies</a>, that while AI is helping build software faster, it's the very thing making it more fragile. </p><h2 id="the-speed-boom-no-one-is-questioning">The speed boom no one is questioning</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QWK2Lmd9N6RQDaJqAj2w3n" name="GettyImages-1189144531E.jpg" alt="Programmers and developer teams are coding and developing software" src="https://cdn.mos.cms.futurecdn.net/QWK2Lmd9N6RQDaJqAj2w3n.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>I recently read an <a href="https://mariozechner.at/posts/2026-03-25-thoughts-on-slowing-the-fuck-down/" target="_blank">article </a>by developer Mario Zechner that helps to put all of this into perspective. Essentially, AI coding tools like <a href="https://www.tomsguide.com/news/chatgpt">ChatGPT</a> and <a href="https://www.tomsguide.com/ai/what-is-claude-everything-you-need-to-know-about-anthropics-ai-powerhouse">Claude</a> have completely changed how software gets built, making the process faster than ever.</p><p>Developers can now generate entire functions in seconds, ship updates faster than ever and automate large chunks of their workflow. In many ways, it’s a breakthrough because what used to take hours or days, now can happen almost instantly. But speed comes with a tradeoff, and we're starting to feel it. </p><h2 id="faster-code-weaker-understanding">Faster code, weaker understanding</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vWcbsx37FX4zaxqDgA3RND" name="shutterstock_2496872487-16x9" alt="Person coding on computer" src="https://cdn.mos.cms.futurecdn.net/vWcbsx37FX4zaxqDgA3RND.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>The problem is, AI is replacing human intelligence for speed. AI writes the code and developers don’t always fully understand it. That’s not a knock on developers, it's the nature of the output.</p><p>AI can easily produce code that looks correct and introduce subtle bugs that are hard to trace. It can also generate logic that technically works, but isn’t well structured. So, multiply that across thousands of updates, and small issues start stacking up. The result is software that works, but not very well, then ultimately breaks. </p><h2 id="the-rise-of-slop-software">The rise of “slop” software</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iJKvacosvMoCwbKjwcVGbP" name="hacker computer.jpg" alt="A hand typing at a computer in a dark room, lit up by the laptop's keyboard LEDs and red LED light" src="https://cdn.mos.cms.futurecdn.net/iJKvacosvMoCwbKjwcVGbP.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>Instead of big, obvious failures, we’re seeing something random glitches, inconsistent behavior, features that break after unrelated updates. Sure, these aren't catastrophic, but I don't know about you, but I like my software to be reliable. </p><p>That's why some developers have started calling this "slop." Essentially code that is generated so fast by AI agents that it becomes a bloated, tangled mess. It holds together on the surface, but cracks under pressure.</p><p>And if you’ve caught yourself thinking, “Why is this app suddenly so weird?” well, this might just be the new norm. The reason this is happening now is because we're seeing how AI changes behavior. When building software becomes faster, more code gets shipped and less time is spent reviewing it. Fewer bottlenecks slow things down. </p><p>In the past, human exhaustion acted as a natural speed limit for bugs. We get tired, we sleep and we learn not to make the same mistake twice. But the mistakes AI makes are compounding at lightning speed. Bottlenecks used to be a form of quality filter, but that friction is disappearing along with the oversight. </p><h2 id="bottom-line-3">Bottom line </h2><p>I’ve spent a lot of time using AI to speed up my own work, and I've felt this firsthand. And the faster I move, I've noticed it's easier to accept an answer without fully checking it or move on before fully understand it. Building on top of something slightly flawed is also more possible than ever. Speed isn't the real advantage all the time and we're seeing that. </p><p>But to be clear, this doesn't mean AI is bad for software. Far from it. It means we’re in a transition phase and the industry is still figuring out how to maintain quality without the traditional human bottleneck.</p><p>What do you think? Have you seen more glitches lately? Let me know what you think in the comments. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/i-used-naval-ravikants-leverage-rule-with-chatgpt-agents-and-it-cut-my-workload-in-half">I used Naval Ravikant’s 'Leverage' rule with ChatGPT agents — and it cut my workload in half</a></li><li><a href="https://www.tomsguide.com/ai/7-0-wipeout-i-put-chatgpt-5-5-and-claude-4-7-through-7-impossible-tests-and-the-results-shocked-me" target="_blank">7-0 wipeout: I put ChatGPT-5.5 vs Claude 4.7 through 7 impossible tests — and the results shocked me</a></li><li><a href="https://www.tomsguide.com/ai/study-ai-might-take-your-partner-before-it-takes-your-job">Study: AI might take your partner before it takes your job</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Outlook is down — the latest on the ongoing Microsoft outage ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="live-content"><p>Microsoft's email and work platform, Outlook, has been down for more than 10 hours. Reports on  <a href="https://downdetector.com/status/outlook/" target="_blank">Downdetector</a> started slowly rising around 5 am Eastern with a peak of around 1,500 reports. </p><p>Unlike most outages it's not explosive with thousands of people reporting issues all at once. Instead, there has been a steady hill of reports that won't go away throughout the day. </p><p>Microsoft's <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">official status page</a> shows "Service degradation" for consumer products, which would explain why things aren't working as expected. It has acknowledged that it's working on the problem, but it hasn't provided a timeframe for things to come back to normal.</p><p>At various points today, Microsoft blamed the issue on Copilot, traffic loads and an update that was rolled back. It's not entirely clear if all of those issues contributed or if it just one of them was the main culprit.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ex7mlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ex7mlX.js" async></script><h3 class="article-body__section" id="section-is-outlook-down-live-outage-updates"><span>Is Outlook down — live outage updates</span></h3></div><div class="live-content"><time datetime="2026-04-27T12:11:55+00:00">April 27, 2026 – 8:11 AM</time><h2 id="the-reports-start">The reports start</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1408px;"><p class="vanilla-image-block" style="padding-top:59.52%;"><img id="ALxCEDeDd9j2xYdW3MJz46" name="Screenshot 2026-04-27 at 8.10.15 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/ALxCEDeDd9j2xYdW3MJz46.png" mos="" align="middle" fullscreen="" width="1408" height="838" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>It's been a slow rise in reports for Outlook, which could be explained by people in the U.S. just getting logged on. Either way, it's clear something is wrong with Outlook, and if things don't get fixed soon, we expect the number of reports to keep rising.</p></div><div class="live-content"><time datetime="2026-04-27T12:17:03+00:00">April 27, 2026 – 8:17 AM</time><h2 id="microsoft-official-status">Microsoft official status</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:31.11%;"><img id="w3dbcEtZyRLZpU243mdbLd" name="Screenshot 2026-04-27 at 8.14.33 AM" alt="Outlook status" src="https://cdn.mos.cms.futurecdn.net/w3dbcEtZyRLZpU243mdbLd.png" mos="" align="middle" fullscreen="" width="1678" height="522" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>On <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">Microsoft's status page</a>, the company says, "Service health information for Microsoft products and services designed for personal use by families, individuals, and students."</p><p>So it sounds like the ongoing outage is only impacting home users, and people who use Microsoft services for business should be okay, at least for now.</p></div><div class="live-content"><time datetime="2026-04-27T12:20:24+00:00">April 27, 2026 – 8:20 AM</time><h2 id="outlook-com-is-the-main-issue">Outlook.com is the main issue</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:47.08%;"><img id="Z3cRxLFmDSdHnPkyJohKnD" name="Screenshot 2026-04-27 at 8.18.13 AM" alt="Outlook status" src="https://cdn.mos.cms.futurecdn.net/Z3cRxLFmDSdHnPkyJohKnD.png" mos="" align="middle" fullscreen="" width="1678" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>"Users may experience intermittent issues signing in to Outlook.com," says Microsoft's status page. </p><p>This appears to be the main issue people are dealing with at the moment and if Microsoft knows what the problem is, hopefully the company can get the issue solved as quickly as possible.</p></div><div class="live-content"><time datetime="2026-04-27T12:24:27+00:00">April 27, 2026 – 8:24 AM</time><h2 id="reports-past-1-000">Reports past 1,000</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:47.08%;"><img id="3r4jgenidMfbF5GR5pVqik" name="Screenshot 2026-04-27 at 8.22.49 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/3r4jgenidMfbF5GR5pVqik.png" mos="" align="middle" fullscreen="" width="1678" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>The reports on Downdetector have officially risen to more than 1,000, which isn't surprising, as the people on the East Coast in the U.S. are starting to wake up and get online.</p></div><div class="live-content"><time datetime="2026-04-27T12:26:27+00:00">April 27, 2026 – 8:26 AM</time><h2 id="what-s-microsoft-doing">What's Microsoft doing?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:720px;"><p class="vanilla-image-block" style="padding-top:69.17%;"><img id="WyjhEyKqgGvrhU5AViPL6b" name="nadella-microsoft-getty.jpg" alt="Microsoft CEO Satya Nadella standing in front of a screen displaying the Microsoft logo." src="https://cdn.mos.cms.futurecdn.net/WyjhEyKqgGvrhU5AViPL6b.jpg" mos="" align="middle" fullscreen="" width="720" height="498" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Justin Sullivan/Getty Images)</span></figcaption></figure><p>"We’re reviewing a recent change as part of our ongoing investigation and determining next steps," reads the latest update on Microsoft's status page.</p></div><div class="live-content"><time datetime="2026-04-27T12:40:28+00:00">April 27, 2026 – 8:40 AM</time><h2 id="a-small-downturn">A small downturn</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:47.08%;"><img id="RhsFnBsK8UDGkgvNYnjd3D" name="Screenshot 2026-04-27 at 8.38.17 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/RhsFnBsK8UDGkgvNYnjd3D.png" mos="" align="middle" fullscreen="" width="1678" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>While outage reports have remained mostly consistent, the most recent update shows a slight downturn. Sure, it's only a tiny drop, but it could be a sign that people aren't flocking to the service as quickly to report problems.</p></div><div class="live-content"><time datetime="2026-04-27T12:58:46+00:00">April 27, 2026 – 8:58 AM</time><h2 id="when-was-microsoft-s-last-update">When was Microsoft's last update?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2500px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="KPG47747aX2DtH8NaaLvK" name="Outlook.jpg" alt="Outlook" src="https://cdn.mos.cms.futurecdn.net/KPG47747aX2DtH8NaaLvK.jpg" mos="" align="middle" fullscreen="" width="2500" height="1406" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Microsoft hasn't posted an official update in a while, with the last one coming at 12:48 p.m. UTC (7:48 a.m. ET). That was more than an hour ago, which is pretty long for users waiting to access their email and other Outlook tools.</p><p>The company promised an update by 1:30 p.m. UTC (8:30 a.m. ET), but that time has passed without any new developments on Outlook. Hopefully, we get something official soon we can have a better idea of when everything will be back to normal.</p></div><div class="live-content"><time datetime="2026-04-27T13:22:18+00:00">April 27, 2026 – 9:22 AM</time><h2 id="microsoft-update">Microsoft update</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:600px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="ZkP3DTkQbj68miNYfMEaH3" name="microsoft-sign.jpg" alt="Microsoft sign" src="https://cdn.mos.cms.futurecdn.net/ZkP3DTkQbj68miNYfMEaH3.jpg" mos="" align="middle" fullscreen="" width="600" height="400" attribution="" endorsement="" class="inline"></p></div></div></figure><p>Microsoft posted an update on its Outlook status page. Here's what the company said: "We're reverting a recently introduced change to determine if this action provides relief from impact upon completion. In parallel, we're continuing to analyze customer reports, and we're closely monitoring service telemetry to identify our next steps and potential mitigation actions."</p></div><div class="live-content"><time datetime="2026-04-27T13:26:07+00:00">April 27, 2026 – 9:26 AM</time><h2 id="the-latest-from-downdetector">The latest from Downdetector </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:47.08%;"><img id="mEqHGo6se5drG3qUpKQngN" name="Screenshot 2026-04-27 at 9.24.01 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/mEqHGo6se5drG3qUpKQngN.png" mos="" align="middle" fullscreen="" width="1678" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>The Downdetector reports are staying pretty consistent, fluctuating within the 1,000 range. Currently sitting at 1,173, it's the highest it's been so far, but not breaking out of the pattern too much.</p></div><div class="live-content"><time datetime="2026-04-27T13:32:55+00:00">April 27, 2026 – 9:32 AM</time><h2 id="what-errors-are-we-seeing">What errors are we seeing?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:47.08%;"><img id="2cjiMSMYtAvce8qTTAogbU" name="Screenshot 2026-04-27 at 9.32.30 AM" alt="Microsoft reports" src="https://cdn.mos.cms.futurecdn.net/2cjiMSMYtAvce8qTTAogbU.png" mos="" align="middle" fullscreen="" width="1678" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>According to Microsoft, the main issues users are seeing is intermittent issues signing in to Outlook.com. Specifically, they may experience intermittent sign‑in failures, including “too many requests” errors or unexpected sign‑outs.</p><p>If this is happening to you, then know you're not alone and Microsoft is aware of the problem and working on it.</p></div><div class="live-content"><time datetime="2026-04-27T13:36:54+00:00">April 27, 2026 – 9:36 AM</time><h2 id="ios-seems-to-be-the-latest-issue">iOS seems to be the latest issue</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2066px;"><p class="vanilla-image-block" style="padding-top:25.56%;"><img id="n8iMw3do6iM4g6fz64nPV7" name="Screenshot 2026-04-27 at 9.35.48 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/n8iMw3do6iM4g6fz64nPV7.png" mos="" align="middle" fullscreen="" width="2066" height="528" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Users in the Downdetector comments section are saying they can't get the iOS app to connect, which could be a new wrinkle in the ongoing outage. </p></div><div class="live-content"><time datetime="2026-04-27T13:54:44+00:00">April 27, 2026 – 9:54 AM</time><h2 id="everything-else-seems-good-to-go">Everything else seems good to go</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2066px;"><p class="vanilla-image-block" style="padding-top:56.63%;"><img id="hNEShLGo3grYK5oWuVCzHF" name="Screenshot 2026-04-27 at 9.51.49 AM" alt="Microsoft Outlook" src="https://cdn.mos.cms.futurecdn.net/hNEShLGo3grYK5oWuVCzHF.png" mos="" align="middle" fullscreen="" width="2066" height="1170" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>According to Microsoft's status page, everything besides Outlook is good. We're seeing some Downdetector reports for other Microsoft services, but those could just be users reporting the wrong service.</p></div><div class="live-content"><time datetime="2026-04-27T14:17:27+00:00">April 27, 2026 – 10:17 AM</time><h2 id="downdetector-going-up-again">Downdetector going up again</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1530px;"><p class="vanilla-image-block" style="padding-top:51.63%;"><img id="f7r2pGViZMgCKKAasykDkV" name="Screenshot 2026-04-27 at 10.15.42 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/f7r2pGViZMgCKKAasykDkV.png" mos="" align="middle" fullscreen="" width="1530" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Downdetector reports are rising, reaching a record high of almost 1,500. Is this because more people are waking up and trying to get to work, or is something else going wrong? We're investigating, but Microsoft hasn't posted any new updates regarding the outage.</p></div><div class="live-content"><time datetime="2026-04-27T14:44:44+00:00">April 27, 2026 – 10:44 AM</time><h2 id="another-big-update-from-microsoft">Another big update from Microsoft</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1530px;"><p class="vanilla-image-block" style="padding-top:56.99%;"><img id="93qxJ5vKueUrNFPeMw8BdK" name="Screenshot 2026-04-27 at 10.42.32 AM" alt="Microsoft Outlook status" src="https://cdn.mos.cms.futurecdn.net/93qxJ5vKueUrNFPeMw8BdK.png" mos="" align="middle" fullscreen="" width="1530" height="872" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft posted a fairly extensive update on its status page. Essentially, the company said that it has reverted a change and is investigating the problem. </p><p>"We've completed reverting the recently introduced change, however, this has not produced any relief. We're continuing to investigate the unexpected increase in error rates affecting two separate error scenarios to identify any potential root cause which may be responsible for this. Additionally, we're closely monitoring service telemetry to discover any other potential actions, or mitigation steps," said Microsoft on its status page.</p></div><div class="live-content"><time datetime="2026-04-27T15:07:09+00:00">April 27, 2026 – 11:07 AM</time><h2 id="staying-steady-on-downdetector">Staying steady on Downdetector </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1530px;"><p class="vanilla-image-block" style="padding-top:56.99%;"><img id="qXHVdNj4uF5XDorCNVNRPa" name="Screenshot 2026-04-27 at 11.04.45 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/qXHVdNj4uF5XDorCNVNRPa.png" mos="" align="middle" fullscreen="" width="1530" height="872" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>While Microsoft has been busy reverting changes so users can log in to Outlook again, people are still hanging around on <a href="https://downdetector.com/status/outlook/" target="_blank">Downdetector</a> reporting problems. </p><p>It has dropped slightly since the outage peaked, but it's still hovering around 1,400 reports, which is relatively high.</p></div><div class="live-content"><time datetime="2026-04-27T15:46:23+00:00">April 27, 2026 – 11:46 AM</time><h2 id="latest-update-from-microsoft">Latest update from Microsoft</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:760px;"><p class="vanilla-image-block" style="padding-top:55.39%;"><img id="ZA7JiMxrA3kaJkJqixkYua" name="Screenshot 2026-04-27 084101" alt="Microsoft outage 4-27-26" src="https://cdn.mos.cms.futurecdn.net/ZA7JiMxrA3kaJkJqixkYua.png" mos="" align="middle" fullscreen="" width="760" height="421" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft has another update and it appears more specific issues are occurring.</p><p>"We’re seeing specific errors related to authentication key failures. We’re working to determine the underlying cause in order to determine our next mitigation steps," the <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">Microsoft Cloud Status says</a>.</p><p>The page does say that you may experience intermittent sign-in failures or unexpected sign-outs.</p></div><div class="live-content"><time datetime="2026-04-27T16:04:28+00:00">April 27, 2026 – 12:04 PM</time><h2 id="outlook-users-are-upset">Outlook users are upset</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2500px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="KPG47747aX2DtH8NaaLvK" name="Outlook.jpg" alt="Outlook" src="https://cdn.mos.cms.futurecdn.net/KPG47747aX2DtH8NaaLvK.jpg" mos="" align="middle" fullscreen="" width="2500" height="1406" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Sign-in issues seem to be the most common problem I'm seeing reported across social media. And users are not happy. </p><p>"What a joke.  Tell us in English what is wrong and what you are doing to fix it and an estimated timeframe. Stop pretending it is a small,issue," said one <a href="https://x.com/MSFT365Status/status/2048758539603136897" target="_blank">person on X</a>.</p><p>On Down Detector, several people claimed the iOS app specifically was having issues.</p><p>"Each time I refresh a different outlook app fails. Hope they get this resolved quickly," a commentor wrote.</p><p>The <a href="https://www.reddit.com/r/Outlook/new/" target="_blank">Outlook subreddit i</a>s filled with posts trying to figure out getting around the sign-in issue and cursing out Microsoft.</p></div><div class="live-content"><time datetime="2026-04-27T16:45:51+00:00">April 27, 2026 – 12:45 PM</time><h2 id="issues-have-persisted-for-8-hours">Issues have persisted for 8 hours</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:676px;"><p class="vanilla-image-block" style="padding-top:46.01%;"><img id="WNyE6bZsaHgZsuENg776VB" name="Screenshot 2026-04-27 094201" alt="Microsoft Outlook outage 4-27-26" src="https://cdn.mos.cms.futurecdn.net/WNyE6bZsaHgZsuENg776VB.png" mos="" align="middle" fullscreen="" width="676" height="311" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>Today's Outlook outage started steadily rising around 5 am Eastern as people started trying to log on for work. </p><p>Since then the outage has remained steady with around 1500 reports on Down Detector every hour since then. </p><p>Unfortunately, as of this posting it doesn't appear that issues will be resolving any time soon.</p></div><div class="live-content"><time datetime="2026-04-27T17:24:38+00:00">April 27, 2026 – 1:24 PM</time><h2 id="what-microsoft-is-saying-right-now">What Microsoft is saying right now</h2><p>Microsoft is still working on the Outlook issue according to the <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">Microsoft status page</a>.</p><p>"We're running tests to reproduce impact in our internal environment to obtain additional logging to isolate the source of the unexpected error messages."</p><p>The company has yet to provide an ETA for when the testing might resolve and mititgation implemented. For now, it runs on.</p></div><div class="live-content"><time datetime="2026-04-27T17:40:00+00:00">April 27, 2026 – 1:40 PM</time><h2 id="potential-workaround">Potential workaround</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1981px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="QcDNYDHLZWSjpMdgzpVJQG" name="Outlook.shutterstock_2384091865.jpg" alt="Outlook on a laptop" src="https://cdn.mos.cms.futurecdn.net/QcDNYDHLZWSjpMdgzpVJQG.jpg" mos="" align="middle" fullscreen="" width="1981" height="1114" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>I'm seeing on the <a href="https://www.reddit.com/r/Outlook/comments/1sxa5jx/cant_get_into_account/" target="_blank">Outlook subreddit </a>people suggesting you use your mobile number to log in rather than your email. </p><p>This workaround supposedly works on both browser and app versions of Outlook. </p><p>If you've been struggling to login give this a try and let us know if it works for you.</p></div><div class="live-content"><time datetime="2026-04-27T17:58:51+00:00">April 27, 2026 – 1:58 PM</time><h2 id="multiple-potential-causes">Multiple potential causes</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:814px;"><p class="vanilla-image-block" style="padding-top:77.52%;"><img id="pSqm6xE6y6DBtBcQ6g42va" name="Screenshot 2026-04-27 105754" alt="microsoft status page. Outlook outage 4.27.26" src="https://cdn.mos.cms.futurecdn.net/pSqm6xE6y6DBtBcQ6g42va.png" mos="" align="middle" fullscreen="" width="814" height="631" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft provided another update that indicates today's outage may have multiple causes.</p><p>"We've identified a recent service change that is potentially contributing to user impact," the status page reads.</p><p>Microsoft says its rolling back that change to see if it fixes the problem. The page also said that the company is investigating "the unusual error patterns" that were observed earlier.</p></div><div class="live-content"><time datetime="2026-04-27T18:35:57+00:00">April 27, 2026 – 2:35 PM</time><h2 id="microsoft-rollback-didn-t-work">Microsoft: Rollback didn't work</h2><p>Welp, back to square one. </p><p>"The roll back that was completed does not appear to have provided the intended impact relief. We're continuing to look at internal reproductions of the impact to find potential next steps for mitigation and understand the source of error messages."</p><p>The outage rolls on.</p></div><div class="live-content"><time datetime="2026-04-27T18:48:34+00:00">April 27, 2026 – 2:48 PM</time><h2 id="is-copilot-to-blame">Is Copilot to blame?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:854px;"><p class="vanilla-image-block" style="padding-top:56.21%;"><img id="wZGmfPwAivKWvikiWeJGM8" name="Introducing Your AI Companion _ Microsoft Copilot 27-33 screenshot" alt="Microsoft 50th anniversary Copilot Home Screen" src="https://cdn.mos.cms.futurecdn.net/wZGmfPwAivKWvikiWeJGM8.png" mos="" align="middle" fullscreen="" width="854" height="480" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>While the Microsoft status page is only saying that the rollback of a service update didn't work, the <a href="https://x.com/MSFT365Status/status/2048824181047869722" target="_blank">M365 X account </a>is providing more details about a separate issue, and Copilot may be to blame.</p><p>"We’ve determined a portion of our Copilot infrastructure in North America is utilizing a high number of resources, and we're rebalancing traffic to remediate the issue."</p><p>A follow-up post says that Microsoft rebalanced traffic and optimized the impacted infrastructure. The post claims that the company is seeing positive signals in service health. </p><p>Perhaps things will settle down again.</p></div><div class="live-content"><time datetime="2026-04-27T19:29:52+00:00">April 27, 2026 – 3:29 PM</time><h2 id="issue-may-have-been-resolved">Issue may have been resolved</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2048845821504819200"><p lang="en" dir="ltr">After a period of monitoring, we confirmed that our actions to rebalance traffic and optimize infrastructure have resolved the issue. For more information, please see CP1293219 in the admin center.<a href="https://twitter.com/cantworkitout/status/2048845821504819200">April 27, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The Microsoft 365 X account just posted that the company may have resolved the outage issue.</p><p>"After a period of monitoring, we confirmed that our actions to rebalance traffic and optimize infrastructure have resolved the issue."</p><p>I saw some immediate comments from people saying they couldn't log in, but it's doubtful the fix will immediately let you back into Outlook. It will likely take a bit for the mitigation to actually hit everyone's accounts. </p><p>We'll keep an eye on things, but I expect things to resolve over the next hour.</p></div><div class="live-content"><time datetime="2026-04-27T19:49:08+00:00">April 27, 2026 – 3:49 PM</time><h2 id="different-answers-from-different-sources">Different answers from different sources</h2><p>Despite linking to the Microsoft 365 X account, the service page and X account are giving slightly differing answers to the causes of the outage. </p><p>Currently, the status page reads:</p><p>"After reviewing the logs collected from internal reproductions we've found a pattern of errors that point to a recent backend configuration change that may be causing impact. We've completed a roll back of this configuration change. We're now carefully monitoring the environment to determine if it worked as intended or if there are additional steps required for full incident resolution."</p><p>Which is different from the claimed resolution we saw earlier from the X account. </p></div><div class="live-content"><time datetime="2026-04-27T20:19:22+00:00">April 27, 2026 – 4:19 PM</time><h2 id="service-recovering-but-ios-users-have-extra-steps">Service recovering but iOS users have extra steps</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:853px;"><p class="vanilla-image-block" style="padding-top:60.96%;"><img id="77h7giWwLQ9NhbRWTtqwSd" name="outlook-iphone-shst.jpg" alt="Microsoft Outlook" src="https://cdn.mos.cms.futurecdn.net/77h7giWwLQ9NhbRWTtqwSd.jpg" mos="" align="middle" fullscreen="" width="853" height="520" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft says that service is recovering for Outlook, but if you use the iOS version you have to follow additional steps to get Outlook working again.</p><p>Here are the steps from Microsoft:</p><ul><li>Open the Settings app on your iPhone.</li><li>Scroll down and tap on Mail.</li><li>Select Accounts under the Mail settings.</li><li>Tap on the email account for which you need to reenter the password.</li><li>Tap on Account Settings or directly on the Password field (depending on your iOS version).</li><li>Enter the updated or correct password in the Password field.</li><li>Tap Done to save the changes.</li><li>Open the Mail app to confirm that the account is syncing properly and emails are being sent/received.</li></ul></div><div class="live-content"><time datetime="2026-04-27T21:18:26+00:00">April 27, 2026 – 5:18 PM</time><h2 id="despite-recovery-claims-reports-continue-to-roll-in">Despite recovery claims reports continue to roll in</h2><p>It's been an hour since Microsoft declared that service was improving, and yet, from our outside view things appear to be the same. </p><p>Reports on <a href="https://downdetector.com/status/outlook/" target="_blank">Down Detector</a> have hovered around 1,000 for the last four or five hours and continue to do so. And I'm still seeing comments on X and Reddit that users are having issues logging in. </p></div><div class="live-content"><time datetime="2026-04-27T22:11:21+00:00">April 27, 2026 – 6:11 PM</time><h2 id="finally-going-down">Finally, going down?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:678px;"><p class="vanilla-image-block" style="padding-top:46.17%;"><img id="PCqxZieAbge747zbEp4xtW" name="Screenshot 2026-04-27 150755" alt="Microsoft Outlook outage 4-27-26" src="https://cdn.mos.cms.futurecdn.net/PCqxZieAbge747zbEp4xtW.png" mos="" align="middle" fullscreen="" width="678" height="313" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>For the first time since 7:50 am ET, it appears the accumulated reports on Down Detector are finally descending. </p><p>As of this posting, the graph on DD is sitting at around 957 reports. It's not a big drop but it's the first real sustained drop. </p><p>Perhaps we've finally reached the end of this one.</p></div><div class="live-content"><time datetime="2026-04-27T23:08:04+00:00">April 27, 2026 – 7:08 PM</time><h2 id="service-health-to-normal">Service health to normal?</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2048886671169470728"><p lang="en" dir="ltr">We’ve confirmed service health has returned to normal and reporting users that have completed the additional steps are able to access Outlook and Hotmail. For the list of mitigation steps and more information, please review the attached screenshot or visit… pic.twitter.com/YHp86VTOYD<a href="https://twitter.com/cantworkitout/status/2048886671169470728">April 27, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The Microsoft 365 X account posted that service health has returned to normal. </p><p>Reports do seem to be slowly going down but are still around 900 on DD as of this writing. And again, I am still seeing people saying they can't get access.</p><p>I suspect as the West Coast starts to turn off for the work day reports will take a nose dive, but for now it chugs along waiting for Outlook to work.</p></div><div class="live-content"><time datetime="2026-04-27T23:29:41+00:00">April 27, 2026 – 7:29 PM</time><h2 id="outlook-not-working-and-users-upset">Outlook not working and users upset</h2><p>I mentioned that Microsoft released an message saying that Outlook service health has been restored but the comments under the message on Twitter belie that. </p><p>"These instructions are still not working. I’m still being told the following: You’ve tried to sign in too many times with an incorrect account or password. My account and password are correct! You have not corrected the problem!!" from Leslie Barry.</p><p>That is a common refrain from many people. Based on an accumulation of comments, it appears that people's attempts to login today may have blocked the ability to get in, possibly for up to 24 hours. </p><p>However, Microsoft has not appeared to say anything about that specific issue. I did see one user suggest that people reach out to M365 sales support who might have a workaround.</p></div><div class="live-content"><time datetime="2026-04-28T08:19:08+00:00">April 28, 2026 – 4:19 AM</time><h2 id="reports-continue-to-drop-off">Reports continue to drop off</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1147px;"><p class="vanilla-image-block" style="padding-top:53.10%;"><img id="e68fdifNYg4p3jQ7a9vCqc" name="Screenshot 2026-04-28 091547" alt="DownDetector Microsoft Outlook reports" src="https://cdn.mos.cms.futurecdn.net/e68fdifNYg4p3jQ7a9vCqc.png" mos="" align="middle" fullscreen="" width="1147" height="609" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>The problems, at least for a lot of people, seem to be resolving themselves. According to DownDetector, the reports through the night are falling off; at the time of writing (4:15 am ET), there are fewer than 100 reports on the outage site.</p></div><div class="live-content"><time datetime="2026-04-28T09:44:18+00:00">April 28, 2026 – 5:44 AM</time><h2 id="are-you-still-experiencing-issues">Are you still experiencing issues?</h2><p>Are you still suffering with Microsoft Outlook or has the service resumed for you? Let us know in the poll below if you're still affected.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5vjnO"></div>                            </div>                            <script src="https://kwizly.com/embed/W5vjnO.js" async></script></div><div class="live-content"><time datetime="2026-04-28T11:22:29+00:00">April 28, 2026 – 7:22 AM</time><h2 id="microsoft-still-claims-service-degradation">Microsoft still claims 'service degradation'</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:990px;"><p class="vanilla-image-block" style="padding-top:36.67%;"><img id="EHXhZzbRb9LRZydXH2paj3" name="Screenshot 2026-04-28 121749" alt="Microsoft service page showing Outlook issues April 2026" src="https://cdn.mos.cms.futurecdn.net/EHXhZzbRb9LRZydXH2paj3.png" mos="" align="middle" fullscreen="" width="990" height="363" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Microsoft's <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect">service status page</a> is still listing "service degradation" for Outlook.com and reiterating that iOS users may still have some lingering problems when accessing their Outlook and Hotmail accounts from the iOS default Mail app.</p><p>The team's last post is from yesterday, at 10:46pm and lists the following steps for iOS users to take.</p><p>1. Open the Settings app on your iPhone. <br>2. Scroll down and tap on Mail. <br>3. Select Accounts under the Mail settings. <br>4. Tap on the email account for which you need to reenter the password. <br>5. Tap on Account Settings or directly on the Password field (depending on your iOS version). 6. Enter the updated or correct password in the Password field. <br>7. Tap Done to save the changes. <br>8. Open the Mail app to confirm that the account is syncing properly and emails are being sent/received.</p></div><div class="live-content"><time datetime="2026-04-28T11:54:35+00:00">April 28, 2026 – 7:54 AM</time><h2 id="let-us-know-if-you-re-still-affected">Let us know if you're still affected!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Nf8vtkJj67rLf9EqdWRU5F" name="Outlook comments" alt="Outlook comments" src="https://cdn.mos.cms.futurecdn.net/Nf8vtkJj67rLf9EqdWRU5F.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>It's been almost 24 hours since we started reporting on this Microsoft Outlook outage, and some users are still experiencing issues. If you're seeing problems, you can let us (and others) know in the comments section at the bottom of this article.</p><p>Tom's Guide user suebri380 posted two hours ago that Outlook still would not allow  signing in using Apple Mail. </p><p>"Despite their reassurances the problem has been fixed I still cannot get access via the Apple Mail App as Outlook will not let me sign in," they wrote.</p><iframe title="" description="Tell us how you're affected" minimumCommentCount="1" class="position-center" data-lazy-priority="low" data-lazy-src=""></iframe></div><div class="live-content"><time datetime="2026-04-28T15:07:44+00:00">April 28, 2026 – 11:07 AM</time><h2 id="it-s-been-a-winding-climb">It's been a winding climb</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1810px;"><p class="vanilla-image-block" style="padding-top:44.42%;"><img id="VGoeKLVtLAecfFpXvvN86k" name="Screenshot 2026-04-28 at 11.04.41 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/VGoeKLVtLAecfFpXvvN86k.png" mos="" align="middle" fullscreen="" width="1810" height="804" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Outlook has been going up and down on Downdetector since yesterday. And while it's not reaching the levels we saw at the peak of the outage, there are still a significant number of people experiencing problems, according to Downdetector reports.</p><p>For its part, Microsoft's status page says, "We’ve received reports that impact associated with OL1292958 persists. We've resumed our investigation of the issue and are currently analyzing service telemetry and investigating reported behavior to determine scope and next steps."</p></div><div class="live-content"><time datetime="2026-04-28T16:04:54+00:00">April 28, 2026 – 12:04 PM</time><h2 id="microsoft-admits-there-are-still-issues">Microsoft admits there are still issues</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:764px;"><p class="vanilla-image-block" style="padding-top:45.03%;"><img id="7eJQyRndZX26yhoK78CBen" name="Screenshot 2026-04-28 090405" alt="Microsoft Outlook outage 4-28-26" src="https://cdn.mos.cms.futurecdn.net/7eJQyRndZX26yhoK78CBen.png" mos="" align="middle" fullscreen="" width="764" height="344" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>While reports haven't hit the highs from yesterday, it still appears people are having issues, and Microsoft acknowledged that in the most recent post on the M365 status page.</p><p>"We’ve received reports that impact associated with OL1292958 persists. We've resumed our investigation of the issue and are currently analyzing service telemetry and investigating reported behavior to determine scope and next steps."</p><p>Whatever fixes were implemented last night did not fix every issue that may be affecting Outlook.</p></div><div class="live-content"><time datetime="2026-04-28T16:46:03+00:00">April 28, 2026 – 12:46 PM</time><h2 id="locked-out-for-24-to-48-hours">Locked out for 24 to 48 hours</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1981px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="QcDNYDHLZWSjpMdgzpVJQG" name="Outlook.shutterstock_2384091865.jpg" alt="Outlook on a laptop" src="https://cdn.mos.cms.futurecdn.net/QcDNYDHLZWSjpMdgzpVJQG.jpg" mos="" align="middle" fullscreen="" width="1981" height="1114" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>As the Outlook issues persist, concerned users on the <a href="https://www.reddit.com/r/Outlook/new/" target="_blank">Outlook subreddit </a>said they've tried reaching out to Microsoft customer service because they remained unable to login</p><p>Apparently, you could be locked out of your account 24 to 48 hours after you last login attempt. Which unfortunately means that if you tried late in the day you could be locked out well into Thursday. </p><p>However, multiple people have pushed back noting that text message recovery is down as well.</p><p>It may be best to stop trying to login for now until things are fully back.</p></div><div class="live-content"><time datetime="2026-04-28T17:19:35+00:00">April 28, 2026 – 1:19 PM</time><h2 id="ios-experience-work">iOS experience work</h2><p>According to Microsoft, the company is working on changes to optimize the outlook.com iOS sign-in experience. </p><p>"Once complete, we'll provide instructions to help users sign back into their accounts," the status page reads.</p><p>They also brought back the steps from yesterday as a potential workaround to sign in.</p><ul><li>1. Open the Settings app on your iPhone.</li><li>2. Scroll down and tap on Mail.</li><li>3. Select Accounts under the Mail settings.</li><li>4. Tap on the email account for which you need to reenter the password.</li><li>5. Tap on Account Settings or directly on the Password field (depending on your iOS version).</li><li>6. Enter the updated or correct password in the Password field.</li><li>7. Tap Done to save the changes.</li><li>8. Open the Mail app to confirm that the account is syncing properly and emails are being sent/received.</li></ul><p>Let us know if that actually works for you.</p></div><div class="live-content"><time datetime="2026-04-28T18:18:45+00:00">April 28, 2026 – 2:18 PM</time><h2 id="no-updates">No updates</h2><p>Unfortunately, there is nothing new to report. Things remain the same.</p><p>We've reached out to Microsoft for comment and will update this blog when and if the company responds.</p></div><div class="live-content"><time datetime="2026-04-28T19:34:25+00:00">April 28, 2026 – 3:34 PM</time><h2 id="unfortunately-in-stasis">Unfortunately, in stasis</h2><p>Unfortunately, I can't provide much of an update to anyone suffering from the Outlook outage. </p><p>Microsoft hasn't provided an update to the status page in an hour and the M365 support account has remained quiet for...21 hours, as of this post. </p><p>A Microsoft rep told Tom's Guide they're looking into the issue but we've yet to receive any other response.</p></div><div class="live-content"><time datetime="2026-04-28T21:09:07+00:00">April 28, 2026 – 5:09 PM</time><h2 id="trending-in-the-right-direction-but-not-over-yet">Trending in the right direction, but not over yet</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:923px;"><p class="vanilla-image-block" style="padding-top:51.46%;"><img id="bJogR4E2vbctEENpMY2KRC" name="Screenshot 2026-04-28 at 5.06.14 PM" alt="Microsoft Outlook outage chart from Downdetector" src="https://cdn.mos.cms.futurecdn.net/bJogR4E2vbctEENpMY2KRC.png" mos="" align="middle" fullscreen="" width="923" height="475" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>The latest chart from Downdetector shows that the problem is being resolved, but that plenty of folks are still having issues — mostly with logging in. </p></div><div class="live-content"><time datetime="2026-04-28T21:51:33+00:00">April 28, 2026 – 5:51 PM</time><h2 id="finally-resolving">Finally resolving?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:600px;"><p class="vanilla-image-block" style="padding-top:75.00%;"><img id="zcQypYc3iCynfLUquQedGV" name="outlook-ios.jpg" alt="Outlook in iOS" src="https://cdn.mos.cms.futurecdn.net/zcQypYc3iCynfLUquQedGV.jpg" mos="" align="middle" fullscreen="" width="600" height="450" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Across Down Detector comments, the Outlook subreddit and X, it appears the people are starting to get back into their accounts. </p><p>Microsoft hasn't provided an update in hours, so it's not clear what's being done on the company's end. </p><p>But something must be working since people are saying the two-factor authentication is finally working again or they're able to login using backup emails and phone numbers. </p></div><div class="live-content"><time datetime="2026-04-28T22:17:57+00:00">April 28, 2026 – 6:17 PM</time><h2 id="well-well-well-an-update">Well, well, well an update</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2049249375075901512"><p lang="en" dir="ltr">We're aware that some users are still unable to access their https://t.co/ZUfyjth6sU accounts on iOS devices following yesterday's event, and we're performing some sign-in optimizations to alleviate impact. We'll update https://t.co/uSHwRmXFJZ with more guidance as it becomes…<a href="https://twitter.com/cantworkitout/status/2049249375075901512">April 28, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>After nearly a day without an update, the <a href="https://x.com/MSFT365Status" target="_blank">official M365 support X account</a> just posted an update, unfortunately it's the same update that we've already seen on the <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">status page</a>.</p><p>"We're aware that some users are still unable to access their http://Outlook.com accounts on iOS devices following yesterday's event, and we're performing some sign-in optimizations to alleviate impact. We'll update https://status.cloud.microsoft with more guidance as it becomes available."</p><p>And that's it.</p></div><div class="live-content"><time datetime="2026-04-28T23:39:08+00:00">April 28, 2026 – 7:39 PM</time><h2 id="service-health-back-to-normal-but-ios-users-have-extra-steps">Service health back to normal but iOS users have extra steps</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:764px;"><p class="vanilla-image-block" style="padding-top:83.64%;"><img id="EQGQs2xwjKnwVHzRkxKz7E" name="Screenshot 2026-04-28 163723" alt="Microsoft outage 4-28-26" src="https://cdn.mos.cms.futurecdn.net/EQGQs2xwjKnwVHzRkxKz7E.png" mos="" align="middle" fullscreen="" width="764" height="639" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Once again, Microsoft says that Outlook service health has returned to normal. </p><p>However, the status page specifically says that iOS users must take the steps outlined previously. I'm posting them again so you have them if you are an iOS user with Outlook.</p><ul><li>1. Open the Settings app on your iPhone.</li><li>2. Scroll down and tap on Mail.</li><li>3. Select Accounts under the Mail settings.</li><li>4. Tap on the email account for which you need to reenter the password.</li><li>5. Tap on Account Settings or directly on the Password field (depending on your iOS version).</li><li>6. Enter the updated or correct password in the Password field.</li><li>7. Tap Done to save the changes.</li><li>8. Open the Mail app to confirm that the account is syncing properly and emails are being sent/received.</li></ul></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/news/live/outlook-down-live-outage-updates-4-27</link>
                                                                            <description>
                            <![CDATA[ Microsoft Outlook appears to be experiencing issues, as people across the internet are reporting an outage. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">n5kLHmXFeFWaFTDMFdNSqE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ytx7gsKrfFbWNQV8E7E9NB-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 27 Apr 2026 12:12:24 +0000</pubDate>                                                                                                                                <updated>Thu, 30 Apr 2026 09:52:52 +0000</updated>
                                                                                                                                            <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                                                                <author><![CDATA[ dave.leclair@futurenet.com (Dave LeClair) ]]></author>                    <dc:creator><![CDATA[ Dave LeClair ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/fyx7qYdxPMTNBhdnMfNmaB.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave LeClair is the Senior News Editor for Tom&#039;s Guide, keeping his finger on the pulse of all things technology. He loves taking the complicated happenings in the tech world and explaining why they matter. Whether Apple is announcing the next big thing in the mobile space or a small startup advancing generative AI, Dave will apply his experience to help you figure out what&#039;s happening and why it&#039;s relevant to your life.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before Tom&#039;s Guide, Dave worked for publications like PCMag, Pocket-lint, MUO, How-To Geek, Digital Trends, and others. He started writing about technology professionally for MUO in 2011 and hasn&#039;t looked back since. In addition to news, you can find reviews, how-to pieces, shopping guides, and many other types of content with Dave&#039;s name attached.&lt;/p&gt; ]]></dc:description>
                                                                                                        <dc:contributor><![CDATA[ Scott Younker ]]></dc:contributor>
                                            <dc:contributor><![CDATA[ Jeff Parsons ]]></dc:contributor>
                                                                    <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ytx7gsKrfFbWNQV8E7E9NB-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Microsoft Outlook app open on a phone]]></media:description>                                                            <media:text><![CDATA[The Microsoft Outlook app open on a phone]]></media:text>
                                <media:title type="plain"><![CDATA[The Microsoft Outlook app open on a phone]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ytx7gsKrfFbWNQV8E7E9NB-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="live-content"><p>Microsoft's email and work platform, Outlook, has been down for more than 10 hours. Reports on  <a href="https://downdetector.com/status/outlook/" target="_blank">Downdetector</a> started slowly rising around 5 am Eastern with a peak of around 1,500 reports. </p><p>Unlike most outages it's not explosive with thousands of people reporting issues all at once. Instead, there has been a steady hill of reports that won't go away throughout the day. </p><p>Microsoft's <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">official status page</a> shows "Service degradation" for consumer products, which would explain why things aren't working as expected. It has acknowledged that it's working on the problem, but it hasn't provided a timeframe for things to come back to normal.</p><p>At various points today, Microsoft blamed the issue on Copilot, traffic loads and an update that was rolled back. It's not entirely clear if all of those issues contributed or if it just one of them was the main culprit.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ex7mlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ex7mlX.js" async></script><h3 class="article-body__section" id="section-is-outlook-down-live-outage-updates"><span>Is Outlook down — live outage updates</span></h3></div><div class="live-content"><time datetime="2026-04-27T12:11:55+00:00">April 27, 2026 – 8:11 AM</time><h2 id="the-reports-start">The reports start</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1408px;"><p class="vanilla-image-block" style="padding-top:59.52%;"><img id="ALxCEDeDd9j2xYdW3MJz46" name="Screenshot 2026-04-27 at 8.10.15 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/ALxCEDeDd9j2xYdW3MJz46.png" mos="" align="middle" fullscreen="" width="1408" height="838" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>It's been a slow rise in reports for Outlook, which could be explained by people in the U.S. just getting logged on. Either way, it's clear something is wrong with Outlook, and if things don't get fixed soon, we expect the number of reports to keep rising.</p></div><div class="live-content"><time datetime="2026-04-27T12:17:03+00:00">April 27, 2026 – 8:17 AM</time><h2 id="microsoft-official-status">Microsoft official status</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:31.11%;"><img id="w3dbcEtZyRLZpU243mdbLd" name="Screenshot 2026-04-27 at 8.14.33 AM" alt="Outlook status" src="https://cdn.mos.cms.futurecdn.net/w3dbcEtZyRLZpU243mdbLd.png" mos="" align="middle" fullscreen="" width="1678" height="522" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>On <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">Microsoft's status page</a>, the company says, "Service health information for Microsoft products and services designed for personal use by families, individuals, and students."</p><p>So it sounds like the ongoing outage is only impacting home users, and people who use Microsoft services for business should be okay, at least for now.</p></div><div class="live-content"><time datetime="2026-04-27T12:20:24+00:00">April 27, 2026 – 8:20 AM</time><h2 id="outlook-com-is-the-main-issue">Outlook.com is the main issue</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:47.08%;"><img id="Z3cRxLFmDSdHnPkyJohKnD" name="Screenshot 2026-04-27 at 8.18.13 AM" alt="Outlook status" src="https://cdn.mos.cms.futurecdn.net/Z3cRxLFmDSdHnPkyJohKnD.png" mos="" align="middle" fullscreen="" width="1678" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>"Users may experience intermittent issues signing in to Outlook.com," says Microsoft's status page. </p><p>This appears to be the main issue people are dealing with at the moment and if Microsoft knows what the problem is, hopefully the company can get the issue solved as quickly as possible.</p></div><div class="live-content"><time datetime="2026-04-27T12:24:27+00:00">April 27, 2026 – 8:24 AM</time><h2 id="reports-past-1-000">Reports past 1,000</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:47.08%;"><img id="3r4jgenidMfbF5GR5pVqik" name="Screenshot 2026-04-27 at 8.22.49 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/3r4jgenidMfbF5GR5pVqik.png" mos="" align="middle" fullscreen="" width="1678" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>The reports on Downdetector have officially risen to more than 1,000, which isn't surprising, as the people on the East Coast in the U.S. are starting to wake up and get online.</p></div><div class="live-content"><time datetime="2026-04-27T12:26:27+00:00">April 27, 2026 – 8:26 AM</time><h2 id="what-s-microsoft-doing">What's Microsoft doing?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:720px;"><p class="vanilla-image-block" style="padding-top:69.17%;"><img id="WyjhEyKqgGvrhU5AViPL6b" name="nadella-microsoft-getty.jpg" alt="Microsoft CEO Satya Nadella standing in front of a screen displaying the Microsoft logo." src="https://cdn.mos.cms.futurecdn.net/WyjhEyKqgGvrhU5AViPL6b.jpg" mos="" align="middle" fullscreen="" width="720" height="498" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Justin Sullivan/Getty Images)</span></figcaption></figure><p>"We’re reviewing a recent change as part of our ongoing investigation and determining next steps," reads the latest update on Microsoft's status page.</p></div><div class="live-content"><time datetime="2026-04-27T12:40:28+00:00">April 27, 2026 – 8:40 AM</time><h2 id="a-small-downturn">A small downturn</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:47.08%;"><img id="RhsFnBsK8UDGkgvNYnjd3D" name="Screenshot 2026-04-27 at 8.38.17 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/RhsFnBsK8UDGkgvNYnjd3D.png" mos="" align="middle" fullscreen="" width="1678" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>While outage reports have remained mostly consistent, the most recent update shows a slight downturn. Sure, it's only a tiny drop, but it could be a sign that people aren't flocking to the service as quickly to report problems.</p></div><div class="live-content"><time datetime="2026-04-27T12:58:46+00:00">April 27, 2026 – 8:58 AM</time><h2 id="when-was-microsoft-s-last-update">When was Microsoft's last update?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2500px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="KPG47747aX2DtH8NaaLvK" name="Outlook.jpg" alt="Outlook" src="https://cdn.mos.cms.futurecdn.net/KPG47747aX2DtH8NaaLvK.jpg" mos="" align="middle" fullscreen="" width="2500" height="1406" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Microsoft hasn't posted an official update in a while, with the last one coming at 12:48 p.m. UTC (7:48 a.m. ET). That was more than an hour ago, which is pretty long for users waiting to access their email and other Outlook tools.</p><p>The company promised an update by 1:30 p.m. UTC (8:30 a.m. ET), but that time has passed without any new developments on Outlook. Hopefully, we get something official soon we can have a better idea of when everything will be back to normal.</p></div><div class="live-content"><time datetime="2026-04-27T13:22:18+00:00">April 27, 2026 – 9:22 AM</time><h2 id="microsoft-update">Microsoft update</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:600px;"><p class="vanilla-image-block" style="padding-top:66.67%;"><img id="ZkP3DTkQbj68miNYfMEaH3" name="microsoft-sign.jpg" alt="Microsoft sign" src="https://cdn.mos.cms.futurecdn.net/ZkP3DTkQbj68miNYfMEaH3.jpg" mos="" align="middle" fullscreen="" width="600" height="400" attribution="" endorsement="" class="inline"></p></div></div></figure><p>Microsoft posted an update on its Outlook status page. Here's what the company said: "We're reverting a recently introduced change to determine if this action provides relief from impact upon completion. In parallel, we're continuing to analyze customer reports, and we're closely monitoring service telemetry to identify our next steps and potential mitigation actions."</p></div><div class="live-content"><time datetime="2026-04-27T13:26:07+00:00">April 27, 2026 – 9:26 AM</time><h2 id="the-latest-from-downdetector">The latest from Downdetector </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:47.08%;"><img id="mEqHGo6se5drG3qUpKQngN" name="Screenshot 2026-04-27 at 9.24.01 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/mEqHGo6se5drG3qUpKQngN.png" mos="" align="middle" fullscreen="" width="1678" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>The Downdetector reports are staying pretty consistent, fluctuating within the 1,000 range. Currently sitting at 1,173, it's the highest it's been so far, but not breaking out of the pattern too much.</p></div><div class="live-content"><time datetime="2026-04-27T13:32:55+00:00">April 27, 2026 – 9:32 AM</time><h2 id="what-errors-are-we-seeing">What errors are we seeing?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1678px;"><p class="vanilla-image-block" style="padding-top:47.08%;"><img id="2cjiMSMYtAvce8qTTAogbU" name="Screenshot 2026-04-27 at 9.32.30 AM" alt="Microsoft reports" src="https://cdn.mos.cms.futurecdn.net/2cjiMSMYtAvce8qTTAogbU.png" mos="" align="middle" fullscreen="" width="1678" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>According to Microsoft, the main issues users are seeing is intermittent issues signing in to Outlook.com. Specifically, they may experience intermittent sign‑in failures, including “too many requests” errors or unexpected sign‑outs.</p><p>If this is happening to you, then know you're not alone and Microsoft is aware of the problem and working on it.</p></div><div class="live-content"><time datetime="2026-04-27T13:36:54+00:00">April 27, 2026 – 9:36 AM</time><h2 id="ios-seems-to-be-the-latest-issue">iOS seems to be the latest issue</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2066px;"><p class="vanilla-image-block" style="padding-top:25.56%;"><img id="n8iMw3do6iM4g6fz64nPV7" name="Screenshot 2026-04-27 at 9.35.48 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/n8iMw3do6iM4g6fz64nPV7.png" mos="" align="middle" fullscreen="" width="2066" height="528" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Users in the Downdetector comments section are saying they can't get the iOS app to connect, which could be a new wrinkle in the ongoing outage. </p></div><div class="live-content"><time datetime="2026-04-27T13:54:44+00:00">April 27, 2026 – 9:54 AM</time><h2 id="everything-else-seems-good-to-go">Everything else seems good to go</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2066px;"><p class="vanilla-image-block" style="padding-top:56.63%;"><img id="hNEShLGo3grYK5oWuVCzHF" name="Screenshot 2026-04-27 at 9.51.49 AM" alt="Microsoft Outlook" src="https://cdn.mos.cms.futurecdn.net/hNEShLGo3grYK5oWuVCzHF.png" mos="" align="middle" fullscreen="" width="2066" height="1170" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>According to Microsoft's status page, everything besides Outlook is good. We're seeing some Downdetector reports for other Microsoft services, but those could just be users reporting the wrong service.</p></div><div class="live-content"><time datetime="2026-04-27T14:17:27+00:00">April 27, 2026 – 10:17 AM</time><h2 id="downdetector-going-up-again">Downdetector going up again</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1530px;"><p class="vanilla-image-block" style="padding-top:51.63%;"><img id="f7r2pGViZMgCKKAasykDkV" name="Screenshot 2026-04-27 at 10.15.42 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/f7r2pGViZMgCKKAasykDkV.png" mos="" align="middle" fullscreen="" width="1530" height="790" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Downdetector reports are rising, reaching a record high of almost 1,500. Is this because more people are waking up and trying to get to work, or is something else going wrong? We're investigating, but Microsoft hasn't posted any new updates regarding the outage.</p></div><div class="live-content"><time datetime="2026-04-27T14:44:44+00:00">April 27, 2026 – 10:44 AM</time><h2 id="another-big-update-from-microsoft">Another big update from Microsoft</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1530px;"><p class="vanilla-image-block" style="padding-top:56.99%;"><img id="93qxJ5vKueUrNFPeMw8BdK" name="Screenshot 2026-04-27 at 10.42.32 AM" alt="Microsoft Outlook status" src="https://cdn.mos.cms.futurecdn.net/93qxJ5vKueUrNFPeMw8BdK.png" mos="" align="middle" fullscreen="" width="1530" height="872" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft posted a fairly extensive update on its status page. Essentially, the company said that it has reverted a change and is investigating the problem. </p><p>"We've completed reverting the recently introduced change, however, this has not produced any relief. We're continuing to investigate the unexpected increase in error rates affecting two separate error scenarios to identify any potential root cause which may be responsible for this. Additionally, we're closely monitoring service telemetry to discover any other potential actions, or mitigation steps," said Microsoft on its status page.</p></div><div class="live-content"><time datetime="2026-04-27T15:07:09+00:00">April 27, 2026 – 11:07 AM</time><h2 id="staying-steady-on-downdetector">Staying steady on Downdetector </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1530px;"><p class="vanilla-image-block" style="padding-top:56.99%;"><img id="qXHVdNj4uF5XDorCNVNRPa" name="Screenshot 2026-04-27 at 11.04.45 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/qXHVdNj4uF5XDorCNVNRPa.png" mos="" align="middle" fullscreen="" width="1530" height="872" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>While Microsoft has been busy reverting changes so users can log in to Outlook again, people are still hanging around on <a href="https://downdetector.com/status/outlook/" target="_blank">Downdetector</a> reporting problems. </p><p>It has dropped slightly since the outage peaked, but it's still hovering around 1,400 reports, which is relatively high.</p></div><div class="live-content"><time datetime="2026-04-27T15:46:23+00:00">April 27, 2026 – 11:46 AM</time><h2 id="latest-update-from-microsoft">Latest update from Microsoft</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:760px;"><p class="vanilla-image-block" style="padding-top:55.39%;"><img id="ZA7JiMxrA3kaJkJqixkYua" name="Screenshot 2026-04-27 084101" alt="Microsoft outage 4-27-26" src="https://cdn.mos.cms.futurecdn.net/ZA7JiMxrA3kaJkJqixkYua.png" mos="" align="middle" fullscreen="" width="760" height="421" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft has another update and it appears more specific issues are occurring.</p><p>"We’re seeing specific errors related to authentication key failures. We’re working to determine the underlying cause in order to determine our next mitigation steps," the <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">Microsoft Cloud Status says</a>.</p><p>The page does say that you may experience intermittent sign-in failures or unexpected sign-outs.</p></div><div class="live-content"><time datetime="2026-04-27T16:04:28+00:00">April 27, 2026 – 12:04 PM</time><h2 id="outlook-users-are-upset">Outlook users are upset</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2500px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="KPG47747aX2DtH8NaaLvK" name="Outlook.jpg" alt="Outlook" src="https://cdn.mos.cms.futurecdn.net/KPG47747aX2DtH8NaaLvK.jpg" mos="" align="middle" fullscreen="" width="2500" height="1406" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Sign-in issues seem to be the most common problem I'm seeing reported across social media. And users are not happy. </p><p>"What a joke.  Tell us in English what is wrong and what you are doing to fix it and an estimated timeframe. Stop pretending it is a small,issue," said one <a href="https://x.com/MSFT365Status/status/2048758539603136897" target="_blank">person on X</a>.</p><p>On Down Detector, several people claimed the iOS app specifically was having issues.</p><p>"Each time I refresh a different outlook app fails. Hope they get this resolved quickly," a commentor wrote.</p><p>The <a href="https://www.reddit.com/r/Outlook/new/" target="_blank">Outlook subreddit i</a>s filled with posts trying to figure out getting around the sign-in issue and cursing out Microsoft.</p></div><div class="live-content"><time datetime="2026-04-27T16:45:51+00:00">April 27, 2026 – 12:45 PM</time><h2 id="issues-have-persisted-for-8-hours">Issues have persisted for 8 hours</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:676px;"><p class="vanilla-image-block" style="padding-top:46.01%;"><img id="WNyE6bZsaHgZsuENg776VB" name="Screenshot 2026-04-27 094201" alt="Microsoft Outlook outage 4-27-26" src="https://cdn.mos.cms.futurecdn.net/WNyE6bZsaHgZsuENg776VB.png" mos="" align="middle" fullscreen="" width="676" height="311" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>Today's Outlook outage started steadily rising around 5 am Eastern as people started trying to log on for work. </p><p>Since then the outage has remained steady with around 1500 reports on Down Detector every hour since then. </p><p>Unfortunately, as of this posting it doesn't appear that issues will be resolving any time soon.</p></div><div class="live-content"><time datetime="2026-04-27T17:24:38+00:00">April 27, 2026 – 1:24 PM</time><h2 id="what-microsoft-is-saying-right-now">What Microsoft is saying right now</h2><p>Microsoft is still working on the Outlook issue according to the <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">Microsoft status page</a>.</p><p>"We're running tests to reproduce impact in our internal environment to obtain additional logging to isolate the source of the unexpected error messages."</p><p>The company has yet to provide an ETA for when the testing might resolve and mititgation implemented. For now, it runs on.</p></div><div class="live-content"><time datetime="2026-04-27T17:40:00+00:00">April 27, 2026 – 1:40 PM</time><h2 id="potential-workaround">Potential workaround</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1981px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="QcDNYDHLZWSjpMdgzpVJQG" name="Outlook.shutterstock_2384091865.jpg" alt="Outlook on a laptop" src="https://cdn.mos.cms.futurecdn.net/QcDNYDHLZWSjpMdgzpVJQG.jpg" mos="" align="middle" fullscreen="" width="1981" height="1114" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>I'm seeing on the <a href="https://www.reddit.com/r/Outlook/comments/1sxa5jx/cant_get_into_account/" target="_blank">Outlook subreddit </a>people suggesting you use your mobile number to log in rather than your email. </p><p>This workaround supposedly works on both browser and app versions of Outlook. </p><p>If you've been struggling to login give this a try and let us know if it works for you.</p></div><div class="live-content"><time datetime="2026-04-27T17:58:51+00:00">April 27, 2026 – 1:58 PM</time><h2 id="multiple-potential-causes">Multiple potential causes</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:814px;"><p class="vanilla-image-block" style="padding-top:77.52%;"><img id="pSqm6xE6y6DBtBcQ6g42va" name="Screenshot 2026-04-27 105754" alt="microsoft status page. Outlook outage 4.27.26" src="https://cdn.mos.cms.futurecdn.net/pSqm6xE6y6DBtBcQ6g42va.png" mos="" align="middle" fullscreen="" width="814" height="631" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft provided another update that indicates today's outage may have multiple causes.</p><p>"We've identified a recent service change that is potentially contributing to user impact," the status page reads.</p><p>Microsoft says its rolling back that change to see if it fixes the problem. The page also said that the company is investigating "the unusual error patterns" that were observed earlier.</p></div><div class="live-content"><time datetime="2026-04-27T18:35:57+00:00">April 27, 2026 – 2:35 PM</time><h2 id="microsoft-rollback-didn-t-work">Microsoft: Rollback didn't work</h2><p>Welp, back to square one. </p><p>"The roll back that was completed does not appear to have provided the intended impact relief. We're continuing to look at internal reproductions of the impact to find potential next steps for mitigation and understand the source of error messages."</p><p>The outage rolls on.</p></div><div class="live-content"><time datetime="2026-04-27T18:48:34+00:00">April 27, 2026 – 2:48 PM</time><h2 id="is-copilot-to-blame">Is Copilot to blame?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:854px;"><p class="vanilla-image-block" style="padding-top:56.21%;"><img id="wZGmfPwAivKWvikiWeJGM8" name="Introducing Your AI Companion _ Microsoft Copilot 27-33 screenshot" alt="Microsoft 50th anniversary Copilot Home Screen" src="https://cdn.mos.cms.futurecdn.net/wZGmfPwAivKWvikiWeJGM8.png" mos="" align="middle" fullscreen="" width="854" height="480" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>While the Microsoft status page is only saying that the rollback of a service update didn't work, the <a href="https://x.com/MSFT365Status/status/2048824181047869722" target="_blank">M365 X account </a>is providing more details about a separate issue, and Copilot may be to blame.</p><p>"We’ve determined a portion of our Copilot infrastructure in North America is utilizing a high number of resources, and we're rebalancing traffic to remediate the issue."</p><p>A follow-up post says that Microsoft rebalanced traffic and optimized the impacted infrastructure. The post claims that the company is seeing positive signals in service health. </p><p>Perhaps things will settle down again.</p></div><div class="live-content"><time datetime="2026-04-27T19:29:52+00:00">April 27, 2026 – 3:29 PM</time><h2 id="issue-may-have-been-resolved">Issue may have been resolved</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2048845821504819200"><p lang="en" dir="ltr">After a period of monitoring, we confirmed that our actions to rebalance traffic and optimize infrastructure have resolved the issue. For more information, please see CP1293219 in the admin center.<a href="https://twitter.com/cantworkitout/status/2048845821504819200">April 27, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The Microsoft 365 X account just posted that the company may have resolved the outage issue.</p><p>"After a period of monitoring, we confirmed that our actions to rebalance traffic and optimize infrastructure have resolved the issue."</p><p>I saw some immediate comments from people saying they couldn't log in, but it's doubtful the fix will immediately let you back into Outlook. It will likely take a bit for the mitigation to actually hit everyone's accounts. </p><p>We'll keep an eye on things, but I expect things to resolve over the next hour.</p></div><div class="live-content"><time datetime="2026-04-27T19:49:08+00:00">April 27, 2026 – 3:49 PM</time><h2 id="different-answers-from-different-sources">Different answers from different sources</h2><p>Despite linking to the Microsoft 365 X account, the service page and X account are giving slightly differing answers to the causes of the outage. </p><p>Currently, the status page reads:</p><p>"After reviewing the logs collected from internal reproductions we've found a pattern of errors that point to a recent backend configuration change that may be causing impact. We've completed a roll back of this configuration change. We're now carefully monitoring the environment to determine if it worked as intended or if there are additional steps required for full incident resolution."</p><p>Which is different from the claimed resolution we saw earlier from the X account. </p></div><div class="live-content"><time datetime="2026-04-27T20:19:22+00:00">April 27, 2026 – 4:19 PM</time><h2 id="service-recovering-but-ios-users-have-extra-steps">Service recovering but iOS users have extra steps</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:853px;"><p class="vanilla-image-block" style="padding-top:60.96%;"><img id="77h7giWwLQ9NhbRWTtqwSd" name="outlook-iphone-shst.jpg" alt="Microsoft Outlook" src="https://cdn.mos.cms.futurecdn.net/77h7giWwLQ9NhbRWTtqwSd.jpg" mos="" align="middle" fullscreen="" width="853" height="520" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft says that service is recovering for Outlook, but if you use the iOS version you have to follow additional steps to get Outlook working again.</p><p>Here are the steps from Microsoft:</p><ul><li>Open the Settings app on your iPhone.</li><li>Scroll down and tap on Mail.</li><li>Select Accounts under the Mail settings.</li><li>Tap on the email account for which you need to reenter the password.</li><li>Tap on Account Settings or directly on the Password field (depending on your iOS version).</li><li>Enter the updated or correct password in the Password field.</li><li>Tap Done to save the changes.</li><li>Open the Mail app to confirm that the account is syncing properly and emails are being sent/received.</li></ul></div><div class="live-content"><time datetime="2026-04-27T21:18:26+00:00">April 27, 2026 – 5:18 PM</time><h2 id="despite-recovery-claims-reports-continue-to-roll-in">Despite recovery claims reports continue to roll in</h2><p>It's been an hour since Microsoft declared that service was improving, and yet, from our outside view things appear to be the same. </p><p>Reports on <a href="https://downdetector.com/status/outlook/" target="_blank">Down Detector</a> have hovered around 1,000 for the last four or five hours and continue to do so. And I'm still seeing comments on X and Reddit that users are having issues logging in. </p></div><div class="live-content"><time datetime="2026-04-27T22:11:21+00:00">April 27, 2026 – 6:11 PM</time><h2 id="finally-going-down">Finally, going down?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:678px;"><p class="vanilla-image-block" style="padding-top:46.17%;"><img id="PCqxZieAbge747zbEp4xtW" name="Screenshot 2026-04-27 150755" alt="Microsoft Outlook outage 4-27-26" src="https://cdn.mos.cms.futurecdn.net/PCqxZieAbge747zbEp4xtW.png" mos="" align="middle" fullscreen="" width="678" height="313" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Down Detector)</span></figcaption></figure><p>For the first time since 7:50 am ET, it appears the accumulated reports on Down Detector are finally descending. </p><p>As of this posting, the graph on DD is sitting at around 957 reports. It's not a big drop but it's the first real sustained drop. </p><p>Perhaps we've finally reached the end of this one.</p></div><div class="live-content"><time datetime="2026-04-27T23:08:04+00:00">April 27, 2026 – 7:08 PM</time><h2 id="service-health-to-normal">Service health to normal?</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2048886671169470728"><p lang="en" dir="ltr">We’ve confirmed service health has returned to normal and reporting users that have completed the additional steps are able to access Outlook and Hotmail. For the list of mitigation steps and more information, please review the attached screenshot or visit… pic.twitter.com/YHp86VTOYD<a href="https://twitter.com/cantworkitout/status/2048886671169470728">April 27, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The Microsoft 365 X account posted that service health has returned to normal. </p><p>Reports do seem to be slowly going down but are still around 900 on DD as of this writing. And again, I am still seeing people saying they can't get access.</p><p>I suspect as the West Coast starts to turn off for the work day reports will take a nose dive, but for now it chugs along waiting for Outlook to work.</p></div><div class="live-content"><time datetime="2026-04-27T23:29:41+00:00">April 27, 2026 – 7:29 PM</time><h2 id="outlook-not-working-and-users-upset">Outlook not working and users upset</h2><p>I mentioned that Microsoft released an message saying that Outlook service health has been restored but the comments under the message on Twitter belie that. </p><p>"These instructions are still not working. I’m still being told the following: You’ve tried to sign in too many times with an incorrect account or password. My account and password are correct! You have not corrected the problem!!" from Leslie Barry.</p><p>That is a common refrain from many people. Based on an accumulation of comments, it appears that people's attempts to login today may have blocked the ability to get in, possibly for up to 24 hours. </p><p>However, Microsoft has not appeared to say anything about that specific issue. I did see one user suggest that people reach out to M365 sales support who might have a workaround.</p></div><div class="live-content"><time datetime="2026-04-28T08:19:08+00:00">April 28, 2026 – 4:19 AM</time><h2 id="reports-continue-to-drop-off">Reports continue to drop off</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1147px;"><p class="vanilla-image-block" style="padding-top:53.10%;"><img id="e68fdifNYg4p3jQ7a9vCqc" name="Screenshot 2026-04-28 091547" alt="DownDetector Microsoft Outlook reports" src="https://cdn.mos.cms.futurecdn.net/e68fdifNYg4p3jQ7a9vCqc.png" mos="" align="middle" fullscreen="" width="1147" height="609" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>The problems, at least for a lot of people, seem to be resolving themselves. According to DownDetector, the reports through the night are falling off; at the time of writing (4:15 am ET), there are fewer than 100 reports on the outage site.</p></div><div class="live-content"><time datetime="2026-04-28T09:44:18+00:00">April 28, 2026 – 5:44 AM</time><h2 id="are-you-still-experiencing-issues">Are you still experiencing issues?</h2><p>Are you still suffering with Microsoft Outlook or has the service resumed for you? Let us know in the poll below if you're still affected.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5vjnO"></div>                            </div>                            <script src="https://kwizly.com/embed/W5vjnO.js" async></script></div><div class="live-content"><time datetime="2026-04-28T11:22:29+00:00">April 28, 2026 – 7:22 AM</time><h2 id="microsoft-still-claims-service-degradation">Microsoft still claims 'service degradation'</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:990px;"><p class="vanilla-image-block" style="padding-top:36.67%;"><img id="EHXhZzbRb9LRZydXH2paj3" name="Screenshot 2026-04-28 121749" alt="Microsoft service page showing Outlook issues April 2026" src="https://cdn.mos.cms.futurecdn.net/EHXhZzbRb9LRZydXH2paj3.png" mos="" align="middle" fullscreen="" width="990" height="363" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Microsoft's <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect">service status page</a> is still listing "service degradation" for Outlook.com and reiterating that iOS users may still have some lingering problems when accessing their Outlook and Hotmail accounts from the iOS default Mail app.</p><p>The team's last post is from yesterday, at 10:46pm and lists the following steps for iOS users to take.</p><p>1. Open the Settings app on your iPhone. <br>2. Scroll down and tap on Mail. <br>3. Select Accounts under the Mail settings. <br>4. Tap on the email account for which you need to reenter the password. <br>5. Tap on Account Settings or directly on the Password field (depending on your iOS version). 6. Enter the updated or correct password in the Password field. <br>7. Tap Done to save the changes. <br>8. Open the Mail app to confirm that the account is syncing properly and emails are being sent/received.</p></div><div class="live-content"><time datetime="2026-04-28T11:54:35+00:00">April 28, 2026 – 7:54 AM</time><h2 id="let-us-know-if-you-re-still-affected">Let us know if you're still affected!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Nf8vtkJj67rLf9EqdWRU5F" name="Outlook comments" alt="Outlook comments" src="https://cdn.mos.cms.futurecdn.net/Nf8vtkJj67rLf9EqdWRU5F.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>It's been almost 24 hours since we started reporting on this Microsoft Outlook outage, and some users are still experiencing issues. If you're seeing problems, you can let us (and others) know in the comments section at the bottom of this article.</p><p>Tom's Guide user suebri380 posted two hours ago that Outlook still would not allow  signing in using Apple Mail. </p><p>"Despite their reassurances the problem has been fixed I still cannot get access via the Apple Mail App as Outlook will not let me sign in," they wrote.</p><iframe title="" description="Tell us how you're affected" minimumCommentCount="1" class="position-center" data-lazy-priority="low" data-lazy-src=""></iframe></div><div class="live-content"><time datetime="2026-04-28T15:07:44+00:00">April 28, 2026 – 11:07 AM</time><h2 id="it-s-been-a-winding-climb">It's been a winding climb</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1810px;"><p class="vanilla-image-block" style="padding-top:44.42%;"><img id="VGoeKLVtLAecfFpXvvN86k" name="Screenshot 2026-04-28 at 11.04.41 AM" alt="Downdetector reports" src="https://cdn.mos.cms.futurecdn.net/VGoeKLVtLAecfFpXvvN86k.png" mos="" align="middle" fullscreen="" width="1810" height="804" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector )</span></figcaption></figure><p>Outlook has been going up and down on Downdetector since yesterday. And while it's not reaching the levels we saw at the peak of the outage, there are still a significant number of people experiencing problems, according to Downdetector reports.</p><p>For its part, Microsoft's status page says, "We’ve received reports that impact associated with OL1292958 persists. We've resumed our investigation of the issue and are currently analyzing service telemetry and investigating reported behavior to determine scope and next steps."</p></div><div class="live-content"><time datetime="2026-04-28T16:04:54+00:00">April 28, 2026 – 12:04 PM</time><h2 id="microsoft-admits-there-are-still-issues">Microsoft admits there are still issues</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:764px;"><p class="vanilla-image-block" style="padding-top:45.03%;"><img id="7eJQyRndZX26yhoK78CBen" name="Screenshot 2026-04-28 090405" alt="Microsoft Outlook outage 4-28-26" src="https://cdn.mos.cms.futurecdn.net/7eJQyRndZX26yhoK78CBen.png" mos="" align="middle" fullscreen="" width="764" height="344" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>While reports haven't hit the highs from yesterday, it still appears people are having issues, and Microsoft acknowledged that in the most recent post on the M365 status page.</p><p>"We’ve received reports that impact associated with OL1292958 persists. We've resumed our investigation of the issue and are currently analyzing service telemetry and investigating reported behavior to determine scope and next steps."</p><p>Whatever fixes were implemented last night did not fix every issue that may be affecting Outlook.</p></div><div class="live-content"><time datetime="2026-04-28T16:46:03+00:00">April 28, 2026 – 12:46 PM</time><h2 id="locked-out-for-24-to-48-hours">Locked out for 24 to 48 hours</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1981px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="QcDNYDHLZWSjpMdgzpVJQG" name="Outlook.shutterstock_2384091865.jpg" alt="Outlook on a laptop" src="https://cdn.mos.cms.futurecdn.net/QcDNYDHLZWSjpMdgzpVJQG.jpg" mos="" align="middle" fullscreen="" width="1981" height="1114" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>As the Outlook issues persist, concerned users on the <a href="https://www.reddit.com/r/Outlook/new/" target="_blank">Outlook subreddit </a>said they've tried reaching out to Microsoft customer service because they remained unable to login</p><p>Apparently, you could be locked out of your account 24 to 48 hours after you last login attempt. Which unfortunately means that if you tried late in the day you could be locked out well into Thursday. </p><p>However, multiple people have pushed back noting that text message recovery is down as well.</p><p>It may be best to stop trying to login for now until things are fully back.</p></div><div class="live-content"><time datetime="2026-04-28T17:19:35+00:00">April 28, 2026 – 1:19 PM</time><h2 id="ios-experience-work">iOS experience work</h2><p>According to Microsoft, the company is working on changes to optimize the outlook.com iOS sign-in experience. </p><p>"Once complete, we'll provide instructions to help users sign back into their accounts," the status page reads.</p><p>They also brought back the steps from yesterday as a potential workaround to sign in.</p><ul><li>1. Open the Settings app on your iPhone.</li><li>2. Scroll down and tap on Mail.</li><li>3. Select Accounts under the Mail settings.</li><li>4. Tap on the email account for which you need to reenter the password.</li><li>5. Tap on Account Settings or directly on the Password field (depending on your iOS version).</li><li>6. Enter the updated or correct password in the Password field.</li><li>7. Tap Done to save the changes.</li><li>8. Open the Mail app to confirm that the account is syncing properly and emails are being sent/received.</li></ul><p>Let us know if that actually works for you.</p></div><div class="live-content"><time datetime="2026-04-28T18:18:45+00:00">April 28, 2026 – 2:18 PM</time><h2 id="no-updates">No updates</h2><p>Unfortunately, there is nothing new to report. Things remain the same.</p><p>We've reached out to Microsoft for comment and will update this blog when and if the company responds.</p></div><div class="live-content"><time datetime="2026-04-28T19:34:25+00:00">April 28, 2026 – 3:34 PM</time><h2 id="unfortunately-in-stasis">Unfortunately, in stasis</h2><p>Unfortunately, I can't provide much of an update to anyone suffering from the Outlook outage. </p><p>Microsoft hasn't provided an update to the status page in an hour and the M365 support account has remained quiet for...21 hours, as of this post. </p><p>A Microsoft rep told Tom's Guide they're looking into the issue but we've yet to receive any other response.</p></div><div class="live-content"><time datetime="2026-04-28T21:09:07+00:00">April 28, 2026 – 5:09 PM</time><h2 id="trending-in-the-right-direction-but-not-over-yet">Trending in the right direction, but not over yet</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:923px;"><p class="vanilla-image-block" style="padding-top:51.46%;"><img id="bJogR4E2vbctEENpMY2KRC" name="Screenshot 2026-04-28 at 5.06.14 PM" alt="Microsoft Outlook outage chart from Downdetector" src="https://cdn.mos.cms.futurecdn.net/bJogR4E2vbctEENpMY2KRC.png" mos="" align="middle" fullscreen="" width="923" height="475" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Downdetector)</span></figcaption></figure><p>The latest chart from Downdetector shows that the problem is being resolved, but that plenty of folks are still having issues — mostly with logging in. </p></div><div class="live-content"><time datetime="2026-04-28T21:51:33+00:00">April 28, 2026 – 5:51 PM</time><h2 id="finally-resolving">Finally resolving?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:600px;"><p class="vanilla-image-block" style="padding-top:75.00%;"><img id="zcQypYc3iCynfLUquQedGV" name="outlook-ios.jpg" alt="Outlook in iOS" src="https://cdn.mos.cms.futurecdn.net/zcQypYc3iCynfLUquQedGV.jpg" mos="" align="middle" fullscreen="" width="600" height="450" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Across Down Detector comments, the Outlook subreddit and X, it appears the people are starting to get back into their accounts. </p><p>Microsoft hasn't provided an update in hours, so it's not clear what's being done on the company's end. </p><p>But something must be working since people are saying the two-factor authentication is finally working again or they're able to login using backup emails and phone numbers. </p></div><div class="live-content"><time datetime="2026-04-28T22:17:57+00:00">April 28, 2026 – 6:17 PM</time><h2 id="well-well-well-an-update">Well, well, well an update</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2049249375075901512"><p lang="en" dir="ltr">We're aware that some users are still unable to access their https://t.co/ZUfyjth6sU accounts on iOS devices following yesterday's event, and we're performing some sign-in optimizations to alleviate impact. We'll update https://t.co/uSHwRmXFJZ with more guidance as it becomes…<a href="https://twitter.com/cantworkitout/status/2049249375075901512">April 28, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>After nearly a day without an update, the <a href="https://x.com/MSFT365Status" target="_blank">official M365 support X account</a> just posted an update, unfortunately it's the same update that we've already seen on the <a href="https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect" target="_blank">status page</a>.</p><p>"We're aware that some users are still unable to access their http://Outlook.com accounts on iOS devices following yesterday's event, and we're performing some sign-in optimizations to alleviate impact. We'll update https://status.cloud.microsoft with more guidance as it becomes available."</p><p>And that's it.</p></div><div class="live-content"><time datetime="2026-04-28T23:39:08+00:00">April 28, 2026 – 7:39 PM</time><h2 id="service-health-back-to-normal-but-ios-users-have-extra-steps">Service health back to normal but iOS users have extra steps</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:764px;"><p class="vanilla-image-block" style="padding-top:83.64%;"><img id="EQGQs2xwjKnwVHzRkxKz7E" name="Screenshot 2026-04-28 163723" alt="Microsoft outage 4-28-26" src="https://cdn.mos.cms.futurecdn.net/EQGQs2xwjKnwVHzRkxKz7E.png" mos="" align="middle" fullscreen="" width="764" height="639" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Once again, Microsoft says that Outlook service health has returned to normal. </p><p>However, the status page specifically says that iOS users must take the steps outlined previously. I'm posting them again so you have them if you are an iOS user with Outlook.</p><ul><li>1. Open the Settings app on your iPhone.</li><li>2. Scroll down and tap on Mail.</li><li>3. Select Accounts under the Mail settings.</li><li>4. Tap on the email account for which you need to reenter the password.</li><li>5. Tap on Account Settings or directly on the Password field (depending on your iOS version).</li><li>6. Enter the updated or correct password in the Password field.</li><li>7. Tap Done to save the changes.</li><li>8. Open the Mail app to confirm that the account is syncing properly and emails are being sent/received.</li></ul></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft reportedly redesigning Start Menu in Windows 11 after actually listening to user complaints ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Microsoft has been <a href="https://www.tomsguide.com/computing/windows-operating-systems/we-need-to-improve-windows-in-ways-that-are-meaningful-for-people-microsoft-is-urgently-trying-to-fix-windows-11-issues">promising to improve Windows 11</a> since January and we may see that overhaul begin with the <a href="https://www.tomsguide.com/news/windows-11-new-start-menu-everything-you-need-to-know">Start Menu</a>. The tech giant is rebuilding the Start menu with customization options and improved performance.</p><p>According to our friends at <a href="https://www.windowscentral.com/gaming/indies-idxbox/starship-troopers-ultimate-bug-war-xbox" target="_blank">Windows Central</a>, Microsoft is working on an update that's designed to give you more control over how the the menu looks and operates. It fits with <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-promises-windows-11-reset-new-focus-on-performance-reliability-and-reducing-unnecessary-copilot-ai">promises made in March</a> that detailed more customization and performance improvements for Windows 11 as a whole.</p><h2 id="what-is-microsoft-potentially-changing">What is Microsoft potentially changing</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WWfVQoKyhS6ocSop9eu59R" name="Windows 11 laptop.jpg" alt="Windows 11" src="https://cdn.mos.cms.futurecdn.net/WWfVQoKyhS6ocSop9eu59R.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Per Window Central, the initial look of the Start Menu will appear similar to how it already does in Windows 11. The difference will be in customization options configurable in the Windows Settings app. </p><p>Examples include the ability to turn off specific sections of the menu and choosing between small or large layouts. Currently, you can only see the small and large layouts depending on your screen size and device. This would let you set the menu to your preferred size regardless of what kind of device you're using.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7bDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7bDO.js" async></script><p>As for toggling off sections, allegedly, you can turn off different things like the recommended feed or pinning apps in the menu. You could potentially even disable the all apps list.</p><p>Beyond customization, the new Start menu is supposed to be much more responsive, even when under intense load. This is supposed to extend to the search bar in the menu where you'll be able to type and search without any noticeable slowdown or missed keys.</p><h2 id="what-could-have-been">What could have been</h2><p>The alleged changes come out as Microsoft's design team shared on its Instagram page the approach that was taken to redesigning the Start menu. Unfortunately, the comments under that post are not kind.</p><p>"I don't like the new Start Menu at all. It doesn't fulfill my personal necessities and it makes everything more frustrating and time consuming. I even pay a third party software that modify it," one person wrote.</p><p>The comments were eventually turned off.</p><div class="instagram-embed"><blockquote class="instagram-media"  data-instgrm-version="6" style="width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><p><a href="https://www.instagram.com/p/DWmNoyilCOw/" target="_blank">A post shared by Microsoft Design (@microsoft.design)</a></p><p>A photo posted by </p></blockquote></div><p><a href="https://www.windowslatest.com/2026/04/10/microsoft-tested-5-different-start-menus-for-windows-11-before-choosing-the-current-one/" target="_blank">Windows Latest</a> points out that the Windows Design team <a href="https://microsoft.design/articles/start-fresh-redesigning-windows-start-menu/" target="_blank">released a blog post</a> last year that revealed five prototype Start menus. Some commentators called the prototypes more beautiful. However, looking at some of the images, all five still appear to have the same problems that the current menu does.</p><p>To be honest, it just makes us <a href="https://www.tomsguide.com/news/windows-10s-stunning-new-start-menu-revealed-heres-your-first-look">miss the Windows 10 Start Menu</a>, which mixed app lists and tiles in a more usable way. </p><p>Microsoft says it wants to solve the pain points in Windows 11 throughout 2026. It appears the Start Menu will be one of the first changes.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-starts-removing-copilot-from-windows-11-im-saying-that-sarcastically-because-its-clearly-just-lip-service">Microsoft starts removing Copilot from Windows 11 — I’m saying that sarcastically because it's clearly just lip service</a></li><li><a href="https://www.tomsguide.com/computing/windows-is-using-your-internet-to-update-other-peoples-pcs-disable-this-hidden-setting-to-speed-up-your-connection">Windows is using your internet to update other people’s PCs — disable this hidden setting to speed up your connection</a></li><li><a href="https://www.tomsguide.com/ai/i-ditched-copilot-for-claude-in-microsoft-word-and-im-never-going-back">I ditched Copilot for Claude in Microsoft Word — and I’m never going back</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/microsoft-reportedly-redesigning-start-menu-in-windows-11-after-actually-listening-to-user-complaints</link>
                                                                            <description>
                            <![CDATA[ Microsoft is reportedly redesigning the Windows 11 Start Menu after listening to user complaints. Here's what's coming. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ckX6ZCN86Tefb6EAuYkRjC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PLRu6JNgfn6MqNXq2G4BWj-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 17 Apr 2026 23:26:55 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/PLRu6JNgfn6MqNXq2G4BWj-1280-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Windows 11 Start Menu - dark mode]]></media:description>                                                            <media:text><![CDATA[Windows 11 Start Menu - dark mode]]></media:text>
                                <media:title type="plain"><![CDATA[Windows 11 Start Menu - dark mode]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PLRu6JNgfn6MqNXq2G4BWj-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Microsoft has been <a href="https://www.tomsguide.com/computing/windows-operating-systems/we-need-to-improve-windows-in-ways-that-are-meaningful-for-people-microsoft-is-urgently-trying-to-fix-windows-11-issues">promising to improve Windows 11</a> since January and we may see that overhaul begin with the <a href="https://www.tomsguide.com/news/windows-11-new-start-menu-everything-you-need-to-know">Start Menu</a>. The tech giant is rebuilding the Start menu with customization options and improved performance.</p><p>According to our friends at <a href="https://www.windowscentral.com/gaming/indies-idxbox/starship-troopers-ultimate-bug-war-xbox" target="_blank">Windows Central</a>, Microsoft is working on an update that's designed to give you more control over how the the menu looks and operates. It fits with <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-promises-windows-11-reset-new-focus-on-performance-reliability-and-reducing-unnecessary-copilot-ai">promises made in March</a> that detailed more customization and performance improvements for Windows 11 as a whole.</p><h2 id="what-is-microsoft-potentially-changing">What is Microsoft potentially changing</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WWfVQoKyhS6ocSop9eu59R" name="Windows 11 laptop.jpg" alt="Windows 11" src="https://cdn.mos.cms.futurecdn.net/WWfVQoKyhS6ocSop9eu59R.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Per Window Central, the initial look of the Start Menu will appear similar to how it already does in Windows 11. The difference will be in customization options configurable in the Windows Settings app. </p><p>Examples include the ability to turn off specific sections of the menu and choosing between small or large layouts. Currently, you can only see the small and large layouts depending on your screen size and device. This would let you set the menu to your preferred size regardless of what kind of device you're using.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7bDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7bDO.js" async></script><p>As for toggling off sections, allegedly, you can turn off different things like the recommended feed or pinning apps in the menu. You could potentially even disable the all apps list.</p><p>Beyond customization, the new Start menu is supposed to be much more responsive, even when under intense load. This is supposed to extend to the search bar in the menu where you'll be able to type and search without any noticeable slowdown or missed keys.</p><h2 id="what-could-have-been">What could have been</h2><p>The alleged changes come out as Microsoft's design team shared on its Instagram page the approach that was taken to redesigning the Start menu. Unfortunately, the comments under that post are not kind.</p><p>"I don't like the new Start Menu at all. It doesn't fulfill my personal necessities and it makes everything more frustrating and time consuming. I even pay a third party software that modify it," one person wrote.</p><p>The comments were eventually turned off.</p><div class="instagram-embed"><blockquote class="instagram-media"  data-instgrm-version="6" style="width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><p><a href="https://www.instagram.com/p/DWmNoyilCOw/" target="_blank">A post shared by Microsoft Design (@microsoft.design)</a></p><p>A photo posted by </p></blockquote></div><p><a href="https://www.windowslatest.com/2026/04/10/microsoft-tested-5-different-start-menus-for-windows-11-before-choosing-the-current-one/" target="_blank">Windows Latest</a> points out that the Windows Design team <a href="https://microsoft.design/articles/start-fresh-redesigning-windows-start-menu/" target="_blank">released a blog post</a> last year that revealed five prototype Start menus. Some commentators called the prototypes more beautiful. However, looking at some of the images, all five still appear to have the same problems that the current menu does.</p><p>To be honest, it just makes us <a href="https://www.tomsguide.com/news/windows-10s-stunning-new-start-menu-revealed-heres-your-first-look">miss the Windows 10 Start Menu</a>, which mixed app lists and tiles in a more usable way. </p><p>Microsoft says it wants to solve the pain points in Windows 11 throughout 2026. It appears the Start Menu will be one of the first changes.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-starts-removing-copilot-from-windows-11-im-saying-that-sarcastically-because-its-clearly-just-lip-service">Microsoft starts removing Copilot from Windows 11 — I’m saying that sarcastically because it's clearly just lip service</a></li><li><a href="https://www.tomsguide.com/computing/windows-is-using-your-internet-to-update-other-peoples-pcs-disable-this-hidden-setting-to-speed-up-your-connection">Windows is using your internet to update other people’s PCs — disable this hidden setting to speed up your connection</a></li><li><a href="https://www.tomsguide.com/ai/i-ditched-copilot-for-claude-in-microsoft-word-and-im-never-going-back">I ditched Copilot for Claude in Microsoft Word — and I’m never going back</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft starts removing Copilot from Windows 11 — I’m saying that sarcastically because it's clearly just lip service ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Let’s be real. Nobody I know has anything good to say about Microsoft Copilot. Shoved down our throats in any way possible in Windows 11, it’s turned the OS into a bloated behemoth that consumes the very thing we’re all seeing get way more expensive — RAM. And for what? Some rewriting tools, AI image generation in Paint and a searchable visual timeline of everything you do that’s quite a security risk, which is all ignored by users.</p><p>So it’s fair to say that I got a little hyped when I saw the <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-promises-windows-11-reset-new-focus-on-performance-reliability-and-reducing-unnecessary-copilot-ai">“commitment to Windows quality” blog</a>, which confirms a major update with reduced Copilot features and better efficiency. Microsoft listened…at least that’s what I thought. Because what we’re actually getting from the first signs of these changes is a simple rebranding. Copilot is still there — it’s just called something different.</p><h2 id="an-ai-wolf-in-sheep-s-clothing">An AI wolf in sheep’s clothing</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="L4fvJePjWfU8dLsesT8kRG" name="Copilot" alt="Copilot" src="https://cdn.mos.cms.futurecdn.net/L4fvJePjWfU8dLsesT8kRG.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Windows Latest)</span></figcaption></figure><p>As discovered by <a href="https://www.windowslatest.com/2026/04/09/microsoft-begins-removing-copilot-from-windows-11-starting-with-notepad-snipping-tool/" target="_blank">Windows Latest</a>, the Notepad app and Snipping Tool are the first signs of Microsoft starting to rollback Copilot in the latest Windows 11 Insider Preview. Copilot logos have disappeared from Notepad and the Snipping Tool.</p><p>But as is clearly apparent, this is mostly just branding only. Instead of a colorful Copilot button, Notepad gets a “Writing tools” icon, whereas the Snipping Tool is actually AI-free from the looks of it. Being someone who got tired of seeing Copilot everywhere, it’s definitely a welcome change. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1330px;"><p class="vanilla-image-block" style="padding-top:44.14%;"><img id="ZvgnjCyEHVioL2va4cskSG" name="Copilot" alt="Copilot" src="https://cdn.mos.cms.futurecdn.net/ZvgnjCyEHVioL2va4cskSG.jpg" mos="" align="middle" fullscreen="" width="1330" height="587" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Windows Latest)</span></figcaption></figure><p>Though, it does make me nervous that the idea of Microsoft being “intentional about how and where Copilot integrates across Windows” may be more like “let’s just hide it in plain sight.”</p><h2 id="outlook-4">Outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:827px;"><p class="vanilla-image-block" style="padding-top:68.32%;"><img id="LhadVDXS5fLTkQvB7tAZCG" name="Copilot" alt="Copilot" src="https://cdn.mos.cms.futurecdn.net/LhadVDXS5fLTkQvB7tAZCG.png" mos="" align="middle" fullscreen="" width="827" height="565" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Windows Latest)</span></figcaption></figure><p>That’s not to say this Windows 11 commitment is for nothing. We could very well just be seeing a small slither of the wider changes that could reduce AI integration to only where (in Microsoft’s words) it’s “most meaningful, with craft and focus.” </p><p>But early updates do give us an indication of where Microsoft is thinking of going, and simply changing the presentation rather than removing unnecessary feature sets does not instill confidence here.</p><p>Taskbar customization, a faster File explorer and reduced Windows Updates disruption are all good things, but if Microsoft doesn’t genuinely hit the biggest performance consumer here, then we’re right back at square one — only looking prettier. I hope the company goes harder on the run up to Build 2026.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/pc-sales-are-up-but-dont-be-fooled-idc-report-warns-ramageddon-is-just-getting-started">PC sales are up, but don’t be fooled — IDC report warns RAMageddon is just getting started</a></li><li><a href="https://www.tomsguide.com/computing/laptops/i-was-high-on-the-asus-zenbook-a14-and-a16-with-snapdragon-x2-elite-then-something-very-weird-happened-to-the-price">I was high on the Asus Zenbook A14 and A16 with Snapdragon X2 Elite — then something very weird happened to the price</a></li><li><a href="https://www.tomsguide.com/computing/hardware/the-squeeze-is-real-i-spoke-to-ram-crisis-oracle-carmen-li-about-when-this-nightmare-ends-heres-what-she-told-me">‘The squeeze is real’: I spoke to RAM crisis oracle, Carmen Li, about when this nightmare ends — here’s what she told me</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/microsoft-starts-removing-copilot-from-windows-11-im-saying-that-sarcastically-because-its-clearly-just-lip-service</link>
                                                                            <description>
                            <![CDATA[ Is Microsoft finally fixing Windows 11 bloat? The new "Commitment to Windows Quality" update starts rolls back Copilot branding in favor of "Writing Tools," but the RAM-hungry AI might just be hiding in plain sight. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">mwsgK3vYX5VBQnn87VsMmU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VLcVjMew2gSrxJdRihT7BH-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 10 Apr 2026 10:47:11 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Copilot]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                    <category><![CDATA[AI]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/VLcVjMew2gSrxJdRihT7BH-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Copilot]]></media:description>                                                            <media:text><![CDATA[Copilot]]></media:text>
                                <media:title type="plain"><![CDATA[Copilot]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VLcVjMew2gSrxJdRihT7BH-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Let’s be real. Nobody I know has anything good to say about Microsoft Copilot. Shoved down our throats in any way possible in Windows 11, it’s turned the OS into a bloated behemoth that consumes the very thing we’re all seeing get way more expensive — RAM. And for what? Some rewriting tools, AI image generation in Paint and a searchable visual timeline of everything you do that’s quite a security risk, which is all ignored by users.</p><p>So it’s fair to say that I got a little hyped when I saw the <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-promises-windows-11-reset-new-focus-on-performance-reliability-and-reducing-unnecessary-copilot-ai">“commitment to Windows quality” blog</a>, which confirms a major update with reduced Copilot features and better efficiency. Microsoft listened…at least that’s what I thought. Because what we’re actually getting from the first signs of these changes is a simple rebranding. Copilot is still there — it’s just called something different.</p><h2 id="an-ai-wolf-in-sheep-s-clothing">An AI wolf in sheep’s clothing</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="L4fvJePjWfU8dLsesT8kRG" name="Copilot" alt="Copilot" src="https://cdn.mos.cms.futurecdn.net/L4fvJePjWfU8dLsesT8kRG.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Windows Latest)</span></figcaption></figure><p>As discovered by <a href="https://www.windowslatest.com/2026/04/09/microsoft-begins-removing-copilot-from-windows-11-starting-with-notepad-snipping-tool/" target="_blank">Windows Latest</a>, the Notepad app and Snipping Tool are the first signs of Microsoft starting to rollback Copilot in the latest Windows 11 Insider Preview. Copilot logos have disappeared from Notepad and the Snipping Tool.</p><p>But as is clearly apparent, this is mostly just branding only. Instead of a colorful Copilot button, Notepad gets a “Writing tools” icon, whereas the Snipping Tool is actually AI-free from the looks of it. Being someone who got tired of seeing Copilot everywhere, it’s definitely a welcome change. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1330px;"><p class="vanilla-image-block" style="padding-top:44.14%;"><img id="ZvgnjCyEHVioL2va4cskSG" name="Copilot" alt="Copilot" src="https://cdn.mos.cms.futurecdn.net/ZvgnjCyEHVioL2va4cskSG.jpg" mos="" align="middle" fullscreen="" width="1330" height="587" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Windows Latest)</span></figcaption></figure><p>Though, it does make me nervous that the idea of Microsoft being “intentional about how and where Copilot integrates across Windows” may be more like “let’s just hide it in plain sight.”</p><h2 id="outlook-4">Outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:827px;"><p class="vanilla-image-block" style="padding-top:68.32%;"><img id="LhadVDXS5fLTkQvB7tAZCG" name="Copilot" alt="Copilot" src="https://cdn.mos.cms.futurecdn.net/LhadVDXS5fLTkQvB7tAZCG.png" mos="" align="middle" fullscreen="" width="827" height="565" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Windows Latest)</span></figcaption></figure><p>That’s not to say this Windows 11 commitment is for nothing. We could very well just be seeing a small slither of the wider changes that could reduce AI integration to only where (in Microsoft’s words) it’s “most meaningful, with craft and focus.” </p><p>But early updates do give us an indication of where Microsoft is thinking of going, and simply changing the presentation rather than removing unnecessary feature sets does not instill confidence here.</p><p>Taskbar customization, a faster File explorer and reduced Windows Updates disruption are all good things, but if Microsoft doesn’t genuinely hit the biggest performance consumer here, then we’re right back at square one — only looking prettier. I hope the company goes harder on the run up to Build 2026.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/pc-sales-are-up-but-dont-be-fooled-idc-report-warns-ramageddon-is-just-getting-started">PC sales are up, but don’t be fooled — IDC report warns RAMageddon is just getting started</a></li><li><a href="https://www.tomsguide.com/computing/laptops/i-was-high-on-the-asus-zenbook-a14-and-a16-with-snapdragon-x2-elite-then-something-very-weird-happened-to-the-price">I was high on the Asus Zenbook A14 and A16 with Snapdragon X2 Elite — then something very weird happened to the price</a></li><li><a href="https://www.tomsguide.com/computing/hardware/the-squeeze-is-real-i-spoke-to-ram-crisis-oracle-carmen-li-about-when-this-nightmare-ends-heres-what-she-told-me">‘The squeeze is real’: I spoke to RAM crisis oracle, Carmen Li, about when this nightmare ends — here’s what she told me</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I ditched Apple Mail for this game-changing app — and I’m not going back ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The Mac can be a wonderful platform, as many of its users will tell you. Developers constantly release apps that take on the first-party selection in macOS Tahoe, and it's easy to get lost in the noise. Chief amongst them is the frustrating Mail app.</p><p>So when I saw that a former Apple software engineer, who worked on Mail, had srtuck out on his own, I was immediately curious about how they would go it alone. Turns out Neil Jhaveri’s Mimestream might just be the slickest, swiftest email app on Mac, and you owe it to yourself to give it a try — especially if you use Gmail.</p><h2 id="the-inbox-in-the-room">The Inbox In The Room</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1503px;"><p class="vanilla-image-block" style="padding-top:67.53%;"><img id="qnw7QXDW3wkrkiwMQvqSR9" name="composer" alt="Mimestream screenshots" src="https://cdn.mos.cms.futurecdn.net/qnw7QXDW3wkrkiwMQvqSR9.png" mos="" align="middle" fullscreen="" width="1503" height="1015" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Mimestream)</span></figcaption></figure><p>To Apple's credit, Mail has grown to become much more useful in recent years, and if it’s working for you, then it’s right there for you. But if you’re using Gmail, you’ll want to take a look at Mimestream. Perhaps the greatest compliment I can give the app is that it feels like using an app that Apple itself built, which is perhaps unsurprising given Jhaveri’s history.</p><p>I’ve simply never used an email app that’s this quick, because it leans on the Gmail API. That means as you get an email to your Gmail account, you’re not waiting for it to appear in Mimestream - it’s just <em>there</em>. It’s been a godsend for running my business out of, because it’s so reliable - no sync issues, no deep diving into settings, and no forced downloads of messages eating up valuable storage.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2404px;"><p class="vanilla-image-block" style="padding-top:60.57%;"><img id="y8CAxTv9y2uwTEov8XaDT9" name="hero-dark" alt="Mimestream screenshots" src="https://cdn.mos.cms.futurecdn.net/y8CAxTv9y2uwTEov8XaDT9.png" mos="" align="middle" fullscreen="" width="2404" height="1456" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Mimestream)</span></figcaption></figure><p>Gmail’s API already offers inbox Categories and the option to add labels, and those instantly transfer across to Mimestream, too. Social emails go to the relevant inbox, and you can filter by label. Server-side Gmail filters can be managed within the app, too, meaning it’s rare you’ll need to go to the web version of the app.</p><p>I’ve long used email apps like Spark, but Mimestream is just so sleek that it removes all friction. My favorite feature? Gmail’s own search functionality is a cut above the likes of Outlook and others, and it’s replicated here beautifully.</p><p>Mimestream is only getting better, too. As an example, the upcoming Snooze functionality will be a big win for night owls like myself who love to work when the family is asleep, saving the inbox from looking cuttered until I’m ready to deal with it.</p><h2 id="it-s-great-on-iphone-too">It’s Great On iPhone, Too</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FS7ous6qtCAJ4iREbEYUui" name="mimestream mobile" alt="Mimestream on mobile" src="https://cdn.mos.cms.futurecdn.net/FS7ous6qtCAJ4iREbEYUui.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future/Mimestream)</span></figcaption></figure><p>There’s <a href="https://portal.productboard.com/mimestream/1-mimestream-roadmap/tabs/2-considering">already a well-stacked roadmap for Mimestream</a>, but I’ve been lucky enough to test the iPhone version early.</p><p>Not only does it somehow feel more useful than Apple Mail, Spark, Notion Mail and more on mobile, but it’s still got things like search baked in, even at this early stage.</p><p>There’s still a long way to go, though - the development team has said it’s considering support for IMAP accounts from the likes of iCloud or Yahoo, but for now it’s essentially just a Gmail app.</p><p>Downloading emails is tricky, too, because of the way the Gmail API works, and since Gmail doesn’t include features like scheduled send, these aren’t coming anytime soon.</p><p>Still, if you’re looking for an email app for the Mac, the $50 per year for an individual (on up to 5 devices) is well worth it for me.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/online-security/i-tried-apples-new-security-feature-in-macos-that-warns-you-about-potential-clickfix-attacks-and-windows-should-take-note">I put Apple’s new macOS ClickFix warnings to the test and they actually worked — now I want them on Windows too</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-promises-windows-11-reset-new-focus-on-performance-reliability-and-reducing-unnecessary-copilot-ai">Microsoft promises Windows 11 reset: new focus on performance, reliability and 'reducing unnecessary Copilot' AI</a></li><li><a href="https://www.tomsguide.com/computing/hardware/ram-prices-are-finally-dropping-but-i-wouldnt-celebrate-just-yet">RAM prices are crashing in huge 'market correction': New report shows the crisis may be subsiding as 'DDR5 retail prices pullback'</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/software/i-ditched-apple-mail-for-this-game-changing-app-and-im-not-going-back</link>
                                                                            <description>
                            <![CDATA[ Seriously, it’s so good. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tGp8AfcFfqipnZUW47gzR5</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/aigJrUALJK5gocZdUrEjHK-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 06 Apr 2026 14:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                                                                                    <dc:creator><![CDATA[ Lloyd Coombes ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xcWocVTwa9yiwXRs559XNA.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lloyd Coombes is a freelance tech and fitness writer. He&#039;s an expert in all things Apple as well as in computer and gaming tech, with previous works published on TechRadar, Tom&#039;s Guide, Live Science and more. You&#039;ll find him regularly testing the latest MacBook or iPhone, but he spends most of his time writing about video games as Gaming Editor for the Daily Star. He also covers board games and virtual reality, just to round out the nerdy pursuits.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/aigJrUALJK5gocZdUrEjHK-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[mimestream]]></media:description>                                                            <media:text><![CDATA[mimestream]]></media:text>
                                <media:title type="plain"><![CDATA[mimestream]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/aigJrUALJK5gocZdUrEjHK-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Mac can be a wonderful platform, as many of its users will tell you. Developers constantly release apps that take on the first-party selection in macOS Tahoe, and it's easy to get lost in the noise. Chief amongst them is the frustrating Mail app.</p><p>So when I saw that a former Apple software engineer, who worked on Mail, had srtuck out on his own, I was immediately curious about how they would go it alone. Turns out Neil Jhaveri’s Mimestream might just be the slickest, swiftest email app on Mac, and you owe it to yourself to give it a try — especially if you use Gmail.</p><h2 id="the-inbox-in-the-room">The Inbox In The Room</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1503px;"><p class="vanilla-image-block" style="padding-top:67.53%;"><img id="qnw7QXDW3wkrkiwMQvqSR9" name="composer" alt="Mimestream screenshots" src="https://cdn.mos.cms.futurecdn.net/qnw7QXDW3wkrkiwMQvqSR9.png" mos="" align="middle" fullscreen="" width="1503" height="1015" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Mimestream)</span></figcaption></figure><p>To Apple's credit, Mail has grown to become much more useful in recent years, and if it’s working for you, then it’s right there for you. But if you’re using Gmail, you’ll want to take a look at Mimestream. Perhaps the greatest compliment I can give the app is that it feels like using an app that Apple itself built, which is perhaps unsurprising given Jhaveri’s history.</p><p>I’ve simply never used an email app that’s this quick, because it leans on the Gmail API. That means as you get an email to your Gmail account, you’re not waiting for it to appear in Mimestream - it’s just <em>there</em>. It’s been a godsend for running my business out of, because it’s so reliable - no sync issues, no deep diving into settings, and no forced downloads of messages eating up valuable storage.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2404px;"><p class="vanilla-image-block" style="padding-top:60.57%;"><img id="y8CAxTv9y2uwTEov8XaDT9" name="hero-dark" alt="Mimestream screenshots" src="https://cdn.mos.cms.futurecdn.net/y8CAxTv9y2uwTEov8XaDT9.png" mos="" align="middle" fullscreen="" width="2404" height="1456" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Mimestream)</span></figcaption></figure><p>Gmail’s API already offers inbox Categories and the option to add labels, and those instantly transfer across to Mimestream, too. Social emails go to the relevant inbox, and you can filter by label. Server-side Gmail filters can be managed within the app, too, meaning it’s rare you’ll need to go to the web version of the app.</p><p>I’ve long used email apps like Spark, but Mimestream is just so sleek that it removes all friction. My favorite feature? Gmail’s own search functionality is a cut above the likes of Outlook and others, and it’s replicated here beautifully.</p><p>Mimestream is only getting better, too. As an example, the upcoming Snooze functionality will be a big win for night owls like myself who love to work when the family is asleep, saving the inbox from looking cuttered until I’m ready to deal with it.</p><h2 id="it-s-great-on-iphone-too">It’s Great On iPhone, Too</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FS7ous6qtCAJ4iREbEYUui" name="mimestream mobile" alt="Mimestream on mobile" src="https://cdn.mos.cms.futurecdn.net/FS7ous6qtCAJ4iREbEYUui.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future/Mimestream)</span></figcaption></figure><p>There’s <a href="https://portal.productboard.com/mimestream/1-mimestream-roadmap/tabs/2-considering">already a well-stacked roadmap for Mimestream</a>, but I’ve been lucky enough to test the iPhone version early.</p><p>Not only does it somehow feel more useful than Apple Mail, Spark, Notion Mail and more on mobile, but it’s still got things like search baked in, even at this early stage.</p><p>There’s still a long way to go, though - the development team has said it’s considering support for IMAP accounts from the likes of iCloud or Yahoo, but for now it’s essentially just a Gmail app.</p><p>Downloading emails is tricky, too, because of the way the Gmail API works, and since Gmail doesn’t include features like scheduled send, these aren’t coming anytime soon.</p><p>Still, if you’re looking for an email app for the Mac, the $50 per year for an individual (on up to 5 devices) is well worth it for me.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/online-security/i-tried-apples-new-security-feature-in-macos-that-warns-you-about-potential-clickfix-attacks-and-windows-should-take-note">I put Apple’s new macOS ClickFix warnings to the test and they actually worked — now I want them on Windows too</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-promises-windows-11-reset-new-focus-on-performance-reliability-and-reducing-unnecessary-copilot-ai">Microsoft promises Windows 11 reset: new focus on performance, reliability and 'reducing unnecessary Copilot' AI</a></li><li><a href="https://www.tomsguide.com/computing/hardware/ram-prices-are-finally-dropping-but-i-wouldnt-celebrate-just-yet">RAM prices are crashing in huge 'market correction': New report shows the crisis may be subsiding as 'DDR5 retail prices pullback'</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>