Repository navigation
168 changes since 14.0.110: 23 new or improved features, 76 bug fixes, 19 performance improvements, 5 documentation updates and 45 maintenance changes. The busiest areas: Translations, Monitors and Network.
✨ New and improved
- On-Call
- Workspace Rules
- AI: AI Results shows pages avoided, fixes verified and root causes confirmed, and a prompt or model change can be replayed and benchmarked before it ships (#7761)
- AI words: LLM provider on the Admin Server setup checklist and the Draft with AI docs, and Try again / Investigate now refusals in the reader's language by code (#7984)
- Ask AI: The monitors table under the cards reads in the reader's language (#7942)
- Dashboard widgets: Setup lines for the metric Table and Trace Table, one translated error line, and a card's Remove its own size on a phone (#7990)
- Email: Set the server's email with GLOBAL_EMAIL_ environment variables (#7802)
- Hindi: One word for import, आयात, across the Dashboard and the Hindi docs, held by a guard (#7926)
- Incidents: Each project chooses whether Notify Status Page Subscribers starts ticked (#7606) (#7773)
- Metrics: Query your metrics with PromQL, on the Metrics page and from Grafana (#7750)
- Self-Hosted: Set the server's Twilio account from environment variables (Helm, Docker Compose) (#7735)
- Settings: Store the server's older credentials encrypted, as the newer ones are (#7902)
- Telemetry: Send from Prometheus, Loki, Splunk HEC, the Datadog Agent and Sentry SDKs without re-instrumenting (#7742)
- Call and SMS configs and SMTP configs in the API reference and the Terraform provider (#7779)
- Shared page words in every language (reveal, copy, menu, trail, skip link), and one Persian word for a license (#7941)
- Probe failures in the reader's language: the timeout sentence, Failed Phase, and English messages in their own direction (#7944)
- Runbook steps and the form builder ask before unsaved work is lost; Back keeps the board's scroll position (#7949)
- Network Map says why a device whose monitor is off or archived reads Unknown; a wrapping tile title keeps its (i) after its last word (#7993)
- Monitor overview and Network Path card in the reader's language: states, durations and hop numbers (#7999)
- Header and Search in every language, for screen readers too: spoken key names, plural result count, Search products, Control Plane chart words, project list ARIA, zh-TW shortcut word (#8000)
🐛 Bug fixes
- Translations
- Filter operators read as verbs, email logs say email, queue Other option and relationship rows translated, Persian ports are پورت, Accounts locales in English's order (#7613)
- A user flow transition's arrow points on to its next page, and a Meraki conversation's two arrows agree, on Arabic and Persian pages (#7741)
- Counts stay in the reader's language where its plural looks like English's singular - "3 host" in Italian, "3 VM" in French (#7743)
- A placeholder is looked up once outside forms too, and one the page words is drawn as given (#7682) (#7745)
- Exception breadcrumbs give their times and counts, and the form mapping card quotes its question, in the reader's language (#7771)
- The Admin Dashboard words the rule builder's conditions as the Dashboard does, and hi, ko and Chinese name the Datadog and HEC addresses (#7835)
- No stray or missing space beside a name in Chinese and Japanese sentences (#7953)
- Archived banners and Archived pages in 14 languages, and one archive word per language (#7956)
- Durations and figures in the reader's language - timeline legends cut by units, auto-refresh intervals, Kubernetes CPU cores, host uptime chip (#7992)
- Persian keeps the printed key names (Alt, Tab, Shift, Enter and the rest) as written, as Arabic does, for App Test (d894f27)
- The Coarse Last Seen At column #8128 added to network endpoints is in every Dashboard locale, worded in Arabic and Persian, for App Test (ffd920c)
- Docs
- Persian pages say load balancer, floating IP, pool and share in Persian words (#7795)
- The Persian compatible endpoints page points its menu path from one step on to the next (#7796)
- The ingestion keys and browser RUM pages say a Browser key also carries a Sentry DSN (#7828)
- Persian pages spell load balancer and time zone as the Dashboard does (#7935)
- The docs search box finds Website-Überwachung for "Wie überwache ich meine Website?", and the API key step for "API-Schlüssel erstellen" (#7943)
- The Persian label rule import guide names Validate and preview as the Persian Dashboard draws it, for App Test (9726b90)
- Exceptions
- The breadcrumbs' chip and fold counts are in the reader's digits, and an unnamed event reads in the reader's language (#7854)
- The breadcrumbs' Clock times are in the reader's digits (#7912)
- OpenTelemetry Ruby stack traces keep their crash-site frame and clean file names (#8109)
- Ruby 3.x built-in frames such as Kernel#loop are no longer marked as your app's code (#8126)
- Telemetry
- The first-data wait also finishes on the picked key's first data, for logs that name no service (#7884)
- The Setup Guide's Python, .NET, Go and Rust snippets send to the server's OTLP addresses (#7915)
- A key used only over OTLP gRPC shows when it was last used (#7991)
- The Prometheus, Loki, Splunk HEC, Datadog and Sentry intakes are reserved from the dashboard and status page fallbacks, so a client's health check reaches the intake and not a web page, for App Test (0eab8ad)
- User Flows
- A page named in Arabic, Persian or with accents reads as written, not percent-encoded (#7859)
- On the User Flows page, a path like /cart reads as written in Arabic and Persian, and the picker and Show more write counts the reader's way (#7945)
- User Flows and the session list show each route of a hash-routed app, and one page escaped two ways as one page (#7983)
- The Rum modules the browser recorder inlines import nothing from the rest of Common again, for Browser Recorder Test (f94f68f)
- Admin
- The Twilio environment card reads right in Persian and Arabic (#7836)
- The email environment card draws no record line with no switch, and the signing key guard names email's fingerprints (#7847)
- GLOBAL_EMAIL_ and GLOBAL_TWILIO_ copy from the Arabic and Persian Settings cards without an invisible mark (#7853)
- Maintenance
- Metrics
- PromQL label patterns match in linear time, as in Prometheus, and a pattern that cannot run says why (#7811)
- The Prometheus API names histograms and summaries with their series, and the signing key guard lists the sending route fingerprints (#7846)
- The PromQL tab's metric picker hands its placeholder and label over in English, so each is looked up once (0b044ca)
- Ask AI
- Dashboards
- Forms
- Logs
- Notes
- On-Call
- Probes
- Sending Status
- Users
- Charts: A day chart files each day under the reader's own day, and a window's last bucket keeps its slot (#7277, #7278) (#7667)
- Database: Sign-ins and dashboards keep a database connection however busy queue jobs and probes are (#8046)
- Dialogs: A dialog never starts on a control its disabled fieldset holds still, for Common Test (55fdf21)
- Email: SMTP with OAuth needs the mailbox it signs in as, and a project's relay with no sign-in sends (#7845)
- Files: Plain bytes read whole, a file picker's hint says its own count, extensions dot first on the Event Overview fixture (#7994)
- Filters: A filter's chip and menu read an option the same way, and names are never translated (#7734)
- Header: The project list is named through translation alone, with no English written beside it, for App Test (717f9e7)
- Helm: The agent's cluster name reaches every component whole, and the Secret stores an inline key as the pods use it (#7336, #7337) (#7892)
- Hooks: A commit made while a package is moved aside no longer deletes its package.json (#7695)
- Incidents: Critical Incident, Major Incident and Minor Incident read in the reader's language on the Dashboard (#7890)
- Incidents, Alerts: A state the project's state list does not have is looked up again only when that list was kept from before, not when it was read for the same question, for Common Test (afe566a)
- Ingress: Sign-in works under an IPv6 HOST, and the Security Events Fluent Bit file sends to it (#7998)
- Monitor Templates: Sync buttons keep their wording once the count loads, the sync summary uses the reader's digits, and the unlink dialog sets the monitor's name apart (#7710) (#7740)
- Monitors: Metric pickers show a description's attribute names as code, without backticks (#7965)
- Network: The Interfaces tab's traffic, utilization and errors tooltips say the values update when they change noticeably, at least every 15 minutes (#8130)
- Table: A list's Try again, pressed from the keyboard, keeps the focus in the list while it loads again, and on Try again if it fails again (#7621) (#7668)
- Terraform: Phone numbers apply however they are written (#7829)
- Values: Deleting a severity says people's rules in How to Reach Me go with it, not their whole How to Reach Me (#7844)
- Workers: A process with no Valkey connection runs scheduled jobs without the lock, and logs nothing (#8102)
- Workflows: A step opened on a view starts on the dialog again, not on its Compare as fold, for Common Test (eeac1e4)
⚡ Performance
- Monitors
- The Monitors menu, heartbeat checks and device deletes read only the monitors they need, and heartbeats write 92% fewer index entries (#8098)
- A probe result stores its step and reads the other probes' in one statement, never their whole last-check logs (#8100)
- A healthy result no longer reads the monitor's open incidents and alerts, nor the project's states (#8110)
- A result reads its monitor once, under its lock, and a probe's stale result is dropped instead of retried (#8117)
- Heartbeats stop rewriting the Monitor row, and the heartbeat sweeps evaluate a monitor only once its window can have turned (#8119)
- Monitor keeps a tenth of every page free, so 95% of heartbeat, telemetry and server writes skip the indexes, up from 84% (#8127)
- The Not Operational count reads only the monitors in a problem status, 1,915 buffers instead of 8,585 in a 20,000-monitor project (#8129)
- Network
- An SNMP trap's device lookup is cached for a minute and shared with syslog, so a trap no longer reads every device its probe polls (#8094)
- Each device poll and SNMP trap finds its monitors by the device, not by reading every Network Device monitor's steps in the project (#8099)
- Device polls stop rewriting every interface and endpoint, and the inventory sync reads each table once a pass (#8107)
- The stale-poll check reads the devices whose polls stopped and reports each spell once, instead of re-evaluating every stuck device every five minutes (#8111)
- A backlog holds one poll per device, the newest, and one trap job per sender, instead of a job for every poll and trap (#8112)
- Device polls refresh the endpoints they still see without rewriting the table's indexes (#8128)
- On-Call
- Auth: Sign-in and requests across projects cost a few statements, however many projects someone is in (#8121)
- Lists: Pages read only their own rows and count up to 10,000+, and the Network Overview counts the fleet once (#8122)
- Probes: Monitor checks and device polls write 36-50% fewer Postgres index entries, so vacuum keeps up (#8063)
- Workers: Scheduled jobs run one at a time and stop at their time limit; episodes past the first 1,000 auto-resolve (#8097)
📚 Documentation
- Incidents
- The translated incident pages name Critical Incident, Major Incident and Minor Incident as each language's Dashboard draws them, for App Test (#7948)
- The translated incident pages name Critical Incident, Major Incident and Minor Incident as each language's Dashboard draws them, for App Test (535f547)
- Quickstart: Walk the guided setups the welcome checklist opens, in all 17 languages (#7332) (#7961)
- Ux: The guide names the probe message and widget error line guards, and the widget guard points to its rule, for Common Test (f50020c)
- Add guidelines for deciding on release versioning (bdd9aa1)
🧰 Maintenance (45)
- CI
- RecordIdLineGuard passes again on main, the Twilio environment card no longer switches off a record line it never had (#7797)
- The explorer docs tests count each explorer's tabs from the Dashboard, so Metrics' PromQL tab passes (#7810)
- The Profiles docs translations name Grafana Alloy as the Dashboard draws it, a label since #7742 (#7823)
- E2E
- The fixture font ratchet lists the Event Notes fixture no more, which draws in Inter since #7595, for Ops Config Test (c35f44a)
- An investigation's activity lines name a resource's kind mid-sentence in lower case, as #7940 words them, for Dashboard Offline UI (a3b4e96)
- The Metrics AI tab suite lists the PromQL tab that #7750 put after Viewer, for Dashboard Offline UI (bdff94a)
- Monitors
- The docs facts suite finds the maintenance pause in the probe claim's one rule, where #7918 moved it, for App Test (#7934)
- The probe result and state cache suites type their mocks, spies and Postgres describe as
@jest/globalsmakes them, for Compile (740b833) - The AI / LLM telemetry suite reads the scheduler's sweep from the page of monitors it asks for, now that it stamps a page at a time, for App Test (05f9035)
- Network
- The fleet scan suite's seed note is one block comment, as multiline-comment-style asks, for Common Jobs (1cbe392)
- The caller permission guard lists the Network Overview cache, which fingerprints a narrowed viewer's permission rows into its key and decides nothing from them, for Common Test (36329ed)
- The fleet scan suite draws its random fleets from the suites' one seeded generator, for Common Test (adcd6c6)
- On-Call
- The record states suite leaves a record's state out instead of setting it to undefined, as exactOptionalPropertyTypes asks, for Compile (6c6c3a7)
- The cache generations guard names the on-duty policies cache, which keeps the header's answers under its project's generation, for Common Test (bc6eba4)
- The override form suite checks a known overlap under Ends at its own clock, as the upcoming override it edits has ended on the real one, for Common Test (d179564)
- Probes
- The sample-project guard reads a claim's rule list, where #7918 moved its conditions (#7972)
- The sample-project guard reads a claim's rule list, where #7918 moved its conditions (8c1f4e3)
- The shipped-key upgrade suite assigns its monitors as the product does, due from creation, which a probe's claim now reads, for Postgres Schema Drift (1ff8914)
- Common
- Ebpf E2E
- On kind, the chart's profiler is checked with a process it can resolve, a same-PID one in the apps node, for Kubernetes Agent eBPF E2E (0695601)
- On kind, the same-PID process's script goes in and its report comes out through the node's shell, which reaches the tmpfs KinD mounts on /tmp, for Kubernetes Agent eBPF E2E (0a11975)
- Openstack
- Workers
- App: App Test runs in four shards, as its note says to once a shard passes about 20 minutes, for App Test (0d8db16)
- Audit Logs: The hook-free write guard holds a schedule's layer save to recording its writes once its transaction commits, by the save that runs it, for Common Test (63da7a2)
- Auth: The record scope Postgres suites cache nothing for a request across projects either, now that #8121 reads every project's permissions in one batch, for Postgres Schema Drift (0d6ac2d)
- Boot: The shipped-secret warnings suite lets the server's own Twilio and email notices follow the warnings, and holds them to waiting on nothing before the next boot step, for App Test (aaa3849)
- Incidents: The Owners on create offline fixture answers Declare Incident's read of the project, as the API does, for App Test (a492c70)
- Infrastructure: The Host and VMware overview suites find a golden metric tile's (i) after its title's last word, inside the title's words, where #7348 put it, for Common Test (d21f408)
- Inventory: The table rename suite derives a partial index's name with its condition, as TypeORM does, so the mirror's keyset index reads as created after the rename, for Common Test (3a753d5)
- Logs: The log shipper files' test escapes a tag pattern with the shared escapeRegExp, not a copy of it, for Common Test (134795c)
- Metrics: The Prometheus API routes suite takes a read the way the service does, a statement or a string, for Compile (#7860)
- Migrations: The gateway signing secret is the encrypted text column a later migration widens it to, for Common Test (a92dd23)
- Navbar: Cmd/Ctrl+K from the Products search box finds the box by the name #7486 gives it, Search products, for Common Test (5749b7a)
- Network Devices: The inventory suite's device that never had a contact leaves the field out, as exactOptionalPropertyTypes asks, for Compile (4e174ec)
- Npm: The translator may load the one escape for text a pattern matches as written, a module that loads nothing, for Common Test (#7893)
- Postgres: Run the probes' collection and scan claim set-aside suite in Postgres Schema Drift (#8085)
- Projects: The new projects' AI switch finder passes over the status page subscribers default, which names OneUptime AI only as a way to declare, for Common Test (34e5c0a)
- Releasing: Remove outdated newcomer walkthrough process from release notes (47bcd14)
- Reminders: The criteria-backed rule suite hands an id to the page of ids PagedFind reads from the table, as it did to TypeORM's DISTINCT one, so both statements are still checked, for Common Test (c748066)
- Terraform: The dashboard's view of each resource keeps a phone number as the provider now does, a string type of its own, for Common Test (9a97d5d)
- Translations: The Russian service sentences check reads the template's maintenance events entry by the words #7982 gives it (03e9b9e)
⬆️ Upgrade
Back up first, then follow the upgrade guide. On Docker Compose, run npm run update on the release branch. On Kubernetes, helm upgrade to version 14.1.0 of the chart.
Full changelog: 14.0.110...14.1.0
Contributors: @nawazdhandala, @simlarsen