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| |---|---| -||| -||| - ---- - -[](https://star-history.com/#lencx/Noi&Timeline) +||| +||| ## 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 ``` - + ## 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