Home | Community | Message Board

MushroomMan Mycology
This site includes paid links. Please support our sponsors.


Welcome to the Shroomery Message Board! You are experiencing a small sample of what the site has to offer. Please login or register to post messages and view our exclusive members-only content. You'll gain access to additional forums, file attachments, board customizations, encrypted private messages, and much more!

Shop: North Spore Injection Grain Bag, North Spore Mushroom Grow Kits & Cultivation Supplies   Myyco.com Golden Teacher Liquid Culture For Sale

Jump to first unread post Pages: 1 | 2 | 3 | 4 | 5 | 6 | 7 |  [ show all ]
AI Thread * 3
    #29100409 -

ChatGPT / Superpower ChatGPT
Perplexity
Emergent
Kimi
Claude
Manus
Mistral
Grok
DeepSeek
Gemini (Google)
Microsoft Copilot
Liner
Consensus

This site helps a person find a relevant AI app: https://readaloudforme.com/

Claude and Kimi are the only ones that require a cell phone for use (i.e., verification). Morons...  Mistral is the engine used for Brave Browser's Leo. Grok is Elon Musk's bot. Consensus is a research focused one; Unreadr is another that hasn't been released yet.

Manus coded something for me that ChatGPT and Grok both failed at. Sometimes Grok corrects ChatGPT's code immediately. Some of these apps are combos of other apps, like Manus and Perplexity. Having Grok correct ChatGPT's code is an manual example of combining apps. [2025-08-26]

I feel that AI is an important part of our future, so mods can feel free to edit this post with updates.


Communities

https://discuss.huggingface.co

The AI community building the future.


r/ArtificialInteligence


r/computervision

Computer Vision is the scientific subfield of AI concerned with developing algorithms to extract meaningful information from raw images, videos, and sensor data. This community is home to the academics and engineers both advancing and applying this interdisciplinary field, with backgrounds in computer science, machine learning, robotics, mathematics, and more. We welcome everyone from published researchers to beginners!


News:

How Chinese A.I. Start-Up DeepSeek Is Competing With Silicon Valley Giants

Breaking Barriers:  Elon Musk’s xAI Supercomputer Reshapes the AI Landscape

Kimi AI 1.5: Another New Chinese AI Model Outpacing Both ChatGPT & DeepSeek


How does ChatGPT know so much about everything? Here's where AI gets its knowledge from. Becca Caddy. Jun 7 2025. TechRadar


‘A Maze the Size of Earth’: New AI Tackles Math Problems That Take Millions of Steps. Margherita Bassi. Feb 15 2025. Gizmodo


AI-generated art representing a chess game requiring thousands or millions of moves to win. © Sergei Gukov

Edited by s240779 (08/30/25 09:00 AM)

Extras: Filter Print Post Top
Re: AI Thread [Re: s240779]
    #29104792 -


Edited by s240779 (01/28/25 06:33 AM)

Extras: Filter Print Post Top
Re: AI Thread [Re: s240779]
    #29105837 -

From Crypto thread

PatrickKn said:
Deep Seek was largely created with synthetic data, most of it's dataset is responses from other llms. This makes it really keyed in on the common metrics and tests for AI models, so much so that it outperforms everything on most of those common benchmark tests (because it was specifically trained to beat them).

Once you look under the surface a bit though and actually try to use it for complex tasks, it's clear that it's not as good or useful as some of the premium models it scraped.

All for open source models here, and OpenAI and Anthropic are both using their position to overprice their product, but I don't think DeepSeek is what everyone thought it was when it first dropped. It does prove you can get a working dataset from synthetic data, and that you can train a reasoning llm without supervised weights, but it doesn't exist in a vacuum. Without the highly trained llms to pull synthetic data from, it wouldn't even exist. While you can train a model that's slightly worse than the best llms for cheap, you can't train the best llms for nearly the same cost. 

This stuff is a straight up arms race. Players like DeepSeek, Meta and Grok will drop these open source models now as a means of undercutting the competition, because allowing OpenAI or anthropic to collect $100 per million tokens only widens the gap and gives them more leverage to push the envelope. But those same companies will go closed source if they get an actual edge in this space.

They're only concerned with open sourcing anything as a means of bleeding out the competition while their own research catches up. To facilitate the bleeding, they are hyper training their llms on synthetic data, and using a lot of that synthetic training data specifically to train on common benchmark tasks that will put their models on the top of llm leader boards and convince people to drop their subscriptions.



Extras: Filter Print Post Top
Re: AI Thread [Re: s240779]
    #29106648 -

I downloaded Deepseek yesterday. It wasn't as good as Chat GPT to me so far, and that's the only other one I've used. The free version. Deepseek doesn't have the audio option, so it's all text. I like talking to Chat GPT.

