mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-10-17 23:38:00 +00:00
Added formatting options to the chat (#690)
Build and Release / Read metadata (push) Waiting to run
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg updater) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-pc-windows-msvc.exe, win-arm64, windows-latest, aarch64-pc-windows-msvc, nsis updater) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage deb updater) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg updater) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis updater) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage deb updater) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions
Build and Release / Read metadata (push) Waiting to run
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg updater) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-pc-windows-msvc.exe, win-arm64, windows-latest, aarch64-pc-windows-msvc, nsis updater) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage deb updater) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg updater) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis updater) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage deb updater) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions
This commit is contained in:
1 parent
2f5a300e74
commit
24e72de9a2
8 files changed
+214
-16
No files matched your search
@@ -25,4 +25,109 @@ window.clearDiv = function (divName) {
|
||||
|
||||
window.scrollToBottom = function(element) {
|
||||
element.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'nearest' });
|
||||
}
|
||||
}
|
||||
|
||||
window.formatChatInputMarkdown = function (inputId, formatType) {
|
||||
let input = document.getElementById(inputId)
|
||||
if (input && input.tagName !== 'TEXTAREA' && input.tagName !== 'INPUT')
|
||||
input = input.querySelector('textarea, input')
|
||||
|
||||
if (!input)
|
||||
return ''
|
||||
|
||||
input.focus()
|
||||
|
||||
const value = input.value ?? ''
|
||||
const start = input.selectionStart ?? value.length
|
||||
const end = input.selectionEnd ?? value.length
|
||||
const hasSelection = end > start
|
||||
const selectedText = value.substring(start, end)
|
||||
|
||||
let insertedText = ''
|
||||
let selectionStart = start
|
||||
let selectionEnd = start
|
||||
|
||||
switch (formatType) {
|
||||
case 'bold': {
|
||||
const text = hasSelection ? selectedText : ''
|
||||
insertedText = `**${text}**`
|
||||
selectionStart = start + 2
|
||||
selectionEnd = selectionStart + text.length
|
||||
break
|
||||
}
|
||||
|
||||
case 'italic': {
|
||||
const text = hasSelection ? selectedText : ''
|
||||
insertedText = `*${text}*`
|
||||
selectionStart = start + 1
|
||||
selectionEnd = selectionStart + text.length
|
||||
break
|
||||
}
|
||||
|
||||
case 'heading': {
|
||||
if (hasSelection) {
|
||||
insertedText = selectedText
|
||||
.split('\n')
|
||||
.map(line => line.startsWith('# ') ? line : `# ${line}`)
|
||||
.join('\n')
|
||||
|
||||
selectionStart = start
|
||||
selectionEnd = start + insertedText.length
|
||||
} else {
|
||||
const text = ''
|
||||
insertedText = `# ${text}`
|
||||
selectionStart = start + 2
|
||||
selectionEnd = selectionStart + text.length
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
|
||||
case 'bullet_list': {
|
||||
if (hasSelection) {
|
||||
insertedText = selectedText
|
||||
.split('\n')
|
||||
.map(line => line.startsWith('- ') ? line : `- ${line}`)
|
||||
.join('\n')
|
||||
|
||||
selectionStart = start
|
||||
selectionEnd = start + insertedText.length
|
||||
} else {
|
||||
insertedText = '- '
|
||||
selectionStart = start + 2
|
||||
selectionEnd = start + insertedText.length
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
|
||||
case 'code':
|
||||
default: {
|
||||
if (hasSelection) {
|
||||
if (selectedText.includes('\n')) {
|
||||
insertedText = `\`\`\`\n${selectedText}\n\`\`\``
|
||||
selectionStart = start + 4
|
||||
selectionEnd = selectionStart + selectedText.length
|
||||
} else {
|
||||
insertedText = `\`${selectedText}\``
|
||||
selectionStart = start + 1
|
||||
selectionEnd = selectionStart + selectedText.length
|
||||
}
|
||||
} else {
|
||||
const text = ''
|
||||
insertedText = `\`${text}\``
|
||||
selectionStart = start + 1
|
||||
selectionEnd = selectionStart + text.length
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
const nextValue = value.slice(0, start) + insertedText + value.slice(end)
|
||||
input.value = nextValue
|
||||
input.setSelectionRange(selectionStart, selectionEnd)
|
||||
input.dispatchEvent(new Event('input', { bubbles: true }))
|
||||
|
||||
return nextValue
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
# v26.3.1, build 235 (2026-03-xx xx:xx UTC)
|
||||
- Added support for the new Qwen 3.5 model family.
|
||||
- Added a reminder in chats and assistants that LLMs can make mistakes, helping you double-check important information more easily.
|
||||
- Added the ability to format your user prompt in the chat using icons instead of typing Markdown directly.
|
||||
- Improved the performance by caching the OS language detection and requesting the user language only once per app start.
|
||||
- Improved the chat performance by reducing unnecessary UI updates, making chats smoother and more responsive, especially in longer conversations.
|
||||
- Improved the workspace loading experience: when opening the chat for the first time, your workspaces now appear faster and load step by step in the background, with placeholder rows so the app feels responsive right away.
|
||||
|
||||
Reference in new issue
Block a user