版本发布 8
### 🐞 Bug Fixes - #7346 fix: Revert back to single SQLite connection by default
### 🆕 New Features - #6952 feat: Notification provider Teltonika RUTxxx SMS gateway (Thanks @unixerius) - #6939 feat: add tags to teams notifications (Thanks @thelfensdrfer) - #6850 feat: add DNS support via Globalping (Thanks @radulucut) ### 💇♀️ Improvements - #6971 refactor: improve dynamic RDAP DNS data ### 🐞 Bug Fixes - #6933 fix: Clear 2.1.0 frontend PWA cache - #6978 fix: Add helptext about usage to expiry checkboxes - #6977 fix: handle undefined monitor name in PagerDuty notification summary (Thanks @mixelburg) - #6960 fix: typo in DNS monitor error message (specifiy → specify) (Thanks @redbasecap-buiss) - #6897 fix: clearing heartbeats on paused monitors leaves them paused (Thanks @bruce691) ### 🦎 Translation Contributions - #6945 chore: Translations Update from Weblate (Thanks @2000Arion @Aluisio @cyril59310 @DJEDIVER @dodog @florian-berger @hernikplays @Kf637 @MrEddX @thelfensdrfer @VeerGosai) ### Others - #6969 chore: Add automated npm dependency update workflow - #6968 chore: Update dependencies - #6963 chore: Update pull request template with AI usage warning - #6951 chore: Update PR template with AI usage warning - #6948 fix: Restrict scheduled workflows to upstream repository - #6970 fix: npm dependency update GitHub workflow
### 🐞 Bug Fixes - #6225 Fix: False positive for Google Chrome during migration ### Others - #6210 #6220 Revise supported versions and Docker tags in SECURITY.md
> [!IMPORTANT] > Please also read all previous changelogs (2.0.0-beta.0 to 2.0.0-beta.3) if you are upgrading from v1. # Changelog ### 🆕 New Features - #6079 feat: Add deletion button on status list item (Thanks @RobinToubi) - #6052 feat: Add clear events button (Thanks @cyril59310 @CommanderStorm) - #6048 feat: Add templating and plaintext for Google Workspace Notification Provider (Thanks @Erikel746 @CommanderStorm) - #5950 feat: Add optional audience for HTTP monitors via the OAuth2 client credentials flow (Thanks @goshlanguage @CommanderStorm) - #5944 feat: Add proxy clone functionality to settings (Thanks @Q0 @CommanderStorm) - #5897 feat: Add a "manual" (static/fixed) monitor (Thanks @warpreality @CommanderStorm) - #5880 feat: Add option to force IPv4 or IPv6 for HTTP(S) monitor type (Thanks @fabtrie @CommanderStorm @Ionys320) - #5846 feat: Add multiple tags in bulk for a monitor (Thanks @grvwy @CommanderStorm) - #5576 feat: Render markdown in monitor descriptions (Thanks @eden881) - #5220 feat: Convert interval seconds to days, hours, minutes, and seconds in UI (Thanks @Vivek-Py @CommanderStorm) ### 💇♀️ Improvements - #6094 #6016 #5876 Update dependencies - #6049 Make chart period global instead of individual (Thanks @singh-kanwarpreet @CommanderStorm) - #6009 Add WebSocket path to MQTT monitor for WebSocket connection (Thanks @lupaulus) - #5942 Improve the experience of testing pull requests - #5939 Improve i18n language matching (Thanks @Ionys320) - #5929 feat: Add heartbeat tooltip while hovering over status page heartbeats (Thanks @peaktwilight @CommanderStorm) - #5920 Improve UI: Edit buttons in status page (Thanks @peaktwilight @CommanderStorm) - #5907 Add monitor ID label to Prometheus metrics (Thanks @tr4nt0r) - #5928 #5927 #5926 #5925 Eliminate some blocking I/O operations - #5890 Add default avatar in Discord notifications (Thanks @cyril59310) - #5893 Separate down priority for ntfy.sh (Thanks @DrDrrae @CommanderStorm) ### 🐞 Bug Fixes - #6101 Clear cache (Thanks @singh-kanwarpreet) - #6093 Fix: Update cloudflared installation to use bookworm instead of bullseye - #6081 Fix: HeartbeatBar DOWN status showing green instead of red (Thanks @jabamo @CommanderStorm) - #6080 Fix monitor name cropping in nested groups (#5981) (Thanks @nklsgod) - #6014 Fix: Send Slack message throwing 400 invalid_attachments (Thanks @skypesky) - #5991 Fix: Check MySQL database name - #5990 Fix: Matrix token command hint should send JSON (Thanks @fnetX) - #5961 Fix: Refresh interval incremented by 10 on status page despite a minimum of 5 (Thanks @Lyall-A @CommanderStorm) - #5923 Fix Day.js - #5921 Fix database column type for manual monitor (Thanks @warpreality @CommanderStorm) - #5914 Fix recurring maintenance start (again) (Thanks @Ionys320 @CommanderStorm) - #5903 Ensure maintenance is always run at the right moment (Thanks @Ionys320 @CommanderStorm) - #5901 Fix invalid maintenance date (Thanks @Ionys320) - #5871 Fix: Properly handle NTLM part embedded inside other authentication headers (Thanks @FlorianFeka @CommanderStorm) - #5875 Fix (Thanks @CommanderStorm @ptrstr) ### ⬆️ Security Fixes - None ### 🦎 Translation Contributions - #6033 #5971 #5889 #5888 #6017 Update translations from Weblate (Thanks @101br03k @aindriu80 @aljvdi @Aluisio @AnnAngela @artsmolkin @asteriskyg @authorless @benemiryilmazer @Buchtic @bunubbv @carbeso @conglinyizhi @cyril59310 @daniel2231 @dekkeng @dongsu8142 @Dumach @Enes3078 @ezhkov-ph @flashbackpa @Frodothedwarf @geek-id @GunnarNorin @hemanth5544 @imyller @Ionys320 @ivanbratovic @jc-discdev @jochemp264 @JonneSaloranta @Jozeeds @JPar99 @Jumala9163 @jusimen @kbrianps @kiznick @marcispauls @marco-doerig @matteomorari @maxisimonazzi @mcasellas @McCio @michalpixels @MrEddX @pangbo13 @PIXELHIZE @RaminMT @ramondsq @rbunpat @robinjanssens @Saibamen @sakvarelidze @Samuel-MM @Sherd21 @skalerr @stanol @StarkITA @suleymn20 @superpep @talipcakir @tepung @Thearex @tiramisuflavor @toto6038 @utolosa002 @VoraprotSeesod @wildtwister @xNewz @yhg4908 @youssefbrr @Zavy86) ### Others - Other small changes, code refactoring, and comment/doc updates in this repo: - #5984 chore: Fix minor issues in comments (Thanks @yumeiyin) - #5966 chore: Fix typos in code comments (Thanks @ianlv) - #5957 Remove feature freeze messaging from templates (Thanks @CommanderStorm) - #5975 #5943 #5945 #5941
### 🆕 New Features - #5686 feat: Support YZJ notification provider (Thanks @innerpeacez) - #5647 Add WhatsApp (WAHA) notification provider (Thanks @devlikepro) - #5716 feat: add notification provider `PushPlus` (Thanks @sysfox) ### 💇♀️ Improvements - #5495 chore(deps): update nostr notification provider (Thanks @zappityzap) - #5548 chore(deps): upgrade http/https/socks proxy agents (Thanks @TheBoroer) - #5659 Update TLS expiration warning (Thanks @frednntelia) - #5637 feat: rework notification templating and add support for telegram (Thanks @skgsergio) - #5668 Add Telegram custom bot api server support (Thanks @RaminMT) - #5714 Update PWA icons to have transparency (Thanks @GyozaGuy) - #5724 Fix #5721: Change proxy port column type to integer to support larger port numbers ### 🐞 Bug Fixes - #5463 Fix monitor tags deletion (Thanks @Ionys320) - #5490 Fix push examples cannot be loaded (Docker only) - #5476 fix: add notification-fallback for better google chat popups (Thanks @elliotmatson) - #5573 fix: make sure that stripping backslashes for notification urls cannot cause catastophic backtracking (ReDOS) (Thanks @ShiyuBanzhou) ### ⬆️ Security Fixes - #5664 #5715 #5731 Update dependencies - #5732 Add Lithuanian language code to dropdown (Thanks @mantak111) - #5563 BugFix:Regular Expression in parseDuration Function (Thanks @ShiyuBanzhou) ### 🦎 Translation Contributions - #5474 #5669 Translations Update from Weblate (Thanks @Aluisio @AnnAngela @ArianAr @Buchtic @Celer21 @DJEDIVER @Dominik727 @Dumach @IMIEEET @Jozeeeds @KEINOS @Kisem @LordWiseRus @MrEddX @R-HNF @RainoutOvO @RaminMT @ShadowGaming100 @TheSkout001 @TitasPi @aaf-30 @binaryYuki @bioslet @cristianbadea @csjoh @cyril59310 @dongsu8142 @eliyas5044 @erkenbilgin @fpindado @gautamrabinraj @gil-obradors @hamx01 @ivanbratovic @izzetemredemir @kiznick @mantak111 @marco-doerig @melroy89 @nikito7 @nikolay-mansas @nkgiovannivl @picazenave @sakvarelidze @spectre011-code @stanol @steno-baz @svalo @takumi0213 @tiseppw @tomee03 @utolosa002 @youssefbrr) ### Others - Other small changes, code refactoring and comment/doc updates in this repo: #5465 #5593 #5604 #5587 #5645 #5644 (Thanks @homelab-alpha @Zaid-maker @melroy89)
### ⬆️ Security Fixes - #5455 Update dependencies - https://github.com/louislam/uptime-kuma/security/advisories/GHSA-2qgm-m29m-cj2h Local File Inclusion (LFI) via Improper URL Handling in `Real-Browser` monitor (Thanks @griisemine)
Wow! When I was preparing this changelog, I just couldn't believe that we have a lot of pull requests merged in this version. I'm so grateful for all the contributors who have helped to make Uptime Kuma better. Thank you so much for your time and effort. 🙏 > [!WARNING] > It is a major version update. It contains some breaking changes. Please read the migration guide carefully if you want to upgrade from v1 to v2. > [!NOTE] > Pro tip#1:👉 Backup, backup and backup Migration Guide: https://github.com/louislam/uptime-kuma/wiki/Migration-From-v1-To-v2 ### 🆕 New Features - #2738 #4728 #5258 #5075 Support MariaDB - #2086 #4052 #5257 Rootless docker image - #3441 Feat: Toast notification timeout settings (Thanks @chakflying) - #3499 Adding x-www-form-urlencoded (Thanks @anderskvist) - #3414 Feature: SMTP-templating of `customBody` and `customHeader` via liquidjs (Thanks @CommanderStorm) - #2783 Add Grafana Oncall notification provider (Thanks @atmaniak) - #3941 Chore: Allow MS Edge for real-browser monitor (Thanks @chakflying) - #3814 Feat: Retries persistence (Thanks @chakflying) - #3904 Feature: remote browser support (Thanks @adamhancock) - #3857 Feat: Add json-query to MQTT monitor type (Thanks @chakflying) - #3912 Adding a way to reset the admin password via CLI without any user interaction (Thanks @C-Duv) - #4485 Add Heii On-Call Notification Provider (Thanks @hevans66) - #4481 Add gtxmessaging Notification Support (Thanks @cfichtmueller) - #4625 Cellsynt mobile services (Thanks @escw0rm) - #4605 New notification provider: CallMeBot API (Thanks @BothimTV) - #4323 Add support for Whapi notification provider (Thanks @edo2313) - #4219 SevenIO Notification Provider (Thanks @scolastico) - #4722 feat: keephq notification provider (Thanks @ezhil56x) - #4260 Make auto refresh interval customizable (Thanks @laupse) - #4445 Add support for custom mongodb commands (Thanks @SebastianLng) - #3620 Add Bitrix24 Webhook notification (Thanks @furkanipek) - #4769 New notification provider: SMS Partner API (Thanks @nicolasverlhiac) - #1991 feat: added HTTP method option for push monitor (Thanks @0tt0sson) - #4854 New notification provider: Threema Gateway (Thanks @booooza) - #4717 feat: Add SNMP Monitor (Thanks @mattv8) - #4971 Add OneSender Webhook notification (Thanks @hasanbasri1993) - #3525 Add option to pass cache bust param (Thanks @dansullivan86) - #5049 Add WPush Notification Provider (Thanks @anhao) - #5058 New Notification Provider SIGNL4 (Thanks @rons4) - #5048 [DNS Monitor] Conditions (Thanks @simshaun) - #5047 feat: implement very crude and bare-bones RSS feed (Thanks @MrYakobo) - #5145 Add serverchan3 support for serverchan notification provider (Thanks @easychen) - #5167 [slack] allow the user to choose the message format to send (Thanks @DaanMeijer) - #5253 Add `next` and `next-slim` tags - #4880 #5251 Apprise update to 1.9.0 - #5184 feat: new notification provider `46elks` (Thanks @erlaan) - #5205 feat: add notification provider `SendGrid` (Thanks @sctnightcore) - #5199 feat: add `RabbitMQ` monitor (Thanks @Suven-p) ### Breaking Changes - #3892 Drop backup and restore feature - #3955 Drop install.sh and related files - #4178 Drop cacheable-lookup - #3747 Drop support for Node.js 14 and 16 (Thanks @harryzcy) - #2085 Drop support for Alpine based docker image - The `:duration` of these endpoints accepts `24`, `24h`, `30d`, `1y` only - <kuma-url>/api/badge/:monitorID/ping/:duration - <kuma-url>/api/badge/:monitorID/uptime/:duration ### 💇♀️ Improvements - #2750 Uptime calculation improvement and 1-year uptime - #3676 UI/UX: Added no tags found message to tags filter when empty (Thanks @BrandonDR) - #3735 #3739 Push Examples - #2759 Use API v2 for Bark notification (Thanks @harryzcy) - #3515 Feat: Full server-side pagination for important events (Thanks @chakflying) - #3889 Log color and simplify startup log for production - #3925 Zoom in on real browser screenshot (Thanks @adamhancock) - #3801 monitor path as a notification title mattermost (Thanks @nennad) - #3903 Attempt an OAuth2 Refresh on 401 (Thanks @HdroguettA) - #4307 Changed the color of delete button in dashboard from red to grey (Thanks @iamabhshk) - #4267 Feat: Add `stat_hourly` & min. max. ping (Thanks @chakflying) - #4331 Feat: Show monitor ID in Details (Thanks @chakflying) - #4407 UI: Improve maintenace actions design (Thanks @chakflying) - #4521 migrate timezones-list lib to @vvo/tzdb issue #4479 (Thanks @huzaifaazim0) - #4411 [Ntfy] Only include action link if monitor url is defined #3274 (Thanks @philbot9) - #4519 Test for db file existance instead of creating a new one in `password-restet.js` (Thanks @huzaifaazim0) - #4538 Refactor MS-Teams notification to use AdaptiveCards (Thanks @taschenuhr) - #4503 Feat: Use custom `clientID` for MQTT monitor (Thanks @stheine) - #4541 add notification channel for home assistant (Thanks @OptimusGREEN) - #3928 Google chat cards (Thanks @elliotmatson) - #3886 [Slack] restructure alert actions, add 'visit site' button (Thanks @DaanMeijer) - #4718 Add the ability to notify `@everyone` in DingTalk notifications (Thanks @niujinkai) - #3836 Making docker usage with localhost and external ip more clear (Thanks @rakovskij-stanislav) - #4099 [discord] thread/forum channel support (Thanks @TheDanniCraft) - #4264 Feat: Use `UptimeCalculator` for PingChart (Thanks @chakflying) - #3037 Gray out label for up/down/maintenance labels when they are zero (Thanks @j-f1) - #3661 refactor: upload check label when monitor empty (Thanks @guguji5) - #3878 Ignore TLS/SSL error for Redis (Thanks @HdroguettA) - #4494 Feat: Add background color change on hover to nav links (Thanks @NihadBadalov) - #4848 improved zoho-cliq message format (Thanks @FrancYescO) - #4942 Show URL for "real-browser" type monitor on details page (Thanks @ghost) - #4939 Updated croner to 8.1.0 and fixed "recurring-interval" type maintenance (Thanks @buzzinJohnnyBoi) - #5055 Add url to pushover notification (Thanks @aizatto) - #4800 feat: update feishu notification template (Thanks @NinoFocus) - #5156 Disable certificate expiry notification when SSL errors are ignored (Thanks @Suven-p) - #5025 improve page load performance of large amount urls (Thanks @vishalsabhaya) - #5178 feat: support sound and title in `TechulusPush` (Thanks @arjunkomath) - #5223 fix: expand hover trigger area of beat (Thanks @R-HNF) - #5227 Update API URL to compatible with the latest version of ServerChan (Thanks @easychen) ### 🐞 Bug Fixes - #3017 Fix: Add external mariaDB setup (Thanks @chakflying) - #3706 Fix: Incorrect database type check in sqlHourOffset (Thanks @chakflying) - #3757 Fix: SetupDatabase misc. styling fixes (Thanks @chakflying) - #3072 Fix: More accurate heartbeat Interval (Thanks @chakflying) - #3763 changed notification.config from varchar to text. (Thanks @FJBlok) - #3813 Fix: Missing callbacks for batch pause/resume (Thanks @chakflying) - #3724 Fix: Wrong datatype for avgPing (Thanks @chakflying) - #3849 Fix: Disable status page saving before getData (Thanks @chakflying) - #3863 Fix: Clear toasts button blocked (Thanks @chakflying) - #3950 Confirm chrome path in macOS is correct (Thanks @harryzcy) - #3940 Chore: Fix entry page handling in Dev mode (Thanks @chakflying) - #3961 Fix: Add axios abort signal (Thanks @chakflying) - #3864 Fix: Use ActionSelect for Docker Host & validate input (Thanks @chakflying) - #3994 Fix: entryPage setting can be null (Thanks @chakflying) - #3820 fix: Clickable link monitors aren't underlined when editing status page #3795 (Thanks @dreygur) - #4097 Fix: Add timeout to testDockerHost (Thanks @chakflying) - #3589 Handle cookies on redirection (Thanks @dakriy) - #3756 Fix: Disable timezone conversion for mariadb (Thanks @chakflying) - #4155 🐛 fix(remote-browser): Remove unused test() function (Thanks @Zaid-maker) - #3685 Fix: Filtering works with group monitors (again) (Thanks @chakflying) - #4170 Chore: Disable console colors in browser & add JSDoc (Thanks @chakflying) - #4185 Fix: Handle trailing slash for status page routing (Thanks @chakflying) - #4213 Fix: typo for `disconnectAllSocketClients` (Thanks @chakflying) - #4266 Feat: `Countup` display fixed value (Thanks @chakflying) - #4322 Fix incorrect ping log (Thanks @benscobie) - #4418 Fix: missing await in `getRemoteBrowser()` (Thanks @chakflying) - #4537 Fix: Incorrect handling of status page not found (Thanks @chakflying) - #4472 Fix: handle monitor names with slashes (Thanks @andipaetzold) - #4406 Feat: Handle maintenance in `UptimeCalculator` (Thanks @chakflying) - #4632 Fix: Add missing FK for monitor-tls-info table (Thanks @chakflying) - #4871 Fix Slack notifications when URL is present (Thanks @Rudedog9d) - #4850 Fix uptime & ping badge duration (Thanks @ZhaoQi99) - #5018 fix: `!important` in the prim-css editor is rendered incorrectly (Thanks @solidsniper) - #4193 Fix: name column in the dashboad being squashed in some aspect ratios (Thanks @jaybhanushali3166) - #5084 Fix missing monitors in subgroups due to missing filterFunc (Thanks @David-Development) - #3256 fix: Both `Add` and `Home` being shown as selected on the homescreen (Thanks @CommanderStorm) - #5166 Fix: Resolve notice title definition issue and add newline between title and content in notification (Thanks @dingdayu) - #5196 fix: showing the notification activation switch properly (Thanks @julian-piehl) - #5209 fix: slack rich notification not working correctly (Thanks @CommanderStorm) ### ⬆️ Security Fixes - #912 push monitor: increase token security (Thanks @andreasbrett) - #4214 Feat: Refresh login token for the client initiating password change (Thanks @chakflying) - #5252 Update dependencies ### 🦎 Translation Contributions - #3959 Added Uzbek language - #4487 Added Irish language (Thanks @aindriu80) - #4666 Changed Hebrew to be a RTL language (Thanks @msrl2000) - #3263 #3847 #3694 #3684 #4135 #4527 #4565 #4436 #4813 #5103 #4814 #4791 #4816 #4320 #4200 #4363 #5046 (Thanks @mueller-ma @chakflying @CommanderStorm @Vista2003 @LeoThies @bertday @whiteonred @purplespider @cyril59310) - #3659 #3891 #4386 #4394 #5071 #4794 #5072 #5232 (Unfortunately, there are too many contributors, GitHub is not allow me to tag everyone here) ### Others Other small changes, code refactoring and comment/doc updates in this repo. - #3529 Added JSDoc to ESLint (Thanks @Computroniks) - #3802 Add LABEL to Docker image (Thanks @mueller-ma) - #3636 chore:Webhook custom documentation (Thanks @CommanderStorm) - #4525 #4545 More readable Contribution guide (Thanks @CommanderStorm) - #3688 #3702 #3722 #3624 #3781 #3808 #3835 #3826 #3825 #3856 #3858 #3887 #3910 #3945 #4042 #4104 #4169 #3893 #4289 #4300 #4324 #4240 #4490 #4509 #4532 #3182 #4557 #4621 #4679 #4668 #4636 #4729 #4750 #4694 #4803 #4819 #4820 #4877 #4878 #4950 #4968 #4988 #5029 #4815 #4818 #5056 #5053 #5068 #5074 #5149 #5159 #5162 #5164 #5180 #5183 #4451 #5233 #5259 #3725 #3862 #3350 #2830 #4574 #4592 #3623 #3413 #3703 (Thanks @0xflotus @BigBoot @CommanderStorm @CoolCu @DeJayDev @Gauvino @R-HNF @Saibamen @Zaid-maker @artshllk @check-bot @eltociear @jasonmic2000 @jmolnar-comparative @olebohmbach @prabhsharan36 @simshaun @spali @taisei-86 @tanmay4u02 @vanhoutenbos @vishalsabhaya @wdhdev) Let me know if your name is missing in the list if your pull request had been merged in this version. Special thanks to @chakflying and @CommanderStorm for their great contributions. 🎉
Follow up with the crash issue of `1.23.14`. A quick fix for someone who are using the Alpine image or Node.js <= 16. ### 🐞 Bug Fixes - #5142 Pin `cheerio` to avoid the breaking change of undici