Thêm câu trả lời AI vào Google Tìm kiếm (được cung cấp bởi Google Gemma + GPT-4o!)
Đây là phiên bản của script này, nơi mã nguồn đã được cập nhật. Hiện tất cả các phiên bản.
Corrected proxy toggle link selectors in div alerts ↞ [auto-sync from adamlui/chatgpt-apps]
adamlui/chatgpt-apps
Replaced .googlegpt w/ #googlegpt ↞ [auto-sync from adamlui/chatgpt-apps]
.googlegpt
#googlegpt
Replaced inline .proxy-toggle-link w/ appStyle.alert-link+ added underline if dark scheme ↞ [auto-sync fromadamlui/chatgpt-apps`]
.proxy-toggle-link
appStyle
+ added underline if dark scheme ↞ [auto-sync from
Renamed .proxyToggle to .proxy-toggle-link for readability ↞ [auto-sync from adamlui/chatgpt-apps]
.proxyToggle
Limited query re-send in toggleProxyMode() to only if user alerted ↞ [auto-sync from adamlui/chatgpt-apps]
toggleProxyMode()
Limited app title/logo update to reply UI ↞ [auto-sync from adamlui/chatgpt-apps]
Updated mobile reply balloon tip position ↞ [auto-sync from adamlui/chatgpt-apps]
Restricted chatbar auto-focus at most once per show.reply() ↞ [auto-sync from adamlui/chatgpt-apps]
show.reply()
Added appPrefixVisible to updateTitleElems() for readability ↞ [auto-sync from adamlui/chatgpt-apps]
appPrefixVisible
updateTitleElems()
Added replace app title w/ logo on load for Standby mode early app loads ↞ [auto-sync from adamlui/chatgpt-apps]
Moved browser flag inits up ↞ [auto-sync from adamlui/chatgpt-apps]
+1s to timeout before get.related(query) retry ↞ [auto-sync from adamlui/chatgpt-apps]
get.related(query)
Reversed default auto-get disabled if mobile ↞ [auto-sync from adamlui/chatgpt-apps]
Renamed get.answer() to get.reply() for readability ↞ [auto-sync from adamlui/chatgpt-apps]
get.answer()
get.reply()
Renamed/moved show func defs into show obj for improved maintainability/readability ↞ [auto-sync from adamlui/chatgpt-apps]
show
Moved query augment function defs above get ones for readability ↞ [auto-sync from adamlui/chatgpt-apps]
Renamed get.relatedQueries() to get.related() for readability ↞ [auto-sync from adamlui/chatgpt-apps]
get.relatedQueries()
get.related()
Made Standby mode default on new installations ↞ [auto-sync from adamlui/chatgpt-apps]
Moved config + API prop inits up for easier maintenance ↞ [auto-sync from adamlui/chatgpt-apps]
Added show related queries on 1st toggle + standby mode ↞ [auto-sync from adamlui/chatgpt-apps]
Moved data processing funcs into dataProcess obj for improved maintainability ↞ [auto-sync from adamlui/chatgpt-apps]
dataProcess
Moved get funcs into get obj for improved maintainability ↞ [auto-sync from adamlui/chatgpt-apps]
get
Added retries to getRelatedQueries(), delayed show till after answer load
getRelatedQueries()
± Corrected getShowReply.attemptCnt resets for working init condition in getShowReply() ↞ [auto-sync from adamlui/chatgpt-apps]
getShowReply.attemptCnt
getShowReply()
Fixed Play button only speaks 1st answer chunk in Streaming Mode ↞ [auto-sync from adamlui/chatgpt-apps]
Lowered app div in Sticky Sidebar mode ↞ [auto-sync from adamlui/chatgpt-apps]
Expanded app div + sidebar content in Wider Sidebar mode ↞ [auto-sync from adamlui/chatgpt-apps]
Increased chatbar height +1px to rid v-scrollbar in Kiwi view ↞ [auto-sync from adamlui/chatgpt-apps]
Replaced hasOwnProperty w/ Object.prototype.hasOwnProperty.call to satisfy picky ESLint ↞ [auto-sync from adamlui/chatgpt-apps]
hasOwnProperty
Object.prototype.hasOwnProperty.call
Removed no-longer used // @connect onrender.com ↞ [auto-sync from adamlui/chatgpt-apps]
// @connect onrender.com
Fixed api.pick() to not retry timed out APIs ↞ [auto-sync from adamlui/chatgpt-apps]
api.pick()
Re-organized/named functions/vars for improved maintenance/readability ↞ [auto-sync from adamlui/chatgpt-apps]
Increased timeout range before trying next API ↞ [auto-sync from adamlui/chatgpt-apps]
Removed dead proxy API ↞ [auto-sync from adamlui/chatgpt-apps]
Moved main routine after func defs ↞ [auto-sync from adamlui/chatgpt-apps]
Added flagging of timed out APIs in getShowReply.triedAPIs to not exclude from new query tries ↞ [auto-sync from adamlui/chatgpt-apps]
getShowReply.triedAPIs
Moved updateTweaksStyle() in appShow() into show-answer block for readability ↞ [auto-sync from adamlui/chatgpt-apps]
updateTweaksStyle()
appShow()
Included standby mode in chatbar auto-focus for faster access ↞ [auto-sync from adamlui/chatgpt-apps]
Overhauled answer sender/status/err tracking/handling to be more robust ↞ [auto-sync from adamlui/chatgpt-apps]
Removed math query augment for being too pollutive ↞ [auto-sync from adamlui/chatgpt-apps]
Updated desktop Auto-Scroll coordinates ↞ [auto-sync from adamlui/chatgpt-apps]
Expanded Auto-Scroll to work in Sticky Sidebar mode ↞ [auto-sync from adamlui/chatgpt-apps]
Re-anchored Auto-Scroll to above related queries + disabled outside Streaming Mode ↞ [auto-sync from adamlui/chatgpt-apps]
Condensed <add|remove>EvenListener()s ↞ [auto-sync from adamlui/chatgpt-apps]
<add|remove>EvenListener()
Limited tooltips to desktop users ↞ [auto-sync from adamlui/chatgpt-apps]
Added base to parseInt()s for explicit radix ↞ [auto-sync from adamlui/chatgpt-apps]
parseInt()
Re-sized/padded chatbar, updated autosizeChatbar() ↞ [auto-sync from adamlui/chatgpt-apps]
autosizeChatbar()
Added auto-close to Streaming Mode Unavailable in OpenAI alert on proxy toggle click ↞ [auto-sync from adamlui/chatgpt-apps]
Removed no-longer necessary conditions from chatbar auto-focus since appShow() update ↞ [auto-sync from adamlui/chatgpt-apps]
Fixed Auto-Scroll mode to work w/ updated appShow() ↞ [auto-sync from adamlui/chatgpt-apps]
Shrank mobile font-size/line-height ↞ [auto-sync from adamlui/chatgpt-apps]
Added scroll-to-top on mobile if user interacted ↞ [auto-sync from adamlui/chatgpt-apps]
Replaced querySelector w/ chatTextarea in handleSubmit() ↞ [auto-sync from adamlui/chatgpt-apps]
querySelector
chatTextarea
handleSubmit()
Moved augmentQuery() from handleRQevent() to handleSubmit() for more logical flow
augmentQuery()
handleRQevent()
yourReply
Added query augment stripping to handleSubmit() in appShow() + get/show related queries in getShowReply() ↞ [auto-sync from adamlui/chatgpt-apps]
Refined math query augment ↞ [auto-sync from adamlui/chatgpt-apps]
Increased no proxy response timeout before tryDiffAPI() +2s if not streaming
tryDiffAPI()
... since text processing of finished stream response takes longer ↞ [auto-sync from adamlui/chatgpt-apps]
Added spacing if multi-msgs passed to appAlert() ↞ [auto-sync from adamlui/chatgpt-apps]
appAlert()
Added line break in appShow() for readability ↞ [auto-sync from adamlui/chatgpt-apps]
Removed no-longer needed // eslint-disable-line no-undefs ↞ [auto-sync from adamlui/chatgpt-apps]
// eslint-disable-line no-undef
Fixed math to always render ↞ [auto-sync from adamlui/chatgpt-apps]
Abstracted augmentQuery(), augmented related queries ↞ [auto-sync from adamlui/chatgpt-apps]
Corrected replyForm init in handleSubmit() ↞ [auto-sync from adamlui/chatgpt-apps]
replyForm
Added Standby Mode check before showing answer in appShow() ↞ [auto-sync from adamlui/chatgpt-apps]
Overhauled appShow() to only build stuff if missing for improved efficiency ↞ [auto-sync from adamlui/chatgpt-apps]
Reduced gap preceding 'View changes' link in Update Available alert ↞ [auto-sync from adamlui/chatgpt-apps]
Updated GoogleGPT descriptions ↞ [auto-sync from adamlui/chatgpt-apps]
Title-cased foundState entries in appAlert() to correct switchPhrase init + shorten routine ↞ [auto-sync from adamlui/chatgpt-apps]
foundState
switchPhrase
Renamed alert() to siteAlert() to avoid potential namespace conflicts ↞ [auto-sync from adamlui/chatgpt-apps]
alert()
siteAlert()
Added proxy toggle suggestion to 429 errs ↞ [auto-sync from adamlui/chatgpt-apps]
Condensed hyperlink routine in appAlert() + refined fallback in foundState detection ↞ [auto-sync from adamlui/chatgpt-apps]
Replaced all appendChild() w/ shorter append() ↞ [auto-sync from adamlui/chatgpt-apps]
appendChild()
append()
Disabled chatbar auto-focus in standby mode ↞ [auto-sync from adamlui/chatgpt-apps]
Added ease transition to corner button hover, removed unnecessary !important in CSS, re-ordered style props for readability ↞ [auto-sync from adamlui/chatgpt-apps]
!important
Replaced 'alert' w/ 'modal' in modal ID var names ↞ [auto-sync from adamlui/chatgpt-apps]
Reversed order of AI models in GoogleGPT descriptions ↞ [auto-sync from adamlui/chatgpt-apps]
Shortened 'button' in class/var names to 'btn' ↞ [auto-sync from adamlui/chatgpt-apps]
Added // @noframes for compatibility w/ frame-injecting scripts ↞ [auto-sync from adamlui/chatgpt-apps]
// @noframes
Added scheme selection modal + darkmode modal button hover styles ↞ [auto-sync from adamlui/chatgpt-apps]
Abstracted refreshMenu() ↞ [auto-sync from adamlui/chatgpt-apps]
refreshMenu()
Added Chinese ?as eligible suffix for Suffix Mode ↞ [auto-sync from adamlui/chatgpt-apps]
Disabled Auto-Scroll menu item + auto-focus chatbar on mobile to avoid auto-popup OSD keyboard ↞ [auto-sync from adamlui/chatgpt-apps]
Added Google Gemma to GoogleGPT descriptions ↞ [auto-sync from adamlui/chatgpt-apps]
Improved isDarkMode() for mobile
isDarkMode()
Fixed mobile width
Tightened timing of getShowReply.received in processStream() ↞ [auto-sync from adamlui/chatgpt-apps]
getShowReply.received
processStream()
Set app width to exact sidebar width + added rendered markdown style ↞ [auto-sync from adamlui/chatgpt-apps]
Added 3s timeout to proxy API requests before retryDiffAPI() ↞ [auto-sync from adamlui/chatgpt-apps]
retryDiffAPI()
Unwrapped + formatted code blocks w/ line breaks + added h-scrolling ↞ [auto-sync from adamlui/chatgpt-apps]
Replaced pedantic: true method of Google flex-wrap circumvention w/ 100% reliable arbitrary hard width ↞ [auto-sync from adamlui/chatgpt-apps]
pedantic: true
Added code highlighting ↞ [auto-sync from adamlui/chatgpt-apps]
Corrected condition for detecting if user replied for chatbar auto-focus ↞ [auto-sync from adamlui/chatgpt-apps]
Removed test commented code ↞ [auto-sync from adamlui/chatgpt-apps]
Removed markdown prompt from GPTforLove's payload.systemMessage for nicer formatted output ↞ [auto-sync from adamlui/chatgpt-apps]
payload.systemMessage
Removed .googlegpt > pre > p bottom offset since markdown renders pedantic: true now ↞ [auto-sync from adamlui/chatgpt-apps]
.googlegpt > pre > p
Fixed marked.js bug moves app to bottom, updated padding/margin ↞ [auto-sync from adamlui/chatgpt-apps]
Corrected spacebar key name for FF pre-v37 ↞ [auto-sync from adamlui/chatgpt-apps]
Added fallback event.keys + event.keyCodes to widen compatibility ↞ [auto-sync from adamlui/chatgpt-apps]
event.key
event.keyCode
Bumped hash in config.assetHostURL to latest asset commit ↞ [auto-sync from adamlui/chatgpt-apps]
config.assetHostURL
Added Auto-Scroll mode, fixed auto-focus chatbar only if app above fold or user replied to non-stream ↞ [auto-sync from adamlui/chatgpt-apps]
Updated key/func names to align w/ pertinent API name ↞ [auto-sync from adamlui/chatgpt-apps]
Fixed AIchatOS streaming, added acculatesText prop to apis ↞ [auto-sync from adamlui/chatgpt-apps]
acculatesText
apis
Corrected arg name ↞ [auto-sync from adamlui/chatgpt-apps]
Added missing ) in condition ↞ [auto-sync from adamlui/chatgpt-apps]
)
Internationalized Streaming Mode Unavailable alert title ↞ [auto-sync from adamlui/chatgpt-apps]
Added Streaming Mode menu toggle visibility to unsupported users w/ info alert on click ↞ [auto-sync from adamlui/chatgpt-apps]
Disabled loading on Google Images ↞ [auto-sync from adamlui/chatgpt-apps]
Re-styled modals, shortened var name, moved notification style from `updateTweaksStyle()` to `updateAppStyle()`, booleanized `hasSidebar`
Corrected switch phrase refs in appAlert() hyperlink routine ↞ [auto-sync from adamlui/chatgpt-apps]
Reverted condesning of int'l msg load request since recursively called ↞ [auto-sync from adamlui/chatgpt-apps]
Condensed int'l msg load request ↞ [auto-sync from adamlui/chatgpt-apps]
Replaced all Math.random() w/ more random chatgpt.randomFloat() ↞ [auto-sync from adamlui/chatgpt-apps]
Math.random()
chatgpt.randomFloat()
Re-padded site notifications ↞ [auto-sync from adamlui/chatgpt-apps]
Revised appAlert() to hyperlink Proxy Mode switching in login msgs ↞ [auto-sync from adamlui/chatgpt-apps]
Reversed order of state.symbol + state.word entries + ref logic for more intuitive usage ↞ [auto-sync from adamlui/chatgpt-apps]
state.symbol
state.word
Moved .toUpperCase() outside || group in state.word to avoid undefined err for English users ↞ [auto-sync from adamlui/chatgpt-apps]
.toUpperCase()
||
Internationalized state.word ↞ [auto-sync from adamlui/chatgpt-apps]
Reduced font sizes of mobile answers + related queries ↞ [auto-sync from adamlui/chatgpt-apps]
Decreased font size + increased line height of mobile answers ↞ [auto-sync from adamlui/chatgpt-apps]
Increased font sizes of answers + mobile related queries ↞ [auto-sync from adamlui/chatgpt-apps]
Inserted > in pre selectors to not involve rendered Markdown pres ↞ [auto-sync from adamlui/chatgpt-apps]
>
pre
Shrank font sizes of answers + related queries ↞ [auto-sync from adamlui/chatgpt-apps]
Hid Streaming Mode menu toggle from Tampermonkey OpenAI Mode users ↞ [auto-sync from adamlui/chatgpt-apps]
Replaced '>>' w/ '»' in console logs ↞ [auto-sync from adamlui/chatgpt-apps]
Renamed retryDiffHost() to tryDiffAPI() ↞ [auto-sync from adamlui/chatgpt-apps]
retryDiffHost()
Added Streaming Mode for Tampermonkey Proxy Mode users
± Revised consoleErr() to allow 2nd arg for congruency w/ console.error() ± Merged proxyRetryOrAlert() w/retryDiffHost()for simplicity ↞ [auto-sync fromadamlui/chatgpt-apps`]
consoleErr()
console.error()
proxyRetryOrAlert() w/
for simplicity ↞ [auto-sync from
Removed whitespace + revised header comments for readability ↞ [auto-sync from adamlui/chatgpt-apps]
Moved main routine up + renamed ids to apiIDs + moved inits for readability ↞ [auto-sync from adamlui/chatgpt-apps]
ids
apiIDs
Shortened all response arg names to resp ↞ [auto-sync from adamlui/chatgpt-apps]
response
resp
Refactored answer functions + proxyEndpoints for improved utility/maintainability ↞ [auto-sync from adamlui/chatgpt-apps]
proxyEndpoints
Renamed app<Info|Error>() to console<Info|Err>() to distinguish vs. appAlert() shows in app div ↞ [auto-sync from adamlui/chatgpt-apps]
app<Info|Error>()
console<Info|Err>()
Expanded conditions in appAlert() to delete cookies + add .loading to non-English users ↞ [auto-sync from adamlui/chatgpt-apps]
.loading
Renamed convo to msgChain ↞ [auto-sync from adamlui/chatgpt-apps]
convo
msgChain
Added click switch on/off Proxy Mode alert to toggle, re-ordered func defs ↞ [auto-sync from adamlui/chatgpt-apps]
Revised/condensed appAlerts, refactored appAlert() to accept multi-args/arrays ↞ [auto-sync from adamlui/chatgpt-apps]
appAlerts
Added iOS to compatibility section ↞ [auto-sync from adamlui/chatgpt-apps]
Re-positioned Wide Screen button + raised tooltips slightly ↞ [auto-sync from adamlui/chatgpt-apps]
Added hover zooms to corner buttons ↞ [auto-sync from adamlui/chatgpt-apps]
Restyled tooltips ↞ [auto-sync from adamlui/chatgpt-apps]
Removed unused callback arg from getShowReply(), moved retryDiffHost() def to top-level
callback
... to support call from getShowReply()'s XHR onerror ↞ [auto-sync from adamlui/chatgpt-apps]
onerror
Moved retryDiffHost() def into processText() ↞ [auto-sync from adamlui/chatgpt-apps]
processText()
Converted getShowReply()'s onLoad() to top-level processText() ↞ [auto-sync from adamlui/chatgpt-apps]
onLoad()
Added MixerBox API support ↞ [auto-sync from adamlui/chatgpt-apps]
Patched binjie.fun API methods to skip on apology response ↞ [auto-sync from adamlui/chatgpt-apps]
Hid 'by KudoAI' from mobile title to fit corner btns ↞ [auto-sync from adamlui/chatgpt-apps]
Added await for dark theme status elem load before UI flag inits ↞ [auto-sync from adamlui/chatgpt-apps]
await
Made msgs load for non-English users only for faster app load ↞ [auto-sync from adamlui/chatgpt-apps]
Added () to ternarys in updateTooltip() for correct tooltip fallback ↞ [auto-sync from adamlui/chatgpt-apps]
()
updateTooltip()
Moved logo pre-loaded after UI flag inits to support scheme ↞ [auto-sync from adamlui/chatgpt-apps]
scheme
Updated isDarkMode(), moved UI flag inits after msgs load to give time for Google to load ↞ [auto-sync from adamlui/chatgpt-apps]
Replaced comma w/ semicolon in pickAPI() for clearer intentionality ↞ [auto-sync from adamlui/chatgpt-apps]
pickAPI()
Corrected symbol in pickAPI() ↞ [auto-sync from adamlui/chatgpt-apps]
Moved markdown render into if (answer != 'standby') ↞ [auto-sync from adamlui/chatgpt-apps]
if (answer != 'standby')
Bumped CryptoJS to 4.2.0 ↞ [auto-sync from adamlui/chatgpt-apps]
Bumped KaTeX/auto-render.js to 0.16.10 ↞ [auto-sync from adamlui/chatgpt-apps]
Bumped generate-ip to 2.4.2 ↞ [auto-sync from adamlui/chatgpt-apps]
Added markdown rendering
Added missing ) ↞ [auto-sync from adamlui/chatgpt-apps]
Added demo-yj7h.onrender.com API endpoint/routines + refactored createHeaders() for readability ↞ [auto-sync from adamlui/chatgpt-apps]
demo-yj7h.onrender.com
createHeaders()
Alphabetized/removed subdomains from connect meta URLs for readability ↞ [auto-sync from adamlui/chatgpt-apps]
Added more headers to createHeaders(api) for increased stealth ↞ [auto-sync from adamlui/chatgpt-apps]
createHeaders(api)
Title-cased headers.Origin in createHeaders(api) for consistency ↞ [auto-sync from adamlui/chatgpt-apps]
headers.Origin
Added // @compatible safari
// @compatible safari
Updated isDarkMode()
Re-pos mobile chat balloon tip ↞ [auto-sync from adamlui/chatgpt-apps]
Reverted localizing msgs only for non-English sys lang
... to support dynamic ref in toggleSidebar() ↞ [auto-sync from adamlui/chatgpt-apps]
toggleSidebar()
Moved balloon tip pos from appStyle to appShow()
... to accomodate Chromium delay ↞ [auto-sync from adamlui/chatgpt-apps]
Renamed getGPTplusKey() to generateGPTplusKey() ↞ [auto-sync from adamlui/chatgpt-apps]
getGPTplusKey()
generateGPTplusKey()
Updated GPT search app descriptions ↞ [auto-sync from adamlui/chatgpt-apps]
Bumped GPT in api.gptforlove.com payload to 4o ↞ [auto-sync from adamlui/chatgpt-apps]
Shortened var names ↞ [auto-sync from adamlui/chatgpt-apps]
Added api.binjie.fun endpoint/routines ↞ [auto-sync from adamlui/chatgpt-apps]
Replaced AIGCF proxy endpoint w/ GPTforLove ↞ [auto-sync from adamlui/chatgpt-apps]
Bumped chatgpt.js to 2.9.3 ↞ [auto-sync from adamlui/chatgpt-apps]
Limited localized msg load to non-English sys langs ↞ [auto-sync from adamlui/chatgpt-apps]
Partially uppercased top-level comments for readability ↞ [auto-sync from adamlui/chatgpt-apps]
Moved config.userLanguage init out of config init to support VM ↞ [auto-sync from adamlui/chatgpt-apps]
config.userLanguage
config
Appended commit hashes to icon meta URLs to preserve assets
Bumped chatgpt.js to 2.9.2
Updated latest asset commit hash in config.assetHostURL
Updated // @support URL
// @support URL
Bumped chatgpt.js to 2.8.0
Bumped chatgpt.js to 2.7.1
Inserted latest locale commit hash to config.assetHostURL to preserve potentially deleted msg keys
Bumped chatpgt.js to 2.7.0 + generate-ip to 2.4.1
Updated chat.openai.com URLs to chatgpt.com ↞ [auto-sync from adamlui/chatgpt-apps]
Bumped chatgpt.js to 2.6.10
Added 'Send reply' tooltip removal on click-sends ↞ [auto-sync from adamlui/userscripts]
adamlui/userscripts
Renamed rqEventHandler() to more parallel handleRQevent() ↞ [auto-sync from adamlui/userscripts]
rqEventHandler()
Reverted erroneous find/replace edit ↞ [auto-sync from adamlui/userscripts]
Excluded related query submissions from triggering chatbar auto-focus ↞ [auto-sync from adamlui/userscripts]
Added auto-focus chatbar on 2nd+ loads ↞ [auto-sync from adamlui/userscripts]
Updated ChatGPT session endpoint URL ↞ [auto-sync from adamlui/userscripts]
Replaced raw.githubusercontent.com URLs w/ cdn.jsdelivr.net ones
Updated raw.githubusercontent.com config.assetHostURL to cdn.jsdelivr.net one
Bumped chatgpt.js to 2.6.9 + generate-ip to 2.2.12
Replaced config.assetHostURL w/ media.googlegpt.io in appLogoImg.src
media.googlegpt.io
appLogoImg.src
Loosened comparison operators for smaller filesize
Replaced using alt as fallback for header logo src w/ appLogoImg.onerror
appLogoImg.onerror
... to hide ugly broken image icon in Chromium browsers
Shortened .kudo-ai class name to .kudoai ↞ [auto-sync from adamlui/userscripts]
.kudo-ai
.kudoai
Eliminated isChromium for simplicity
isChromium
Removed whitespace for readability
Refactored msg fetcher for readability + if en/messages.json ever goes missing
const messages
msgs
Abstracted updateAppLogoSrc() + updateAppStyle() to align w/ BraveGPT + DDGPT codebases
updateAppLogoSrc()
updateAppStyle()
... and in case Google Search ever auto-updates UI on scheme changes in future
Updated isDarkMode() to rely on new DOM status elem
Updated isDarkMode() to work w/ new UI, bumped generate-ip to 2.2.7
Bumped generate-ip to 2.2.4
Bumped generate-ip to 2.2.3
Bumped generate-ip to 2.2.1
Bumped chatgpt.js to 2.6.8
Added generate-ip as runtime dependency
Bumped KaTeX to 0.16.10
Bumped chagpt.js to 2.6.7
Added hyphens to script name regex in config.updateURL
config.updateURL
Further reduced potential for backtracking in config.updateURL regex
Improved regex
± Eliminated potential for exponential/polynomial backracking in msgHref.replace regex by increasing specificity in capturing groups
msgHref.replace
Eliminated potential for polynomial backtracking in regex
... by increasing specificity of capturing group
Removed title attr's from Sticky/Wider Sidebar buttons
... to disable browser-native tooltips
Integrated Web Audio API + GM.xmlHttpRequest() in TTS routine
GM.xmlHttpRequest()
... to bypass potential future CSP restrictions
Added string conversion to replyDialect.rate to support Sogou API update
replyDialect.rate
Bumped chatgpt.js to 2.6.6
Bumped chatgpt.js to 2.6.5
Alphabetized args in loadSetting() call for readability
loadSetting()
Removed unicode from description meta
Replaced OpenAI API endpoint (KudoAI/duckduckgpt#44), disabled streaming (KudoAI/duckduckgpt#42)
Added SRI hashes to external resources
Replaced chatgpt.js import URL w/ npm one
Bumped chatgpt.js to 2.6.4
Updated copyright years ↞ [auto-sync from adamlui/chatgpt-apps]
Replaced appFooter elem w/ more semantic type
appFooter
Added ISO 639-1 support to Japanese regex in dialectMap
dialectMap
Added casing to replyLanguage init for menu aesthetics
replyLanguage
Added Japanese/Vietnamese support to TTS
Added more European dialects to TTS
Added Arabic/Danish/Polish/Russian support to TTS
Added ISO 639-2 support to dialectMap.entry.regex
dialectMap.entry.regex
Improved dialectMap.entry.regex's
Updated logo img src URLs
Refined related queries prompt
Added German/Spanish/French support to TTS (KudoAI/googlegpt#9)
Added config.appURL, updated gitHubURL casing
config.appURL
gitHubURL
± Re-ordered config key inits for readability
Generalized function/var names
... for improved synergy w/ codebase of other KudoAI GPT scripts
Added target browser check to updateFooterContent()
updateFooterContent()
Removed final .innerHTML reliance + whitespace
.innerHTML
Shortened googleGPTalert()
googleGPTalert()
Refactored googleGPTalert() + googleGPTinfo()
googleGPTinfo()
± Removed potentially unsafe reliance on .innerHTML ± Re-ordered commands
Bumped chatgpt.js to 2.6.3
Added googleGPTimg.loaded to dictate position
googleGPTimg.loaded
Added error-catching to getAIGCFkey()
getAIGCFkey()
Made 2nd logo pos assignment not replace triggered alt pos
Re-organized logo alt styles for readability
Updated beta logo src's
Added logo alt/styles
Increased border radius on standby button hover
Replaced standby button hover glow w/ color/zoom fx
Increased mobile header content sizes
Refined related queries prompt, renamed const to rqPrompt
rqPrompt
notify()
Added // @compatible whale
// @compatible whale
Moved Send button tooltip leftward
Improved updateTooltip(buttonType)
updateTooltip(buttonType)
± Made Send button tooltip x-pos dynamic to accommodate msg localization ± Renamed xOffset back to iniRoffset for accuracy ± Defined [cornerBtnTypes] to shorten iniRoffset init
xOffset
iniRoffset
[cornerBtnTypes]
Shortened createAnchor()
createAnchor()
Updated logo link
Tweaked Send button position
Added/removed whitespace in tooltip functions
... for readability
Added beautiful tooltip to Send button
± Changed .send-button to #send-btn to work w/ updateTooltip()
.send-button
#send-btn
toggleTooltip()
Disabled hiding of sidebar content in SSB mode if on standby
Renamed wsbStyle + ssbStyle to wsbStyles + ssbStyles
wsbStyle
ssbStyle
wsbStyles
ssbStyles
... to differentiate from nodes
Re-padded footer content
Added line height to footer for prettier multi-line content
Updated homepage/support URL meta, added newline
... to {config} init for readability
{config}
Shortened tooltip pos math vars init using array destructuring
Updated spread factor + center addend in tooltip pos calc
... to align w/ tighter corner button spacing
Lowered send button 2px
Enlarged mobile app logo/prefix
Enlarged logo
Updated icon meta URLs
Raised tooltips, moved stylize routine up
Stylized scrollbars
Moved SVG attr array inits down
Shortened single-class assignments
Defined SVG attrs to improve readability + shorten for-loops
Re-formatted updateTooltip() for readability
Added beautiful button tooltips
Changed var speakSpan to const speakSpan
var speakSpan
const speakSpan
Changed vars to consts
Moved function defs, refactored hostContainer init
hostContainer
± Moved fetchJSON() into updateFooerContent() ± Moved `shuffle() + applyBoosts() outward in scope ± Moved || in hostContainer init for readability
fetchJSON()
updateFooerContent()
shuffle()
applyBoosts()
Shrank logo in Firefox
Increased logo size in Firefox
Added isFirefox, removed whitespace
isFirefox
Widened sidebar content selector's scope for Sticky Sidebar
Shrank header symbol/logo, raised corner buttons
Replaced all .appendChild()'s w/ .append()'s to shorten codebase
.appendChild()
.append()
Replaced app name text w/ logo
± Enhanced createAnchor(). to accept any displayContent ± Moved UI flag inits before message definition to pre-load logo
displayContent
Shortened hostContainer init, removed whitespace from RTL meta
Shortened updateButtons to updateBtns
updateButtons
updateBtns
Increased bottom margin of mobile alert button groups
Re-ordered CSS for readability
Added more darkmode alert styles
Bumped chatgpt.js to 2.6.2
Enlarged header
Removed whitespace from update available alert
Restored link hover underlines in alerts, moved whitespace
... out of 'View changes' anchor to preceding text
Removed underlines from link hovers in alerts
Replaced icon, added // @icon64
// @icon64
Removed GPT-4 from description metas
Moved updateTweaksStyle() out of append response routine
... to also apply Sticky Sidebar to standby mode
Added Sticky Sidebar button, re-spaced/positioned buttons
Bumped chatgpt.js to 2.6.1, removed margin/padding...
... from mobile alert buttons
Fixed related queries don't show in OpenAI mode (KudoAI/googlegpt#4)
Added reply section to standby mode (KudoAI/duckduckgpt#33)
Shortened arrow functions
Moved standby mode condition from WSB to speak button
Added fade-in on first load, halved y-translation
Shortened footer content update routine
Added Auto-Get mode (KudoAI/duckduckgpt#33)
Removed query sends on prefix/suffix disables
Added standby mode if prefix/suffix enabled (KudoAI/duckduckgpt#33)
Moved speakSpan left-margin to wsbSpan right-margin
speakSpan
wsbSpan
Added loop break
Enabled unlinked footer text
Shortened updateTweaksStyle()
Added reset of answerPre's max height if not sticky sidebar
answerPre
Added toggleSidebar(mode)
toggleSidebar(mode)
Updated dynamic footer routine
± Replaced shuffle(list)'s .sort() method w/ Fisher-Yates shuffle for truer randomness ± Changed applyBoosts(list) to retun new list ± Eliminated list inits to shorten routine
shuffle(list)
.sort()
applyBoosts(list)
Re-positioned speech balloon tip in Chromium desktop + mobile
Added longerPreHeight init
longerPreHeight
Made Sticky Sidebar height consistent acoss all triggers
max-height
overflow
.related-queries {}
Removed toCamelCase(str)
toCamelCase(str)
Replaced sidebar modes' menu icons w/ ✔️/❌
Shrank header
Added Sticky Sidebar mode
Bumped chatgpt.js to 2.6.0
Replaced hover zoom w/ shadow effect
Added zoom on related query hovers, applied styles to focus
Moved/renamed/converted arrow functions to traditional syntax
... for readablity
Added boost-processing to dynamic footer
± Renamed shuffle() to shuffled(), moved def down
shuffled()
Added slight zoom on hover
Bumped chatgpt.js to 2.5.2
Updated speech balloon position in Firefox
Tightened footer location targetting compliance
Added config.userLocale + dynamic footer routine
config.userLocale
± Moved shuffler + vars init up ± Added campaign end-date compliance ± Added location targetting compliance ± Re-targeted probability boost from KudoAI to Amazon
Applied flexible msg init in googleGPTalert() to div
Allowed un-inited alerts in googleGPTalert()
Re-wrapped forbidden + maintenance alerts in googleGPTalert()
Moved fetchJSON() def to UI functions
Replaced all config.prefix w/ config.keyPrefix
config.prefix
config.keyPrefix
Renamed camelCase(input) to toCamelCase(str)
camelCase(input)
Updated config key prefix var name in (load|save)Setting()
(load|save)Setting()
Added hyphen-stripping to camelCase(input)
Loosened string equality comparisons
Refactored camelCase(input)
index
.flatMap()
Added config.appName
config.appName
Loosened string equality comparison
Clarified comment
Moved var/function inits up
Increased probability of KudoAI footer text shown
Added utm_ontent insetion to footerl links
utm_ontent
Relaced createSVGelem() w/ createSVGpath()
createSVGelem()
createSVGpath()
Excluded non-self GoogleGPT groups from footer
Made displayText optional in createAnchor()
displayText
Added createAnchor()
Shortened arg nam in createSVGelem()
Added config.feedbackURL, shortened footer init
config.feedbackURL
Added 2nd dimensions to SVGs for wider compatibility
Implemented loops for setting 3+ attrs on elems
Added tooltip loading to footer text
Updated sidebar selector in hostContainer init
Added utm_source insertion to campaign destination URLs
Updated campaignsURL
campaignsURL
Added exclusion of self-groups in active campaign routine
... for other apps
Excluded GoogleGPT campaigns
Removed unused groupName
groupName
Revamped active text campaign routine
± Updated advertiser index JSON URL ± Shuffled advertiser list before selection
adsURL
textAdsURL
active
Moved ctaAnchor init into getShowReply(), added footerLink arg
ctaAnchor
footerLink
... to googleGPTshow()
googleGPTshow()
Localized 'Share feedback' CTA
Added // @compatible waterfox
// @compatible waterfox
Darkened related query icons
Added // @compatible kiwi
// @compatible kiwi
Lightened related query icon light scheme color
Added related query icons + feedback footer
H-aligned mobile speech balloon tip
Reduced mobile v-margins
Replaced isDarkMode() in notify() w/ flag
Moved UI flag inits up, added isMobile
isMobile
Reduced mobile top margin
Added top margin in mobile view
Hard-added light background for mobile support
Hid WSB menu cmd + btn from mobile, re-ordered listener attachments
Adjusted chatbar size based on more conditions
± Moved chatbar sizing from googleGPTstyle to inline in googleGPTshow(answer) ± Moved hasSidebar to UI flag inits in stylize elements section ± Moved style tweaks section down
googleGPTstyle
googleGPTshow(answer)
hasSidebar
Updated Send button position based on Google sidebar
± Moved Send button positioning from googleGPTstyle to inline in googleGPTshow(answer) ± Renamed config.relatedQueriesDisabled to config.rqDisabled
config.relatedQueriesDisabled
config.rqDisabled
Updated wsbStlye + chatbar width
wsbStlye
Prepended const to answerPre init
const
Re-positioned app name, updated speech balloon tip position
± Moved speech balloon tip positioning from googleGPTstyle to inline in googleGPTshow(answer) ± Added Google sidebar on/off cases
Updated wsbStyle to support Google side snippets
Shrank bottom-padding of loading alert, added to error alerts
Corrected margin assignment, increased header font sizes
Moved error catching to completion of speakAudio.play()
speakAudio.play()
Prepended const to speakAudio init
speakAudio
Added web API to audio playback of answers
Separated classes in replySection.classList.add()
replySection.classList.add()
... when showing loading status
Replaced conditions in parse routines w/ responseType() values
responseType()
Added api arg to responseType() in getShowReply()
api
Added bottom-padding to googleGPTalert()s
Added api/msgs args to createPayload()
createPayload()
Added createHeaders(api)
Added/removed whitespace in googleGPTstyle
Fixed variable chatbar width when toggling wider sidebar
Added mobile support
Widened gaps between corner buttons
Lowered corner buttons
Bumped chatgpt.js to 2.5.1
Updated hash in chatgpt.js import URL
Bumped chatgpt.js to 2.5.0, replaced isChromium()
isChromium()
... w/ chatgpt.browser.isChromium() ± Used flag for fewer .includes() calls
chatgpt.browser.isChromium()
.includes()
Shortened error arg name
Removed localization from title-check in isBlockedbyCloudflare()
isBlockedbyCloudflare()
Tightened/loosened equality comparisons
Eliminated system/browser user preference from isDarkMode()
...since Google attr is always set regardless
Moved console feedback function defs out of obj
Bumped chatgpt.js to 2.4.3
Changed light-mode color scheme for related query hovers
Added whitespace + leading zeroes to CSS functions
...for conformity
Replaced .className ='s w/ more performant .classList.add()'s
.className =
.classList.add()
...when number of classes to add is low
Added .no-user-select to googleGPTstyle + new elems
.no-user-select
Bumped chatgpt.js to 2.4.2
Removed unset config.notifHidden from toggleWiderSidebar()
config.notifHidden
toggleWiderSidebar()
Shortened .googlegpt-container to .googlegpt
.googlegpt-container
Bumped chatgpt.js to 2.4.1
Eliminated single-called loadGoogleGPT()
loadGoogleGPT()
Renamed wsbSVGelems to wsbSVGpaths
wsbSVGelems
wsbSVGpaths
Prioritized Google attr for dark mode in isDarkMode()
...since it overrides system/browser user preference
Removed airplane cursor from related query hovers
Replaced send button icon w/ up-arrow
Renamed wsb*elems to wsb*paths
wsb*elems
wsb*paths
Incorporated createSVGelem() into [speakSVGpaths] init
[speakSVGpaths]
Localized 'Exit' prefix to Wider Sidebar button tooltip
Added/re-positioned buttons, added/re-ordered functions/inits
± Added Wider Sidebar button ± Re-positioned buttons ± Moved menu objs out to support global refresh ± Added toggleWiderSidebar() + updateWSBsvg() ± Re-ordered UI functions
updateWSBsvg()
Updated download/update URLs ↞ [auto-sync from adamlui/userscripts]
Replaced Fatter Sidebar w/ Wider Sidebar
...in config key names + menu labels + notifications + var names
Replaced .match() w/ faster method
.match()
Updated download/update URLs
Adjusted 'View changes' size/pos in About modal
Increased/applied updateAlertWidth
updateAlertWidth
Added English fallbacks to localized messages
Defined/widened updateAlertWidth, applied to no update found
Narrowed reply language confirmation dialog
Bumped chatgpt.js to 2.4.0, added // @name:zh-TW
// @name:zh-TW
... for localized GF readme
Updated Chinese descriptions
Added // @name:zh-CN to support localized GF readme
// @name:zh-CN
Widened chatbar in narrow mode, re-positioned Send button
Updated fatter sidebar style + sidebar-less margin
Refactored handleEnter(event)
handleEnter(event)
cursorPos
caretPos
Adjujsted 'View changes' size/pos in About modal
Removed line break from source code info in About modal
Allowed ctrl+enter to add newlines in replies
Reduced bottom padding of loading statuses
Bumped chatgpt.js to 2.3.18
Versionless change to fix GitHub sync lag
Removed unused const fillColor
const fillColor
Updated corner button colors/classes
± Merged .about-btn + .speak-btn into .corner-btn ± Refactored speakkSVGpaths routine to rely on CSS for stroke/fill color
.about-btn
.speak-btn
.corner-btn
speakkSVGpaths
Refactored googleGPTshow(answer)
± Renamed elem var names for readability ± Replaced googleGPTdiv.querySelector('pre') from renderMathInElement() w/ answerPre
googleGPTdiv.querySelector('pre')
renderMathInElement()
googleGPTdiv.querySelector('section')
Localized 'Fatter Sidebar' menu label
Bumped chatgpt.js to 2.3.17
Updated googleGPTshow(answer)
± Added const fillColor
.speak
Added tooltip to play button
Removed unused sendSVG classes
sendSVG
Added speak functionality, refactored code
± Eliminated potentially unsafe .innerHTML dependency in googleGPTshow(answer) ± Replaced form + chatbar inits/refs w/ vars from new DOM routine
form
chatbar
Renamed .prefix to .app-name, shortened CSS selectors
.prefix
.app-name
Added Fatter Sidebar mode
Adjusted related query bubble padding
Added send icon to related query hovers
Changed light-mode color of chatbar stroke + send btn hover
Widened related queries div
Corrected selector for keydown listener removal
Replaced isDarkMode() calls in googleGPTstyle.innerText w/ scheme
googleGPTstyle.innerText
+- Reduced .loading's bottom padding
Defined launchAboutModal(), added nav back on no update found
launchAboutModal()
± Re-ordered script/menu function defs
Updated size/position of alerts + buttons
Updated hostContainer selector, bottom-padded .googlegpt-container
Updated related queries' styles
Bumped chatgpt.js to 2.3.16
Removed prefix from related queries menu cmd
Added keydown listener removal to handleSubmit()
Made related queries tabbable
Removed {} from unmodded err, added rqClickHandler() comment
{}
err
rqClickHandler()
Added compatibility meta
Added stroke/shadows to related query bubbles
Globalized RQ click handler, added RQ removal to handleSubmit()
± Shrank bottom-margin of related queries parent
Added padding/margin to loading + related queries divs
Renamed autosizeBox to autosizeChatbar
autosizeBox
autosizeChatbar
Renamed replyBox to chatbar + googlegpt-reply-box to googlegpt-chatbar
replyBox
googlegpt-reply-box
googlegpt-chatbar
Updated padding, re-positioned Send button
Applied fixed height to chatbar auto-sizer if 1-liner
Widened update modal
Shortened click handler in getRelatedQueries() call
Moved related queries menu cmd up
Shortened isDarkMode(), ensured boolean value return
Condensed getRelatedQueries()
Updated menu + chatbar width/border + Send button pos
± Converted menu cmd callbacks to arrow functions
Refined hostContainer to always target knowledge panel
Flipped related query bubble vertically
Added related queries generation/display
Bumped chatgpt.js to 2.3.15
Added feedback to use proxy API on OpenAI stream error
± Reformatted language customizer suffix
Bumped chatgpt.js to 2.3.14
Added OS/browser-level user scheme preference to isDakMode()
Localized chatbar placeholder text + send button tooltip
Added isChromium() + send button + dark scheme colors to chatbar text
Expanded match metas to global sites
Re-positioned speech balloon tip
Updated config.*URL's + msgHostDir, removed unused fatterSidebar
config.*URL
msgHostDir
fatterSidebar
Removed whitespace from meta + locale from greasyForkURL
greasyForkURL
Bumped chatgpt.js to 2.3.13
Added download/update/greasyfork URLs