About this project

Prompt Save Reuse is a Manifest V3 browser extension for Chrome and Edge that stores the text you have typed into an AI chat composer and puts it back when you want it. It is aimed at people who retype or re-paste the same instructions across chat sessions and want a one-gesture way to keep them. Supported platforms (seven): ChatGPT, Gemini, Claude, Perplexity, Grok, Mistral and DeepSeek. Interaction model - Single click on the composer or the toolbar icon: saves the current composer text for this conversation URL. If the composer is empty, it restores the text saved for that URL instead. - Double click on the composer or the toolbar icon: appends the saved text below the current composer content, separated by a blank line. - Right click on the toolbar icon: context menu with clear all saved data, open the user guide, open the developer profile. - Keyboard shortcuts: Ctrl+Shift+1 to save, Ctrl+Shift+2 to append. There is no popup and no side panel; the whole interface is the composer plus the toolbar button. Saved text is kept in chrome.storage.sync, so it follows the browser profile across devices. Installation - Chrome Web Store and Microsoft Edge Add-ons listings are linked in the README. - From source: clone the repository, open chrome://extensions, enable Developer mode, click Load unpacked and select the repository folder. There is no build step and no dependencies; the stack is plain JavaScript. Permissions and privacy - storage: save prompts keyed by conversation URL in chrome.storage.sync. - activeTab: act on the chat tab currently in use. - scripting: run save and append functions in that tab for shortcuts and the toolbar icon. - contextMenus: provide the right-click menu on the toolbar icon. The README states there is no host permission beyond the seven matched chat domains, no network request of the extension's own, and no analytics. Notable engineering details described by the author - Two gestures on one target without a popup: because browsers have no native double-click event for a toolbar action, background.js and content.js each hold a 300 ms timer. The first click schedules the single-click handler; a second click inside the window cancels it and runs the double-click handler. The stated consequence is that every single-click action is deliberately delayed by 300 ms. - One insertion path across seven chat UIs: findInputField() is an ordered selector cascade rather than per-site branches, covering ProseMirror contenteditable, ChatGPT's #prompt-textarea, a Quill .ql-editor, Perplexity's #ask-input and DeepSeek's placeholder-matched textarea. insertText() branches three ways because framework-controlled inputs overwrite direct .value assignment: the prototype native value setter plus a dispatched input event for textarea and input, document.execCommand("insertText") for Lexical editors, and innerHTML plus an input event for other contenteditable composers. - The composer does not exist when the content script runs: all seven sites are single-page apps and the input is mounted later and remounted on navigation, so a MutationObserver watches for it and re-attaches listeners. - Storage keyed by URL: one saved prompt per conversation, in chrome.storage.sync rather than local, so it follows the browser profile; the trade-off is the sync quota, where a long enough prompt will not save. Known limitations stated in the README - Selectors are the fragile part: when a platform ships a new composer, findInputField() stops matching and the extension goes quiet on that site until the selector list is updated. - A failed save is silent; if no input field is found, nothing tells the user (tracked in issue #13). - chrome.storage.sync has quotas; a long enough prompt exceeds the per-item size limit and does not save. - Single-click actions carry a 300 ms delay by design. - No automated tests (tracked in issues #8 and #9). - One prompt per URL: there is no named prompt library, and saving again overwrites. Project status and contributing - Chrome Web Store listing is live at version 3.0; Edge Add-ons listing is live. - Contributions are open, with issues labelled good first issue and hacktoberfest; CONTRIBUTING.md and CODE_OF_CONDUCT.md are referenced. Testing guidance is to load the unpacked extension and exercise the change on at least one of the seven supported sites. - Contact is via GitHub issues or LinkedIn (linkedin.com/in/atj393). Licence A custom licence, not MIT. The README summarises it as granting the right to use, modify and publish changes for the purpose of contributing to this project, requiring derivative works to keep the same terms, and expressly prohibiting private use, commercial use, sublicensing and redistributing the software as-is without modification. The full text is in the license file.