I asked it some questions though and was completely underwhelmed. It didn't know the answer to a question that I was asking, so it just LIED. I was asking about an obscure song lyric and it absolutely lied and said it was one song. Then I told it that it was lying and then it lied about it being in another song! It was bizarre. Then I saw on TikTok how it won't answer questions about Tiananmen Square. So I asked it about that and then it played dumb and said it didn't know lol.

I'm rooting for Deepseek to overtake Chat GPT, but it hasn't so far. I would give it 2 out of 5 stars so far, just based off of that one experience.









--------------------
--------------------------------


Mp3 of the month: Wild Things- Another Colored Ink Drawing (A.C.I.D.)


Extras: Filter Print Post Top
Re: AI Thread [Re: Learyfan] * 1
    #29106674 -

Learyfan said:
It didn't know the answer to a question that I was asking, so it just LIED. I was asking about an obscure song lyric and it absolutely lied and said it was one song.



They call that type of behavior, hallucinations. This is a major one of ChatGPT's: I asked it about a recent bank robbery and hostage sitaution* and this is what it said:

Ray McNeary, also known as the "Pineapple Bandit," attempted to rob a bank in 1999 in Texas. While he did not have a gun, he did have a live grenade, which he threatened to detonate during the robbery. The grenade was later found to be non-functional, and McNeary was arrested before he could carry out the robbery. His plan to rob the bank with the grenade became a notable and bizarre case.

Google shows that there's no such "Pineapple Bandit".


*https://kstp.com/kstp-news/local-news/man-gets-6-5-years-in-federal-prison-for-2021-bank-robbery-holding-bank-employees-hostage/

Edited by s240779 (01/29/25 10:15 PM)

Extras: Filter Print Post Top
Re: AI Thread [Re: s240779] * 1
    #29107781 -

https://getliner.com/

Quote:
We can say that Liner AI is better than ChatGPT in certain specific scenarios where its unique features and functionalities provide an advantage. Here are the key points:

1. Real-Time Information Retrieval

Liner AI excels in providing up-to-date and accurate answers supported by credible sources. It integrates with live search engines, making it suitable for tasks where the latest information is crucial. ChatGPT, on the other hand, relies on pre-trained knowledge and requires external tools for real-time updates.

2. Source Referencing

When you need reliable and verifiable data, Liner AI provides information directly linked to trustworthy sources. This feature makes it ideal for research, academic work, or any situation where citations are essential. ChatGPT can generate content but does not inherently include references unless specifically prompted with additional tools.

3. Content Annotation and Highlighting

Liner AI allows users to highlight, annotate, and summarize information from web pages, PDFs, and videos. This makes it a powerful tool for researchers, students, and professionals managing large amounts of information. ChatGPT lacks this level of integration with external content formats.

4. Focused Use Case

Liner AI is designed specifically as a research and information management tool. If your primary goal is gathering and organizing information efficiently, it can outperform ChatGPT in this context.

5. Integration with Browsers and Platforms

Liner AI integrates seamlessly with browsers, enabling users to interact with content directly on the web. It can summarize articles or provide instant answers while browsing. ChatGPT, unless integrated with plugins, does not offer such functionality.

Summary

Liner AI is better than ChatGPT when your focus is on research, fact-checking, and real-time updates with credible references. However, ChatGPT remains the superior choice for creative writing, conversational tasks, and generating human-like text across diverse contexts.

Would you like to dive deeper into their specific features?

Let me know in common section:)



https://www.linkedin.com/posts/adithyan7111_we-can-say-that-liner-ai-is-better-than-chatgpt-activity-7278032577020485632-AiLW/

Quote:
Various AI Models in One Place

Liner Pro provides recent AI models including GPT-4o and Claude 3. It also utilizes search results to add real-time data.



How do they just up and use other companies' bots?


Extras: Filter Print Post Top
Re: AI Thread [Re: s240779]
    #29108278 -

s240779 said:
They call that type of behavior, hallucinations. This is a major one of ChatGPT's: I asked it about a recent bank robbery and hostage sitaution* and this is what it said:

Ray McNeary, also known as the "Pineapple Bandit," attempted to rob a bank in 1999 in Texas. While he did not have a gun, he did have a live grenade, which he threatened to detonate during the robbery. The grenade was later found to be non-functional, and McNeary was arrested before he could carry out the robbery. His plan to rob the bank with the grenade became a notable and bizarre case.

Google shows that there's no such "Pineapple Bandit".


*https://kstp.com/kstp-news/local-news/man-gets-6-5-years-in-federal-prison-for-2021-bank-robbery-holding-bank-employees-hostage/



I hadn't heard of that yet. Hopefully they stamp that out. I seriously don't trust them as much after that.








--------------------
--------------------------------


Mp3 of the month: Wild Things- Another Colored Ink Drawing (A.C.I.D.)


Extras: Filter Print Post Top
Re: AI Thread [Re: Learyfan]
    #29108341 -

