<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/vendor/feed/atom.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
                        <id>https://ohdear.app/changelog/feed</id>
                                <link href="https://ohdear.app/changelog/feed" rel="self"></link>
                                <title><![CDATA[ohdear.app - changelog]]></title>
                    
                                <subtitle>The ohdear.app changelog.</subtitle>
                                                    <updated>2026-09-25T20:40:16+00:00</updated>
                        <entry>
            <title><![CDATA[Changelog: 2026-09-25]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-09-25" />
            <id>https://ohdear.app/81</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Webhook payloads now include a deep link back to the relevant page in Oh Dear.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Teams and users with an active subscription can no longer be deleted.</li>
<li>Monitor URLs are now validated based on the monitor type when created or updated through the API.</li>
<li>Improved the accuracy of domain support checks by refreshing cached TLD server data.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where a single unresponsive monitor could interrupt uptime checks for other monitors.</li>
<li>Fixed account deletion getting stuck when the account had previously owned a team that was already deleted.</li>
<li>Fixed incorrect tax rates being applied to invoices due to reading the wrong field from Stripe.</li>
<li>Fixed incorrect VAT calculations for invoices without a valid tax code.</li>
<li>Fixed invoice processing stalling entirely when a billing provider outage used up all available retry attempts.</li>
<li>Improved handling of invoices that remained stuck in a pending state for an extended period.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-09-25T20:40:16+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-09-18]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-09-18" />
            <id>https://ohdear.app/80</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Scheduled tasks can now be added to server monitors.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Lighthouse checks now run from a consistent server per continent for each monitor, improving the reliability of performance results over time.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where repeated errored port checks could cause the check to fail entirely instead of recording a result.</li>
<li>Fixed an issue where using filters on the maintenance periods API returned a server error instead of the expected results.</li>
<li>Corrected the status page API documentation, which incorrectly listed a team field as part of the response.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-09-18T21:40:10+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-09-11]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-09-11" />
            <id>https://ohdear.app/79</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Refreshed the design of several feature pages, including certificate monitoring, broken links, application health, DNS monitoring, DNS blocklist monitoring, performance monitoring, ping monitoring, scheduled task monitoring, sitemap monitoring, TCP port monitoring, and website uptime monitoring.</li>
<li>Updated the <a href="https://ohdear.app/features/gdpr">GDPR FAQ</a> with clearer answers on procurement and security reviews and data processing agreements.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where uploading a logo for a status page always failed validation.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-09-12T01:13:02+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-09-04]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-09-04" />
            <id>https://ohdear.app/78</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Expanded the <strong>OpenAPI specification and API documentation</strong> with response body assertions and other previously missing HTTP uptime settings.</li>
<li>Updated the <strong>Arazzo specification</strong> with a complete real-world HTTP monitoring workflow: creating a monitor, verifying it, updating its name and response body assertions, and deleting it.</li>
<li>Expanded the <strong>Brand Assets</strong> page with additional icons, usage guidelines, and ready-to-use press copy.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Prepared the <strong>Oh Dear MCP server</strong> for ChatGPT plugin submission.</li>
<li>Monitor creation now skips unnecessary check enable/disable operations when the requested state is already set.</li>
<li>Updated the documentation for connecting the Oh Dear Slack bot to <strong>private channels</strong>.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed the PWA manifest having an empty app name and incorrect icon paths.</li>
<li>Fixed a <code>get_crawl_results</code> MCP tool error when returning results grouped by type.</li>
<li>Added proper validation for <strong>third-party integration summaries</strong>, preventing overly long summaries from causing server errors.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-09-04T22:23:14+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-08-28]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-08-28" />
            <id>https://ohdear.app/77</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Expanded our <strong>MCP server</strong> with new tools for:
<ul>
<li>Downtime, check summaries, and domain intelligence.</li>
<li>Maintenance windows and check state management.</li>
<li>Status page updates and notification destinations.</li>
<li>Scheduled tasks, tags, Broken Links, Application Health, and account management.</li>
</ul>
</li>
<li>Added a <strong>consecutive failures</strong> threshold for Sitemap notifications, allowing you to choose how many consecutive failures should occur before being notified.</li>
<li>Added an in-app warning for <strong>Slack connections that will stop working in November</strong>, giving affected teams time to reconnect.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>AI wizard placeholder monitors no longer count toward your monitor limit or usage.</li>
<li>Scheduled Task history now leaves a marker when older pings are pruned, making gaps in historical data clearer.</li>
<li>Scheduled Task pings are now handled correctly even when they arrive out of order.</li>
<li>Improved our MCP tools with clearer titles and behaviour hints.</li>
<li>Improved the <code>get_uptime_statistics</code> MCP tool to return actual uptime percentages instead of response timings.</li>
<li>Added documentation for connecting to the Oh Dear MCP server from clients other than Claude.</li>
<li>Corrected our affiliate commission terms to <strong>25% for the first 12 months</strong>.</li>
<li>Long-time members can now see their <strong>legacy pricing</strong> directly on the plan chooser.</li>
</ul>
<h2 id="security">Security <a href="#security" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#security">#</a></h2>
<ul>
<li>Changing your password now invalidates existing sessions and password reset tokens.</li>
<li>Strengthened access controls for the new MCP write tools.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed <strong>Lighthouse checks running every other day instead of daily</strong>.</li>
<li>Fixed Lighthouse history charts breaking when certain browser extensions are active.</li>
<li>Fixed invoice ordering so invoices are sorted using their actual creation date in Stripe.</li>
<li>Fixed a server error when changing a team's owner.</li>
<li>Fixed double-encoded HTML entities appearing in inputs across the app after saving.</li>
<li>Fixed a server error when accessing a status page domain route with an invalid hostname.</li>
<li>Fixed the OG loyalty discount not being reapplied when a long-time member restarted an expired subscription.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-08-28T23:37:04+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-08-21]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-08-21" />
            <id>https://ohdear.app/76</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Monitor settings now only show checks that are compatible with the monitor type.</li>
<li>Improved authorization checks when updating monitor settings.</li>
</ul>
<h2 id="security">Security <a href="#security" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#security">#</a></h2>
<ul>
<li>Strengthened <strong>API token scoping</strong> to ensure restricted tokens can only access the monitors and resources they have permission to access.</li>
<li>Improved authorization in <strong>MCP tools</strong> to ensure actions that modify monitors require the appropriate permissions.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where disabled notification destinations could repeatedly send <strong>“destination disabled” emails</strong> to team owners and admins.</li>
<li>Editing the configuration of a paused notification destination now correctly <strong>re-enables the destination</strong>.</li>
<li>Fixed duplicate <strong>status page email subscriptions</strong>, which could cause subscribers to receive multiple confirmation emails and multiple copies of status updates.</li>
<li>Fixed duplicate status page subscriptions incorrectly counting multiple times toward a team's subscriber limit.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-08-21T23:29:46+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-08-14]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-08-14" />
            <id>https://ohdear.app/75</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where <strong>recovery notifications were not sent after performance delta alerts</strong>. You’ll now be notified when performance returns to normal.</li>
<li>Fixed an issue where <strong>monitors belonging to teams on metered billing could be incorrectly deleted</strong> by the monitor limit check.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved the <strong>Application Health check</strong> layout by adding clearer spacing between the status indicator and metadata.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-08-14T17:23:58+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-08-07]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-08-07" />
            <id>https://ohdear.app/74</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>HTTP uptime checks now support <strong>raw JSON request bodies</strong>, with syntax highlighting as you type.</li>
<li>Added our <strong>D-U-N-S number</strong> to our public company details.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Migrated AI monitoring from Prism to the official <strong>Laravel AI SDK</strong> and added automated evaluations for our AI prompts.</li>
<li>Strengthened AI monitor security by validating every request made during a browser session against private and reserved IP addresses.</li>
<li>Improved Monthly Uptime reports for monitors created partway through the month. The graph now correctly reflects the available monitoring period and no longer shows a previous-month comparison when no previous data exists.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed status page updates displaying the literal <code>:monitor</code> placeholder instead of the monitor name.</li>
<li>Fixed recurring maintenance periods occasionally being generated <strong>one day early</strong>.</li>
<li>Fixed documentation search results appearing behind code blocks.</li>
<li>Fixed an error when adding an email subscriber to status page updates.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-08-08T16:48:15+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-07-31]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-07-31" />
            <id>https://ohdear.app/73</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added marketing campaign attribution for new signups and trial accounts.</li>
<li>Added a <strong>Claude skill</strong> to help keep dependencies across our monitoring microservices secure.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Raised the maximum number of <strong>Application Health</strong> metadata items from <strong>20 to 40</strong>.</li>
<li>Improved URL canonicalization by automatically redirecting trailing and repeated slashes to their canonical URLs.</li>
<li>Improved marketing attribution by correctly distinguishing OAuth and product subdomains from organic search traffic.</li>
<li>Updated our <strong>Laravel Oh Dear Webhooks</strong> package to support <strong>Laravel 13</strong> and <strong>PHP 8.5</strong>.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed scheduled task runs occasionally remaining in a <strong>Pending</strong> state when their start and finish pings occurred within the same second.</li>
<li>Improved reliability of <code>.fi</code> domain WHOIS lookups by automatically retrying transient network failures.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-07-31T17:42:23+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-07-24]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-07-24" />
            <id>https://ohdear.app/72</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Introduced our new <strong>agency-focused pricing</strong> structure.</li>
