Compare commits

...

2 Commits

Author SHA1 Message Date
Thomas
34daf240f9
Update Dockerfile.buildkit (#1542)
corrected model download directory

Signed-off-by: Thomas <tvhdev@vonhaugwitz-softwaresolutions.de>
2023-10-21 14:56:06 -04:00
Victor Tsaran
721d854095
chat: improve accessibility fields (#1532)
Co-authored-by: cebtenzzre <cebtenzzre@gmail.com>
2023-10-21 10:38:46 -04:00
10 changed files with 59 additions and 64 deletions

View File

@ -18,6 +18,6 @@ COPY gpt4all_api/app /app
RUN mkdir -p /models RUN mkdir -p /models
# Include the following line to bake a model into the image and not have to download it on API start. # Include the following line to bake a model into the image and not have to download it on API start.
RUN wget -q --show-progress=off https://gpt4all.io/models/gguf/${MODEL_BIN} -P /models \ RUN wget -q --show-progress=off https://gpt4all.io/models/${MODEL_BIN} -P /models \
&& md5sum /models/${MODEL_BIN} && md5sum /models/${MODEL_BIN}

View File

@ -282,8 +282,8 @@ Window {
highlighted: comboBox.highlightedIndex === index highlighted: comboBox.highlightedIndex === index
} }
Accessible.role: Accessible.ComboBox Accessible.role: Accessible.ComboBox
Accessible.name: qsTr("ComboBox for displaying/picking the current model") Accessible.name: qsTr(List of available models"")
Accessible.description: qsTr("Use this for picking the current model to use; the first item is the current model") Accessible.description: qsTr(" The top item is the current model")
onActivated: function (index) { onActivated: function (index) {
currentChat.stopGenerating() currentChat.stopGenerating()
currentChat.reset(); currentChat.reset();
@ -307,7 +307,7 @@ Window {
running: parent.visible running: parent.visible
Accessible.role: Accessible.Animation Accessible.role: Accessible.Animation
Accessible.name: qsTr("Busy indicator") Accessible.name: qsTr("Busy indicator")
Accessible.description: qsTr("Displayed when the model is loading") Accessible.description: qsTr("loading model...")
} }
Label { Label {
@ -339,8 +339,8 @@ Window {
padding: 15 padding: 15
Accessible.role: Accessible.ButtonMenu Accessible.role: Accessible.ButtonMenu
Accessible.name: qsTr("Hamburger button") Accessible.name: qsTr("Main menu")
Accessible.description: qsTr("Hamburger button that reveals a drawer on the left of the application") Accessible.description: qsTr("Navigation drawer with options")
background: Item { background: Item {
anchors.centerIn: parent anchors.centerIn: parent
@ -389,7 +389,7 @@ Window {
Item { Item {
Accessible.role: Accessible.Dialog Accessible.role: Accessible.Dialog
Accessible.name: qsTr("Network dialog") Accessible.name: qsTr("Network dialog")
Accessible.description: qsTr("Dialog for opt-in to sharing feedback/conversations") Accessible.description: qsTr("opt-in to share feedback/conversations")
} }
} }
@ -405,7 +405,7 @@ Window {
padding: 15 padding: 15
toggled: MySettings.networkIsActive toggled: MySettings.networkIsActive
source: "qrc:/gpt4all/icons/network.svg" source: "qrc:/gpt4all/icons/network.svg"
Accessible.name: qsTr("Network button") Accessible.name: qsTr("Network")
Accessible.description: qsTr("Reveals a dialogue where you can opt-in for sharing data over network") Accessible.description: qsTr("Reveals a dialogue where you can opt-in for sharing data over network")
onClicked: { onClicked: {
@ -441,8 +441,8 @@ Window {
padding: 15 padding: 15
toggled: currentChat.collectionList.length toggled: currentChat.collectionList.length
source: "qrc:/gpt4all/icons/db.svg" source: "qrc:/gpt4all/icons/db.svg"
Accessible.name: qsTr("Add collections of documents to the chat") Accessible.name: qsTr("Add documents")
Accessible.description: qsTr("Provides a button to add collections of documents to the chat") Accessible.description: qsTr("add collections of documents to the chat")
onClicked: { onClicked: {
collectionsDialog.open() collectionsDialog.open()
@ -460,8 +460,8 @@ Window {
z: 200 z: 200
padding: 15 padding: 15
source: "qrc:/gpt4all/icons/settings.svg" source: "qrc:/gpt4all/icons/settings.svg"
Accessible.name: qsTr("Settings button") Accessible.name: qsTr("Settings")
Accessible.description: qsTr("Reveals a dialogue where you can change various settings") Accessible.description: qsTr("Reveals a dialogue with settings")
onClicked: { onClicked: {
settingsDialog.open() settingsDialog.open()
@ -528,7 +528,7 @@ Window {
z: 200 z: 200
padding: 15 padding: 15
source: "qrc:/gpt4all/icons/copy.svg" source: "qrc:/gpt4all/icons/copy.svg"
Accessible.name: qsTr("Copy button") Accessible.name: qsTr("Copy")
Accessible.description: qsTr("Copy the conversation to the clipboard") Accessible.description: qsTr("Copy the conversation to the clipboard")
TextEdit{ TextEdit{
@ -595,7 +595,7 @@ Window {
source: "qrc:/gpt4all/icons/regenerate.svg" source: "qrc:/gpt4all/icons/regenerate.svg"
Accessible.name: text Accessible.name: text
Accessible.description: qsTr("Reset the context which erases current conversation") Accessible.description: qsTr("Reset the context and erase current conversation")
onClicked: { onClicked: {
Network.sendResetContext(chatModel.count) Network.sendResetContext(chatModel.count)
@ -623,7 +623,7 @@ Window {
font.pixelSize: theme.fontSizeLarge font.pixelSize: theme.fontSizeLarge
Accessible.role: Accessible.Dialog Accessible.role: Accessible.Dialog
Accessible.name: text Accessible.name: text
Accessible.description: qsTr("Dialog indicating an error") Accessible.description: qsTr("Error dialog")
} }
background: Rectangle { background: Rectangle {
anchors.fill: parent anchors.fill: parent
@ -641,7 +641,7 @@ Window {
height: window.height - (window.height * .1) height: window.height - (window.height * .1)
Item { Item {
Accessible.role: Accessible.Dialog Accessible.role: Accessible.Dialog
Accessible.name: qsTr("Download new models dialog") Accessible.name: qsTr("Download new models")
Accessible.description: qsTr("Dialog for downloading new models") Accessible.description: qsTr("Dialog for downloading new models")
} }
} }
@ -740,8 +740,8 @@ Window {
ScrollBar.vertical: ScrollBar { policy: ScrollBar.AlwaysOn } ScrollBar.vertical: ScrollBar { policy: ScrollBar.AlwaysOn }
Accessible.role: Accessible.List Accessible.role: Accessible.List
Accessible.name: qsTr("List of prompt/response pairs") Accessible.name: qsTr("Conversation with the model")
Accessible.description: qsTr("This is the list of prompt/response pairs comprising the actual conversation with the model") Accessible.description: qsTr("prompt / response pairs from the conversation")
delegate: TextArea { delegate: TextArea {
id: myTextArea id: myTextArea
@ -811,7 +811,7 @@ Window {
running: (currentResponse ? true : false) && value === "" && currentChat.responseInProgress running: (currentResponse ? true : false) && value === "" && currentChat.responseInProgress
Accessible.role: Accessible.Animation Accessible.role: Accessible.Animation
Accessible.name: qsTr("Busy indicator") Accessible.name: qsTr("Busy indicator")
Accessible.description: qsTr("Displayed when the model is thinking") Accessible.description: qsTr("The model is thinking")
} }
Label { Label {
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
@ -1053,7 +1053,7 @@ Window {
} }
Accessible.role: Accessible.EditableText Accessible.role: Accessible.EditableText
Accessible.name: placeholderText Accessible.name: placeholderText
Accessible.description: qsTr("Textfield for sending messages/prompts to the model") Accessible.description: qsTr("Send messages/prompts to the model")
Keys.onReturnPressed: (event)=> { Keys.onReturnPressed: (event)=> {
if (event.modifiers & Qt.ControlModifier || event.modifiers & Qt.ShiftModifier) if (event.modifiers & Qt.ControlModifier || event.modifiers & Qt.ShiftModifier)
event.accepted = false; event.accepted = false;
@ -1090,7 +1090,7 @@ Window {
height: 30 height: 30
visible: !currentChat.isServer visible: !currentChat.isServer
source: "qrc:/gpt4all/icons/send_message.svg" source: "qrc:/gpt4all/icons/send_message.svg"
Accessible.name: qsTr("Send the message button") Accessible.name: qsTr("Send message")
Accessible.description: qsTr("Sends the message/prompt contained in textfield to the model") Accessible.description: qsTr("Sends the message/prompt contained in textfield to the model")
onClicked: { onClicked: {

View File

@ -35,8 +35,8 @@ MySettingsTab {
Layout.fillWidth: false Layout.fillWidth: false
model: ["Dark", "Light"] model: ["Dark", "Light"]
Accessible.role: Accessible.ComboBox Accessible.role: Accessible.ComboBox
Accessible.name: qsTr("ComboBox for displaying/picking the color theme") Accessible.name: qsTr("Color theme")
Accessible.description: qsTr("Use this for picking the color theme for the chat client to use") Accessible.description: qsTr("Color theme for the chat client to use")
function updateModel() { function updateModel() {
themeBox.currentIndex = themeBox.indexOfValue(MySettings.chatTheme); themeBox.currentIndex = themeBox.indexOfValue(MySettings.chatTheme);
} }
@ -70,8 +70,8 @@ MySettingsTab {
Layout.fillWidth: false Layout.fillWidth: false
model: ["Small", "Medium", "Large"] model: ["Small", "Medium", "Large"]
Accessible.role: Accessible.ComboBox Accessible.role: Accessible.ComboBox
Accessible.name: qsTr("ComboBox for displaying/picking the font size") Accessible.name: qsTr("Font size")
Accessible.description: qsTr("Use this for picking the font size of the chat client") Accessible.description: qsTr("Font size of the chat client")
function updateModel() { function updateModel() {
fontBox.currentIndex = fontBox.indexOfValue(MySettings.fontSize); fontBox.currentIndex = fontBox.indexOfValue(MySettings.fontSize);
} }
@ -105,8 +105,8 @@ MySettingsTab {
Layout.fillWidth: false Layout.fillWidth: false
model: MySettings.deviceList model: MySettings.deviceList
Accessible.role: Accessible.ComboBox Accessible.role: Accessible.ComboBox
Accessible.name: qsTr("ComboBox for displaying/picking the device") Accessible.name: qsTr("Device")
Accessible.description: qsTr("Use this for picking the device of the chat client") Accessible.description: qsTr("Device of the chat client")
function updateModel() { function updateModel() {
deviceBox.currentIndex = deviceBox.indexOfValue(MySettings.device); deviceBox.currentIndex = deviceBox.indexOfValue(MySettings.device);
} }
@ -143,8 +143,8 @@ MySettingsTab {
Layout.fillWidth: true Layout.fillWidth: true
model: ModelList.userDefaultModelList model: ModelList.userDefaultModelList
Accessible.role: Accessible.ComboBox Accessible.role: Accessible.ComboBox
Accessible.name: qsTr("ComboBox for displaying/picking the default model") Accessible.name: qsTr("Default model")
Accessible.description: qsTr("Use this for picking the default model to use; the first item is the current default model") Accessible.description: qsTr("Default model to use; the first item is the current default model")
function updateModel() { function updateModel() {
comboBox.currentIndex = comboBox.indexOfValue(MySettings.userDefaultModel); comboBox.currentIndex = comboBox.indexOfValue(MySettings.userDefaultModel);
} }
@ -194,7 +194,7 @@ MySettingsTab {
Layout.row: 5 Layout.row: 5
Layout.column: 2 Layout.column: 2
text: qsTr("Browse") text: qsTr("Browse")
Accessible.description: qsTr("Opens a folder picker dialog to choose where to save model files") Accessible.description: qsTr("Choose where to save model files")
onClicked: { onClicked: {
openFolderDialog("file://" + MySettings.modelPath, function(selectedFolder) { openFolderDialog("file://" + MySettings.modelPath, function(selectedFolder) {
MySettings.modelPath = selectedFolder MySettings.modelPath = selectedFolder

View File

@ -31,8 +31,8 @@ Drawer {
anchors.margins: 10 anchors.margins: 10
Accessible.role: Accessible.Pane Accessible.role: Accessible.Pane
Accessible.name: qsTr("Drawer on the left of the application") Accessible.name: qsTr("Drawer")
Accessible.description: qsTr("Drawer that is revealed by pressing the hamburger button") Accessible.description: qsTr("Main navigation drawer")
MyButton { MyButton {
id: newChat id: newChat
@ -42,7 +42,7 @@ Drawer {
topPadding: 20 topPadding: 20
bottomPadding: 20 bottomPadding: 20
text: qsTr("\uFF0B New chat") text: qsTr("\uFF0B New chat")
Accessible.description: qsTr("Use this to create a new chat") Accessible.description: qsTr("Create a new chat")
background: Rectangle { background: Rectangle {
border.color: newChat.down ? theme.backgroundLightest : theme.buttonBorder border.color: newChat.down ? theme.backgroundLightest : theme.buttonBorder
border.width: 2 border.width: 2
@ -135,7 +135,7 @@ Drawer {
} }
Accessible.role: Accessible.Button Accessible.role: Accessible.Button
Accessible.name: qsTr("Select the current chat") Accessible.name: qsTr("Select the current chat")
Accessible.description: qsTr("Provides a button to select the current chat or edit the chat when in edit mode") Accessible.description: qsTr("Select the current chat or edit the chat when in edit mode")
} }
Row { Row {
id: buttons id: buttons
@ -155,8 +155,7 @@ Drawer {
chatName.readOnly = false chatName.readOnly = false
chatName.selectByMouse = true chatName.selectByMouse = true
} }
Accessible.name: qsTr("Edit the chat name") Accessible.name: qsTr("Edit chat name")
Accessible.description: qsTr("Provides a button to edit the chat name")
} }
MyToolButton { MyToolButton {
id: trashButton id: trashButton
@ -168,8 +167,7 @@ Drawer {
trashQuestionDisplayed = true trashQuestionDisplayed = true
timer.start() timer.start()
} }
Accessible.name: qsTr("Delete of the chat") Accessible.name: qsTr("Delete chat")
Accessible.description: qsTr("Provides a button to delete the chat")
} }
} }
Rectangle { Rectangle {
@ -207,8 +205,7 @@ Drawer {
Network.sendRemoveChat() Network.sendRemoveChat()
} }
Accessible.role: Accessible.Button Accessible.role: Accessible.Button
Accessible.name: qsTr("Confirm delete of the chat") Accessible.name: qsTr("Confirm chat deletion")
Accessible.description: qsTr("Provides a button to confirm delete of the chat")
} }
Button { Button {
id: cancel id: cancel
@ -230,8 +227,7 @@ Drawer {
trashQuestionDisplayed = false trashQuestionDisplayed = false
} }
Accessible.role: Accessible.Button Accessible.role: Accessible.Button
Accessible.name: qsTr("Cancel the delete of the chat") Accessible.name: qsTr("Cancel chat deletion")
Accessible.description: qsTr("Provides a button to cancel delete of the chat")
} }
} }
} }
@ -256,7 +252,7 @@ Drawer {
anchors.bottomMargin: 10 anchors.bottomMargin: 10
text: qsTr("Updates") text: qsTr("Updates")
font.pixelSize: theme.fontSizeLarge font.pixelSize: theme.fontSizeLarge
Accessible.description: qsTr("Use this to launch an external application that will check for updates to the installer") Accessible.description: qsTr("Launch an external application that will check for updates to the installer")
onClicked: { onClicked: {
if (!LLM.checkForUpdates()) if (!LLM.checkForUpdates())
checkForUpdatesError.open() checkForUpdatesError.open()
@ -270,7 +266,7 @@ Drawer {
anchors.bottom: aboutButton.top anchors.bottom: aboutButton.top
anchors.bottomMargin: 10 anchors.bottomMargin: 10
text: qsTr("Downloads") text: qsTr("Downloads")
Accessible.description: qsTr("Use this to launch a dialog to download new models") Accessible.description: qsTr("Launch a dialog to download new models")
onClicked: { onClicked: {
downloadClicked() downloadClicked()
} }
@ -282,7 +278,7 @@ Drawer {
anchors.right: parent.right anchors.right: parent.right
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
text: qsTr("About") text: qsTr("About")
Accessible.description: qsTr("Use this to launch a dialog to show the about page") Accessible.description: qsTr("Launch a dialog to show the about page")
onClicked: { onClicked: {
aboutClicked() aboutClicked()
} }

View File

@ -83,7 +83,7 @@ MySettingsTab {
text: qsTr("Add") text: qsTr("Add")
Accessible.role: Accessible.Button Accessible.role: Accessible.Button
Accessible.name: text Accessible.name: text
Accessible.description: qsTr("Add button") Accessible.description: qsTr("Add collection")
onClicked: { onClicked: {
var isError = false; var isError = false;
if (root.collection === "") { if (root.collection === "") {

View File

@ -125,7 +125,7 @@ MyDialog {
Layout.fillWidth: true Layout.fillWidth: true
Layout.alignment: Qt.AlignTop | Qt.AlignHCenter Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
visible: !isChatGPT && !installed && !calcHash && downloadError === "" visible: !isChatGPT && !installed && !calcHash && downloadError === ""
Accessible.description: qsTr("Cancel/Resume/Download button to stop/restart/start the download") Accessible.description: qsTr("Stop/restart/start the download")
background: Rectangle { background: Rectangle {
border.color: downloadButton.down ? theme.backgroundLightest : theme.buttonBorder border.color: downloadButton.down ? theme.backgroundLightest : theme.buttonBorder
border.width: 2 border.width: 2
@ -151,7 +151,7 @@ MyDialog {
Layout.fillWidth: true Layout.fillWidth: true
Layout.alignment: Qt.AlignTop | Qt.AlignHCenter Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
visible: installed || downloadError !== "" visible: installed || downloadError !== ""
Accessible.description: qsTr("Remove button to remove model from filesystem") Accessible.description: qsTr("Remove model from filesystem")
background: Rectangle { background: Rectangle {
border.color: removeButton.down ? theme.backgroundLightest : theme.buttonBorder border.color: removeButton.down ? theme.backgroundLightest : theme.buttonBorder
border.width: 2 border.width: 2
@ -186,8 +186,8 @@ MyDialog {
Download.installModel(filename, openaiKey.text); Download.installModel(filename, openaiKey.text);
} }
Accessible.role: Accessible.Button Accessible.role: Accessible.Button
Accessible.name: qsTr("Install button") Accessible.name: qsTr("Install")
Accessible.description: qsTr("Install button to install chatgpt model") Accessible.description: qsTr("Install chatGPT model")
} }
ColumnLayout { ColumnLayout {
@ -385,7 +385,7 @@ MyDialog {
linkColor: theme.textColor linkColor: theme.textColor
Accessible.role: Accessible.Paragraph Accessible.role: Accessible.Paragraph
Accessible.name: qsTr("Description") Accessible.name: qsTr("Description")
Accessible.description: qsTr("The description of the file") Accessible.description: qsTr("File description")
onLinkActivated: Qt.openUrlExternally(link) onLinkActivated: Qt.openUrlExternally(link)
} }
} }
@ -456,7 +456,7 @@ MyDialog {
} }
MyButton { MyButton {
text: qsTr("Browse") text: qsTr("Browse")
Accessible.description: qsTr("Opens a folder picker dialog to choose where to save model files") Accessible.description: qsTr("Choose where to save model files")
onClicked: modelPathDialog.open() onClicked: modelPathDialog.open()
} }
} }

View File

@ -69,7 +69,7 @@ Item {
font.pixelSize: theme.fontSizeLarge font.pixelSize: theme.fontSizeLarge
Accessible.role: Accessible.Button Accessible.role: Accessible.Button
Accessible.name: text Accessible.name: text
Accessible.description: qsTr("Restores the settings dialog to a default state") Accessible.description: qsTr("Restores settings dialog to a default state")
onClicked: { onClicked: {
root.restoreDefaultsClicked(); root.restoreDefaultsClicked();
} }

View File

@ -89,7 +89,7 @@ NOTE: By turning on this feature, you will be sending your data to the GPT4All O
} }
Accessible.role: Accessible.EditableText Accessible.role: Accessible.EditableText
Accessible.name: qsTr("Attribution (optional)") Accessible.name: qsTr("Attribution (optional)")
Accessible.description: qsTr("Textfield for providing attribution") Accessible.description: qsTr("Provide attribution")
onEditingFinished: { onEditingFinished: {
MySettings.networkAttribution = attribution.text; MySettings.networkAttribution = attribution.text;
} }
@ -103,12 +103,12 @@ NOTE: By turning on this feature, you will be sending your data to the GPT4All O
spacing: 10 spacing: 10
MyButton { MyButton {
text: qsTr("Enable") text: qsTr("Enable")
Accessible.description: qsTr("Enable opt-in button") Accessible.description: qsTr("Enable opt-in")
DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole
} }
MyButton { MyButton {
text: qsTr("Cancel") text: qsTr("Cancel")
Accessible.description: qsTr("Cancel opt-in button") Accessible.description: qsTr("Cancel opt-in")
DialogButtonBox.buttonRole: DialogButtonBox.RejectRole DialogButtonBox.buttonRole: DialogButtonBox.RejectRole
} }
background: Rectangle { background: Rectangle {

View File

@ -21,8 +21,8 @@ MyDialog {
Item { Item {
Accessible.role: Accessible.Dialog Accessible.role: Accessible.Dialog
Accessible.name: qsTr("Settings dialog") Accessible.name: qsTr("Settings")
Accessible.description: qsTr("Dialog containing various application settings") Accessible.description: qsTr("Contains various application settings")
} }
ListModel { ListModel {

View File

@ -133,7 +133,6 @@ model release that uses your data!")
font.pixelSize: theme.fontSizeLarge font.pixelSize: theme.fontSizeLarge
Accessible.role: Accessible.Paragraph Accessible.role: Accessible.Paragraph
Accessible.name: qsTr("Opt-in for anonymous usage statistics") Accessible.name: qsTr("Opt-in for anonymous usage statistics")
Accessible.description: qsTr("Label for opt-in")
} }
ButtonGroup { ButtonGroup {
@ -162,7 +161,7 @@ model release that uses your data!")
font.pixelSize: theme.fontSizeLarge font.pixelSize: theme.fontSizeLarge
Accessible.role: Accessible.RadioButton Accessible.role: Accessible.RadioButton
Accessible.name: qsTr("Opt-in for anonymous usage statistics") Accessible.name: qsTr("Opt-in for anonymous usage statistics")
Accessible.description: qsTr("Radio button to allow opt-in for anonymous usage statistics") Accessible.description: qsTr("Allow opt-in for anonymous usage statistics")
background: Rectangle { background: Rectangle {
color: "transparent" color: "transparent"
@ -203,7 +202,7 @@ model release that uses your data!")
font.pixelSize: theme.fontSizeLarge font.pixelSize: theme.fontSizeLarge
Accessible.role: Accessible.RadioButton Accessible.role: Accessible.RadioButton
Accessible.name: qsTr("Opt-out for anonymous usage statistics") Accessible.name: qsTr("Opt-out for anonymous usage statistics")
Accessible.description: qsTr("Radio button to allow opt-out for anonymous usage statistics") Accessible.description: qsTr("Allow opt-out for anonymous usage statistics")
background: Rectangle { background: Rectangle {
color: "transparent" color: "transparent"
@ -249,7 +248,7 @@ model release that uses your data!")
font.pixelSize: theme.fontSizeLarge font.pixelSize: theme.fontSizeLarge
Accessible.role: Accessible.Paragraph Accessible.role: Accessible.Paragraph
Accessible.name: qsTr("Opt-in for network") Accessible.name: qsTr("Opt-in for network")
Accessible.description: qsTr("Checkbox to allow opt-in for network") Accessible.description: qsTr("Allow opt-in for network")
} }
ButtonGroup { ButtonGroup {
@ -276,7 +275,7 @@ model release that uses your data!")
font.pixelSize: theme.fontSizeLarge font.pixelSize: theme.fontSizeLarge
Accessible.role: Accessible.RadioButton Accessible.role: Accessible.RadioButton
Accessible.name: qsTr("Opt-in for network") Accessible.name: qsTr("Opt-in for network")
Accessible.description: qsTr("Radio button to allow opt-in anonymous sharing of chats to the GPT4All Datalake") Accessible.description: qsTr("Allow opt-in anonymous sharing of chats to the GPT4All Datalake")
background: Rectangle { background: Rectangle {
color: "transparent" color: "transparent"
@ -317,7 +316,7 @@ model release that uses your data!")
font.pixelSize: theme.fontSizeLarge font.pixelSize: theme.fontSizeLarge
Accessible.role: Accessible.RadioButton Accessible.role: Accessible.RadioButton
Accessible.name: qsTr("Opt-out for network") Accessible.name: qsTr("Opt-out for network")
Accessible.description: qsTr("Radio button to allow opt-out anonymous sharing of chats to the GPT4All Datalake") Accessible.description: qsTr("Allow opt-out anonymous sharing of chats to the GPT4All Datalake")
background: Rectangle { background: Rectangle {
color: "transparent" color: "transparent"