diff --git a/README.md b/README.md index 64fc9ca..573f349 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- +

AI + Tools + Plugins + Community

@@ -29,12 +29,8 @@ |Preview|Preview| |---|---| -|![theme-dark](./assets/noi-theme-dark.png)|![theme-light](./assets/noi-theme-light.png)| -|![batch-ask](./assets/noi-batch-ask.png)|![settings-prompts](./assets/noi-settings-prompts.png)| - ---- - -[![Star History Chart](https://api.star-history.com/svg?repos=lencx/Noi&type=Timeline)](https://star-history.com/#lencx/Noi&Timeline) +|![theme-dark](./website/static/readme/noi-theme-dark.png)|![theme-light](./website/static/readme/noi-theme-light.png)| +|![batch-ask](./website/static/readme/noi-batch-ask.png)|![settings-prompts](./website/static/readme/noi-settings-prompts.png)| ## FAQ @@ -46,7 +42,7 @@ If you encounter the error message "Noi" is damaged and can't be opened. You sho xattr -cr /Applications/Noi.app ``` -![mac-install-error](assets/mac-install-error.png) +![mac-install-error](./website/static/readme/mac-install-error.png) ## TODO @@ -58,4 +54,4 @@ xattr -cr /Applications/Noi.app 国内用户如果遇到使用问题或者想交流 Noi,可以关注公众号「**浮之静**」,发送 “**noi**” 进群参与讨论。如果 Noi 应用对你有帮助可以分享给更多人,或者微信扫码打赏。 - + diff --git a/assets/mac-install-error.png b/assets/mac-install-error.png deleted file mode 100644 index fc8a20c..0000000 Binary files a/assets/mac-install-error.png and /dev/null differ diff --git a/assets/noi-batch-ask.png b/assets/noi-batch-ask.png deleted file mode 100644 index 5651bde..0000000 Binary files a/assets/noi-batch-ask.png and /dev/null differ diff --git a/assets/noi-logo.png b/assets/noi-logo.png deleted file mode 100644 index 920a987..0000000 Binary files a/assets/noi-logo.png and /dev/null differ diff --git a/assets/noi-settings-prompts.png b/assets/noi-settings-prompts.png deleted file mode 100644 index aa7a742..0000000 Binary files a/assets/noi-settings-prompts.png and /dev/null differ diff --git a/assets/noi-theme-dark.png b/assets/noi-theme-dark.png deleted file mode 100644 index f47926a..0000000 Binary files a/assets/noi-theme-dark.png and /dev/null differ diff --git a/assets/noi-theme-light.png b/assets/noi-theme-light.png deleted file mode 100644 index fbd9057..0000000 Binary files a/assets/noi-theme-light.png and /dev/null differ diff --git a/configs/noi.mode.json b/configs/noi.mode.json index 0ee6b67..f21f3a1 100644 --- a/configs/noi.mode.json +++ b/configs/noi.mode.json @@ -1,6 +1,6 @@ { "name": "Noi Mode", - "version": "0.1.3", + "version": "0.1.4", "sync": "https://github.com/lencx/noi/blob/main/configs/noi.mode.json", "modes": [ { @@ -21,6 +21,12 @@ "dir": true, "text": "Community" }, + { + "id": "noi@design", + "parent": 0, + "dir": true, + "text": "Design" + }, { "id": "noi:chatgpt", "parent": "noi@ai", @@ -69,6 +75,18 @@ "text": "Pi", "url": "https://pi.ai/talk" }, + { + "id": "noi:coze", + "parent": "noi@ai", + "text": "Coze", + "url": "https://www.coze.com/home" + }, + { + "id": "noi:you", + "parent": "noi@ai", + "text": "YOU", + "url": "https://you.com" + }, { "id": "noi:github", "parent": "noi@dev", @@ -104,6 +122,24 @@ "parent": "noi@community", "text": "Discord", "url": "https://discord.com" + }, + { + "id": "noi:hackernews", + "parent": "noi@community", + "text": "Hacker News", + "url": "https://news.ycombinator.com" + }, + { + "id": "noi:figma", + "parent": "noi@design", + "text": "Figma", + "url": "https://www.figma.com" + }, + { + "id": "noi:dribbble", + "parent": "noi@design", + "text": "Dribbble", + "url": "https://dribbble.com" } ] -} \ No newline at end of file +} diff --git a/extensions/noi-ask/main.js b/extensions/noi-ask/main.js index 070e677..082b9a1 100644 --- a/extensions/noi-ask/main.js +++ b/extensions/noi-ask/main.js @@ -7,7 +7,7 @@ class NoiAsk { static sync(message) { - const inputElement = document.querySelector(`textarea`); + const inputElement = document.querySelector('textarea'); if (inputElement) { const nativeTextareaSetter = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, 'value').set; nativeTextareaSetter.call(inputElement, message); @@ -41,7 +41,7 @@ class OpenAIAsk extends NoiAsk { static url = 'https://chat.openai.com'; static submit() { - const btn = document.querySelector(`button[data-testid="send-button"]`); + const btn = document.querySelector('button[data-testid="send-button"]'); if (btn) this.autoClick(btn); } } @@ -51,7 +51,7 @@ class PoeAsk extends NoiAsk { static url = 'https://poe.com'; static submit() { - const btn = document.querySelectorAll(`button[class*="ChatMessageSendButton_sendButton"]`)[0]; + const btn = document.querySelectorAll('button[class*="ChatMessageSendButton_sendButton"]')[0]; if (btn) this.autoClick(btn); } } @@ -61,7 +61,7 @@ class ClaudeAsk extends NoiAsk { static url = 'https://claude.ai'; static sync(message) { - const inputElement = document.querySelector(`div.ProseMirror`); + const inputElement = document.querySelector('div.ProseMirror'); if (inputElement) { inputElement.focus(); inputElement.innerHTML = ''; @@ -71,12 +71,12 @@ class ClaudeAsk extends NoiAsk { static submit() { // subsequent screens use this - let btn = document.querySelector(`button[aria-label*="Send Message"]`); + let btn = document.querySelector('button[aria-label*="Send Message"]'); if (!btn) { // new chats use this - btn = document.querySelector(`button:has(div svg)`); + btn = document.querySelector('button:has(div svg)'); } if (!btn) { // last ditch attempt - btn = document.querySelector(`button:has(svg)`); + btn = document.querySelector('button:has(svg)'); } if (btn) this.autoClick(btn); } @@ -87,7 +87,7 @@ class BardAsk extends NoiAsk { static url = 'https://bard.google.com'; static sync(message) { - const inputElement = document.querySelector(`.ql-editor.textarea`); + const inputElement = document.querySelector('.ql-editor.textarea'); if (inputElement) { const inputEvent = new Event('input', { bubbles: true }); inputElement.value = message; @@ -98,7 +98,7 @@ class BardAsk extends NoiAsk { } static submit() { - const btn = document.querySelector(`button[aria-label*="Send message"]`); + const btn = document.querySelector('button[aria-label*="Send message"]'); if (btn) { btn.setAttribute('aria-disabled', 'false'); // doesn't work alone btn.focus(); @@ -112,7 +112,7 @@ class HuggingChatAsk extends NoiAsk { static url = 'https://huggingface.co/chat'; static sync(message) { - var inputElement = document.querySelector(`textarea[placeholder*="Ask anything"]`); + var inputElement = document.querySelector('textarea[placeholder*="Ask anything"]'); if (inputElement) { const inputEvent = new Event('input', { bubbles: true }); inputElement.value = message; @@ -121,7 +121,7 @@ class HuggingChatAsk extends NoiAsk { } static submit() { - var btn = document.querySelector(`form.relative > div > button[type="submit"]`); + var btn = document.querySelector('form.relative > div > button[type="submit"]'); if (btn) this.autoClick(btn); } } @@ -131,7 +131,7 @@ class PerplexityAsk extends NoiAsk { static url = 'https://www.perplexity.ai'; static submit() { - const btns = Array.from(document.querySelectorAll(`button.bg-super`)); + const btns = Array.from(document.querySelectorAll('button.bg-super')); if (btns[0]) { const btnsWithSvgPath = btns.filter(button => button.querySelector('svg path')); const btn = btnsWithSvgPath[btnsWithSvgPath.length - 1]; @@ -197,6 +197,32 @@ class PiAsk extends NoiAsk { } } +class CozeAsk extends NoiAsk { + static name = 'Coze'; + static url = 'https://www.coze.com/home'; + + static submit() { + const inputElement = document.querySelector('textarea'); + if (inputElement) { + const nextElement = inputElement.nextElementSibling; + if (nextElement) { + const btn = nextElement.querySelector('button'); + if (btn) btn.click(); + } + } + } +} + +class YouAsk extends NoiAsk { + static name = 'YouAsk'; + static url = 'https://you.com'; + + static submit() { + const btn = document.querySelector('button[data-eventactionname="click_send"]'); + if (btn) btn.click(); + } +} + window.NoiAsk = { OpenAIAsk, PoeAsk, @@ -206,4 +232,6 @@ window.NoiAsk = { PerplexityAsk, CopilotAsk, PiAsk, + CozeAsk, + YouAsk, }; diff --git a/extensions/noi-ask/manifest.json b/extensions/noi-ask/manifest.json index 69a7b40..830fd71 100644 --- a/extensions/noi-ask/manifest.json +++ b/extensions/noi-ask/manifest.json @@ -1,8 +1,9 @@ { "manifest_version": 3, "name": "@noi/ask", - "version": "0.1.0", + "version": "0.1.1", "homepage": "https://github.com/lencx/Noi/tree/main/extensions/noi-ask", + "description": "The best assistant for batch asking and quick typing of prompts.", "content_scripts": [ { "matches": [ @@ -13,7 +14,9 @@ "https://huggingface.co/chat/*", "https://www.perplexity.ai/*", "https://copilot.microsoft.com/*", - "https://pi.ai/talk/*" + "https://pi.ai/talk/*", + "https://www.coze.com/home/*", + "https://you.com/*" ], "js": ["main.js"], "run_at": "document_end", diff --git a/extensions/noi-export-chatgpt/manifest.json b/extensions/noi-export-chatgpt/manifest.json index 95c6383..774dfa1 100644 --- a/extensions/noi-export-chatgpt/manifest.json +++ b/extensions/noi-export-chatgpt/manifest.json @@ -3,6 +3,7 @@ "name": "@noi/export-chatgpt", "version": "0.1.0", "homepage": "https://github.com/lencx/Noi/tree/main/extensions/noi-export-chatgpt", + "description": "ChatGPT chat history export, supports PDF, Image, and Markdown formats.", "content_scripts": [ { "matches": ["https://*.openai.com/*"], diff --git a/extensions/noi-reset/manifest.json b/extensions/noi-reset/manifest.json index 56edc23..38c90d5 100644 --- a/extensions/noi-reset/manifest.json +++ b/extensions/noi-reset/manifest.json @@ -3,6 +3,7 @@ "name": "@noi/reset", "version": "0.1.0", "homepage": "https://github.com/lencx/Noi/tree/main/extensions/noi-reset", + "description": "Reset certain website styles to enhance compatibility with Noi.", "content_scripts": [ { "matches": [ diff --git a/extensions/noi.extensions.json b/extensions/noi.extensions.json new file mode 100644 index 0000000..1b61699 --- /dev/null +++ b/extensions/noi.extensions.json @@ -0,0 +1,27 @@ +{ + "name": "Noi Extensions", + "homepage": "https://github.com/lencx/Noi/blob/main/extensions/noi.extensions.json", + "extensions": [ + { + "name": "@noi/ask", + "description": "The best assistant for batch asking and quick typing of prompts.", + "version": "0.1.1", + "url": "https://github.com/lencx/Noi/tree/main/extensions/noi-ask", + "disabled": false + }, + { + "name": "@noi/export-chatgpt", + "description": "ChatGPT chat history export, supports PDF, Image, and Markdown formats.", + "version": "0.1.0", + "url": "https://github.com/lencx/Noi/tree/main/extensions/noi-export-chatgpt", + "disabled": false + }, + { + "name": "@noi/reset", + "description": "Reset certain website styles to enhance compatibility with Noi.", + "version": "0.1.0", + "url": "https://github.com/lencx/Noi/tree/main/extensions/noi-reset", + "disabled": false + } + ] +} \ No newline at end of file