<li>Updated our Forge site import integration to Laravel Forge API v2, which now supports scoped API tokens.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved SEO across the Oh Dear website.</li>
<li>Existing coupons with a higher value are no longer replaced by the OG loyalty discount.</li>
</ul>
<h2 id="security">Security <a href="#security" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#security">#</a></h2>
<ul>
<li>Improved authorization checks for team member management, including roles, permissions, two-factor authentication, and settings.</li>
<li>Slack webhook validation now returns a clear validation error when redirecting to a private IP instead of causing a server error.</li>
<li>Fixed a race condition that could affect monitor and cron check limits.</li>
<li>Updated several third-party dependencies to address reported security advisories.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an uncaught exception that could occur if AI monitor creation returned an error.</li>
<li>Fixed unreadable text in expanded security advisory cards on mobile devices using dark mode.</li>
<li>Fixed Broken Links incorrectly classifying internal links as external when URLs differed only by the presence of www.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-07-24T15:33:05+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-07-17]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-07-17" />
            <id>https://ohdear.app/71</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added support for new HTTP uptime assertions:
<ul>
<li>Header does not exist</li>
<li>Header does not contain (now also passes when the header is absent)</li>
</ul>
</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Redesigned the <strong>Oh Dear homepage</strong> and made significant performance improvements across the marketing site.</li>
<li>Improved the <strong>monthly uptime report</strong> email with a refreshed design and clearer presentation.</li>
</ul>
<h2 id="security">Security <a href="#security" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#security">#</a></h2>
<ul>
<li>Strengthened SSRF protections by preventing monitors from being created with private or reserved IP addresses.</li>
<li>Extended SSRF validation to redirects, crawler requests, and sitemap fetches.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed a server error when a scheduled task had no timezone configured by falling back to UTC.</li>
<li>Fixed cross-tenant write and delete operations on shared resources.</li>
<li>Fixed API validation to handle invalid monitor types gracefully.</li>
<li>Fixed Slack <strong>&quot;Check again&quot;</strong> actions that could leave downtime alerts stuck in a running state.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-07-18T00:02:32+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-07-10]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-07-10" />
            <id>https://ohdear.app/70</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added <strong>Acknowledgements</strong> for monitor incidents. Unlike snoozing, acknowledging an incident allows the recovery notification to be sent while indicating the incident is already being handled. <a href="/docs/faq/difference-between-snoozing-acknowledging-and-maintenance-periods">Learn more about it here</a></li>
<li>Added a new <a href="/features/gdpr">GDPR &amp; EU Data Residency</a> feature page.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>
<p>Improved AI checks by:</p>
<ul>
<li>Allowing browsers to generate the correct request headers automatically, significantly improving compatibility with modern websites.</li>
<li>Teaching the AI to skip honeypot fields and explain why form submissions fail.</li>
<li>Restricting AI checks to dedicated browser-session locations and publishing their IP addresses.</li>
<li>Added the HTTP navigation status code to AI check navigation responses.</li>
</ul>
</li>
<li>
<p>Improved dashboard performance by optimizing sparkline rendering and moving more processing into ClickHouse.</p>
</li>
<li>
<p>Dashboard performance sparklines now:</p>
<ul>
<li>Correctly support all uptime check frequencies.</li>
<li>Highlight downtime periods in red.</li>
</ul>
</li>
<li>
<p>Added native animation for the mobile navigation, making it smoother and more responsive.</p>
</li>
<li>
<p>Status page custom domains are now normalized and validated before being saved.</p>
</li>
<li>
<p>AI monitor overview pages are always accessible, even after creating a monitor.</p>
</li>
<li>
<p>Trial cron check limits now automatically scale with the trial monitor limit.</p>
</li>
<li>
<p>Improved detection of Let's Encrypt certificates.</p>
</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed a server error when creating monitor groups with names exceeding the maximum length.</li>
<li>Fixed localized <strong>Online</strong> and <strong>Offline</strong> labels on status pages.</li>
<li>Fixed the copy button for newly created API tokens.</li>
<li>Fixed a crash on the Application Health snooze page.</li>
<li>Fixed logout on the email verification page.</li>
<li>Fixed apostrophes in team names appearing as HTML entities in disabled check emails.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-07-10T21:35:59+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-07-03]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-07-03" />
            <id>https://ohdear.app/69</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>
<p>Added <strong>15 new languages</strong> for status pages:</p>
<ul>
<li>Bulgarian</li>
<li>Croatian</li>
<li>Czech</li>
<li>Estonian</li>
<li>Finnish</li>
<li>Greek</li>
<li>Hungarian</li>
<li>Irish</li>
<li>Latvian</li>
<li>Lithuanian</li>
<li>Maltese</li>
<li>Polish</li>
<li>Romanian</li>
<li>Slovak</li>
<li>Slovenian</li>
</ul>
</li>
<li>
<p><strong>Open Ports checks</strong> are now available to all teams.</p>
</li>
<li>
<p>Added an <strong>Oh Dear vs Atlassian Statuspage</strong> comparison page.</p>
</li>
<li>
<p>Added invoice access to the <strong>admin MCP server</strong>.</p>
</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved the <strong>Website Uptime Statistics</strong> page to explain that we monitor sites from two locations and avoid alerting on short outages.</li>
<li>Added the Website Uptime Statistics page link to the <strong>Resources</strong> section of the footer and the Documentation header dropdown.</li>
<li>Improved reseller team creation so new teams are correctly linked to the reseller plan, even when created from a managed team.</li>
<li>Improved invoice exports by retrying without Peppol when a Peppol-eligible invoice fails to export.</li>
<li>Added a <strong>48-hour grace period</strong> before disabling notifications to email addresses that bounce.</li>
<li>Clarified agency pricing to make it clear that agency features are included in standard plans, with no separate agency tier or per-client fees.</li>
<li>Authenticated users on mobile now see <strong>Dashboard</strong> instead of <strong>Log In</strong> in the header.</li>
<li>FAQ updates now automatically clear cached versions so changes appear immediately.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed server errors caused by invalid status page locales or third-party integration statuses.</li>
<li>Fixed recurring <strong>Yuki invoice export failures</strong>.</li>
<li>Fixed Open Ports onboarding showing outdated issues after confirming a baseline.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-07-10T12:27:14+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-06-26]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-06-26" />
            <id>https://ohdear.app/68</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added a new <a href="/uptime-statistics">State of Website Uptime page</a> with uptime statistics and insights.</li>
<li>Added <strong>email subscriptions</strong> for status pages.</li>
<li>Added a <strong>Move to another team</strong> option in the monitor settings page.</li>
<li>Migrated all email notifications from <strong>Postmark to Cloudflare Email</strong>.</li>
<li>Added <a href="/docs/notifications/slack#sending-to-a-private-channel">documentation</a> explaining how to invite the <strong>Oh Dear Slack bot</strong> to private channels.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved Lighthouse reliability on pages with lots of videos by preventing unnecessary timeouts.</li>
<li>Improved Broken Links reports:
<ul>
<li>Split links into separate <strong>Broken page</strong> and <strong>Found on</strong> columns.</li>
<li>Moved ignored links into their own dedicated tab.</li>
</ul>
</li>
<li>Improved monitor dispatching by globally shuffling checks to reduce concurrent crawls against the same infrastructure.</li>
<li>Improved billing settings by consolidating them into tabs, ensuring cancelled teams can still access invoices.</li>
<li>Improved DNS validation by removing duplicate validation findings and correctly detecting apex records.</li>
<li>Improved the Go uptime checker to match the capabilities of the PHP uptime checker.</li>
<li>Purged the status page cache automatically whenever a status update changes.</li>
<li>Added an automatic reminder to help teams with high alert volumes review and reduce notification noise.</li>
<li>Recorded the reason whenever a notification destination is automatically disabled after repeated failures.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed Lighthouse checks timing out on websites with large numbers of embedded videos.</li>
<li>Fixed Lighthouse report layout when screenshots are unavailable.</li>
<li>Fixed server errors when searching the documentation.</li>
<li>Fixed false multiple-SPF warnings caused by self-referencing SPF includes.</li>
<li>Fixed retry behavior so permanently invalid notification recipients are no longer retried.</li>
<li>Fixed human-readable validation errors when sending test notifications to invalid email addresses.</li>
<li>Fixed cron limit exceeded messages so they are less likely to be truncated by clients.</li>
<li>Fixed Slack reconnects for legacy integrations without requiring them to be recreated.</li>
<li>Fixed reseller-managed teams being blocked from deletion when billing belongs to the parent reseller.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-06-26T19:39:39+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-06-19]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-06-19" />
            <id>https://ohdear.app/67</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added <strong>response body assertions</strong> for HTTP uptime checks.</li>
