I made Clipboard Conqueror, A free copilot alternative that has everything you need to bring a local ChatGPT clone to any text box, anywhere on any desktop, Copy Paste Productivity. All local, data secure, no login, optional openAi key. Don't give big brother your workflow, share it with friends. reddit / selfhosted ---------------------------------------------------------------------- aseichter2007 · 2023-12-13 13:23 [aseichter2007/ClipboardConqueror: Clipboard conqueror is a novel omnipresent copilot alternative designed to bring your very own LLM AI assistant to any text field.](https://github.com/aseichter2007/ClipboardConqueror) Clipboard Conqueror is donationware, and it is extremely configurable. It will not collide with your workflow or other tools. it's lighter than a web browser. Well, CC is, the inferencing apis are resource hogs. I play around with it below but I use it every day as a copilot replacement, producing code, looking up the right function name or established packages, rubber ducking. The small local stuff has recently become actually good. All content present was generated from this post composition box and generated with local AI. The repo contains a wealth of knowledge oriented around running local AI and understanding it and how to control generation. The song in Quick Start Jam is a banger and accurate to the function of CC, I recommend starting there if you're unsure. Clipboard Conqueror is an AI prompt engineering tool, and a powerful copy paste enhancer that can store data like: |||name:save| assistant is Snoop dog. Be Snoop. Don't be user. Copy the and use that stored data to either write back: |||name,write| or send to local artificial intelligence: |||name|Hey snoop, how is it hanging dawg? copy\^ paste: Welcome to the dogghouse, baby girl! Snoop Dogg here, y'all. So you want me to be your homie? Just call me Snoop Doggy Dogg, fo sho. Whassup? there is a default agent: |||say cheese! Captain Clip grunts, "Cheese, huh? That's a funny Earthen word for some kinda dairy product. What's yer point, matey?" |||temperature:1.2| Clipboard Conqueror exposes the LLM settings. |||4000|return four thousand tokens max. and many powerful default agents that can be used together at will: |||tot,name,writer| Snoop, write me a manual for react.js in your voice. Chapter one, why react is bloated: What up, playa? Snoop Dogg here, y'all know me, Snoop Doggy Dogg. Now, let's talk about dis thang called React.js. I heard some folks be callin' it bloated, ya dig? Well, lemme show you why dat's no cappin'. ​ First off, we gotta understand what React.js is, ya know? It's a library, yeah, but a special one, 'cause it's made by dat Facebook company, ya dig? So it's like da bomb-tastic for buildin' dat fancy- schmancy stuff we see on websites these days, like dat news feed you be checkin' every five seconds. ​ Now, why some people be hatin' on it? Well, it's 'cause it's big, yo. Big in file size, big in learnin' curve, big in da performance hits it gives. But hold up, let's break it down like a delicious plate of doggie treats, ya dig? ​ ​ 1. It comes with lots of stuff, ya know? Like React Router, Redux, and all dem other reduxes. Some people be like, "Dang, man, I just want some reusable components, why you gotta give me da whole fridge?" But see, dat's da beauty of it, dog. It's like havin' da whole toolbox when you just need a screwdriver. Sure, you carryin' extra weight, but when you need it, you glad you got it, ya dig? ​ 2. React uses a technique called "virtual dom." It's like a copy of da real dom, ya know? It helps it be faster and more efficient, but it takes up more memory. But again, look at da trade-off: it makes React fast AF, like me in a sprint race against Usain Bolt. So it's worth it, dog. ​ 3. React has a way of updatin' da UI called "rendering." It can cause some lag sometimes, ya know? But listen close, cuz here's where it gets interesting: React.DOM v0.9 used to render all elements, but now it's smart enough to only render what changed. And den we got React.Fiber, which makes it even smarter, like dat AI chick from Person of Interest. So yeah, it improved, ya dig? ​ So, see, while React.js might seem bloated, it's actually packed wit' features like my jams be packed wit' slaps. It might take some extra space and time, but it gives you power and speed, like if I gave you my gold chain. And anyway, technology is like fashion, ya know? It changes fast, so what's bloated today might be skinny tomorrow. ​ So stop hating, dog, and start basking in da glory of React.js. Just remember to use it wisely, like I use my rhymes: keep it tight, keep it right, and you'll be alright, ya dig? [aseichter2007/ClipboardConqueror: Clipboard conqueror is a novel omnipresent copilot alternative designed to bring your very own LLM AI assistant to any text field.](https://github.com/aseichter2007/ClipboardConqueror) ---------------------------------------------------------------------- aseichter2007 · 2023-12-13 13:42 I haven't tested the openAI integration with chatGPT api yet if anyone could confirm that working it would be great. I lack keys or real interest, the local stuff does the job but laptops exist so I included the functionality to maximize Clipboard Conqueror's utility for any user. ---------------------------------------------------------------------- Diver-Significant · 2023-12-13 20:35 How difficult would it be to do a port of this into a browser extension so it could be used on something like a chromebook, etc.? ---------------------------------------------------------------------- aseichter2007 · 2023-12-13 21:44 Have you tried the stuff that exists? Grammarly, etc? [https://chromewebstore.google.com/detail/gpt-prompter/lcgpdbficokndjo dlcgflbhaibicompp](https://chromewebstore.google.com/detail/gpt- prompter/lcgpdbficokndjodlcgflbhaibicompp) It could be done, but I would need a reliable remote endpoint to hit and I don't have the pockets to keep that hosted. Plus LLMs are reportedly bad at browser plugin development so my help may be faulty. I'll keep it in mind and put it on the list, but I'm in panic marketing mode trying to get this project out to the world before I find a macdonalds to work at. My runway is gone. |||tell me about calling an api from a chrome browser extension As Captain Clip, I assume you want to know how to interact with external web services or applications from within a Google Chrome browser extension. In this context, using APIs (Application Programming Interfaces) is essential. Here's a step-by-step guide on how to do it: 1. Understand the basics: APIs provide a way for software applications to communicate with each other by exposing specific functionality. You can access and utilize resources or data from external services by sending requests through their APIs. 2. Choose the desired API: Decide which API you want to integrate into your Chrome extension. For example, if you want to integrate weather information, you might use an API like OpenWeatherMap or Dark Sky. Ensure that the API is accessible and provides documentation for developers. 3. Register and get your API key: Most public APIs require you to register for an account and obtain an API key to authenticate and manage usage limits. This process varies from one API provider to another but typically involves filling out a form on their website and receiving a unique API key. 4. Add permissions to your manifest file: To enable communication between your extension and the chosen API, add necessary permissions to your manifest.json file. For example, for fetching data from external resources, you would need the "activeTab" or "declarativeNetRequest" permission. 5. Write your code: Inside your background script (background.js), you can write code to make API calls. This usually involves creating a function to send a request, parsing the response, and processing the received data. For example: \`\`\`javascript const apiKey = 'YOUR\_API\_KEY'; // Replace with your actual API key function getWeatherData(location) { const url = \`https://api.openeathermap.org/geo/1.0/reverse?lat=${la t}&lon=${lon}&appid=${apiKey}\`; fetch(url) .then(response => response.json()) .then(data => { const weatherUrl = \`https://api.openweathermap.org/data/2.5/weather?q =${data.name}&appid=${apiKey}&units=metric\`; return fetch(weatherUrl); }) .then(response => response.json()) .then(weatherData => { // Process and display weather data }); } \`\`\` 6. Integrate with your extension's frontend: Once the API is successfully integrated into your background script, you can display the data received through the API within your browser extension's popup, options page, or toolbar button. 7. Test and deploy: Ensure your code works as intended, test your API integration by checking if you receive expected results, and submit your extension to the Chrome Web Store if needed. In summary, integrating an API into a Chrome browser extension involves understanding APIs, selecting the right one, registering for an API key, adding permissions, writing the necessary code, and displaying data from the API in your extension's frontend. |||tell me about the separation of the front and back end in a chrome plugin with code about how they interact In the context of a Chrome plugin development, the front-end and back- end separation refers to dividing the plugin into two distinct parts: the user interface and the functional logic. The front-end handles the presentation layer, creating the visual appearance and interaction experience for users. This includes HTML, CSS, and JavaScript files, which are used to develop the plugin's user interface within the browser. On the other hand, the back-end manages the core functionality of the plugin. It typically consists of JavaScript files for background scripts and can communicate with other web pages, browser features, and external APIs. In a Chrome plugin, this is done using the Chrome Extension APIs, which allow the plugin to interact with the browser environment and perform various actions. Interaction between the front-end and back-end happens through the use of messaging. When a user interacts with the front-end, it sends messages to the back-end using the "chrome.runtime.sendMessage()" function. The back-end, in turn, processes these messages and sends responses using "chrome.runtime.onMessage.addListener()". The back-end can also initiate actions in the front-end by sending messages via "chrome.tabs.sendMessage()" and receiving replies through "chrome.runtime.onMessageExternal". This enables a bidirectional communication between the front-end and back-end, ensuring a seamless user experience. It's important to note that while the front-end code runs within the context of the page, the back-end code runs in a separate process outside the web page. This separation improves performance, security, and helps organize the codebase for easier maintenance and development. ​ I need funding to pursue this, it'll be more than a weekend. It would be a lot less niche to put out a keyboard for android that supports my functionality. ---------------------------------------------------------------------- National_Fruit_1854 · 2023-12-14 16:42 I know how cool this is although I lack the understanding of exactly how you achieved this or how it works, although you did a good job of relaying how to use it. Just wanted to acknowledge your work . Definitely cool my friend. 😅 ---------------------------------------------------------------------- aseichter2007 · 2023-12-14 17:02 Thanks so much! If you need a hand getting it working, let me know where you are held up. Honestly my portion of the stack is small, my real heroes are the Koboldcpp devs and Llamma.cpp for making the inference work, I just consume apis and smash text together to make commanding AI as powerfully as possible within limits. ---------------------------------------------------------------------- National_Fruit_1854 · 2023-12-14 17:15 Thank you , I'll definitely reach out if I get stuck, but I also enjoy the process of learning how to implement and use awesome tech in my day to day . Also your documentation was entertaining and pretty damn informative. Respect 👊🏼 ---------------------------------------------------------------------- aseichter2007 · 2023-12-14 17:53 Thank you for the feedback, I've been worried they were opaque or too dense. That's a relief to hear. ---------------------------------------------------------------------- National_Fruit_1854 · 2023-12-18 21:16 I'm a little tight with cash right now but after the holidays I intend to try to contribute a little something for your work and effort. Wish I could do it sooner 🙏 ---------------------------------------------------------------------- aseichter2007 · 2023-12-19 07:37 Thanks a lot. I hope your travels with Clipboard Conqueror are productive and fun!