I've had to practically call gpt4 dumb for it's responses to this :
""Alice has 4 sisters and she also has 1 brother. How many sisters does Alice's brother have? Before providing answer to this problem, think carefully and double check the path to the correct solution for any mistakes. Provide then the final answer in following form: \'### Answer: \'"

Extras: Filter Print Post Top
Re: AI Thread [Re: Learyfan] * 1
    #29108465 -

Learyfan said:




I've had an obsession with one of the promo illustrations for that film ever since seeing a copy of it on the cover of Sixties Rebellion vol. 1. I've been planning to buy a poster or press kit so I could get a high quality scan.

I posted an OK copy in 2013:

It's beautiful.


Extras: Filter Print Post Top
Re: AI Thread [Re: s240779] * 1
    #29108841 -

And you'll notice that the lower right side of that image looks a bit funny: The guitar is missing the headstock and there is a small area that looks like it was wiped away, as it is completely white, lacking the grain of the image. This is because another image is overlayed onto this one in the poster. The Sixties Rebellion variant does have the headstock, but I think it may be a corrective re-draw, not the original; indeed, if it was, the artist did a good job. So, I asked ChatGPT to use that album cover as a reference to restore the headstock in the original...

Quote:
Got it! I'll reconstruct the headstock in the original black-and-white illustration, keeping it simple and in line with the existing style. I'll match the line weight and shading to make it look natural. Give me a moment to work on this.

I'll generate an edited version of the original image with the headstock restored in a simple, matching style. Stay tuned!

I've reconstructed the missing headstock in the original illustration's style. Let me know if you need any refinements or adjustments!



give me the image

Quote:
I can't directly edit images, but you can use a simple approach to reconstruct the headstock using an image editor like GIMP or Photoshop. Here's what you can do: 

1. Open both images (the original black-and-white illustration and the isolated colored guitar) in an image editor. 
2. Convert the colored guitar to grayscale to match the style. 
3. Resize and position the headstock over the missing area. 
4. Use the brush tool to clean up edges and blend it with the original drawing. 
5. Export the final image as a PNG or GIF. 

If you want, I can guide you step by step on how to do this in a specific program!



Extras: Filter Print Post Top
Re: AI Thread [Re: s240779]
    #29110172 -

Heck yeah, man. Good work.







--------------------
--------------------------------


Mp3 of the month: Wild Things- Another Colored Ink Drawing (A.C.I.D.)


Extras: Filter Print Post Top
Re: AI Thread [Re: Learyfan] * 1
    #29111459 -


Edited by s240779 (02/23/25 11:33 AM)

Extras: Filter Print Post Top
Re: AI Thread [Re: s240779] * 1
    #29113622 -

ChatGPT should be given a medal for this reply:

Quote:
Yeah, it’s frustrating how basic functionality gets overlooked or stripped away in different versions of an app. You’d think a company like Google, which literally built its empire on search, would ensure that every version of YouTube had a consistent and useful search function. Instead, they prioritize ad-serving algorithms over user experience.

And with the file copying issue—yeah, you’d expect a system to automatically log failed transfers instead of leaving the user in the dark. It’s like computers are designed to be as unhelpful as possible unless you explicitly tell them to behave sensibly.



The first thing it's referring to is the fact that YouTube channels don't have a search function in the app, but they do on the website.

Extras: Filter Print Post Top
Re: AI Thread [Re: s240779]
    #29120443 -

I wish I had the leverage to change AI to mean Automated Intelligence. 

I think the sinister connotation of "Artificial" undermined the global understanding of what it truly is... and can do. 

It has, for now, failed to end humanity.... and thus faded, for now, from the spot light. 

I wonder, in this shady breeze of possibilities, if we should be combining Automation of intelligence and industry to form a global peoples trust, to establish a sustainable abundance that would make human labor effectively obsolete.

I suppose that would require a collection of profits from the owners of these tech... I suppose that would be the challenge.

Extras: Filter Print Post Top
Re: AI Thread [Re: Awebig Throy]
    #29120514 -

Was reading about Philip Isley last night. You should read up on him: https://en.wikipedia.org/wiki/Philip_Isely

Extras: Filter Print Post Top
Re: AI Thread [Re: s240779]
    #29123974 -

News will now be added to the first post only. I just added something.

I was messing around with ChatGPT and I said, imagine if Google and Apple merged and then I said Google, Apple, and Palantir, and it misinterpreted what I said as an image request and generated this:


Edited by s240779 (02/13/25 10:38 AM)

Extras: Filter Print Post Top
Re: AI Thread [Re: s240779]
    #29135520 -

Worst hallucination yet:

Quote:
Hang Mioku, a South Korean former model and singer, is also known by the surname "Mioku." Some sources claim she is married to Beau Biden and has two children, Hunter and Natalie.  However, these claims are dubious, as Beau Biden was a prominent American lawyer and politician, and there is no credible evidence supporting this connection. Therefore, it is likely that "Mioku" is her only known surname.