<li>Added a comprehensive <strong>DNS record validation framework</strong> that can detect common configuration mistakes in:
<ul>
<li>A, AAAA, MX, CNAME, CAA, and NS records</li>
<li>SPF, DKIM, and DMARC records</li>
</ul>
</li>
<li>Added advisory DNS validation warnings directly to the DNS records page.</li>
<li>Added AI-powered prompts to help fix:
<ul>
<li>Broken links</li>
<li>Mixed content issues</li>
</ul>
</li>
<li>Added a free <a href="/tools/dns">DNS Lookup tool</a> and grouped all public tools into a dedicated section.</li>
<li>Added a dedicated feature page for <a href="/features/api-monitoring">API &amp; Endpoint Monitoring</a>.</li>
<li>Added guided baseline setup for first-time <strong>Ports Monitoring</strong> users.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Migrated port scanning from <strong>Nmap-based detection to ZGrab2</strong>, improving service detection reliability.</li>
<li>DNS validation findings are now available through the MCP server, including detailed explanations of misconfigured records.</li>
<li>Added support for validating:
<ul>
<li>SPF, DKIM, and DMARC record placement</li>
<li>Same-domain SPF includes</li>
<li>Single nameserver configurations</li>
<li>NS records pointing directly to IP addresses</li>
</ul>
</li>
<li>Improved port scan results by refreshing service banners on subsequent scans.</li>
<li>Added Cloudflare Email analytics integration for handling permanent email bounces.</li>
<li>Reduced CSS size for status pages through targeted Tailwind optimization.</li>
<li>Added documentation for HTTP response body assertions.</li>
<li>Added a database index to improve downtime reporting performance.</li>
<li>Improved uptime reporting performance for large date ranges.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>DNS validation warnings are now treated as advisory information and will not trigger alerts or mark checks as failed.</li>
<li>DNS record change notifications no longer fire for auxiliary validation records such as DMARC or SPF include lookups.</li>
<li>Fixed broken documentation links reported by external crawlers.</li>
<li>Fixed the Ports Monitoring grace period to correctly match the 12-hour scan schedule.</li>
<li>Fixed snoozing notifications until the next workday occasionally returning weekend dates.</li>
<li>Fixed broken layout on application health check details page.</li>
<li>Fixed server errors when creating monitors with unexpected check payload structures.</li>
<li>Fixed crashes caused by missing tag, group, or port check settings data.</li>
<li>Fixed public DNS lookup rendering issues and improved DMARC validation.</li>
<li>Fixed null cursor pagination issues on empty result pages.</li>
<li>Fixed uptime API timeout issues on monitors with large amounts of downtime history.</li>
<li>Fixed Cloudflare bounce handling so only permanent hard bounces disable notifications.</li>
</ul>
<h2 id="security">Security <a href="#security" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#security">#</a></h2>
<ul>
<li>Updated <code>phpseclib</code> to address a published X.509 SSRF vulnerability.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-06-21T20:38:05+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-06-12]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-06-12" />
            <id>https://ohdear.app/66</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added <strong>full-range port scanning</strong> support using Masscan, with Nmap used to identify services running on open ports.</li>
<li>Added a free public <a href="/up">Website Down Checker</a> tool.</li>
<li>Added <strong>blog search</strong>, powered by local content rather than external crawling.</li>
<li>Added <strong>social sharing</strong> to public uptime checker results.</li>
<li>Added support for <strong>custom origin certificates</strong> on status pages.</li>
<li>Added a <strong>live system status indicator</strong> to the marketing site footer.</li>
<li>Added FAQ sections to feature pages.</li>
<li>Added a <strong>downtime minutes</strong> column to daily uptime CSV exports.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Redesigned the website footer with improved navigation, use-case links, and social media visibility.</li>
<li>Improved mobile performance for blog posts by reducing Largest Contentful Paint (LCP).</li>
<li>Added a Markdown version of marketing pages for LLM and SEO crawlers.</li>
<li>Redesigned snooze confirmation screens.</li>
<li>Uptime percentages are now displayed with <strong>three decimal places</strong> for greater precision.</li>
<li>Made warning and destructive monitor actions more deliberate and visually consistent.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed AI checks using the <strong>latest model strategy</strong> failing to dispatch.</li>
<li>Fixed background globe flickering in Chromium browsers on the Website Down Checker page.</li>
<li>Fixed the &quot;Show more&quot; functionality on the <strong>Who Uses Oh Dear</strong> page.</li>
<li>Fixed hero mockups overlapping section numbers on use-case pages.</li>
<li>Fixed a server error when syncing cron checks without a configured server timezone.</li>
<li>Fixed a server error caused by custom origin certificates expiring beyond 2038.</li>
<li>Fixed downtime tooltips on the uptime overview card and improved contrast on the &quot;Past 12 Months&quot; tab.</li>
<li>Fixed an issue where crawler, Lighthouse, and Sitemap checks could miss their daily runs.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-06-12T21:18:55+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-06-05]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-06-05" />
            <id>https://ohdear.app/65</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added an <strong>enabled/disabled state</strong> for notification destinations, making it easier to temporarily pause notifications without removing them.</li>
<li>Added a <strong>search bar</strong> to the FAQ page.</li>
<li>Added <strong>DNS verification</strong> to custom status page domain settings.</li>
<li>Added support for <strong>failed notification thresholds</strong> on Application Health, Performance, AI, and Port checks.</li>
<li>Added MCP tools for <strong>tag groups</strong> and <strong>notification routing</strong>.</li>
<li>Added a new <strong>Hall of Fame</strong> <a href="/testimonials">testimonials page</a>.</li>
<li>Team admins can now manage <strong>verified domains</strong>; previously this was limited to team owners.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>
<p>Updated the <strong>OpenAPI specification</strong> with support for:</p>
<ul>
<li>Enabling and disabling notification destinations via the API</li>
<li>The <code>continent</code> field on port check settings</li>
</ul>
</li>
<li>
<p>Improved status page custom domain onboarding with:</p>
<ul>
<li>Early DNS setup instructions</li>
<li>A Cloudflare-approved setup guide</li>
</ul>
</li>
<li>
<p>Improved AI monitoring:</p>
<ul>
<li>Added support for newer OpenAI and Anthropic models</li>
<li>Added a &quot;use the latest OpenAI model&quot; option as the default</li>
<li>Added support for pinning checks to specific model versions</li>
</ul>
</li>
<li>
<p>Improved the Broken Links crawler:</p>
<ul>
<li>Large crawls no longer time out and discard results</li>
<li>Removed an unintended 40-second timeout limit</li>
</ul>
</li>
<li>
<p>Improved Mixed Content checks by parsing each crawled page only once.</p>
</li>
<li>
<p>Reduced the size of the Caddy allowed-domain endpoint response and added caching.</p>
</li>
<li>
<p>Added caching and DNS verification memoization to certificate provisioning callbacks.</p>
</li>
<li>
<p>Password requirements are now exposed through browser-native password rule hints.</p>
</li>
<li>
<p>Updated the documentation layout with various UI improvements.</p>
</li>
<li>
<p>Server-rendered the header mega-menu to improve discoverability by search engines and crawlers.</p>
</li>
<li>
<p>Server-rendered testimonials so they are visible to AI crawlers and search engines.</p>
</li>
<li>
<p>Reworked <code>robots.txt</code> and <code>sitemap.xml</code> generation to improve indexing and crawling behavior.</p>
</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where users could not update their <strong>status page favicon</strong>.</li>
<li>Fixed a crash when saving <strong>Application Health general settings</strong>.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-06-05T21:06:02+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-05-29]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-05-29" />
            <id>https://ohdear.app/64</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Redesigned the <strong>Application Health</strong> onboarding experience.</li>
<li>Added <strong>team branding</strong> support for monthly reports and status pages.</li>
<li>Added an <strong>About</strong> page sharing the Oh Dear story.</li>
<li>Introduced a new unified notifications interface, making it easier to see and manage all notification destinations in one place.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Upgraded to <strong>Laravel 13</strong>.</li>
<li>Redesigned the <strong>pricing page</strong> with a stronger premium positioning.</li>
<li>Routed <strong>Port checks</strong> to three dedicated checker servers for improved reliability and scalability.</li>
<li>Domain check reports now show important <strong>domain dates</strong>, which are also captured for historical runs.</li>
<li>Improved DNS monitoring by distinguishing between:
<ul>
<li>Unreachable nameservers</li>
<li>DNS record drift</li>
<li>Missing records</li>
</ul>
</li>
<li>Migrated the Slack integration to <strong>OAuth v2 bot tokens</strong>.</li>
<li>Public marketing and documentation pages remain cacheable when Livewire components boots.</li>
<li>Blog and changelog caches are now automatically refreshed when content is updated.</li>
<li>Updated documentation with guides for connecting status pages directly to Oh Dear or through Cloudflare.</li>
<li>Added an <strong>Advanced</strong> badge to monitor checks that aren't enabled by default, making it easier to understand which checks require additional setup.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Added validation feedback to the uptime request settings form.</li>
<li>Fixed mobile navigation by adding a hamburger menu for smaller screens.</li>
<li>Fixed repeat notification timing drift by improving notification throttling calculations.</li>
<li>Status pages now verify DNS configuration before requesting SSL certificates.</li>
<li>Added support for serving self-signed origin certificates for Cloudflare-proxied status page domains.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-05-30T08:08:55+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-05-22]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-05-22" />
            <id>https://ohdear.app/63</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li><strong>AI Checks</strong> are now generally available to all teams.</li>
<li>Added MCP tools to <strong>create, update, and delete monitors</strong>.</li>
<li>Added support for the <code>$OH_DEAR_TIMESTAMP</code> magic variable to help bypass CDN caching during uptime checks.</li>
<li>Application Health onboarding has been completely redesigned.</li>
<li>Application Health failures now show a ready-to-use <strong>curl example</strong> for easier debugging.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Expanded request URLs, headers, and payloads are now persisted on uptime runs, ensuring historical reports always reflect the exact request that was made.</li>
<li>Public marketing pages are now cached at the edge for improved performance.</li>
<li>Status page feeds are now cached with <strong>stale-while-revalidate</strong> support for faster loading and better resilience.</li>
<li>Report attachment sizes are now capped to avoid Postmark’s 10 MB attachment limit.</li>
<li>Tightened SEO schema across the site.</li>
<li>Updated webhook documentation and added documentation for new webhook events.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed a server error when team members viewed webhook logs.</li>
<li>Fixed ports check notification types appearing for unauthorized users.</li>
<li>Fixed AI checks being dispatched when no prompt was configured.</li>
<li>Fixed incorrect payload examples in the webhook documentation.</li>
<li>Fixed Stripe invoice import tax handling for the latest Stripe API changes.</li>
<li>Fixed errors when creating tag and tag-group notification destinations.</li>
<li>Fixed a form submission issue in the MCP connected apps edit modal.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-05-22T18:39:22+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-05-15]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-05-15" />
            <id>https://ohdear.app/62</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added <strong>OAuth support</strong> for the Oh Dear MCP server, allowing broader client compatibility beyond Bearer token authentication.</li>
