@kudoai/chatgpt.js 3.4.0 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- package/README.md +153 -86
- package/chatgpt.js +91 -76
- package/dist/chatgpt.min.js +4 -4
- package/docs/README.md +153 -86
- package/docs/SECURITY.md +16 -18
- package/docs/USERGUIDE.md +19 -5
- package/package.json +9 -6
- package/starters/chrome/LICENSE.md +3 -3
- package/starters/chrome/docs/README.md +5 -5
- package/starters/chrome/docs/SECURITY.md +3 -5
- package/starters/chrome/extension/components/icons.js +4 -5
- package/starters/chrome/extension/components/modals.js +98 -65
- package/starters/chrome/extension/content.js +41 -47
- package/starters/chrome/extension/icons/faded/icon128.png +0 -0
- package/starters/chrome/extension/icons/faded/icon16.png +0 -0
- package/starters/chrome/extension/icons/faded/icon32.png +0 -0
- package/starters/chrome/extension/icons/faded/icon64.png +0 -0
- package/starters/chrome/extension/lib/chatgpt.js +91 -76
- package/starters/chrome/extension/lib/dom.js +70 -11
- package/starters/chrome/extension/lib/settings.js +8 -9
- package/starters/chrome/extension/manifest.json +2 -5
- package/starters/chrome/extension/popup/controller.js +18 -16
- package/starters/chrome/extension/popup/index.html +1 -1
- package/starters/chrome/extension/popup/style.css +26 -13
- package/starters/chrome/extension/service-worker.js +7 -4
- package/starters/chrome/images/icons/question-mark/icon16.png +0 -0
- package/starters/chrome/images/icons/question-mark/icon512.png +0 -0
- package/starters/docs/LICENSE.md +21 -1
- package/starters/docs/README.md +19 -6
- package/starters/greasemonkey/LICENSE.md +3 -3
- package/starters/greasemonkey/chatgpt.js-greasemonkey-starter.user.js +5 -6
- package/starters/greasemonkey/docs/README.md +1 -1
- package/starters/greasemonkey/docs/SECURITY.md +3 -5
- /package/starters/greasemonkey/{media → assets}/images/icons/robot/icon48.png +0 -0
- /package/starters/greasemonkey/{media → assets}/images/icons/robot/icon64.png +0 -0
- /package/starters/greasemonkey/{media → assets}/images/screenshots/chatgpt-userscript-on.png +0 -0
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
// Import APP data
|
|
12
12
|
const { app } = await chrome.storage.sync.get('app')
|
|
13
|
-
icons.
|
|
13
|
+
icons.imports.import({ app }) // for src's using app.urls.assetHost
|
|
14
14
|
|
|
15
15
|
// Define FUNCTIONS
|
|
16
16
|
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
fade() {
|
|
26
26
|
|
|
27
27
|
// Update toolbar icon
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
chrome.action.setIcon({ path: Object.fromEntries(
|
|
29
|
+
Object.keys(chrome.runtime.getManifest().icons).map(dimension =>
|
|
30
|
+
[dimension, `../icons/${ config.extensionDisabled ? 'faded/' : '' }icon${dimension}.png`]
|
|
31
|
+
))})
|
|
32
32
|
|
|
33
33
|
// Update menu contents
|
|
34
34
|
document.querySelectorAll('div.logo, div.menu-title, div.menu')
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
|
|
56
56
|
// Create CHILD menu entries on chatgpt.com
|
|
57
57
|
if (env.site == 'chatgpt') {
|
|
58
|
-
await settings.load(settings.
|
|
58
|
+
await settings.load(Object.keys(settings.controls))
|
|
59
59
|
|
|
60
60
|
// Create/insert child section
|
|
61
61
|
const togglesDiv = dom.create.elem('div', { class: 'menu' })
|
|
@@ -65,9 +65,10 @@
|
|
|
65
65
|
Object.keys(settings.controls).forEach(key => {
|
|
66
66
|
|
|
67
67
|
// Init elems
|
|
68
|
-
const menuItemDiv = dom.create.elem('div', {
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
const menuItemDiv = dom.create.elem('div', {
|
|
69
|
+
class: 'menu-item menu-area', title: settings.controls[key].helptip || '' })
|
|
70
|
+
const menuLabel = dom.create.elem('label', { class: 'menu-icon' })
|
|
71
|
+
const menuLabelSpan = dom.create.elem('span')
|
|
71
72
|
let menuInput, menuSlider
|
|
72
73
|
menuLabelSpan.textContent = settings.controls[key].label
|
|
73
74
|
if (settings.controls[key].type == 'toggle') {
|
|
@@ -92,7 +93,8 @@
|
|
|
92
93
|
event.stopImmediatePropagation()
|
|
93
94
|
menuInput.onchange = () => {
|
|
94
95
|
settings.save(key, !config[key]) ; sync.configToUI({ updatedKey: key })
|
|
95
|
-
notify(`${settings.controls[key].label} ${
|
|
96
|
+
notify(`${settings.controls[key].label} ${
|
|
97
|
+
/disabled|hidden/i.test(key) != config[key] ? 'ON' : 'OFF' }`)
|
|
96
98
|
}
|
|
97
99
|
} else if (settings.controls[key].type == 'prompt') {
|
|
98
100
|
// custom logic for each prompt based on key name
|
|
@@ -103,16 +105,16 @@
|
|
|
103
105
|
}
|
|
104
106
|
|
|
105
107
|
// Create/append FOOTER container
|
|
106
|
-
const footer =
|
|
107
|
-
document.body.append(footer)
|
|
108
|
+
const footer = dom.create.elem('footer') ; document.body.append(footer)
|
|
108
109
|
|
|
109
110
|
// Create/append CHATGPT.JS footer logo
|
|
110
111
|
const cjsDiv = dom.create.elem('div', { class: 'chatgpt-js' })
|
|
111
112
|
const cjsLogo = dom.create.elem('img', {
|
|
112
113
|
title: 'Powered by chatgpt.js',
|
|
113
|
-
src: `${app.urls.
|
|
114
|
+
src: `${app.urls.cjsAssetHost}/images/badges/powered-by-chatgpt.js-faded.png?b2a1975` })
|
|
114
115
|
cjsLogo.onmouseover = cjsLogo.onmouseout = event => cjsLogo.src = `${
|
|
115
|
-
app.urls.
|
|
116
|
+
app.urls.cjsAssetHost}/images/badges/powered-by-chatgpt.js${
|
|
117
|
+
event.type == 'mouseover' ? '' : '-faded' }.png?b2a1975`
|
|
116
118
|
cjsLogo.onclick = () => chrome.tabs.create({ url: app.urls.chatgptJS })
|
|
117
119
|
cjsDiv.append(cjsLogo) ; footer.append(cjsDiv)
|
|
118
120
|
|
|
@@ -132,7 +134,7 @@
|
|
|
132
134
|
moreExtensionsSpan.onclick = () => { chrome.tabs.create({ url: app.urls.relatedExtensions }) ; close() }
|
|
133
135
|
moreExtensionsSpan.append(moreExtensionsIcon) ; footer.append(moreExtensionsSpan)
|
|
134
136
|
|
|
135
|
-
//
|
|
136
|
-
document.querySelectorAll('[class^=
|
|
137
|
+
// Remove loading spinner
|
|
138
|
+
document.querySelectorAll('[class^=loading]').forEach(elem => elem.remove())
|
|
137
139
|
|
|
138
140
|
})()
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
</div>
|
|
11
11
|
<div class="menu-header">
|
|
12
12
|
<div class="logo">
|
|
13
|
-
<img width=26 src="https://cdn.jsdelivr.net/gh/KudoAI/chatgpt.js@f0cdfc9/starters/chrome/extension/icons/icon32.png">
|
|
13
|
+
<img alt="" width=26 src="https://cdn.jsdelivr.net/gh/KudoAI/chatgpt.js@f0cdfc9/starters/chrome/extension/icons/icon32.png">
|
|
14
14
|
</div>
|
|
15
15
|
<div class="menu-title">ChatGPT Extension</div>
|
|
16
16
|
<div class="main-toggle">
|
|
@@ -1,23 +1,38 @@
|
|
|
1
1
|
/* General size */
|
|
2
|
-
html { height: fit-content ; min-height:
|
|
2
|
+
html { height: fit-content ; min-height: 89px }
|
|
3
3
|
body { width: max-content ; margin: 0 ; overflow: clip }
|
|
4
4
|
|
|
5
5
|
/* General font */
|
|
6
6
|
body, button, input, select, textarea {
|
|
7
|
-
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto,
|
|
7
|
+
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto,
|
|
8
|
+
"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", sans-serif ;
|
|
8
9
|
font-size: .905rem ; user-select: none
|
|
9
10
|
}
|
|
10
11
|
a { color: #999 ; text-decoration: none }
|
|
11
12
|
a:focus, a:hover { text-decoration: underline ; color: inherit }
|
|
12
13
|
|
|
13
|
-
/*
|
|
14
|
-
.loading-bg {
|
|
14
|
+
/* Loader */
|
|
15
|
+
.loading-bg {
|
|
16
|
+
background-color: white ; width: 100% ; height: 100% ; position: absolute ; z-index: 1111 ;
|
|
17
|
+
display: inline-grid ; align-content: center ; justify-content: center /* center spinner */
|
|
18
|
+
}
|
|
15
19
|
.loading-spinner {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
width: 19px ; aspect-ratio: 1 ; border-radius: 50% ; border: 3px solid #000 ;
|
|
21
|
+
animation: loader-move-head-tail 0.8s infinite linear alternate, loader-rotate 1.6s infinite linear
|
|
22
|
+
}
|
|
23
|
+
@keyframes loader-move-head-tail {
|
|
24
|
+
0% { clip-path: polygon(50% 50%, 0 0, 50% 0, 50% 0, 50% 0, 50% 0, 50% 0) }
|
|
25
|
+
12.5% { clip-path: polygon(50% 50%, 0 0, 50% 0, 100% 0, 100% 0, 100% 0, 100% 0) }
|
|
26
|
+
25% { clip-path: polygon(50% 50%, 0 0, 50% 0, 100% 0, 100% 100%, 100% 100%, 100% 100%) }
|
|
27
|
+
50% { clip-path: polygon(50% 50%, 0 0, 50% 0, 100% 0, 100% 100%, 50% 100%, 0 100%) }
|
|
28
|
+
62.5% { clip-path: polygon(50% 50%, 100% 0, 100% 0%, 100% 0, 100% 100%, 50% 100%, 0 100%) }
|
|
29
|
+
75% { clip-path: polygon(50% 50%, 100% 100%, 100% 100%, 100% 100%, 100% 100%, 50% 100%, 0 100%) }
|
|
30
|
+
100% { clip-path: polygon(50% 50%, 50% 100%, 50% 100%, 50% 100%, 50% 100%, 50% 100%, 0 100%) }
|
|
19
31
|
}
|
|
20
|
-
@keyframes
|
|
32
|
+
@keyframes loader-rotate {
|
|
33
|
+
0% { transform: scaleY(1) rotate(0deg) } 49.99% { transform: scaleY(1) rotate(135deg) }
|
|
34
|
+
50% { transform: scaleY(-1) rotate(0deg) } 100% { transform: scaleY(-1) rotate(-135deg) }
|
|
35
|
+
}
|
|
21
36
|
|
|
22
37
|
/* Header */
|
|
23
38
|
.menu-header {
|
|
@@ -34,10 +49,8 @@ a:focus, a:hover { text-decoration: underline ; color: inherit }
|
|
|
34
49
|
display: flex ; min-height: 2rem ; padding-right: 14px ; white-space: nowrap ; font-size: 91%
|
|
35
50
|
}
|
|
36
51
|
.menu-icon { padding: 8px }
|
|
37
|
-
.menu-area:focus, .menu-area:hover { /* add hover color/cursor */
|
|
38
|
-
|
|
39
|
-
.menu-item:hover .toggle-switch .slider, .menu-item:hover span { filter: invert(1) } /* invert toggle switch + label */
|
|
40
|
-
.menu-item:hover .menu-icon { filter: none } /* ...but not non-toggle icons */
|
|
52
|
+
.menu-area:focus, .menu-area:hover { background: rgb(100,149,237) ; cursor: pointer } /* add hover color/cursor */
|
|
53
|
+
.menu-item:hover span:not(.slider) { filter: invert(1) } /* invert setting labels on hover */
|
|
41
54
|
.menu-item > label > .slider { transform: scale(0.95) ; top: 1px } /* make child toggles smaller */
|
|
42
55
|
.menu-prompt { margin-left: 2px } /* align non-toggle items */
|
|
43
56
|
|
|
@@ -52,7 +65,7 @@ a:focus, a:hover { text-decoration: underline ; color: inherit }
|
|
|
52
65
|
border: 1px solid black ; border-radius: 50% ; background-color: white ; content: ""
|
|
53
66
|
}
|
|
54
67
|
.toggle-switch input[type="checkbox"]:checked + .slider { background-color: black } /* color active slider */
|
|
55
|
-
.toggle-switch input[type="checkbox"]:checked + .slider::before { transform: translateX(9px) } /*
|
|
68
|
+
.toggle-switch input[type="checkbox"]:checked + .slider::before { transform: translateX(9px) } /* toggle knob right */
|
|
56
69
|
|
|
57
70
|
/* Footer */
|
|
58
71
|
footer { font-size: 12px ; text-align: center ; color: #999 ; background: #f5f5f5 ; height: 40px ; line-height: 40px }
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
// Init APP data
|
|
2
2
|
const app = {
|
|
3
|
-
|
|
3
|
+
version: chrome.runtime.getManifest().version, symbol: '🤖', cssPrefix: 'chatgpt-extension',
|
|
4
|
+
author: { name: 'KudoAI', url: 'https://kudoai.com' },
|
|
4
5
|
urls: {
|
|
5
6
|
assetHost: 'https://cdn.jsdelivr.net/gh/KudoAI/chatgpt.js-chrome-starter',
|
|
6
|
-
|
|
7
|
+
chatgptJS: 'https://chatgptjs.org',
|
|
8
|
+
cjsAssetHost: 'https://assets.chatgptjs.org',
|
|
9
|
+
contributors: 'https://docs.chatgptjs.org/#-contributors',
|
|
7
10
|
gitHub: 'https://github.com/KudoAI/chatgpt.js-chrome-starter',
|
|
8
11
|
relatedExtensions: 'https://aiwebextensions.com',
|
|
9
12
|
support: 'https://github.com/KudoAI/chatgpt.js-chrome-starter/issues'
|
|
@@ -11,13 +14,13 @@ const app = {
|
|
|
11
14
|
}
|
|
12
15
|
chrome.storage.sync.set({ app }) // save to Chrome storage
|
|
13
16
|
|
|
14
|
-
// Launch
|
|
17
|
+
// Launch CHATGPT on install
|
|
15
18
|
chrome.runtime.onInstalled.addListener(details => {
|
|
16
19
|
if (details.reason == 'install')
|
|
17
20
|
chrome.tabs.create({ url: 'https://chatgpt.com/' })
|
|
18
21
|
})
|
|
19
22
|
|
|
20
|
-
// Sync
|
|
23
|
+
// Sync SETTINGS to activated tabs
|
|
21
24
|
chrome.tabs.onActivated.addListener(activeInfo =>
|
|
22
25
|
chrome.tabs.sendMessage(activeInfo.tabId, { action: 'syncConfigToUI' }))
|
|
23
26
|
|
|
Binary file
|
|
Binary file
|
package/starters/docs/LICENSE.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<h6
|
|
2
|
+
<h6>
|
|
3
|
+
<a href="./">
|
|
4
|
+
<picture>
|
|
5
|
+
<source type="image/svg+xml" media="(prefers-color-scheme: dark)" srcset="https://assets.chatgptjs.org/images/icons/earth/white/icon32.svg?v=e638eac">
|
|
6
|
+
<img height=14 src="https://assets.chatgptjs.org/images/icons/earth/black/icon32.svg?v=e638eac">
|
|
7
|
+
</picture>
|
|
8
|
+
</a>
|
|
9
|
+
English |
|
|
10
|
+
<a href="zh-cn/LICENSE.md">简体中文</a> |
|
|
11
|
+
<a href="zh-tw/LICENSE.md">繁體中文</a> |
|
|
12
|
+
<a href="ja/LICENSE.md">日本</a> |
|
|
13
|
+
<a href="ko/LICENSE.md">한국인</a> |
|
|
14
|
+
<a href="hi/LICENSE.md">हिंदी</a> |
|
|
15
|
+
<a href="de/LICENSE.md">Deutsch</a> |
|
|
16
|
+
<a href="es/LICENSE.md">Español</a> |
|
|
17
|
+
<a href="fr/LICENSE.md">Français</a> |
|
|
18
|
+
<a href="it/LICENSE.md">Italiano</a> |
|
|
19
|
+
<a href="nl/LICENSE.md">Nederlands</a> |
|
|
20
|
+
<a href="pt/LICENSE.md">Português</a> |
|
|
21
|
+
<a href="vi/LICENSE.md">Việt</a>
|
|
22
|
+
</h6>
|
|
3
23
|
</div>
|
|
4
24
|
|
|
5
25
|
# MIT License
|
package/starters/docs/README.md
CHANGED
|
@@ -4,10 +4,23 @@
|
|
|
4
4
|
<h6>
|
|
5
5
|
<a href="https://github.com/KudoAI/chatgpt.js/tree/main/starters/docs">
|
|
6
6
|
<picture>
|
|
7
|
-
<source type="image/svg+xml" media="(prefers-color-scheme: dark)" srcset="https://
|
|
8
|
-
|
|
7
|
+
<source type="image/svg+xml" media="(prefers-color-scheme: dark)" srcset="https://assets.chatgptjs.org/images/icons/earth/white/icon32.svg?v=e638eac">
|
|
8
|
+
<img height=14 src="https://assets.chatgptjs.org/images/icons/earth/black/icon32.svg?v=e638eac">
|
|
9
9
|
</picture>
|
|
10
|
-
</a>
|
|
10
|
+
</a>
|
|
11
|
+
English |
|
|
12
|
+
<a href="zh-cn#readme">简体中文</a> |
|
|
13
|
+
<a href="zh-tw#readme">繁體中文</a> |
|
|
14
|
+
<a href="ja#readme">日本</a> |
|
|
15
|
+
<a href="ko#readme">한국인</a> |
|
|
16
|
+
<a href="hi#readme">हिंदी</a> |
|
|
17
|
+
<a href="de#readme">Deutsch</a> |
|
|
18
|
+
<a href="es#readme">Español</a> |
|
|
19
|
+
<a href="fr#readme">Français</a> |
|
|
20
|
+
<a href="it#readme">Italiano</a> |
|
|
21
|
+
<a href="nl#readme">Nederlands</a> |
|
|
22
|
+
<a href="pt#readme">Português</a> |
|
|
23
|
+
<a href="vi#readme">Việt</a>
|
|
11
24
|
</h6>
|
|
12
25
|
</div>
|
|
13
26
|
|
|
@@ -17,15 +30,15 @@
|
|
|
17
30
|
|
|
18
31
|
<br>
|
|
19
32
|
|
|
20
|
-
<img src="../chrome/
|
|
33
|
+
<img src="../chrome/images/screenshots/extension-loaded.png">
|
|
21
34
|
|
|
22
|
-
<h2><a href="../chrome"><img style="margin: 0 2px -1px 0" height=18 src="https://
|
|
35
|
+
<h2><a href="../chrome"><img style="margin: 0 2px -1px 0" height=18 src="https://assets.chatgptjs.org/images/icons/platforms/chrome/icon32.png?v=e638eac"></a> <a href="../chrome">Chrome starter</a></h2>
|
|
23
36
|
|
|
24
37
|
Template for creating a Chrome extension using chatgpt.js (including pop-up menu + settings management)
|
|
25
38
|
|
|
26
39
|
[Repo](https://github.com/KudoAI/chatgpt.js-chrome-starter) / [Readme](../chrome#readme) / [Get help](https://github.com/KudoAI/chatgpt.js-chrome-starter/issues)
|
|
27
40
|
|
|
28
|
-
<h2><a href="../greasemonkey"><img style="margin: 0 2px -0.065rem 0" height=19 src="https://
|
|
41
|
+
<h2><a href="../greasemonkey"><img style="margin: 0 2px -0.065rem 0" height=19 src="https://assets.chatgptjs.org/images/icons/platforms/tampermonkey/icon28.png?v=e638eac"><img style="margin: 0 2px -0.035rem 1px" height=19.5 src="https://assets.chatgptjs.org/images/icons/platforms/violentmonkey/icon25.png?v=e638eac"></a> <a href="../greasemonkey">Greasemonkey starter</a></h2>
|
|
29
42
|
|
|
30
43
|
Template for creating a Greasemonkey userscript using chatgpt.js
|
|
31
44
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<h6>
|
|
3
3
|
<picture>
|
|
4
|
-
<source type="image/svg+xml" media="(prefers-color-scheme: dark)" srcset="https://
|
|
5
|
-
|
|
4
|
+
<source type="image/svg+xml" media="(prefers-color-scheme: dark)" srcset="https://assets.chatgptjs.org/images/icons/earth/white/icon32.svg?v=e638eac">
|
|
5
|
+
<img height=14 src="https://assets.chatgptjs.org/images/icons/earth/black/icon32.svg?v=e638eac">
|
|
6
6
|
</picture>
|
|
7
7
|
English |
|
|
8
8
|
<a href="docs/zh-cn/LICENSE.md">简体中文</a> |
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
# 🏛️ MIT License
|
|
24
24
|
|
|
25
|
-
**Copyright © 2023–
|
|
25
|
+
**Copyright © 2023–2025 [KudoAI](https://github.com/KudoAI) & contributors**
|
|
26
26
|
|
|
27
27
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
28
28
|
|
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
// @description A Greasemonkey template to start using chatgpt.js like a boss
|
|
4
4
|
// @author chatgpt.js
|
|
5
5
|
// @namespace https://chatgpt.js.org
|
|
6
|
-
// @version
|
|
6
|
+
// @version 2025.2.1
|
|
7
7
|
// @license MIT
|
|
8
|
-
// @icon https://cdn.jsdelivr.net/gh/KudoAI/chatgpt.js@
|
|
9
|
-
// @icon64 https://cdn.jsdelivr.net/gh/KudoAI/chatgpt.js@
|
|
8
|
+
// @icon https://cdn.jsdelivr.net/gh/KudoAI/chatgpt.js@1fc50da/starters/greasemonkey/assets/images/icons/robot/icon48.png
|
|
9
|
+
// @icon64 https://cdn.jsdelivr.net/gh/KudoAI/chatgpt.js@1fc50da/starters/greasemonkey/assets/images/icons/robot/icon64.png
|
|
10
10
|
// @match *://chatgpt.com/*
|
|
11
|
-
// @
|
|
12
|
-
// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@3.4.0/dist/chatgpt.min.js
|
|
11
|
+
// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@3.6.0/dist/chatgpt.min.js
|
|
13
12
|
// @grant GM_getValue
|
|
14
13
|
// @grant GM_setValue
|
|
15
14
|
// @noframes
|
|
@@ -17,7 +16,7 @@
|
|
|
17
16
|
// @supportURL https://github.com/KudoAI/chatgpt.js-greasemonkey-starter/issues
|
|
18
17
|
// ==/UserScript==
|
|
19
18
|
|
|
20
|
-
// NOTE: This script relies on the powerful chatgpt.js library @ https://chatgpt.js.org © 2023–
|
|
19
|
+
// NOTE: This script relies on the powerful chatgpt.js library @ https://chatgpt.js.org © 2023–2025 KudoAI & contributors under the MIT license
|
|
21
20
|
|
|
22
21
|
(async () => {
|
|
23
22
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<div align="right">
|
|
2
2
|
<h6>
|
|
3
3
|
<picture>
|
|
4
|
-
<source type="image/svg+xml" media="(prefers-color-scheme: dark)" srcset="https://
|
|
5
|
-
|
|
4
|
+
<source type="image/svg+xml" media="(prefers-color-scheme: dark)" srcset="https://assets.chatgptjs.org/images/icons/earth/white/icon32.svg?v=e638eac">
|
|
5
|
+
<img height=14 src="https://assets.chatgptjs.org/images/icons/earth/black/icon32.svg?v=e638eac">
|
|
6
6
|
</picture>
|
|
7
7
|
English |
|
|
8
8
|
<a href="https://github.com/KudoAI/chatgpt.js-greasemonkey-starter/blob/main/docs/zh-cn/SECURITY.md">简体中文</a> |
|
|
@@ -12,6 +12,4 @@
|
|
|
12
12
|
|
|
13
13
|
# 🛡️ Security Policy
|
|
14
14
|
|
|
15
|
-
If you find a vulnerability, please
|
|
16
|
-
|
|
17
|
-
Pull requests are also welcome, but for safety reasons, send an email to <security@kudoai.com> and wait for a response before making it public.
|
|
15
|
+
If you find a vulnerability, please follow the reporting instructions @ https://tidelift.com/security
|
|
File without changes
|
|
File without changes
|
/package/starters/greasemonkey/{media → assets}/images/screenshots/chatgpt-userscript-on.png
RENAMED
|
File without changes
|