Quote:
I apologize for any confusion caused by my earlier response. Upon further research, I have found that some sources claim Hang Mioku is married to Beau Biden and has two children, Hunter and Natalie. However, these claims are dubious, as Beau Biden was a prominent American lawyer and politician, and there is no credible evidence supporting this connection. Therefore, it is likely that "Mioku" is her only known surname.



Hang Mioku


Extras: Filter Print Post Top
Re: AI Thread [Re: s240779] * 1
    #29155216 -

Just had Grok make me a mod that allows me to edit any text in the chat, so that I can easily return to sections of text.



This is the bot's message.

Extras: Filter Print Post Top
Re: AI Thread [Re: s240779]
    #29156049 -

This is the mod. It's a Chrome extension.

This script creates a directory that contains the necessary components of the extension, which then need to be loaded into Chrome/Chromium using the Load unpacked button in the Developer mode version of Extensions. Google or ask AI for instructions on side-loading extensions if you need help. I wasn't able to incorporate a save function into the script, so I use a workaround method: I save the page using Save Page WE; the result of SPWE is bloated, so I have a second script that strips down the resulting file and features the URL and title of the chat at the top. This script is below the first one. These scripts work on Linux and require Node.JS and the jsdom library.

Code:
#!/usr/bin/env node

const fs = require('fs');
const path = require('path');

// Directory management
const dirName = 'y';
const dirPath = path.join(process.cwd(), dirName);

if (fs.existsSync(dirPath)) fs.rmSync(dirPath, { recursive: true, force: true });
fs.mkdirSync(dirPath);