<li>Replaced the previous <strong>Spatie support bubble</strong> with the new <strong>There There support widget</strong>.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Status page uptime history thresholds for <strong>orange and red warning bars</strong> now support <strong>decimal values</strong>, allowing more precise configuration.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-05-15T17:32:23+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-05-08]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-05-08" />
            <id>https://ohdear.app/61</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added a new <strong>social card generator</strong> powered by the Open Graph image template pipeline.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Enforced a single <strong>end-to-end timeout deadline</strong> across all HTTP redirect chains, improving uptime check consistency.</li>
<li>Capped <strong>crawler report rows</strong> at <strong>25,000 entries</strong> to prevent memory exhaustion on very large reports.</li>
<li>Improved RDAP handling by automatically marking monitors as unsupported when upstream RDAP providers consistently return server errors, reducing false alerts and duplicate failures.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Reduced excessive repeated domain check failures caused by unsupported RDAP zones returning upstream 5xx responses.</li>
<li>Fixed an issue where email alerts could continue being disabled after a previous Postmark bounce, even after the email address had been reactivated.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-05-08T22:45:42+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-05-01]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-05-01" />
            <id>https://ohdear.app/60</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>
<p>Expanded default <strong>HTTP monitor checks</strong> from 4 to 9, now including:</p>
<ul>
<li>Mixed Content</li>
<li>Lighthouse</li>
<li>DNS</li>
<li>Domain Expiration</li>
<li>DNS Blocklist</li>
</ul>
</li>
<li>
<p>Added clearer documentation for <strong>Claude Desktop and Claude web MCP configuration</strong>, including explicit config examples.</p>
</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved <strong>Broken Links reliability</strong> by significantly increasing retry backoff timing, reducing false positives caused by transient network issues.</li>
<li>Updated domain resolution for <strong>RDAP checks</strong> to use ICANN-only registrable domains, improving support for domains under private suffixes like <code>workers.dev</code> and <code>github.io</code>.</li>
<li>Streamed <strong>Sitemap and Broken Links report attachments</strong> to reduce memory usage on large reports.</li>
<li>Blog post image conversions now output at <strong>2x retina quality</strong> for sharper visuals.</li>
<li>PagerDuty integration now surfaces <strong>assignment failures</strong> more clearly when on-call coverage is missing.</li>
<li>Domain checks now skip unnecessary runs when RDAP servers are rate limited.</li>
<li>Notification payloads are now automatically truncated to fit provider API limits.</li>
<li>Improved login UX by merging the <strong>SSO notice</strong> into the password field.</li>
<li>Improved unsupported domain check messaging so unsupported TLDs appear as informational rather than errors.</li>
<li>Creating monitors with both Broken Links and Mixed Content enabled now performs a <strong>single crawl</strong>, reducing duplicate runs.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed corrupt notification destination edits where channel changes were not properly saved.</li>
<li>Fixed issues where notification destination listing could fail due to malformed destination data.</li>
<li>Fixed performance report date validation to prevent invalid date ranges.</li>
<li>Fixed mixed content reports from generating empty attachments.</li>
<li>Fixed blog response cache not clearing when blog posts were updated.</li>
<li>Fixed GitHub OAuth login failures when users had no verified public email.</li>
<li>Fixed crawler report attachments so each report gets a unique storage path.</li>
</ul>
<h2 id="changes">Changes <a href="#changes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#changes">#</a></h2>
<ul>
<li>Decommissioned the <strong>Bahrain uptime checker</strong> location.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-05-01T16:04:10+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-04-24]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-04-24" />
            <id>https://ohdear.app/59</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added support for <strong>Okta (and other SAML2) Single Sign-On (SSO)</strong>.</li>
<li>Introduced a new <strong>Go-based checker binary</strong>, reducing the memory footprint of uptime checks.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Aligned <strong>Ping check validation limits</strong> with the main app to prevent silent failures when higher values are configured.</li>
<li>Improved the <strong>reseller workflow</strong>:
<ul>
<li>Decoupling a team now transfers ownership to the end customer</li>
<li>Added a dedicated option to fully delete teams</li>
</ul>
</li>
<li>Restructured the <strong>FAQ page</strong> with improved layout and additional content.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where duplicate Stripe subscriptions caused incorrect <strong>“past due” banners</strong>.</li>
<li>Fixed server errors when logging in with <strong>passkeys</strong>.</li>
<li>Fixed SSO issues:
<ul>
<li>Resolved link-token 403 errors on Redis-backed cache</li>
<li>Fixed mobile UI clipping on the DNS copy button</li>
</ul>
</li>
<li>Fixed Open Graph images returning 404 by allowing direct serving from disk.</li>
<li>Fixed uptime metrics endpoints returning incorrect data when the monitor type didn’t match (now returns 404).</li>
<li>Fixed XML status page errors caused by invalid monitor group names.</li>
<li>Broken Links checks no longer mark URLs as broken if they couldn’t be fully checked within the time limit.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-04-24T18:48:34+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-04-17]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-04-17" />
            <id>https://ohdear.app/58</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added <strong>Danish and Swedish translations</strong> for status pages.</li>
<li>Added a <strong>status filter</strong> to the cron check definitions list.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Added <strong>retry and timeout handling</strong> to the Application Health HTTP client for more reliable checks.</li>
<li>Improved handling of <strong>Yuki API</strong> requests with better resilience.</li>
<li>Increased backoff timing for <strong>Application Health failure recoveries</strong> to reduce unnecessary retries.</li>
<li>Improved the <strong>Profile dropdown</strong> to support scrolling for users with many teams.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where the crawler and Broken Links placeholders did not correctly handle <strong>trailing slashes</strong>.</li>
<li>Prevented deletion of users and teams that are tied to <strong>active reseller accounts</strong>.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-04-17T22:43:02+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-04-03]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-04-03" />
            <id>https://ohdear.app/57</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>
<p>Updated the <strong>uptime checker</strong> to ensure responses are always fetched fresh and not served from cache.</p>
</li>
<li>
<p>Updated the <strong>PHP SDK</strong>:</p>
<ul>
<li>Added a <code>CheckResult</code> enum with support for the new <strong>warning state</strong></li>
<li>Included helper methods and updated documentation</li>
</ul>
</li>
<li>
<p>Improved visibility in DNS Blocklist checks by always showing the <strong>IP address</strong> for IP-based blocklists.</p>
</li>
<li>
<p>Aligned the <strong>Lighthouse metric trends chart</strong> date range with the score trends chart for consistency.</p>
</li>
<li>
<p>Lighthouse charts now display up to <strong>6 months of data</strong> on both views.</p>
</li>
</ul>
]]>
            </summary>
                                    <updated>2026-04-06T07:13:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-03-27]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-03-27" />
            <id>https://ohdear.app/56</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added support for <strong>historical data</strong> via the API.</li>
<li>Exposed <strong>crawled URLs</strong> (both brief and detailed) through new API endpoints.</li>
<li>Added support for <strong>dashboard URLs and documentation URLs</strong> in the OpenAPI spec.</li>
<li>Introduced an optional <strong>origin IP address</strong> for DNS Blocklist checks.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Updated the <strong>OpenAPI specification</strong> with historical runs, crawled URLs, and improved Broken Links output.</li>
<li>Updated the <strong>Oh Dear CLI AI agent skill</strong> to support historical and crawled URLs endpoints.</li>
<li>Added guardrails to prevent unintended <strong>reseller team deletions</strong>.</li>
<li>Disallowed team deletions entirely from the admin interface.</li>
<li>Updated the <strong>affiliate commission rate</strong> from 25% to 20%.</li>
<li>Improved Broken Links UI with better <strong>status code positioning</strong> and mobile display.</li>
<li>Ensured only a single <strong>og:image</strong> is rendered on blog posts.</li>
<li>Reordered documentation indexes for better rendering in the feature list sidebar.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed DNS change notifications incorrectly showing “No changes.”</li>
<li>Fixed multiple causes of <strong>false DNS change alerts</strong>, including ignored-type filtering and failed-run baselines.</li>
<li>Fixed DNS Blocklist false positives for domains without A records and for <code>www</code> domains where the apex has no A record.</li>
<li>Fixed Broken Links false alerts and ensured globally whitelisted URLs no longer appear as broken links.</li>
<li>Fixed a server error when all monitors were removed from a status page.</li>
<li>Fixed the “Add monitor” button being hidden by long labels on status pages.</li>
<li>Fixed an issue where dashboard access was locked while SEPA subscription payments were in progress.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-03-30T04:49:35+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-03-20]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-03-20" />
            <id>https://ohdear.app/55</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added <strong>dark mode support</strong> to the dashboard.</li>
