Hey again, OnlyOffice Team!
Thanks a lot for the detailed reply; I really appreciate the time you took to go through my chaotic list of suggestions 
I have put together some clarifications and follow-ups for each point below. Hopefully, this clears things up a bit and maybe even sparks a few new ideas!
Exactly… It a small detail, but one that can completely change how people feel, they will have better experience… when you give users just a hint of guidance especially those newer generations that getting into this each year and for their first time.
I mean! for example! have you seen the Gentoo documentations? This is an OS mainly for hard core geeks right? yet… their documentation treat you like you just got struck by lightning and woke up in a terminal… step by step, zero assumptions,… It’s like being taught how to make a five-star dish by a chef who assumes you’ve never held a spoon.
I like to call it: “People won’t feel neglected.”
And honestly? This principle doesn’t just apply to the AI plugin… it’s something that could apply to the entire OnlyOffice experience.
Hummm No! (and yes maybe!) I explain…
Here on the OnlyOffice GitHub page: (yeah, I went full detective mode)
“onlyoffice.github.io/sdkjs-plugins/content/ai/scripts/engine/library.js at master · ONLYOFFICE/onlyoffice.github.io · GitHub”
From the line 467 to 540, we read:
Click to expand
getFixAndSpellPrompt(content) {
let prompt = `I want you to act as an editor and proofreader. \
I will provide you with some text that needs to be checked for spelling and grammar errors. \
Your task is to carefully review the text and correct any mistakes, \
ensuring that the corrected text is free of errors and maintains the original meaning. \
Only return the corrected text. \
Here is the text that needs revision: \"${content}\"`;
return prompt;
},
getSummarizationPrompt(content, language) {
let prompt = "Summarize the following text. ";
if (language) {
prompt += "and translate the result to " + language;
prompt += "Return only the resulting translated text.";
} else {
prompt += "Return only the resulting text.";
}
prompt += "Text: \"\"\"\n";
prompt += content;
prompt += "\n\"\"\"";
return prompt;
},
getTranslatePrompt(content, language) {
let prompt = "Translate the following text to " + language;
prompt += ". Return only the resulting text.";
prompt += "Text: \"\"\"\n";
prompt += content;
prompt += "\n\"\"\"";
return prompt;
},
getExplainPrompt(content) {
let prompt = "Explain what the following text means. Return only the resulting text.";
prompt += "Text: \"\"\"\n";
prompt += content;
prompt += "\n\"\"\"";
return prompt;
},
getTextLongerPrompt(content) {
let prompt = "Make the following text longer. Return only the resulting text.";
prompt += "Text: \"\"\"\n";
prompt += content;
prompt += "\n\"\"\"";
return prompt;
},
getTextShorterPrompt(content) {
let prompt = "Make the following text simpler. Return only the resulting text.";
prompt += "Text: \"\"\"\n";
prompt += content;
prompt += "\n\"\"\"";
return prompt;
},
getTextRewritePrompt(content) {
let prompt = "Rewrite the following text differently. Return only the resulting text.";
prompt += "Text: \"\"\"\n";
prompt += content;
prompt += "\n\"\"\"";
return prompt;
},
getTextKeywordsPrompt(content) {
let prompt = `Get Key words from this text: "${content}"`;
return prompt;
},
getExplainAsLinkPrompt(content) {
let prompt = "Give a link to the explanation of the following text. Return only the resulting link.";
prompt += "Text: \"\"\"\n";
prompt += content;
prompt += "\n\"\"\"";
return prompt;
},
getImageDescription() {
return "Describe in detail everything you see in this image. Mention the objects, their appearance, colors, arrangement, background, and any noticeable actions or interactions. Be as specific and accurate as possible. Avoid making assumptions about things that are not clearly visible."
},
getImagePromptOCR() {
return "Extract all text from this image as accurately as possible. Preserve original reading order and formatting if possible. Recognize tables and images if possible. Do not add or remove any content. Output recognized objects in md format if possible. If not, return plain text.";
}
};
we can see the default prompts… all written in English.
Now, I’m not saying that’s “wrong….” but here’s the issue: when you pass French (or any other language) into a small model that’s prompted in English… confusion happens.
Here’s the deal:
- Tiny models perform much better when prompts are clear and in the same language.
- Bigger models will benefit too… clarity always helps.
My suggestion:
Let us edit these system prompts from the UI. Just simple customization, plus a handy “restore to default” button in case we mess things up too much 
something like that:
Why it matters:
- It gives users freedom to adapt the AI to their projects, languages, or wild ideas.
- No more blaming the dev team when we want AI to do weird things like summarize a paragraph in pirate speak.
About the “yes maybe” Part:
Yes, having a custom prompt input would be AMAZING. Think about it:
- “Count how many A’s are in this text.”
- “Scatter the sentences randomly.” (Something that Teachers like to torture their students with)
- “Summarize this as a math problem.”
- “Translate to Klingon.” (Instant student exodus!
)
Hum… how about you select a text, hit Custom Prompt, and voilà! a text field opens where you can type anything. That’s power. That’s creativity. That’s chaos we all secretly crave.
Sure thing! Here’s the video:
I tried to add captions explaining each step, but let’s just say… video editing is not my superpower 
So here’s a quick breakdown of what you’re seeing:
- First, I switch to an online model… in this case, Gemini 1.5 Flash (which Google claims is an 8B model)
- I run a summary prompt on a French text… as expected, the result comes out in English. (Told ya, default prompts strike again
)
- Then I disconnect from the LAN run same exact prompt… and bam! A proud, mighty error pops up and forces me to save and close the document.
- Reconnect and everything is just cool…
Important note:
If the opened document hasn’t been modified, clicking “OK” on the error instantly closes it… no warning, no fuss, just vanished. It’s not about losing edits, it’s just… gone.
That’s what gave me the jump scare, not the data loss.
This doesn’t really bother me personally… but I figured: if I found it, someone else might hit it too. And maybe there’s a way to handle it more gracefully… like a gentle message saying “connection lost” instead of full-on doc closure.
Just throwing it out there in case it helps someone not panic 
Okay plot twist time! 
In your video, I noticed the chat panel appears as a sidebar on the screen. That’s amazing, because in my case, it shows up as a floating window
And honestly? That’s the only reason I suggested making it behave more like Facebook Chat… with a click to slide up/down behavior instead of “close,” just to avoid losing the conversation history.
But now… I’m curious… how to switch between the floating chat and the sidebar view? I totally missed it
an anchored window like on your video will prevent us from accidentally wiping the chat history by clicking “close”.
Either way, it looks like you’ve already covered it, and I love it. here my idea:
Yes… exactly! That’s the one powering those spicy little gguf models.
I know there are tools like LM Studio out there, but it tends to be heavier than it needs to be…
Now, integrating llama.cpp directly would open the door to some really exciting things… especially control over LLM parameters like the system prompt, temperature, and other juicy bits.
To be fair, most of my use cases are just for tinkering and testing (you know, breaking things for fun
), but still… having that level of access baked into OnlyOffice could really set the plugin apart.
And That’s a Wrap!
Thanks again for going through all my points… I know it’s a lot, but it all comes from a place of curiosity, enthusiasm, and way too much free time 
If any of these ideas find their way into a feature update someday, just know I’ll be somewhere in Algeria doing a happy dance next to my desk.
Can’t wait to see what comes next. Keep being awesome 