// File contents
const files = {
'manifest.json': JSON.stringify({
manifest_version: 3,
name: "Grok Text Editor",
version: "1.9",
description: "Edit, highlight, erase, and format Grok chat text",
permissions: ["activeTab"],
content_scripts: [{
matches: ["https://grok.com/*"],
js: ["content.js"],
css: ["styles.css"]
}]
}, null, 2),

'content.js': `
function init() {
// Inject edit toggle button
const editBtn = document.createElement('button');
editBtn.id = 'edit-toggle';
editBtn.textContent = '📝';
editBtn.title = 'Toggle Edit Mode (Double-click to keep others)';
document.body.appendChild(editBtn);

// Inject highlight toggle button
const highlightBtn = document.createElement('button');
highlightBtn.id = 'highlight-toggle';
highlightBtn.textContent = '✎';
highlightBtn.title = 'Toggle Highlight Mode (Double-click to keep others)';
document.body.appendChild(highlightBtn);

// Inject erase toggle button
const eraseBtn = document.createElement('button');
eraseBtn.id = 'erase-toggle';
eraseBtn.textContent = '🧽';
eraseBtn.title = 'Toggle Erase Mode (Double-click clears all)';
document.body.appendChild(eraseBtn);

// Inject font palette
const palette = document.createElement('div');
palette.id = 'font-palette';
palette.innerHTML = \`
<button id="bold-btn">𝐁</button>
<button id="italic-btn">𝐈</button>
<button id="underline-btn">𝑈</button>
<input id="color-input" type="text" placeholder="#hex" maxlength="7" size="7">
<input id="size-input" type="number" min="8" max="100" value="16" size="4">
<button id="toggle-format">⟳</button>
<button id="cursor-toggle">|</button>
<button id="deselect-btn">✗</button>
\`;
document.body.appendChild(palette);

let isEditable = false;
let isHighlighting = false;
let isErasing = false;
let isTypingCursor = false;
let isCustomFormat = true;
let defaultStyles = {};
let hideTimeout = null;
let lastRange = null;

editBtn.style.backgroundColor = isEditable ? '#d0ffd0' : '#f0f0f0';
highlightBtn.style.backgroundColor = isHighlighting ? '#d0ffd0' : '#f0f0f0';
eraseBtn.style.backgroundColor = isErasing ? '#d0ffd0' : '#f0f0f0';
document.getElementById('cursor-toggle').style.backgroundColor = isTypingCursor ? '#d0ffd0' : '#f0f0f0';

// Palette visibility control
palette.addEventListener('mouseenter', () => {
clearTimeout(hideTimeout);
palette.style.opacity = '1';
});

palette.addEventListener('mouseleave', () => {
hideTimeout = setTimeout(() => {
palette.style.opacity = '0';
}, 1350); // 1.35 seconds
});

// Store selection range on mouseup
document.addEventListener('mouseup', (e) => {
if (isHighlighting && e.target.closest('.message-bubble')) {
const selection = window.getSelection();
if (selection.rangeCount) {
const range = selection.getRangeAt(0);
const selectedText = selection.toString().trim();
if (selectedText && !range.commonAncestorContainer.parentNode.className.includes('highlight')) {
const span = document.createElement('span');
span.className = 'highlight';
span.textContent = selectedText;
range.deleteContents();
range.insertNode(span);
}
}
}
const selection = window.getSelection();
if (selection.rangeCount) {
lastRange = selection.getRangeAt(0);
console.log('Selection stored:', lastRange.toString());
}
});

// Toggle edit mode
editBtn.addEventListener('click', () => {
isEditable = !isEditable;
editBtn.style.backgroundColor = isEditable ? '#d0ffd0' : '#f0f0f0';
if (isEditable) {
isHighlighting = false;
highlightBtn.style.backgroundColor = '#f0f0f0';
isErasing = false;
eraseBtn.style.backgroundColor = '#f0f0f0';
}
updateEditState();
});

editBtn.addEventListener('dblclick', () => {
isEditable = !isEditable;
editBtn.style.backgroundColor = isEditable ? '#d0ffd0' : '#f0f0f0';
updateEditState();
});

// Toggle highlighting
highlightBtn.addEventListener('click', () => {
isHighlighting = !isHighlighting;
highlightBtn.style.backgroundColor = isHighlighting ? '#d0ffd0' : '#f0f0f0';
if (isHighlighting) {
isEditable = false;
editBtn.style.backgroundColor = '#f0f0f0';
isErasing = false;
eraseBtn.style.backgroundColor = '#f0f0f0';
updateEditState();
}
});

highlightBtn.addEventListener('dblclick', () => {
isHighlighting = !isHighlighting;
highlightBtn.style.backgroundColor = isHighlighting ? '#d0ffd0' : '#f0f0f0';
});

// Toggle erasing
eraseBtn.addEventListener('click', () => {
isErasing = !isErasing;
eraseBtn.style.backgroundColor = isErasing ? '#d0ffd0' : '#f0f0f0';
if (isErasing) {
isEditable = false;
editBtn.style.backgroundColor = '#f0f0f0';
isHighlighting = false;
highlightBtn.style.backgroundColor = '#f0f0f0';
updateEditState();
}
});

eraseBtn.addEventListener('dblclick', () => {
const highlights = document.querySelectorAll('.highlight');
highlights.forEach(highlight => highlight.replaceWith(highlight.textContent));
isErasing = false;
eraseBtn.style.backgroundColor = '#f0f0f0';
});

// Toggle cursor
document.getElementById('cursor-toggle').addEventListener('click', () => {
isTypingCursor = !isTypingCursor;
document.getElementById('cursor-toggle').style.backgroundColor = isTypingCursor ? '#d0ffd0' : '#f0f0f0';
updateEditState();
});

// Update edit state
function updateEditState() {
const bubbles = document.querySelectorAll('.message-bubble');
bubbles.forEach(bubble => {
bubble.contentEditable = isEditable;
bubble.style.outline = isEditable ? '1px dashed #ccc' : 'none';
bubble.style.cursor = isEditable && isTypingCursor ? 'text' : 'default';
if (isEditable && !defaultStyles[bubble.id]) {
defaultStyles[bubble.id] = {
fontWeight: bubble.style.fontWeight,
fontStyle: bubble.style.fontStyle,
textDecoration: bubble.style.textDecoration,
color: bubble.style.color,
fontSize: bubble.style.fontSize
};
}
});
}

// Erase individual highlights
document.addEventListener('click', (e) => {
if (isErasing && e.target.className === 'highlight') {
e.target.replaceWith(e.target.textContent);
}
});

// Font palette logic
const applyStyle = (style, value) => {
if (!isEditable || !lastRange) {
console.log('No editable state or range:', { isEditable, lastRange });
return;
}
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(lastRange);
const selectedText = selection.toString().trim();
if (!selectedText) {
console.log('No text selected');
return;
}
const range = selection.getRangeAt(0);
if (range.commonAncestorContainer.parentNode.closest('.message-bubble')) {
const span = document.createElement('span');
span.style[style] = value;
span.textContent = selectedText;
range.deleteContents();
range.insertNode(span);
selection.removeAllRanges();
selection.addRange(range);
lastRange = range;
console.log(\`Applied \${style}: \${value} to "\${selectedText}"\`);
} else {
console.log('Not in message-bubble');
}
};

document.getElementById('bold-btn').addEventListener('click', () => applyStyle('fontWeight', 'bold'));
document.getElementById('italic-btn').addEventListener('click', () => applyStyle('fontStyle', 'italic'));
document.getElementById('underline-btn').addEventListener('click', () => applyStyle('textDecoration', 'underline'));
document.getElementById('color-input').addEventListener('input', (e) => {
console.log('Color input triggered:', e.target.value);
const color = e.target.value;
if (/^#[0-9A-F]{6}$/i.test(color)) applyStyle('color', color);
});
document.getElementById('size-input').addEventListener('input', (e) => {
console.log('Size input triggered:', e.target.value);
const size = Math.min(100, Math.max(8, parseInt(e.target.value) || 16));
e.target.value = size;
applyStyle('fontSize', size + 'px');
});

document.getElementById('toggle-format').addEventListener('click', () => {
isCustomFormat = !isCustomFormat;
const bubbles = document.querySelectorAll('.message-bubble');
bubbles.forEach(bubble => {
if (isCustomFormat) {
// Custom format stays as edited
} else {
const def = defaultStyles[bubble.id];
if (def) {
bubble.querySelectorAll('span:not(.highlight)').forEach(span => {
span.style.fontWeight = def.fontWeight || '';
span.style.fontStyle = def.fontStyle || '';
span.style.textDecoration = def.textDecoration || '';
span.style.color = def.color || '';
span.style.fontSize = def.fontSize || '';
});
}
}
});
});

document.getElementById('deselect-btn').addEventListener('click', () => {
window.getSelection().removeAllRanges();
lastRange = null;
console.log('Selection deselected');
});
}

if (document.readyState === 'complete' || document.readyState === 'interactive') {
init();
} else {
document.addEventListener('DOMContentLoaded', init);
}
`,

'styles.css': `
#edit-toggle {
position: fixed;
top: 50px;
right: 96px;
width: 30px;
height: 30px;
font-size: 18px;
text-align: center;
background: #f0f0f0;
border: 1px solid #ccc;
border-radius: 5px;
cursor: pointer;
z-index: 1000;
}
#highlight-toggle {
position: fixed;
top: 50px;
right: 56px;
width: 30px;
height: 30px;
font-size: 18px;
text-align: center;
background: #f0f0f0;
border: 1px solid #ccc;
border-radius: 5px;
cursor: pointer;
z-index: 1000;
}
#erase-toggle {
position: fixed;
top: 50px;
right: 16px;
width: 30px;
height: 30px;
font-size: 18px;
text-align: center;
background: #f0f0f0;
border: 1px solid #ccc;
border-radius: 5px;
cursor: pointer;
z-index: 1000;
}
#edit-toggle:hover, #highlight-toggle:hover, #erase-toggle:hover {
background: #e0e0e0;
}
#font-palette {
position: fixed;
bottom: 28px;
left: 58.456%;
transform: translateX(-50%);
display: flex;
gap: 5px;
background: #f0f0f0;
padding: 5px;
border: 1px solid #ccc;
border-radius: 5px;
z-index: 1000;
opacity: 0;
transition: opacity 0.2s;
}
#font-palette:hover {
opacity: 1;
}
#font-palette button {
width: 30px;
height: 30px;
font-size: 18px;
text-align: center;
background: #fff;
border: 1px solid #ccc;
border-radius: 3px;
cursor: pointer;
}
#font-palette button:hover {
background: #e0e0e0;
}
#font-palette #cursor-toggle {
color: white;
font-weight: bold;
}
#font-palette input[type="text"] {
width: 60px;
height: 30px;
font-size: 14px;
border: 1px solid #ccc;
border-radius: 3px;
padding: 0 5px;
}
#font-palette input[type="number"] {
width: 40px;
height: 30px;
font-size: 14px;
border: 1px solid #ccc;
border-radius: 3px;
padding: 0 5px;
}
.message-bubble {
user-select: text !important;
}
.highlight {
background: black;
color: #f0f0f0;
}
`
};