<li>Cron failure webhooks now include <strong>monitor and cron details</strong> for better debugging.</li>
<li>Added <strong>activity logging</strong> when a user deletes their team.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved the <strong>Oh Dear CLI help command</strong> to provide clearer guidance for users and AI tools.</li>
<li>Increased readability of <strong>DNS records</strong> in the UI.</li>
<li>Improved handling of <strong>server timezone changes</strong> in cron checks.</li>
<li>Added validation to the <strong>profile information update form</strong>.</li>
<li>Moved tab styling to a shared component for more consistent UI across the app.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed a server error on the <strong>Domain Checks</strong> screen when RDAP fields were missing.</li>
<li>Fixed multiple issues with <strong>dropdowns</strong> not rendering correctly or appearing outside the viewport.</li>
<li>Fixed incorrect active state for the <strong>Billing</strong> menu when no plan is active.</li>
<li>Fixed text overflow issues for long URLs on the dashboard.</li>
<li>Fixed duplicate zero-value rows and incorrect VAT display on the <strong>Billing</strong> screen.</li>
<li>Fixed JavaScript errors when loading or viewing charts.</li>
<li>Fixed chart updates and rendering issues when filtering results or viewing performance metrics.</li>
<li>Fixed crashes caused by null active subscriptions and prevented deletion of reseller teams with active managed teams.</li>
<li>Fixed tabs not working correctly in certain contexts (including uptime history views).</li>
<li>Fixed incorrect error handling by returning <strong>422 responses</strong> for invalid uptime metric filters.</li>
<li>Fixed VAT calculation issues for <strong>prorated invoices</strong> in Yuki exports.</li>
<li>Fixed settings overwrite issues when merging domain check settings.</li>
<li>Fixed the notification editor showing incorrect channel fields.</li>
<li>Fixed DNS change notifications incorrectly showing “No changes.”</li>
<li>Fixed display of detailed failure information for older health check runs.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-03-20T20:10:30+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-03-13]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-03-13" />
            <id>https://ohdear.app/54</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>When email notifications are disabled due to repeated bounces, team owners are now informed <strong>where that email address is configured</strong>, making it easier to remove or update it.</li>
<li>The <code>/api/me</code> endpoint now exposes the <strong>monitor IDs and status page IDs</strong> that a scoped API token has access to.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed a UI issue where a <strong>dropdown was clipped</strong> on the Team Notifications page.</li>
<li>Added a <strong>validation message</strong> when a user attempts to save a notification channel without selecting a notification type.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-03-16T06:09:01+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-03-06]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-03-06" />
            <id>https://ohdear.app/53</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added new Mobile Dashboard</li>
<li>Added a <strong>warning state for uptime checks</strong>. If the primary check location fails but the secondary succeeds, the monitor will show a warning instead of downtime, helping detect regional connectivity issues.</li>
<li>Added support for Slack webhook–compatible notification channels.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Implemented a <strong>TCP connection limit</strong> on our uptime checking servers to improve stability.</li>
<li>Improved how <strong>uptime checks respect client timeout settings</strong>, including older or higher configured values.</li>
<li>Improved performance of the <strong>uptime report page</strong> during long ongoing downtimes.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed dropdown overflow on the <strong>monitors list</strong> page.</li>
<li>Fixed crawler speed being saved to the incorrect JSON column.</li>
<li>Fixed <strong>Ping and TCP charts</strong> so they render consistently with HTTP performance graphs.</li>
<li>Invoices now correctly store the <strong>Billing Entity Name</strong> instead of relying on the team name.</li>
<li>The <strong>affiliate banner</strong> is no longer shown to resellers or their managed teams.</li>
<li>AI check run frequency is now hidden on <strong>mobile screens</strong>.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-03-07T08:48:21+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-02-27]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-02-27" />
            <id>https://ohdear.app/52</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Released <strong>v5 of the Oh Dear CLI</strong>, including support for a custom configuration path.</li>
<li>Improved the <strong>Changelog</strong> with a cleaner overview, pagination, and dedicated detail pages.</li>
<li>On the <strong>Manage Team</strong> page, team owners can now see how members signed up (email/password, Google, or GitHub).</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Updated the layout of <strong>DNS Blocklist results</strong> to use a wider table, aligning better with the marketing design.</li>
<li>Enhanced the <strong>Timeline component</strong> to clearly show when a request times out after being sent to the server (e.g. DNS/TCP/SSL succeeded but no response was received).</li>
<li>Completely rewrote the <strong>CLI documentation</strong>, including updated commands, examples, and new sections.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Prevented unauthorized teams from viewing the <strong>Port check</strong> in monitor settings.</li>
<li>Added a clear <strong>timeout banner</strong> for Sitemap checks when the timeout limit is reached.</li>
<li>Fixed an issue in the <strong>DNS Blocklist check</strong> where domains could be incorrectly marked as blocked due to parsing errors.</li>
<li>Resolved a reseller issue where <strong>deleted teams</strong> were still shown in the reseller table.</li>
<li>The affiliate banner is no longer shown to <strong>resellers or their managed teams</strong>.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-28T03:10:26+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-02-20]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-02-20" />
            <id>https://ohdear.app/51</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added a <strong>performance history graph</strong> to visualise uptime performance over time.</li>
<li>Added a new <strong>NTFY notification destination</strong> option.</li>
<li>DNS Blocklist checks are now visible in the <strong>top navigation menu</strong>.</li>
<li>Added dedicated <strong>history tabs</strong> for DNS Blocklist and Port Scanner checks.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Updated the <strong>OpenAPI specification</strong> with response documentation for AI check endpoints, added NTFY as a notification destination, and included a managed teams update endpoint.</li>
<li>Updated the <strong>PHP SDK</strong> with missing API resources and added reseller endpoints.</li>
<li>Documentation now properly honours text/markdown requests from LLMs for docs, FAQs, and blog posts.</li>
<li>Performance alerts now use <strong>p95 percentiles</strong>, reducing false positives caused by single slow requests.</li>
<li>Added additional percentile validation (p30/p70) to further suppress false performance alerts.</li>
<li>Cloudflare caching now varies by <strong>Accept header</strong>, and ResponseCache differentiates between Markdown and HTML responses.</li>
<li>Improved blog styling and added support for <strong>Markdown tables</strong>.</li>
<li>Improved performance for slow <strong>status pages</strong>.</li>
<li>Updated outdated SDK documentation on the docs site.</li>
<li>DNS Blocklist feature enhancements and documentation updates.</li>
<li>Force address collection during checkout to ensure accurate invoicing in Yuki.</li>
<li>Improved RDAP rate limiting for domain checks using per-server throttling and adaptive frequency.</li>
<li>Reseller logic updated so subteams remain on trial if the parent reseller team is still on trial.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where fetching a monitor by URL did not search across all teams and could incorrectly return 404.</li>
<li>Fixed passkey authentication issue.</li>
<li>Fixed DNS check behaviour so TTL changes are stored without triggering alerts.</li>
<li>Updated used-IPs list to correctly format IPv6 addresses.</li>
<li>Performance checker now resets to success when there are insufficient samples (e.g., after changing check frequency).</li>
<li>Fixed visual issue in documentation where gridlines overlapped text.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-20T23:56:36+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-02-13]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-02-13" />
            <id>https://ohdear.app/50</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Users can now enable the <strong>HSTS header</strong> on their custom-domain status pages.</li>
<li>Recurring maintenance windows can now <strong>cross over to the next day</strong>.</li>
<li>Added <strong>images</strong> to the DNS Blocklist and Port Scanning feature pages for improved clarity and presentation.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved the <strong>Ping uptime checker</strong> by resolving the hostname before pinging the IP address. This avoids DNS-related timeouts and returns a clear error message if DNS resolution fails.</li>
<li>Optimised <strong>dashboard database queries</strong>, reducing render time by <strong>53%</strong>.</li>
<li>Updated the <strong>OpenAPI specification</strong> to reflect all current API endpoints and structures.</li>
<li>Updated and restructured documentation:
<ul>
<li>Split documentation per page</li>
<li>Added .md output</li>
<li>Introduced llms.txt helpers to make documentation easier to retrieve for AI agents</li>
</ul>
</li>
<li>Added <strong>materialized views in ClickHouse</strong> to improve performance for large-range data queries (e.g. over one year).</li>
<li>Began addressing edge cases where invoices were not correctly exported to Yuki and therefore not sent via PEPPOL.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed a server error that occurred when adding a monitor with an invalid URL; the UI now shows a proper validation error instead.</li>
<li>Applied multiple <strong>security hardening improvements</strong> across the application based on findings from a recent security audit.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-16T20:22:32+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-02-06]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-02-06" />
            <id>https://ohdear.app/49</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved DNS blocklist checks so they continue running even if one blocklist times out. Timeouts are now clearly shown in the results, and a new history entry is created whenever the timeout state changes.</li>
<li>Added validation rules and tests for the AI monitor general settings to improve reliability.</li>
<li>Added an AI monitor label field to make it easier to label AI monitors when creating them outside the wizard.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed a UI issue where the pricing calculator was not visible when using dark mode.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-13T08:53:30+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-01-30]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-01-30" />
            <id>https://ohdear.app/48</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added <strong>port checking</strong> functionality to our uptime checking servers.</li>
<li>Added <strong>port checks</strong> and <strong>DNS blocklist checks</strong> to the list of available checks on the main dashboard.</li>
<li>Introduced <strong>recurring maintenance windows</strong> for more flexible scheduling.</li>
<li>Added an optional <strong>delay_seconds</strong> parameter to the /stop-maintenance API endpoint.</li>
<li>AI Checker can now <strong>suggest the first prompt</strong> automatically.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Updated our <strong>competitor comparison</strong> pages.</li>
<li>Changed the check interval for <strong>DNS blocklist checks</strong> to <strong>every 4 hours</strong>.</li>
<li>Upgraded the application to <strong>Livewire 4</strong>.</li>
<li>Updated the <strong>pricing page</strong> layout and presentation.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed a bug where <strong>performance alerts</strong> incorrectly reported sudden performance changes.</li>
<li>Fixed a server error on the <strong>Uptime check details</strong> page caused by Livewire hydration issues.</li>
<li>Fixed the <strong>sitemap checker</strong> to correctly respect the <strong>20-minute timeout</strong>.</li>
<li>Fixed an issue where <strong>invoice line amounts</strong> could not be zero for resellers who hadn’t exceeded their quota yet.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-01-23]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-01-23" />
            <id>https://ohdear.app/47</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved how Cron check results and history handle pending states, ensuring clearer and more accurate status displays.</li>
