Humberto Evans
93ac212aef
Add Heii On-Call
2024-02-12 15:58:54 -08:00
Frank Elsinga
f37f55e06c
Fixed lining issues introduced by code reivew
2024-02-11 22:44:57 +01:00
Frank Elsinga
87d7a780e3
changed the helptext a bit to make it more usefull for novice users
2024-02-11 22:40:47 +01:00
apio-sys
0fc372f558
#2793
2024-02-11 20:20:52 +01:00
Joris Le Blansch
67a13e1259
#2793
2024-02-11 20:03:17 +01:00
Nelson Chan
2bccae415f
Feat: Show monitor ID in Details ( #4331 )
2024-01-28 18:15:29 +08:00
Nelson Chan
d830fa4a0e
Feat: Countup
display fixed value ( #4266 )
2023-12-21 20:09:59 +08:00
Nelson Chan
c9fe6b5d01
Feat: Refresh login token for the client initiating password change ( #4214 )
2023-12-18 19:52:49 +08:00
Frank Elsinga
e2fdfd2937
Migrate all v-html
translations to componentised translations ( #4135 )
...
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-12-15 18:38:57 +08:00
Louis Lam
869ee8ec50
Merge branch '1.23.X' into 1.23.X-merge-to-2.X.X
...
# Conflicts:
# .github/workflows/auto-test.yml
# extra/reset-password.js
# package-lock.json
# package.json
# server/routers/status-page-router.js
# server/server.js
# server/socket-handlers/general-socket-handler.js
# server/uptime-kuma-server.js
# src/components/ActionInput.vue
# src/util.js
# src/util.ts
2023-12-11 02:13:47 +08:00
Louis Lam
530c8e5328
Drop cacheable-lookup ( #4178 )
...
* WIP
* WIP
2023-12-11 02:01:56 +08:00
Louis Lam
482049c72b
Merge pull request from GHSA-88j4-pcx8-q4q3
...
* WIP, still need to handle npm run reset-password
* Implement it for "npm run reset-password"
Bug fixes and change along with this commit
- Move `ssl`, `hostname`, `port` to ./server/config.js, so `reset-password` is able to read it
- Fix: FBSD is missing, no idea who dropped it.
- Fix: Frontend code should not require any backend code (./server/config.js), moved "badgeConstants" to the common util (./src/util.ts) and drop vite-common.js
* Minor
2023-12-10 20:40:40 +08:00
Ritik Singh
abc8f2b131
Fix: Correct Maintenance Start/End Time Input to Use Explicitly Specified Timezone ( #4186 )
2023-12-09 18:27:07 +08:00
Frank Elsinga
777ef6bc7b
chore: added a helptext for ntfy
's priority
field ( #4175 )
...
* added a helptext for `ntfy`'s `priority` field
* linting fixes
* removed an unnecessary `Math.max` call
2023-12-09 17:37:33 +08:00
Nelson Chan
81b84a3c53
Fix: Filtering works with group monitors (again) ( #3685 )
...
* Fix: Group monitors use nested filtering
* Chore: Fix lint
2023-12-05 04:04:54 +08:00
Frank Elsinga
031947319a
Add an aria-label
to the monitor search box ( #4163 )
...
* added the `Search monitored sites` label
* rebase
2023-12-05 01:15:28 +08:00
Frank Elsinga
9c56c9b346
Fixed the buttons of ActionsSelect
and ActionsInput
having a default type="submit"
( #4162 )
...
* fixed the buttons having a default type="submit"
* fixed linting issue
2023-12-04 01:15:40 +08:00
DevMirza
db7a92a74c
🐛 fix(remote-browser): Remove unused test() function ( #4155 )
...
* fix
* fix lint
* Update Notifications.vue
* Update ActionInput.vue
2023-12-03 20:27:09 +08:00
Louis Lam
c5d9c54a04
Merge branch 'master' into 1.23.X-merge-to-2.X.X-2
...
# Conflicts:
# package.json
2023-12-02 18:43:06 +08:00
Louis Lam
81c9900e23
Merge branch '1.23.X' into 1.23.X-merge-to-2.X.X-2
...
# Conflicts:
# docker/debian-base.dockerfile
2023-12-01 15:50:35 +08:00
Adam Hancock
62780001f7
Feature: remote browser support ( #3904 )
...
* [empty commit] pull request for remote browser support
* Remote browser: Added UI screens and DB tables.
* Remote browser working
* Fixing tests
* Fix tests
* Fix tests
* fix tests
* Test browser
* revert init_db.js
* Changed drop down to ActionSelect
* Fix translations
* added remote browsers toggle
* revert changes package-lock
* Fix bad english
* Set default remote browser
* Remote browsers Requested changes
* fixed description.
2023-12-01 15:29:10 +08:00
Frank Elsinga
9c9a086788
accessible ActionSelect
/ ActionInput
( #4132 )
...
* made sure that the ActionSelect'or has correct accessibiltiy tags
* fixed linting error
* improved the ActionInputs accessibility
2023-12-01 14:34:37 +08:00
Adam Hancock
ac452bbcb9
Zoom in on real browser screenshot ( #3925 )
...
* Screenshot in modal
* Update src/components/ScreenshotDialog.vue
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* Update src/pages/Details.vue
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* Added title
* Update ScreenshotDialog.vue
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* Add translations
---------
Co-authored-by: Frank Elsinga <frank@elsinga.de>
2023-11-24 02:58:33 +08:00
Rakibul Yeasin
e2782810cf
fix: Clickable link monitors aren't underlined when editing status page ( #3820 )
2023-11-20 14:45:34 +08:00
Louis Lam
8e3ff25f7b
Followup #3864 , rebase for 1.23.x ( #4016 )
...
* Fix: Use ActionSelect Docker Host & validate input
* Fix: Handle docker host deleted while editing
* UI: Use add for ActionSelect & prevent delete instead
---------
Co-authored-by: Nelson Chan <chakflying@hotmail.com>
2023-11-12 20:32:40 +08:00
Nelson Chan
b534fde265
Fix: Use ActionSelect for Docker Host & validate input ( #3864 )
...
* Fix: Use ActionSelect Docker Host & validate input
* Fix: Handle docker host deleted while editing
* UI: Use add for ActionSelect & prevent delete instead
2023-11-03 21:25:28 +08:00
atmaniak
9b599ccd1d
Add Grafana Oncall notification provider ( #2783 )
...
* Add Grafana Oncall notification provider
* Fix linter errors
* Remove useless variables
* Remove test message
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* spelling consistency
* Update server/notification-providers/grafana-oncall.js
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* Update server/notification-providers/grafana-oncall.js
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* eslint requirements
Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>
* Add Grafana Oncall translation
* Update src/components/notifications/GrafanaOncall.vue
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* Check empty url
---------
Co-authored-by: Emmanuel Cohen <emmanuel.cohen@bso.co>
Co-authored-by: Frank Elsinga <frank@elsinga.de>
Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-10-19 19:32:42 +08:00
Frank Elsinga
1515f4e121
chore:Webhook custom documentation ( #3636 )
...
* improved the documentation
* fixed the `customBodyPlaceholder` not being translated
* fixed required not being set where necessary
* changed the docs that `monitorJSON` is also avalibale for cert-expiry
2023-10-16 22:24:47 +08:00
Frank Elsinga
3fcb7bf181
Feature: SMTP-templating of customBody
and customHeader
via liquidjs ( #3414 )
...
* replaced the regex replacement engine with `Liquid`
* added custom bodys
* fixed a typo
* formatting fixes
* switched all template-variables to be camelCase
2023-10-16 22:16:49 +08:00
Louis Lam
579d7232c9
Translate login error
2023-10-15 01:35:27 +08:00
Louis Lam
966dfa6f88
Drop backup ( #3892 )
...
* Drop backup
* Fix warning
2023-10-14 23:38:31 +08:00
Louis Lam
8e441dd8f7
Follow up #3263 ( #3847 )
2023-10-14 19:00:27 +08:00
Nelson Chan
156614b303
Fix: Missing callbacks for batch pause/resume ( #3813 )
2023-10-06 03:52:16 +08:00
Chongyi Zheng
499429858c
Use API v2 for Bark notification ( #2759 )
...
* Use API v2 for Bark notification
* API v2 endpoint should end with path `/push`
* Support both v1 and v2
* Flip the bool
* Allow selecting api version
* Apply review suggestion
Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>
* Add translated string to `en.json`
* Apply review suggestion
Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>
---------
Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>
2023-09-21 21:08:04 +08:00
Louis Lam
59119b9e71
Merge branch '1.23.X'
...
# Conflicts:
# package-lock.json
2023-09-18 03:26:59 +08:00
Louis Lam
86fa57449e
Fix #3596
2023-09-17 02:56:19 +08:00
Louis Lam
ff51704cdf
Fix #3712
2023-09-17 02:40:08 +08:00
Frank Elsinga
d6302198f3
chore(jsdoc):Linting fixes ( #3703 )
...
* fixed the lockfile having a different version
* jsdoc
2023-09-07 15:42:44 +08:00
Nelson Chan
bfc7b498be
Feat: Toast notification timeout settings ( #3441 )
...
* Add toast timeout to the settings
Changing gui, adding timeout with a fix value
memo
rc
rollback readme
cleanup code
cleanup code
Review fixes
review fix 2
* Feat: Add clearAll button below toastContainer
* Feat: Load & Apply defaults, improve wording
Chore: Remove unused
* Feat: Change setting to affect monitor notif. only
* Apply suggestions from code review
Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>
* Chore: Fix JSDoc
---------
Co-authored-by: Berczi Sandor <sandor.berczi@urss.hu>
Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>
2023-09-06 19:52:54 +08:00
Brandon De Rose
283d52a861
UI/UX: Added no tags found message to tags filter ( #3676 )
2023-09-02 14:14:14 +08:00
Louis Lam
5061e42d4b
Merge remote-tracking branch 'origin/2.0.X' into 2.0.X
2023-09-01 05:23:52 +08:00
Louis Lam
076331bf00
Uptime calculation improvement and 1-year uptime ( #2750 )
2023-09-01 05:19:21 +08:00
Louis Lam
a13fc7079e
Merge branch 'master' into 2.0.X
...
# Conflicts:
# package-lock.json
2023-08-30 01:39:16 +08:00
Louis Lam
cd79df07e1
Add an ability to enable/disable nscd ( #3652 )
2023-08-28 16:15:48 +08:00
Nelson Chan
5f85d8f749
Fix: Focus & styling on safari ( #3650 )
2023-08-27 18:55:36 +08:00
bt90
eee9a1f004
Passwordmanager friendly inputs ( #3593 )
...
* Mark username/password inputs as required
* Mark 2FA input as required
* Add autocomplete attributes
* Add autocomplete suggestion to password change
* Add autocomplete to 2FA dialog
* Mark 2fa input as required
2023-08-21 02:25:35 +08:00
Frank Elsinga
7bfdb82f5d
bug: fixed the curser being a pointer if hovering above the dropdown-item
's ( #3607 )
...
* fixed the curser being a pointer if hovering above the `dropdown-item`'s
* formatting fix
2023-08-20 04:40:12 +08:00
Louis Lam
db3a7d69fe
Change some jsdoc rule to warn instead of error
2023-08-11 22:29:45 +08:00
Matthew Nickson
8a92054c2b
Added JSDoc to ESLint ( #3529 )
...
* Added JSDoc to eslint rules
Signed-off-by: Matthew Nickson <mnickson@sidingsmedia.com>
* Fixed JSDoc eslint errors
Signed-off-by: Matthew Nickson <mnickson@sidingsmedia.com>
* Update the check-linters workflow to Node.js 20
---------
Signed-off-by: Matthew Nickson <mnickson@sidingsmedia.com>
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-08-11 15:46:41 +08:00
Nelson Chan
ced576feba
Feat: Show elapsed time in HeartbeatBar ( #3219 )
...
* Feat: Show elapsed time in HeartbeatBar
* Chore: Fix lint
* Feat: Fix calculation & improve efficiency
* Fix: Fix getting tolerance in statusPage
* Chore: Improve comments & apply suggestions
* Optional elapsed time
---------
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-08-08 03:00:40 +08:00
Nelson Chan
23fdd32de0
Fix: filtersActive placed incorrectly ( #3531 )
2023-08-07 15:10:03 +08:00
Nelson Chan
36777c5eff
Fix: Filtering works with group monitor ( #3469 )
...
* Fix: Filtering works with group monitor
* Chore: Update comment
* Apply suggestions from code review
Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>
---------
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>
2023-08-07 00:35:50 +08:00
Nelson Chan
a032e11a2e
Feat: Create Group in EditMonitor page ( #3379 )
...
* Feat: Create Group in EditMonitor page
* Fix: Start group mon. after child is added
* Chore: Swap confirm & cancel for ergonomics
* Fix rarely issue that group monitor can throw an error if lastBeat is null
* Resume the group monitor in the callback
---------
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-08-04 14:48:21 +08:00
Damon
587d9e4781
Add Flashduty notification ( #3475 )
...
* feat: add FlashDuty notification channel
* refactor: #3475 nofify with Up or Down;
refactor code;
add en zh-hk zh-tw lang
* refactor: default select Info
* refactor: add space in word
* refactor the flashduty notification code
* refactor:compatible when Test flashduty nofication
* refactor: add function param description
* refactor: revert zh-hk zh-tw changes of flashduty
2023-08-01 02:13:04 +08:00
Frank Elsinga
ae2867e305
removed input-groups without any visual impact ( #3485 )
2023-07-31 23:59:12 +08:00
Louis Lam
9dd652733e
Merge pull request #3467 from ngc7331/pushdeer
...
[reopened] feat: allow the user to configure PushDeer Server URL
2023-07-31 17:57:21 +08:00
Louis Lam
7f68e4a987
Merge remote-tracking branch 'origin/master' into status-page-expiry
...
# Conflicts:
# src/lang/en.json
2023-07-31 17:30:49 +08:00
zappityzap
eb6167aaf1
Nostr dm notifications ( #3473 )
...
* Add nostr DM notification provider
* require crypto for node 18 compatibility
* remove whitespace
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* move closer to where it is used
* simplify success or failure logic
* don't clobber the non-alert msg
* Update server/notification-providers/nostr.js
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* polyfills required for node <= 18
* resolve linter warnings
* missing comma
* better websocket polyfill, update deprecated function
* add conditional polyfills for node versions
* lint
* use correct npm for package-lock
---------
Co-authored-by: Frank Elsinga <frank@elsinga.de>
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-07-31 17:24:45 +08:00
Shaun
db66195f7d
Added ability to bulk select, pause & resume ( #1886 )
...
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-07-31 16:24:00 +08:00
Frank Elsinga
6413d4cbdf
added a heltext for the nfty url helptext ( #3484 )
2023-07-27 00:11:18 +08:00
Adam Stachowicz
cf5a04bc5e
Do not translate Android. Addendum to #2812 ( #3480 )
2023-07-26 19:36:47 +08:00
小造xu_zh
f3562864ee
Apply suggestions from code review
...
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-07-21 13:45:50 +00:00
小造xu_zh
d7e12dc92d
feat: allow the user to configure PushDeer Server URL
2023-07-20 09:24:16 +00:00
Thomas McWork
ddbf367011
Mattermost: update dead docs link ( #3450 )
2023-07-19 18:25:58 +08:00
Tarun Singh
50d4091ded
Merge branch 'master' of https://github.com/louislam/uptime-kuma into status-page-expiry
2023-07-18 22:57:48 -04:00
Tarun Singh
f6c1b92fc6
Added http type check and tags based design
2023-07-17 02:01:10 -04:00
Louis Lam
695691468c
Merge pull request #3428 from chakflying/fix/no-delete-draft-tag
...
Fix: Hide delete button in Settings -> Create New Tag
2023-07-16 21:39:12 +08:00
Louis Lam
e2a87eb430
Improve the filter translate keys
2023-07-16 21:15:25 +08:00
Louis Lam
80927332cb
Merge remote-tracking branch 'origin/master' into feat/monitor-list-improved-filtering
2023-07-16 21:04:46 +08:00
Nelson Chan
a0eb733d54
Fix: Hide the Delete button correctly
2023-07-16 08:10:02 +08:00
Louis Lam
c6d0c431bd
Merge pull request #3080 from duanearnett/feature/add-channel-notification-for-slack
...
Adds configurable @channel notification for Slack integrations
2023-07-15 18:41:17 +08:00
Louis Lam
345e61abca
Merge remote-tracking branch 'origin/master' into feat/badge-generator-placeholders
...
# Conflicts:
# package-lock.json
# package.json
2023-07-15 01:05:34 +08:00
Louis Lam
99fb5836e2
Add SMSC (СМСЦентр) provider notification ( #3335 ) By @FlatronBuda
...
* Add SMSC, code from #3334
Co-authored-by: FlatronBuda <>
* Update server/notification-providers/smsc.js
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* Update server/notification-providers/smsc.js
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* Update server/notification-providers/smsc.js
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* Update according to @FlatronBuda
* Move to the regional list
---------
Co-authored-by: Frank Elsinga <frank@elsinga.de>
2023-07-14 14:29:35 +08:00
Tarun Singh
2e75142fe5
Bug fix and unknown days added
2023-07-13 20:50:17 -04:00
Tarun Singh
ad3ffacf45
PR comment fix
2023-07-13 20:37:21 -04:00
Tarun Singh
6f4af30701
Merge branch 'master' of https://github.com/louislam/uptime-kuma into status-page-expiry
2023-07-13 20:02:50 -04:00
Tarun Singh
b1f266ceb1
Added expiry changes to status page and fixes
2023-07-13 20:00:23 -04:00
Muhammed Hussein karimi
6bece8796e
✨ feat: json-query monitor added ( #3253 )
...
* ✨ feat: json-query monitor added
Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev>
* 🐛 fix: import warning error
Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev>
* 🐛 fix: br tag and remove comment
Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev>
* 🐛 fix: supporting compare string with other types
Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev>
* 🐛 fix: switch to a better lib for json query
Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev>
* 🐛 fix: better description on json query and using `v-html` in jsonQueryDescription element to fix `a` tags
Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev>
* 🐛 fix: result variable in error message
Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev>
* 🐛 fix: typos in json query description
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* 📝 docs: `HTTP(s) Json Query` added to monitor list in `README.md`
Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev>
* 🐛 fix: needed white space in `README.md`
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* Nostr dm notifications (#3051 )
* Add nostr DM notification provider
* require crypto for node 18 compatibility
* remove whitespace
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* move closer to where it is used
* simplify success or failure logic
* don't clobber the non-alert msg
* Update server/notification-providers/nostr.js
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* polyfills required for node <= 18
* resolve linter warnings
* missing comma
---------
Co-authored-by: Frank Elsinga <frank@elsinga.de>
* Drop nostr
* Rebuild package-lock.json
* Lint
---------
Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev>
Co-authored-by: Frank Elsinga <frank@elsinga.de>
Co-authored-by: zappityzap <128872140+zappityzap@users.noreply.github.com>
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-07-13 23:37:26 +08:00
Louis Lam
e5c6783781
Merge pull request #3205 from woj-tek/master
...
Add option to use ApiKeys in Twilio in addition to main account credentials
2023-07-13 23:11:05 +08:00
Louis Lam
18d8b3a8e0
Merge remote-tracking branch 'origin/master' into feat/webhook-custom-body
2023-07-09 18:20:06 +08:00
Louis Lam
13ae878ee8
Merge pull request #3347 from louislam/1.22.X
...
1.22.x merge to master
2023-07-05 11:35:36 +08:00
Tarun Singh
4ea5771f97
Status page certificate expiry
2023-07-04 19:37:45 -04:00
Louis Lam
df8fcffb19
Drop unused code
2023-07-03 14:50:30 +08:00
Nelson Chan
9da712054a
Chore: Fix incorrect id for CopyableInput
2023-07-02 18:57:07 +08:00
Nelson Chan
35154ef9c5
Chore: Translate hours
...
Co-authored-by: Frank Elsinga <frank@elsinga.de>
2023-06-29 19:04:34 +08:00
Nelson Chan
1baa592824
Chore: Translate preview alt
...
Co-authored-by: Frank Elsinga <frank@elsinga.de>
2023-06-29 19:04:09 +08:00
Nelson Chan
0e725569e5
Feat: Add placeholders for badge generator
...
Chore: Save as dev dep.
2023-06-29 07:11:58 +08:00
Louis Lam
4f6035899d
Real browser monitor type ( #3308 )
2023-06-27 15:54:33 +08:00
Nelson Chan
f8c9a20afd
Chore: Disable clear filters button
2023-06-26 13:42:46 +08:00
Nelson Chan
cea894cc6d
Chore: Fix lint
2023-06-26 13:39:19 +08:00
Nelson Chan
79b38e0e7b
Feat: Improve monitorList filtering
2023-06-26 13:23:06 +08:00
Nelson Chan
8955c3816b
Chore: Rename select ID & add translation
2023-06-26 05:00:14 +08:00
Nelson Chan
7761e9a05e
Chore: Add translations to options text
2023-06-26 04:59:56 +08:00
Nelson Chan
97d38ee1a8
Feat: Add custom body for Webhook Notif.
2023-06-26 04:59:55 +08:00
Peace
6c2948d2de
fix: list collapse storage
2023-06-03 20:54:52 +02:00
duane
1fa8c0f9fe
Adds help text for Notify Channel
option
2023-06-01 08:40:26 -05:00
duane
9a8bea5761
Changes 'Mention Channel' -> 'Notify Channel'
...
- Updates variable names
- Updates any Slack mention references
2023-06-01 08:23:13 -05:00
Peace
9bd76c2795
Merge branch 'master' into group-monitors
2023-05-31 20:51:33 +02:00
duane
376d84c742
Merge branch 'master' into feature/add-channel-notification-for-slack
2023-05-31 10:31:33 -05:00
Louis Lam
039fdb0730
Merge pull request #2915 from kiznick/badge-generator
...
Feat: Badge Generator
2023-05-31 16:09:13 +08:00