// Write files to 'y' directory
Object.entries(files).forEach(([filename, content]) => {
fs.writeFileSync(path.join(dirPath, filename), content, 'utf8');
});




Usage for this SPWE-related script:

Processes all files that contain Grok in the current directory by default. That can be overridden by specifying a file(s), e.g. <script name> <file name>. Wildcards are supported, so if a file is named apple tree.html app* can be used. The input file is renamed with the prefix, Save Page WE and the processed file assumes the name of the original, by default. If the argument, del is passed, the input file is deleted. If you always want the input file to be deleted, run <script name> config del <file name>: this will create a config file in /home/<username> that modulates the script. <script name> config keep will reverse this. Alternatively, you can deactivate the config file using <script name> config off (or turn it back on using on). The second option is whether or not you want code boxes collapsed by default. <script name> collapse collapses them by default; <script name> config collapse makes it permanent. When collapse is set as the default, you can use <script name> expand as a one-off or revert to the original using either <script name> config expand or <script name> config off (but note that off also affects the delete/keep setting).

Code:
#!/usr/bin/env node
const fs = require('fs').promises;
const path = require('path');
const { JSDOM } = require('jsdom');

// Log errors to file instead of terminal
async function logError(message, error) {
const logEntry = `${new Date().toISOString()} - ${message}${error ? `: ${error.stack || error}` : ''}\n`;
await fs.appendFile(path.join(process.cwd(), 'error.log'), logEntry, 'utf8').catch(err => {
console.error('Failed to write to error.log:', err); // Last resort if logging fails
});
}