<li>Added Instagram to the Broken Links whitelist to reduce false positives.</li>
<li>Updated our pricing page with additional competitor comparisons and more content above the fold for better clarity.</li>
</ul>
<h2 id="changes">Changes <a href="#changes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#changes">#</a></h2>
<ul>
<li>Removed the Certificate Transparency section from our marketing materials.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-01-16]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-01-16" />
            <id>https://ohdear.app/46</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved the Uptime checker by sanitising non-UTF-8 characters before JSON serialization, preventing invalid responses from causing issues.</li>
<li>Updated and refined the Third-party integrations pages, and added new bounties for Ansible and WordPress.</li>
<li>Optimised Sitemap checks to avoid loading the full payload of each URL, improving performance and reducing memory usage.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where social-login owners could not require 2FA for team members.</li>
<li>Increased the maximum number of Application Health check results from 50 to 100.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-01-09]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-01-09" />
            <id>https://ohdear.app/45</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li><strong>Peppol invoicing</strong> is now active. Belgian B2B invoices are automatically sent via the Peppol network.</li>
<li>The <strong>Lighthouse History</strong> page now shows the <strong>full history of runs and metrics</strong>, not just recent results.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved <strong>tax calculations</strong> from Stripe by correctly handling VAT-inclusive and VAT-exclusive product pricing.</li>
<li>Lighthouse charts now <strong>auto-adjust their scale</strong> when showing or hiding metrics, making comparisons easier.</li>
<li>Added a <strong>close icon</strong> to the Support Bubble when it’s opened.</li>
<li>Updated documentation for clarity and accuracy.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Added a fallback to <strong>WHOIS</strong> when RDAP does not return an expiration date for <strong>.fi domains</strong>, ensuring domain expiration is reported correctly.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2026-01-02]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2026-01-02" />
            <id>https://ohdear.app/44</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>
<p>Updated the <strong>Lighthouse checker</strong> to correctly audit <strong>HTTP sites</strong> when requested. This avoids automatic upgrades to HTTPS caused by modern browsers and ensures more accurate results.</p>
</li>
<li>
<p>Significantly improved <strong>marketing site performance</strong>:</p>
<ul>
<li>Converted over <strong>100 SVGs</strong> to sprites for faster rendering.</li>
<li>Reduced overall <strong>JavaScript bundle size</strong>.</li>
<li>Removed unused libraries from marketing pages, including Chart.js.</li>
<li>Authentication-related scripts now load <strong>only</strong> on login and registration pages.</li>
<li>Replaced Axios with the browser’s native <code>fetch()</code> API.</li>
<li>Removed the Gill Sans webfont, reducing unnecessary font loading.</li>
<li>Applied multiple frontend optimizations to improve load speed and responsiveness.</li>
</ul>
</li>
<li>
<p>Improved <strong>menu performance</strong> by only initializing interactive components when needed, reducing page-load overhead.</p>
</li>
<li>
<p>Enhanced <strong>blog performance and SEO</strong>:</p>
<ul>
<li>Fixed Open Graph metadata for blog posts.</li>
<li>Improved image loading with preloading and prefetching.</li>
<li>Added missing author, timestamp, and alt-text metadata.</li>
<li>Ensured SEO tags are consistently passed to the main blog views.</li>
</ul>
</li>
<li>
<p>Improved user seeding logic so new Oh Dear users always land on the <strong>Oh Dear team</strong> after login, instead of a reseller team.</p>
</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed Lighthouse checks incorrectly failing when disabled metrics or categories exceeded thresholds.</li>
<li>Fixed a metadata issue where the monitor name was used instead of the site name in blog Open Graph data.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-12-26]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-12-26" />
            <id>https://ohdear.app/43</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added support for mobile Lighthouse checks, allowing performance audits to better reflect mobile user experiences.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved sitemap URL reachability to ensure more reliable sitemap checks.</li>
<li>The Public API now lets you set the new_links_only and force_crawl_urls broken link settings when creating or updating monitors.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where cron titles could overflow the page width in the monthly report UI.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-12-19]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-12-19" />
            <id>https://ohdear.app/42</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added Grok support to the AI checker.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Oh Dear is now compatible with PHP 8.5.</li>
<li>The AI checker now shows a cost warning when selecting an hourly check frequency.</li>
<li>Updated documentation for clarity and accuracy.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Preserved query strings in Status Page history and secret update links.</li>
<li>Fixed Status Page history links to consistently use relative URLs.</li>
<li>Fixed an issue in the Status Page template editor where typed text did not fully appear while editing.</li>
<li>Fixed a broken link in the “How to configure maintenance windows” documentation.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-12-12]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-12-12" />
            <id>https://ohdear.app/41</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added an anomaly detection Slack alert to flag potential worldwide issues when an unusually high number of notifications are being sent.</li>
<li>Added new Claude models to the AI checker.</li>
<li>Launched a new Careers section on the site.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved the AI checker browser session to return clear JSON validation errors instead of redirecting.</li>
<li>Truncated large AI checker JSON outputs to keep results readable; users are guided to screenshots for visual verification when needed.</li>
<li>Fine-tuned AI checker prompts to reduce token usage.</li>
<li>Reduced the maximum token limit to 30,000.</li>
<li>Cleaned up AI checker HTML output by trimming unnecessary SVGs, images, and extra markup.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed a Passkeys issue caused by a missing configuration value after a package upgrade.</li>
<li>Performance response time is now correctly included in the Monitors API response.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-12-05]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-12-05" />
            <id>https://ohdear.app/40</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Simplified how VAT is handled in Stripe / Cashier.</li>
<li>Enabled caching on status badges. Previously, when session middleware was active, Cloudflare ignored cache-control headers due to set-cookie behavior; this is now resolved.</li>
<li>The used-ips endpoint is now cached through Cloudflare for improved performance.</li>
<li>Sitemap payloads are now always encoded as UTF-8 to ensure correct display in notifications.</li>
<li>Optimised sitemap generation memory usage to avoid OOM issues.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Corrected Japanese translations on status pages.</li>
<li>Custom headers are now correctly sent during scheduled sitemap runs.</li>
<li>Fixed a UI issue in the monthly uptime report email.</li>
<li>Resolved a problem where the performance summary always returned “Error.”</li>
<li>Request Timeline: fixed errors when totalTime was 0 and corrected percentage calculations.</li>
<li>Lighthouse notification settings no longer overwrite frequency_* values.</li>
<li>Fixed rounding issues for Lighthouse metric values in both notifications and the UI.</li>
<li>Updated default metric thresholds for Lighthouse notifications.</li>
<li>Prevented notifications from sending during an active maintenance period.</li>
<li>Resolved false positive “problem fixed” events for skipped health checks</li>
<li>The crawler now correctly reports URLs with new lines in the HTTP Host header as invalid.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-11-28]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-11-28" />
            <id>https://ohdear.app/39</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added longer notification snooze options, including 6 months and 1 year.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Our robots.txt crawler now sends the correct headers.</li>
<li>Disabling the scheduled task check no longer deletes its cron definitions.</li>
<li>Application Health checks no longer validate SSL certificates, since SSL validation is already handled by the Certificate Health check.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed a broken toggle in the DNS monitor settings.</li>
<li>Fixed a server error that occurred when creating a Status Page update template with a very long title.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-11-21]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-11-21" />
            <id>https://ohdear.app/38</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added support for multiple Lighthouse servers per continent to improve performance and regional accuracy.</li>
<li>Improved compatibility with password managers by adding a well-known passkey endpoint.</li>
<li>Added a Slack alert that triggers whenever the peak monitor count is updated.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Lighthouse checks are now dispatched hourly instead of daily.
The scheduler now correctly determines whether a Lighthouse check has run recently, ensuring checks aren’t skipped when queue processing takes longer than expected.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-11-14]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-11-14" />
            <id>https://ohdear.app/37</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added an option for resellers to allow managed team users to create, update, and delete monitors.</li>
<li>The Status page now shows the full update history, not just the last 7 days.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Updated reseller documentation to clearly explain the different available user roles.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue where CLS input fields in Lighthouse settings did not accept decimal values.</li>
<li>Adjusted sorting on the Broken Links report so ignored links now appear at the bottom of the list, making new or active issues easier to find.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-11-07]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-11-07" />
            <id>https://ohdear.app/36</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added a request waterfall timeline to uptime checks, providing clearer insight into each stage of request execution.</li>
<li>Added AI monitoring to the Oh Dear documentation features page.</li>
<li>Introduced a feature allowing resellers to remove managed teams.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved performance records ingestion, resulting in faster data display across the UI.</li>
<li>Updated copy across multiple sections: DNS, Broken Links, Lighthouse, and Uptime Monitoring pages, for clarity and consistency.</li>
<li>On the Broken Links report UI, newly discovered links now appear at the top of the list, ensuring they are prioritized over ignored ones.</li>
<li>Added a JavaScript client example to the MCP server documentation.</li>
</ul>
<h2 id="bug-fixes">Bug Fixes <a href="#bug-fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#bug-fixes">#</a></h2>
<ul>
<li>Fixed an issue that broke the UI when updating notification throttling and frequency settings.</li>
<li>Fixed an issue where, if two monitors went down simultaneously on the status page, only one monitor’s updates were displayed.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-10-31]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-10-31" />
            <id>https://ohdear.app/35</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Teams can now choose custom plans, providing more flexibility in managing subscriptions.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved uptime charts and the preview charts on the monitor list. Charts now correctly display when uptime data includes sub-millisecond values, instead of appearing as a flat line.</li>
