Changelog
Running on v1.0.65. What users notice, release by release.
v1.0.65
current- Microsoft 365 DNS monitors now align more closely with Microsoft Admin Center health by checking required core records while showing Teams, Skype, and device-management records as optional guidance.
- Microsoft 365 DNS details now mark which required record needs attention and show the exact value to set.
- Microsoft 365 DNS probes now use Healthy and Unhealthy status labels instead of Up and Down.
v1.0.64
- Microsoft 365 DNS failures now show which record failed and what DNS returned, so the reason for a Down probe is easier to act on.
v1.0.59
- Microsoft 365 DNS monitors are easier to add: enter the domain and IsItUp captures the needed public Microsoft records automatically, so you no longer have to copy MX, TXT, CNAME, or SRV values into the form.
v1.0.58
- Host service discovery is now a paid-plan feature. The AI assistant's "scan a host for what's running" tool used to give every workspace 10 scans per hour regardless of plan; that allowance now applies to Solo and Team only, while Free workspaces are blocked with a clear "Discovery scans require a paid plan" message and Enterprise stays unlimited. Discovery is the highest abuse-risk surface in the app (we probe an attested host on the user's behalf), so the free-tier allowance was the one quota gap that didn't match the rest of the plan-aware limits.
v1.0.57
- You can now schedule maintenance windows on a monitor to pause probing during a planned downtime — a deploy, a DB migration, a cert rotation, anything you know is going to fail checks on purpose. While the window is active no checks run, no incidents open, and no alerts fire; the monitor's current up/down state is preserved until the window ends. Schedule one from the new "Maintenance" card on the monitor detail page. End it early ("End now") or cancel a scheduled one at any time — probing resumes within about a minute.
- Active maintenance is surfaced everywhere it matters: a "Maintenance" badge next to the status on the monitor detail page, on each monitor card in the dashboard list, and on each row in the folder grid. So a teammate scanning the dashboard knows the silence on a monitor is intentional, not a broken checks runner.
- v1 is deliberately narrow: one-time windows per monitor, times are picked in your local timezone, no recurrence yet. Recurring windows, org-wide windows, per-probe scope, notifications when a window opens or closes, plan gating, timezone pickers, and visible "skipped" markers in the check history are all tracked as follow-up work.
v1.0.56
- Slack and Microsoft Teams alerts are now a real per-workspace feature. Open Settings → Notifications, pick Slack or Teams, paste the incoming webhook URL from your own workspace, give it a label like "#alerts", and save. The URL is stored in Supabase Vault and never shown back to the dashboard.
- Each monitor's detail page has a new "Slack & Teams destinations" card listing every destination in the workspace with a checkbox. Tick the ones that should receive down and recovery alerts for that monitor; teammates with monitor edit rights can adjust the list any time.
- Down and recovery messages render natively in each channel — Slack gets the existing text format with a "View in dashboard" link, Teams gets an Adaptive Card with the same details. Every send appends a row to that incident's activity log so you can confirm delivery (or see exactly which channel failed) from the incident detail page.
- Workspace destinations are plan-gated alongside monitor and member caps: free workspaces get 1 destination, solo gets 3, team gets 10, enterprise is unlimited.
- Destinations can be paused without deletion from the Edit dialog — flip the "Active" switch off, the runner skips them, and monitor links stay intact so you can resume later.
- Operator-only
SLACK_DOWN_ALERT_WEBHOOK_URLandDOWN_ALERT_WEBHOOK_URLenv vars still drive cron-runner failure alerts (those don't have a monitor context to look up).
v1.0.53
- You can now open an incident by hand from a monitor's detail page — useful for outages the runner can't see (third-party dependencies, planned maintenance, anything outside an HTTP/TCP/cert probe). Add an optional note that shows as the incident's root cause. Resolve it from the incident page when the issue is over; both events land in the same activity log the runner writes to.
- One incident at a time per monitor: if the runner already opened one automatically (or a teammate did), the "Open incident" button stays disabled until the current one is resolved.
- When the incident list itself fails to load, the error message now includes the Postgres error code so it's actually quotable to support — "Could not load incident history (code: 42P01)" beats a flat "it didn't work."
v1.0.52
- Incidents on a monitor's detail page are now clickable and open a full activity log: when we first detected the failure, every alert we sent (which email address, which Slack or webhook, success or failure), and the check that confirmed recovery. The incident card on the monitor page also shows the root-cause HTTP status alongside the duration so you can scan outages at a glance.
- Pre-existing outages from before this update won't appear in the new list — they pre-date the activity log and the channel records they'd need are not reconstructable. New incidents from now on are captured the moment they open.
v1.0.51
- Operators now get an email notification at the
ALERT_EMAIL_FROMaddress whenever a new user completes signup, so you don't have to poll the dashboard to see who joined. Sends through the existing Mailgun / SMTP transport — no extra config needed beyond what monitor alerts already use.
v1.0.48
- Monitor detail pages now show recent outage windows from roughly the last six months of stored history, so older incidents are easier to find without digging through individual checks.
- Sign-in emails now use a shorter subject line that makes the one-time code easier to spot in your inbox.
v1.0.47
- The Recent checks table on a monitor's detail page now has All / Up / Down filters above it, with running counts next to each. Click Down to jump straight to the recent failures instead of scrolling through a mixed list. The table now shows every check in the loaded history (instead of capping at 25), so filtering to Down on a mostly-healthy monitor actually surfaces past failures rather than truncating them.
v1.0.46
- Picking a paid plan from the public pricing page now takes you straight to checkout for that plan after you sign in. Previously you'd land back on the pricing page and have to click the plan a second time.
v1.0.45
- Adding monitors in bulk is faster: paste a list of URLs into any URL field on the bulk-add page and they fan out across separate rows automatically, with names already filled in. No more separate "paste a list" dialog — pasting just works.
- "Bulk add" is now a clear button on the dashboard toolbar instead of being tucked inside a More menu, so it's easier to find when you need to add several monitors at once.
v1.0.44
- Bulk add monitors now opens a full page instead of a small dialog. Add URLs one at a time with an "Add another URL" button, or paste a list of domains and we'll split them into rows for you. Each row gets an editable name, and we flag duplicates against your existing monitors and within the list before you submit. The previous dialog could occasionally fail to open at all when triggered from the More menu — that's also fixed by the move to a dedicated page.
v1.0.43
- Owners now get a branded "your trial ends in N days" email a few days before the 14-day trial converts, with a one-click link to the billing page. Pairs with Stripe's own renewal reminder so the in-product touchpoint lands alongside the billing email.
- Plan and billing-status changes now actually take effect right away after a checkout success or a return from the Stripe billing portal — previously the rest of the app could keep showing the old plan for up to an hour until the session naturally refreshed.
- Fixed the "Monitoring is paused" banner not showing up when a workspace went over its monitor or member cap. The banner is what tells you why checks stopped — without it, the workspace would silently stop checking with no in-app explanation.
- Removed Slack from the alert-channels copy on the homepage, pricing taglines, and privacy/terms pages. We currently support email and webhook alerts; Slack as a per-workspace integration is on the backlog and the marketing claim has been pulled until it ships.
v1.0.42
- New "Your last payment failed" banner shows on every dashboard page the moment Stripe reports a failed charge — with an "Update card" CTA for owners — so you fix the card before service is interrupted instead of waiting for the workspace to drop into past-due state two weeks later.
- Plan and billing-status updates now apply to the rest of the app immediately after you finish a checkout or come back from the Stripe billing portal — no more brief mismatch where an upgrade has gone through but the dashboard still shows your old plan.
v1.0.41
- Probe and monitor forms now surface a "Check interval adjusted" toast when your submitted interval was bumped to your plan's floor — no more silent saves at a different cadence than you picked.
- Over-cap banner now branches by which dimension breached (monitors vs members) and tells non-admins where to find an owner. Manage-billing CTA only shows for owners (Stripe portal is owner-only).
- Trial banner heading is now an
h2(wash5), so the page heading order goes h1 → h2 instead of h1 → h5 — fixes a screen-reader skip. - Plan caps are now tracked in one SQL function (
public.plan_limits) and one TS table (lib/organizations/plan-limits.ts); other helpers read from the SQL function so the per-plan numbers can't drift across SQL bodies. - Stripe sync/cancel webhooks now run as a single atomic Postgres function — no more partial state where the subscription row says one plan and the org row says another.
- Defensive error boundary for the private app shell — a render bug in one banner can't blank out the whole authenticated app.
- Banners suspend, so they don't gate first paint of every page.
- Faster /dashboard render: the auth + membership + plan lookup is now request-scoped so multiple banners and form helpers share one round-trip instead of each doing their own.
v1.0.40
- Stripe billing is now end-to-end. Sign up free with no card. When you want to try a paid plan, click "Try Solo free for 14 days" or "Try Team free for 14 days" — checkout collects your card, you won't be charged until the trial ends, and you can cancel from the Stripe-hosted portal at any time. Card declines drop the workspace back to free-tier capacity automatically; cancel-at-period-end keeps you on your paid plan until the period actually ends.
- New "trial" banner counts down the days during your 14-day trial and links to the billing page. Once the trial converts to a paid subscription it disappears.
- New "Monitoring is paused" banner appears if you go over your plan's limits — for example, downgrade to Free with 60 monitors and the cron stops checking until you trim or upgrade.
- Plan caps simplified: Free 50 monitors / 1 member / 1 alert recipient (5-min checks), Solo 100 / 1 / 2 ($5/mo, 1-min checks), Team 300 / 50 / 100 ($19/mo, 1-min checks).
- The probe-interval picker now shows a "Trial — included" badge on 1-minute and 2-minute options while you're on the Team trial, so it's clear what's normally a paid feature.
- Probe intervals you submit faster than your plan allows are automatically bumped to your plan's floor — the form persists what you can use and surfaces a "Check interval adjusted" toast so you know it happened.
v1.0.39
- Fixed the monitor uptime history graph overflowing the viewport on mobile. The newest checks now stay anchored to the right edge and older bars clip out of view rather than extending past the screen.
- Brightened the destructive (red) accent in dark mode so "Revoke", "Delete", and other error text is readable against the dark background instead of nearly disappearing.
- Tightened page padding on small screens (monitor detail, dashboard, team, billing, settings) so content uses the available width instead of wasting it on margins.
- Enlarged the close button on the AI assistant chat panel to a proper 40px touch target so it's tappable on mobile.
v1.0.35
- Added a public home page that explains uptime monitoring, alerts, team access, and setup before sign-up.
- Made pricing clearer by highlighting the Team plan as the best value for shared on-call work.
v1.0.28
- Group monitors into folders. Got a long list of monitors that's getting hard to scan? You can now sort them into folders — name them, give them an emoji and a color, and find what you need fast. Useful when you're tracking work for several clients or environments.
- Two ways to look at the dashboard. The new view toggle on the monitors page switches between the regular flat list and a grid of folders. In the grid, every folder is a "manila card" with the top failing (or otherwise top-of-mind) monitors poking out so you can see status at a glance without drilling in. Click a folder card to filter the list down to just that folder.
- Multiple ways to file a monitor. Drag from the Unfiled list onto a folder card, use the new "Move to folder" item in each monitor's kebab menu, multi-select a batch with the new selection bar, or pick a folder right from the create / edit monitor form. Monitors that aren't in any folder show up under "Unfiled."
- Two-step folder delete. Removing a folder asks whether to keep its monitors (they move to "Unfiled" with all history intact) or delete them too. The delete-everything path requires you to type "confirm" so it can't happen by accident.
- Workspace-wide. Any teammate can create, edit, or delete folders. Folder names are unique within your workspace (case-insensitive) so you can't accidentally end up with two "Acme" folders.
v1.0.27
- Cleaner alert emails with a link to the monitor. Down and recovery emails are now plain text (no more stray asterisks from the Slack format leaking in) and include a "View in dashboard" link straight to the monitor that triggered the alert — so you can jump from the email to the right page in one click.
v1.0.26
- Pick who gets paged when a monitor goes down. When you create or edit a monitor, there's a new "Alert recipient" field. It's prefilled with your account email, but you can point it at anyone — a teammate, a shared inbox, a paging address. Each monitor has its own recipient now, so different services can wake up different people. Leave it blank on edit to keep the monitor running but skip email alerts for that one (Slack and webhook channels still fire if you have them set up).
- Existing monitors keep working. Monitors created before this change have been backfilled to the email of whoever created them, so down/recovery emails continue to land where they were before.
v1.0.23
- TLS certificate checks now work reliably. Certificate-expiry probes were failing across the board with "Peer did not return a certificate," even when the target site was serving a valid cert. They now connect, read the certificate, and report status correctly.
- Certificate details on the monitor page. For any TLS cert-expiry probe, the Probes card now shows the certificate's Subject, Issuer, Issued date, and Expires date — with a rolling "N days left" (or "expired N days ago") indicator so you can see at a glance how close a renewal is.
v1.0.22
- Monitor detail now shows every probe, not just one URL. The monitor page gained a Health section with Uptime and Response time tabs. Uptime (the default) shows a per-probe status strip so you can see at a glance which probes are passing and which are failing, with hoverable segments for each check. Response time overlays every probe's latency as its own color-coded line. Previously the chart only reflected the first HTTP probe, so a failing certificate check or TCP probe was invisible from the chart.
v1.0.20
- Fix: new accounts couldn't create monitors. Brand-new sign-ups in production weren't getting a workspace assigned, which made every action fail with "Could not resolve your organization." Sign-ups now provision a workspace immediately, the way they always did locally.
v1.0.19
- New public pricing, privacy, and terms pages. Pricing undercuts comparable paid uptime plans: Solo at $5/mo (25 monitors) and Team at $19/mo (100 monitors, up to 50 teammates), with a real Free tier you can stay on forever and Enterprise available by request.
- Paid plans now bill through Stripe. Owners and admins can upgrade from the pricing page, manage cards and invoices from the new dashboard → Billing area, and cancel any time. Plan caps on monitors, seats, and pending invites update automatically when the subscription changes.
- Cron failure alerts. If the check runner's scheduled endpoint fails (unexpected exception, database outage) or every due monitor fails in a single run, a one-line notice goes out through the same Slack, generic-webhook, and email channels already wired up for down alerts — no new setup required.
v1.0.18
- Bulk add monitors: paste a list of URLs or domains and create monitors for all of them at once, with automatic name generation, duplicate detection, and shared settings
v1.0.17
- Mobile-friendly navigation: the sidebar now collapses into a hamburger menu on small screens
- Creating a new monitor now takes you straight to its detail page
- Monitor detail page has a back link to the monitors list
- Organization owners can rename their organization from the Team page
- Fixed input auto-zoom on iOS Safari
v1.0.16
- Recovery alerts: When a monitor comes back up after being down, you now receive a "Recovered" notification on the same channels (Slack, webhook, email) as down alerts. No extra configuration needed.
- First-failure alerts: New monitors that fail their very first check now trigger a down alert immediately, instead of requiring a successful check first.
- Automated check scheduling: Checks now run automatically every minute via Supabase Edge Functions and pg_cron — no more manual
bun run checks:runor external cron setup required. - Checks on edit: Editing a monitor now triggers an immediate check, so you see updated status right away (previously only creating a monitor did this).
- Improved dashboard error states: When monitors or check history fail to load, the dashboard now clearly shows an error instead of misleadingly displaying "No monitors yet" or "No checks recorded."
- Better assistant responses: Tool results in the chat assistant are now displayed in a readable format instead of raw data.
- Edit monitor fix: The Edit button in the monitor actions menu now reliably opens the edit dialog.
- CSV export messaging: When there is no check data to export, the dashboard explains why instead of silently hiding the export button.
v1.0.15
- Add or edit monitor is simpler: you mostly enter a name, web address, and how often to check. Extra choices (request type, expected response code, optional keyword in the page) sit under Advanced so they stay out of the way until you need them.
- If you type a web address without
https://, we assume secure HTTPS for you—you can still enterhttp://explicitly when you mean plain HTTP. - For HTTPS sites, each check also looks at the site’s security certificate: the check fails if the certificate is already expired or will expire within two days, so you get warned before visitors see browser warnings. Recent check history and downloads show when the certificate expires when we were able to read it.
v1.0.14
- The monitors dashboard and each monitor’s detail page can show setup reminders when recurring checks are not configured yet, or when active monitors still have no check history—including a simple one-shot command you can run from the project when your host has documented it.
- On local setups, the sign-in flow explains that email login codes are delivered to the local mail catcher and includes a link you can open in a new browser tab to read them.
- When you reach a workspace limit on monitors or seats, the message you see is clearer about freeing a slot or asking an owner to adjust the plan where your host manages it.
- If you load the bundled seed data after a database reset, the default workspace may include a few sample monitors so the dashboard is not empty while you try things out.
v1.0.13
- When you add a new monitor (from the form or, where available, through chat), the system checks it right away so you see up or down status and a first result without waiting for the next scheduled run. Paused monitors are not probed until you turn them on and the normal schedule applies.
v1.0.12
- The assistant opens from a floating button at the corner of the screen instead of a large block on the page, so your monitor list and details stay easier to scan. Open it to chat in a side panel; shortcuts that take you to the assistant still open it automatically.
v1.0.11
- Your workspace plan now sets sensible caps on how many monitors you can add, how many people can belong to the team, and how many open invitations you can have at once. When you hit a cap, you see a plain explanation of what to do next (for example remove a monitor, cancel an invite, or ask your host about a higher plan).
- Accepting a team invitation is blocked if the workspace is already full for its plan, so you get a clear “at capacity” outcome instead of a confusing error after you sign in.
v1.0.10
- When the assistant cannot finish a reply—especially during busy periods—you see a clearer explanation (for example that things are temporarily limited) instead of a single generic failure message.
- Everyday back-and-forth with the assistant should stay within typical usage limits more often; hosts can optionally tune how large each assistant step may grow using configuration.
v1.0.9
- On each monitor’s Details page, download recent check history as a spreadsheet (same sample as the chart and table, up to the row cap your host sets).
- When the assistant is enabled, it only creates a new monitor after you clearly agree in chat—same idea as when it changes a sensitive setting on an existing monitor.
- The monitors page can list recent failure streaks from your seven-day sample—runs of consecutive failing checks per endpoint—so you spot outage-like windows without opening each monitor.
- Export checks for the whole workspace for the same seven-day window as a downloadable spreadsheet from the monitors page (very large histories may be capped; you will see a note if so).
- When the assistant is enabled, it can summarize failure streaks per monitor from your stored history when you ask about outages or downtime patterns.
- Hosts that run more than one app instance can wire the assistant’s usage cap to a small shared data store so limits stay consistent across servers (optional; defaults stay in-memory on a single instance).
- If you use a Claude subscription–style credential for the assistant instead of a classic API key, requests now include what the provider expects so that path keeps working as their API evolves.
v1.0.8
- The monitors page highlights what needs attention: how many endpoints are down right now, which one had the weakest recent uptime in our sample, and which has been flipping between up and down the most—so you can prioritize without digging through raw lists.
- Open any monitor’s Details to see recent check history, a simple response-time chart, and the same optional assistant focused on that monitor (when your host enables it), including quick prompts you can tap to ask about uptime or failures.
- When the assistant is on, it can answer from your stored check history, failed runs, who is on the team, and pending invitations (where your role allows), not only add or edit monitors—so questions about what actually happened are easier to explore in chat.
v1.0.7
- If your host turns on the optional monitors-page assistant, it can authenticate with a Claude subscription-style credential as well as a standard API key—handy when you already use Claude through a plan and do not want a separate API-only setup.
v1.0.6
- Workspace owners and admins can invite people by email from the Team page; invitees follow a link, sign in with the same address the invitation was sent to, and join that workspace (your host can turn on outbound email so invitations arrive automatically).
- Sign out is available from the monitors and team screens so you can switch accounts without leaving the app guessing.
- Opening add or edit monitor from the row menu closes the menu cleanly before the form appears, so the flow feels less glitchy.
v1.0.5
- If a monitor was healthy and then starts failing checks, your host can turn on optional alerts (for example team chat, another service you connect, or email) so you notice outages sooner.
- The same secure timer setup for running checks fits more hosting providers without extra configuration on your side.
- Your host can limit how long detailed check history is kept so storage stays predictable on busy sites.
v1.0.4
- The monitors-page assistant paces heavy use so responses stay reliable; if you send too many messages in a short window, wait a moment and try again (your host can adjust or turn this off in configuration).
- The assistant now treats turning a monitor off or changing the address it watches as sensitive: it should confirm with you in chat before applying those changes, so accidental edits are less likely.
v1.0.3
- Fresh site icon and logo on the sign-in screen and monitors page so the product is easier to recognize in the browser tab and in the app.
- When something goes wrong loading, saving, or removing a monitor, you now see a clearer explanation (for example missing workspace access or permission issues) instead of only a generic failure message.
- Access to monitors and related data now follows your workspace membership more directly, so you are less likely to be blocked right after sign-in when your session omits optional workspace metadata (common in some self-hosted setups).
- If your host enables the optional dashboard assistant, an API key copied with accidental line breaks or spaces is normalized automatically so the assistant can still connect.
v1.0.2
- Optional chat assistant on the monitors page: describe what you want to watch in everyday language and it can list your monitors, add new ones, or adjust existing ones (your host turns this on with configuration).
v1.0.1
- Add and edit uptime monitors from your dashboard: give each one a name, address, how often to check, and an optional phrase that should appear when the site is healthy.
- See at a glance whether each monitor is up, down, or has not been checked yet, and how long ago the last check ran.
- Support for running checks on a timer from your own automation (when you configure it with a shared secret).
v1.0.0
- IsItUp launched — uptime monitoring for the websites, APIs, and services you actually care about. Add a URL, set how often to check, and get an email when something breaks. That's it.