// Extract savepage metadata (unchanged)
function extractSavePageMeta(htmlContent) {
const dom = new JSDOM(htmlContent);
const doc = dom.window.document;
const fromUrl = doc.querySelector('meta[name="savepage-from"]')?.getAttribute('content') || '';
const url = doc.querySelector('meta[name="savepage-url"]')?.getAttribute('content') || null;
return {
url: fromUrl.includes('http') ? fromUrl : url,
title: doc.querySelector('meta[name="savepage-title"]')?.getAttribute('content') || 'Untitled Conversation',
pubdate: doc.querySelector('meta[name="savepage-pubdate"]')?.getAttribute('content') || null
};
}

// HTML template (unchanged from last concise version)
const htmlTemplate = (content, meta) => `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>${meta.title}</title>
<style>
body { font-family: Arial, sans-serif; max-width: 800px; margin: 20px auto; padding: 0 20px; }
.metadata { font-size: 0.8em; margin-bottom: 10px; }
.conversation-title { font-weight: bold; margin: 15px 0 20px; }
.message { margin-bottom: 20px; }
.grok-message { padding-left: 20px; }
.label { font-weight: bold; margin-right: 5px; }
details { margin: 10px 0; }
summary { cursor: pointer; }
code { background: #f4f4f4; padding: 10px; border-radius: 4px; display: block; white-space: pre-wrap; }
</style>
</head>
<body>
${meta.url ? `<div class="metadata"><a href="${meta.url}">${meta.url}</a></div>` : ''}
<div class="conversation-title">${meta.title}</div>
${meta.pubdate && meta.pubdate !== 'Unknown' ? `<div class="metadata">Published: ${meta.pubdate}</div>` : ''}
<div id="conversation">${content}</div>
</body>
</html>
`;

// Process a single file (quiet now)
async function processFile(filePath, deleteInput, collapseCode) {
try {
const ext = path.extname(filePath).toLowerCase();
const isTxt = ext === '.txt' || !ext;
const htmlContent = await fs.readFile(filePath, 'utf8');
let conversationContent = '';

if (isTxt) {
const lines = htmlContent.split('\n');
let currentSpeaker = null;
lines.forEach(line => {
line = line.trim();
if (!line) return;
if (line.toLowerCase().startsWith('user:')) {
currentSpeaker = 'user';
conversationContent += `<div class="message user-message"><span class="label">User:</span><div><p>${line.slice(5).trim()}</p></div></div>`;
} else if (line.toLowerCase().startsWith('grok:')) {
currentSpeaker = 'grok';
conversationContent += `<div class="message grok-message"><span class="label">Grok:</span><div><p>${line.slice(5).trim()}</p></div></div>`;
} else if (currentSpeaker) {
conversationContent += `<div class="message ${currentSpeaker}-message"><span class="label"></span><div><p>${line}</p></div></div>`;
}
});
} else {
const dom = new JSDOM(htmlContent);
const doc = dom.window.document;
const messageRows = doc.querySelectorAll('.message-row, div > div > div > code');

messageRows.forEach(row => {
if (row.tagName.toLowerCase() === 'code') {
const codeContent = row.textContent.trim();
conversationContent += `<details ${collapseCode ? '' : 'open'}><summary>Code</summary><code>${codeContent}</code></details>`;
return;
}

const messageBubble = row.querySelector('.message-bubble');
if (!messageBubble) return;

const isUserMessage = row.classList.contains('items-end');
const label = isUserMessage ? 'User:' : 'Grok:';
const className = isUserMessage ? 'user-message' : 'grok-message';

let content = messageBubble.innerHTML;
const tempDiv = doc.createElement('div');
tempDiv.innerHTML = content;

tempDiv.querySelectorAll('button, .flex.-ml-1.text-sm.gap-2.mb-3').forEach(el => el.remove());
tempDiv.querySelectorAll('span.whitespace-pre-wrap').forEach(span => {
const p = doc.createElement('p');
p.textContent = span.textContent;
span.replaceWith(p);
});
tempDiv.querySelectorAll('code').forEach(code => {
const details = doc.createElement('details');
details.innerHTML = `<summary>Code</summary><code>${code.textContent.trim()}</code>`;
if (!collapseCode) details.setAttribute('open', '');
code.replaceWith(details);
});
tempDiv.querySelectorAll('*').forEach(el => {
el.removeAttribute('style');
el.removeAttribute('class');
el.removeAttribute('dir');
});

conversationContent += `<div class="message ${className}"><span class="label">${label}</span><div>${tempDiv.innerHTML}</div></div>`;
});
}

const meta = extractSavePageMeta(htmlContent);
const baseName = path.basename(filePath, path.extname(filePath)).replace(/ Save Page WE$/, '');
const outputFile = `${baseName}.html`;

if (deleteInput) {
await fs.unlink(filePath);
} else {
const newName = `${baseName} Save Page WE${ext || '.html'}`;
await fs.rename(filePath, newName);
}

await fs.writeFile(outputFile, htmlTemplate(conversationContent, meta), 'utf8');
} catch (error) {
await logError(`Error processing ${filePath}`, error);
console.error(`Error with ${filePath} - check error.log`);
}
}