<li>Enhanced documentation for clarity.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-10-24]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-10-24" />
            <id>https://ohdear.app/34</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added support for Stripe metered billing for resellers.</li>
<li>Skipped non-unique URL checks in image sitemaps.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Refactored scheduled task logs:
<ul>
<li>Logs are now retained for 45 days.</li>
<li>At least 10 pingFinished entries are always kept.</li>
<li>Better handling of pingStarting/pingFinished pairs.</li>
</ul>
</li>
<li>Improved scheduled task validation, only form fields relevant to the selected cron type are now validated.</li>
<li>Refined UI across multiple sections for enhanced usability and visual consistency.</li>
<li>Ensured all documentation categories are now included in the mobile menu.</li>
<li>Added average packet loss to the uptime chart tooltip and fixed sub-millisecond display precision.</li>
</ul>
<h2 id="bugfixes">Bugfixes <a href="#bugfixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#bugfixes">#</a></h2>
<ul>
<li>Fixed an issue where the secondary location tab showed incorrect HTTP response headers.</li>
<li>Added unique wire keys to prevent input leakage on Uptime, Notifications, and Broken Links settings pages.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-10-17]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-10-17" />
            <id>https://ohdear.app/33</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new">New <a href="#new" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new">#</a></h2>
<ul>
<li>Added a new UI section showcasing all our third-party integrations, everything you can connect to Oh Dear in one place.</li>
<li>Added a visible meta payload in scheduled task details so users can easily see when there was an issue during execution.</li>
</ul>
<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>The uptime secondary checker now runs from the same continent as the primary one, improving accuracy for users with regional geo-blocking and ensuring compliance for EU-based users who require checks to stay within their region.</li>
<li>Added an “AI setup” option in the monitor creation flow. It’s currently in closed beta, with a “Coming soon” notice shown for all other users.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-10-10]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-10-10" />
            <id>https://ohdear.app/32</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Improved UI on the monitor list, removing the small chart stutter that happened during poll refreshes.</li>
<li>Polished the uptime settings interface for a cleaner experience.</li>
<li>Uptime buckets on the status page are now timezone-aware.</li>
<li>Status page queries have been optimized to load much faster.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed an issue in the Crawler for URLs that contained .. (dot-dot) syntax.</li>
<li>Fixed minor styling inconsistencies across the blog.</li>
<li>Fixed an issue with the throttle_failed_interval_unit in Notification Settings that caused incorrect throttling behavior for some users.</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-10-03]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-10-03" />
            <id>https://ohdear.app/31</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>in the uptime results we now show results from both uptime checkers, should the first one fail</li>
<li>on the billing screen, you can now see your invoices without having to go to the Stripe portal</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-09-25]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-09-25" />
            <id>https://ohdear.app/30</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<ul>
<li>added a OpenAPI spec to <a href="https://ohdear.app/docs/api/introduction">our API docs</a></li>
<li>performance improvements</li>
<li>fix bugs around whitelisting broken URLs</li>
<li>building <a href="https://ohdear.app/features/ai-monitoring">AI monitoring</a></li>
<li>launched <a href="https://request-mirror.ohdear.app">Request Mirror</a></li>
<li>lauched <a href="https://ohdear.app/tools/dns">DNS info</a></li>
</ul>
]]>
            </summary>
                                    <updated>2026-07-05T08:51:21+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-09-15]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-09-15" />
            <id>https://ohdear.app/29</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<p>Big performance improvements to our website, dashboard and uptime checks. <a href="https://ohdear.app/news-and-updates/speed-improvements-to-the-dashboard-website-job-processing">more details</a></p>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-08-28]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-08-28" />
            <id>https://ohdear.app/28</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="major-new-features">Major new features <a href="#major-new-features" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#major-new-features">#</a></h2>
<ul>
<li>We've added 🏓 ping and 🔌 TCP Port monitoring. See: <a href="https://ohdear.app/news-and-updates/introducing-ping-and-tcp-port-monitoring">Introducing Ping &amp; TCP port monitoring</a></li>
<li>you can now customize the frequency of the checks <a href="https://ohdear.app/news-and-updates/speed-improvements-to-the-dashboard-website-job-processing">more details</a></li>
</ul>
<h2 id="updates">Updates <a href="#updates" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#updates">#</a></h2>
<ul>
<li>we've published a new major version of <a href="https://github.com/ohdearapp/ohdear-php-sdk">our SDK</a></li>
</ul>
]]>
            </summary>
                                    <updated>2026-07-17T14:13:34+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-08-22]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-08-22" />
            <id>https://ohdear.app/27</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<p>Gearing up for a big feature update that introduces Ping &amp; TCP monitoring early next week 👀</p>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-08-15]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-08-15" />
            <id>https://ohdear.app/26</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<p>This week, we introduced an option to prevent a status page from being index by search engines.</p>
<p>Meanwhile, we're also hard at work polishing the upcoming Ping / TCP monitor. We're now testing this extensively in our staging environment.</p>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-08-08]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-08-08" />
            <id>https://ohdear.app/25</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>we've added notification logs: https://ohdear.app/news-and-updates/introducing-our-new-notification-logs</li>
</ul>
<p>Meanwhile we're also focussing on launching our <a href="https://ohdear.app/news-and-updates/why-we-will-be-making-breaking-changes-in-our-api-soon">Ping / TCP checks</a></p>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:28+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-07-26]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-07-26" />
            <id>https://ohdear.app/24</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>we've added a new uptime check location: Stockholm 🇸🇪</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-07-18]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-07-18" />
            <id>https://ohdear.app/23</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>we are working on adding support for ping and TCP monitoring. You'll find some <a href="https://freek.dev/2885-introducing-spatieping-and-spatiesimple-tcp-client">more info in this blog post</a>.</li>
<li>we slightly adjusted the layout of the app: we now use Inter as the base font.</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>we'll now deleted configured scheduled jobs monitors when the cron check is disabled</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-07-04]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-07-04" />
            <id>https://ohdear.app/22</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>a new &quot;Detected Certificates&quot; tab was added to the certificate health check screen. This tab will show all certificates we dedected for a site.</li>
<li>we added a troubleshooting screen for lighthouse checks</li>
<li>add graph was adding to the lighthouse result history</li>
<li>on the new &quot;Usage&quot; screen you can now see how much sites / scheduled jobs you are using against your plan limits</li>
<li>for the PHP developers amongst you: you'll be happy to know our code base has reached PHPStan level 6 💪</li>
<li>show application health client error deails in application health report alert message</li>
<li>add named windows to 'start-maintenance' api endpoint</li>
<li>add Cloudflare email script link to global broken links whitelist</li>
<li>complete static analysis coverage for the entire application</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>small styling fixes</li>
<li>fixed the 'domain' section in monthly reports for sites with unsupported RDAP TLDs</li>
<li>fix seo meta tags for docs</li>
<li>render correct site count when 'sites with issues' tab selected</li>
<li>fix internal errors when handling partial payments</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-06-27]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-06-27" />
            <id>https://ohdear.app/21</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>you can now name a maintaince period, both in our UI and via our API</li>
<li>we've improved the perceived performance of the list of sites: we first render placeholders, so the users get a fast response, and then replace those with the actual data as soon as it is loaded.</li>
<li>we can now notify you via Google Chat</li>
<li>we now accept payments via Revolut</li>
<li>our registration page has been streamlined</li>
<li>we now mention our available payment methods on the pricing page and in the FAQ</li>
<li>our internal workflow to publish the changelog you are now reading has been improved</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>ensure it is clear which things are clickable, by adding the cursor-pointer CSS class to those elements</li>
<li>all broken links on the marketing website are fixed</li>
<li>our crawler checks are scheduled more reliably</li>
<li>we now correctly clean up old historical data</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-06-20]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-06-20" />
            <id>https://ohdear.app/20</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>add additional (and standardise) url validation</li>
<li>move uptime summary below uptime chart</li>
</ul>
<h2 id="internal">Internal <a href="#internal" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#internal">#</a></h2>
<ul>
<li>continuous improvements to static analysis coverage</li>
<li>bug fixes</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>apply all custom headers to application health check</li>
<li>apply correct host header checks for status pages and GTM scripts</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-06-13]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-06-13" />
            <id>https://ohdear.app/19</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>restored uptime summary component in uptime/performance results</li>
<li>add retries and delays when calling third-party APIs during monitoring</li>
<li>increased static analysis level for internal testing</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>fix run result alerts in multiple check components</li>
<li>clarify run result errors in multiple check components</li>
<li>fixed performance chart scaling issues</li>
<li>improved exception handling in checks and reports</li>
<li>other bug fixes</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-06-06]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-06-06" />
            <id>https://ohdear.app/18</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>updates to uptime redesign</li>
<li>updates to check report page alert cards</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>fixed a an issue where performance metrics were sometimes not being stored for offline sites</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-05-30]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-05-30" />
            <id>https://ohdear.app/17</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>automatically disable lighthouse reports that error (or time out) three times in a row an alert the team owner</li>
<li>streamlined onboarding for new teams making it easier and faster to create your first site</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>added clearer alert text to distinguish between SSL certificate and domain-related subjects</li>
<li>only use Google Tag Manager for Oh Dear domains on status pages</li>
</ul>
<h2 id="internals">Internals <a href="#internals" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#internals">#</a></h2>
<ul>
<li>removed backend dependencies</li>
<li>fix dependency and build warnings for front-end assets</li>
<li>the team is making final touches to an uptime and performance redesign (coming soon!)</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-05-16]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-05-16" />
            <id>https://ohdear.app/16</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>redesigned and simplified <a href="https://ohdear.app/news-and-updates">Oh Dear blog</a></li>