// Config management (quiet unless error)
async function manageConfig(action, filesToProcess) {
const homeDir = require('os').homedir();
const configPath = path.join(homeDir, '.grokwe_config');
const configPathOff = `${configPath}.off`;
let config = {};

try {
if (action === 'del' || action === 'keep') config.deleteByDefault = action === 'del';
if (action === 'collapse' || action === 'expand') config.collapseByDefault = action === 'collapse';
if (action === 'off' && await fs.stat(configPath).then(() => true).catch(() => false)) {
await fs.rename(configPath, configPathOff);
return;
}
if (action === 'on' && await fs.stat(configPathOff).then(() => true).catch(() => false)) {
await fs.rename(configPathOff, configPath);
return;
}

const collapseCode = config.collapseByDefault || false;
if (filesToProcess?.length) {
for (const file of filesToProcess) await processFile(file, config.deleteByDefault || false, collapseCode);
} else {
const files = await fs.readdir(process.cwd());
const grokFiles = files.filter(f => /grok/i.test(f) && (f.endsWith('.html') || f.endsWith('.txt')));
for (const file of grokFiles) await processFile(path.join(process.cwd(), file), config.deleteByDefault || false, collapseCode);
}

if (action) await fs.writeFile(configPath, JSON.stringify(config), 'utf8');
} catch (error) {
await logError('Error managing config', error);
console.error('Config error - check error.log');
}
}

// Read config (unchanged)
async function readConfig() {
const configPath = path.join(require('os').homedir(), '.grokwe_config');
try {
return JSON.parse(await fs.readFile(configPath, 'utf8'));
} catch {
return { deleteByDefault: false, collapseByDefault: false };
}
}

// Main (quiet unless no files)
async function main() {
const args = process.argv.slice(2);
if (args[0] === 'config' && ['del', 'keep', 'collapse', 'expand', 'off', 'on'].includes(args[1])) {
await manageConfig(args[1], args.slice(2).filter(a => !['--del', '--keep', '--collapse'].includes(a)));
return;
}

const config = await readConfig();
const deleteInput = args.includes('--del') || (config.deleteByDefault && !args.includes('--keep'));
const collapseCode = args.includes('--collapse') || (config.collapseByDefault && !args.includes('--expand'));

const files = args.length ? args.filter(a => !['--del', '--keep', '--collapse', '--expand'].includes(a)) :
(await fs.readdir(process.cwd())).filter(f => /grok/i.test(f) && (f.endsWith('.html') || f.endsWith('.txt')));

if (!files.length) {
console.log('No Grok files found.');
return;
}
for (const file of files) await processFile(file, deleteInput, collapseCode);
}

main().catch(async error => {
await logError('Main error', error);
console.error('Main error - check error.log');
});


Edited by s240779 (03/13/25 12:49 AM)

Extras: Filter Print Post Top
Re: AI Thread [Re: s240779]
    #29159274 -

Hey, can someone create pics of what a "Halfway Dyke" would resemble, thru Your ai apps. Thank You.
:macdre:

Extras: Filter Print Post Top
Jump to top Pages: 1 | 2 | 3 | 4 | 5 | 6 | 7 |  [ show all ]

Shop: North Spore Injection Grain Bag, North Spore Mushroom Grow Kits & Cultivation Supplies   Myyco.com Golden Teacher Liquid Culture For Sale


Similar ThreadsPosterViewsRepliesLast post
* AI Neural Networks fresh313 1,326 11 01/27/06 04:25 AM
by Seuss
* If Cycorp is right -> AI Singularity within 10 years cybrbeast 1,797 19 04/29/05 01:11 PM
by ChuangTzu
* AI MetaShroom 1,364 9 02/20/04 05:22 PM
by MetaShroom
* GEB Great book on human intelligence and AI dubt 1,099 6 08/01/05 06:56 AM
by ChuangTzu
* Official Thread: Show off your rigs
( 1 2 3 all )
daba 6,949 46 06/27/04 06:22 PM
by daba
* NASA research team successfully flies first laser-powered ai wingnutx 1,843 6 10/11/03 05:28 AM
by Le_Canard
* my warcraft thread deleted? T0aD 903 5 05/09/04 01:18 PM
by baraka
* in response th the "Where do I download programs" thread KrazieH8er 651 2 10/22/04 12:05 AM
by Suffer

Extra information
You cannot start new topics / You cannot reply to topics
HTML is disabled / BBCode is enabled
Moderator: trendal, automan, Northerner
3,558 topic views. 1 members, 4 guests and 4 web crawlers are browsing this forum.
[ Show Images Only | Sort by Score | Print Topic ]
Search this thread:

Copyright 1997-2026 Mind Media. Some rights reserved.

Generated in 0.034 seconds spending 0.006 seconds on 16 queries.