<li>added <a href="https://ohdear.app/docs/integrations/the-oh-dear-api#add-a-site-with-custom-settings">monthly report settings</a> to API</li>
<li>added tag filters to site API</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>added x.com to list of crawler ingore list defaults</li>
<li>fixed API notification permissions issues</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-05-12]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-05-12" />
            <id>https://ohdear.app/15</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>added support for <a href="https://ohdear.app/news-and-updates/you-can-now-log-in-using-passkeys">passkey authentication</a></li>
<li>added API support for <a href="https://ohdear.app/features/notifications">snoozing to individual cron and health check items</a></li>
<li>added support for monthly site settings via API</li>
<li>internal admin updates to help customer support create custom pricing for enterprise users</li>
<li>internal admin updates tracking cancellation reasons to understand customer usage</li>
<li>removed unused team check history (site check history is still available)</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>fixed an issue with login via passkey authentication</li>
<li>cleaned up site snooze history UI to clearly show active tabs</li>
</ul>
]]>
            </summary>
                                    <updated>2026-07-05T08:51:23+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-05-02]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-05-02" />
            <id>https://ohdear.app/14</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>added performance charts and tables to monthly site report</li>
<li>added lighthouse report summary to monthly site report</li>
<li>internal reporting, guides and docs to help with support</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>fixed 'ignore' broken link issue with long URLs</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-04-25]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-04-25" />
            <id>https://ohdear.app/13</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Added <a href="https://ohdear.app/changelog/feed">changelog RSS feed</a></li>
<li>Speed improvements to dashboard and performance graphs</li>
</ul>
<h2 id="behind-the-scenes">Behind the scenes <a href="#behind-the-scenes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#behind-the-scenes">#</a></h2>
<ul>
<li>Removed all code related to new ping endpoint</li>
<li>Fixed an issue with deleted site data not executing on schedule</li>
<li>Fixed Clickhouse managed database issues (compute and sharding)</li>
<li>Optimised Clickhouse ingress and queries for performance reporting</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-04-18]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-04-18" />
            <id>https://ohdear.app/12</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new-features">New features <a href="#new-features" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new-features">#</a></h2>
<ul>
<li>On the snooze screen of a check, we now display the history when the check has been snoozed</li>
<li>We've activated new onboarding and offboarding email flows</li>
</ul>
<h2 id="behind-the-scenes">Behind the scenes <a href="#behind-the-scenes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#behind-the-scenes">#</a></h2>
<ul>
<li>All of the uptime and performance statistics have been moved from MySQL to ClickHouse, unlocking future improvements</li>
<li>By leveraging parallel testing, we made our test suite run 3x faster on GitHub Actions</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed a bug where times were not displayed in the correct timezone on the scheduled jobs log</li>
<li>We’ve added help text on various notification screens, making them easier to use</li>
<li>Our status page now gets automatically updated, even if the uptime check is snoozed</li>
<li>We’ve improved the error handling of our DNS checker, making it more reliable</li>
<li>The sitemap checker can now correctly process empty sitemaps</li>
<li>We increased the maximum run time of the sitemap checkers, enabling checking larger sitemaps</li>
<li>A bug was fixed that prevented status pages from being automatically refreshed</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-04-09]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-04-09" />
            <id>https://ohdear.app/11</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<p>🐘 We performed a couple of upgrades and we're now running our entire service on PHP 8.4 and Laravel 12 🥳</p>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-04-04]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-04-04" />
            <id>https://ohdear.app/10</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>When a site is considered offline because of too many redirects, we add a visual indicator to the UI that shows where in the redirect process the limit was reached</li>
<li>Add datetime tooltips for uptime &amp; scheduled tasks, to more clearly show UTC/server/user timezones</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Bugfix timestamp for scheduled task notifications not properly showing</li>
<li>Allow longer application health check URLs on input validation</li>
</ul>
<h2 id="internals">Internals <a href="#internals" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#internals">#</a></h2>
<ul>
<li>Better insights &amp; notifications to subscription updates</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-03-28]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-03-28" />
            <id>https://ohdear.app/9</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="new-features">New features <a href="#new-features" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#new-features">#</a></h2>
<ul>
<li>Allow toggling to only receive <em>new</em> broken links notifications (only when we detect that there are <em>new</em> broken links compared to the previous run)</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed some missing translations on certificate detail pages</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-03-21]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-03-21" />
            <id>https://ohdear.app/8</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>New and improved ping.ohdear.app is now processing incoming traffic, around 5x faster than the old system 🎉</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed performance chart on dashboard rendering backwards in edge cases</li>
<li>Bugfix custom thresholds for certificate expiration monitoring</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-03-14]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-03-14" />
            <id>https://ohdear.app/7</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Extended the Broken Links detail pages with fine-grained &quot;Solutions&quot;, offering insights &amp; actionable tips to resolve the detected problems</li>
<li>Added ability to override robots.txt when crawling, allowing &quot;force crawl&quot; and &quot;force do not crawl&quot; URL options</li>
<li>Tweaked blog layout for minor improvements</li>
<li>Better internal management of our testimonials</li>
<li>Applied response-caching for all marketing pages of the site (server-side rendering from 500ms -&gt; 100ms)</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Applied smarter rate limiting &amp; retry logic when deliver bulk notifications to the same destination (ie: same Slack channels)</li>
<li>Fixed dark-mode styling on the homepage for small top-banner missing CSS</li>
<li>Fixed performance issue on uptime check pages not loading when sites were down for &gt; 24hrs</li>
<li>Fixed the &quot;Feature announcements&quot; posts on the blog not sorting properly</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-03-07]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-03-07" />
            <id>https://ohdear.app/6</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Automated deployments to staging &amp; production for new ping-beta endpoint</li>
<li>Updated layout for the <a href="/news-and-updates">blog</a></li>
<li>Finished changes to the laravel-schedule-monitor package to include <a href="https://github.com/spatie/laravel-schedule-monitor/pull/125">a default API URL</a> and <a href="https://github.com/spatie/laravel-schedule-monitor/pull/123">optional different ping endpoint</a></li>
<li>Added caching to our <a href="/features/status-pages">Status Pages</a> to better handle surges in traffic</li>
<li>Updated <a href="/docs/notifications/telegram">Telegram Notification setup instructions</a> for clarity</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fixed wrong IP for the New York Lighthouse server being reported in the <a href="/docs/faq/what-ips-does-oh-dear-monitor-from">IPs Oh Dear uses</a></li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-02-28]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-02-28" />
            <id>https://ohdear.app/5</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Fixed message when certificates expire, to show actual time remaining before expiry instead of &quot;soon&quot;</li>
<li><a href="/affiliate-program">Affiliate page</a> updated</li>
<li>Introduction of this Changelog section 🥳</li>
<li>Internal improvements to our helpdesk/support integrations</li>
<li>Clarified the setup instructions for <a href="/docs/notifications/telegram">Telegram Notifications</a></li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-02-21]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-02-21" />
            <id>https://ohdear.app/1</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Pass-through IP address for ping-beta customers</li>
<li>Allow local testing of ping callbacks</li>
<li>Show Sitemap and Sitemap URL issues separately</li>
<li>Filter invalid Markdown tags when configuring a Status Page</li>
<li>Replace bespoke cookie banner with Cookiebot</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Prevent status update requests as a user is typing</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-02-14]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-02-14" />
            <id>https://ohdear.app/2</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Allow a sites' Friendly Name to be configured straight in the Add Site modal</li>
<li>Ensure the check names are always human readable</li>
<li>Expose Sitemap crawling issues more clearly to the end-user</li>
<li>Add <a href="https://ohdear.app/docs/integrations/the-oh-dear-api#status-pages">API documentation for creating status pages &amp; status page sites</a></li>
<li>Upgraded from Tailwind CSS 3 to Tailwind CSS 4</li>
</ul>
<h2 id="beta-releases">Beta releases <a href="#beta-releases" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#beta-releases">#</a></h2>
<ul>
<li>A newly architected ping architecture for receiving <a href="/features/scheduled-task-monitoring">cron jobs/scheduled tasks pingbacks</a> is ready for internal testing</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-02-07]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-02-07" />
            <id>https://ohdear.app/3</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="activity">Activity <a href="#activity" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#activity">#</a></h2>
<ul>
<li>The team is attending LaraconEU 2025 to meet with clients &amp; like-minded developers 🥳</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Changelog: 2025-01-31]]></title>
            <link rel="alternate" href="https://ohdear.app/changelog/2025-01-31" />
            <id>https://ohdear.app/4</id>
            <author>
                <name><![CDATA[Oh Dear]]></name>
            </author>
            <summary type="html">
                <![CDATA[<h2 id="improvements">Improvements <a href="#improvements" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#improvements">#</a></h2>
<ul>
<li>Redesigned the &quot;Add Site&quot; screen for simplicity, advanced options are now hidden by default</li>
<li>Add download and uptime exports per site</li>
<li>Add daily downtime summary export</li>
<li>Add sync status page sites api endpoint</li>
<li>Add create status page api endpoint</li>
<li>Add delete status page site api endpoint</li>
</ul>
<h2 id="fixes">Fixes <a href="#fixes" class="heading-permalink" aria-label="Permalink" data-clipboard-text="https://ohdear.app/changelog/feed#fixes">#</a></h2>
<ul>
<li>Fix for handling of bounced e-mail notifications</li>
</ul>
]]>
            </summary>
                                    <updated>2026-02-22T11:30:37+00:00</updated>
        </entry>
    </feed>
