Compare commits
220 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a4d26b2bda | ||
|
|
d7961f2510 | ||
|
|
45f5214ec9 | ||
|
|
5e1e770aee | ||
|
|
5eb18d00d3 | ||
|
|
bcbfd44e1f | ||
|
|
073c619d89 | ||
|
|
71ab8cfba4 | ||
|
|
0ec812099c | ||
|
|
f7f05a0538 | ||
|
|
82a0ab0d9e | ||
|
|
60b24da482 | ||
|
|
66d209e4c6 | ||
|
|
0c9ab4e17e | ||
|
|
fff3a68b29 | ||
|
|
580a104894 | ||
|
|
3fe9b6e121 | ||
|
|
6979d1a775 | ||
|
|
90385ce461 | ||
|
|
c579e6ec99 | ||
|
|
b8d93cfd17 | ||
|
|
359f28f5c1 | ||
|
|
6e8bff8493 | ||
|
|
ad25d5a50f | ||
|
|
4b17601baf | ||
|
|
c994307954 | ||
|
|
a13ffd22f1 | ||
|
|
7b8f40e117 | ||
|
|
add4dad8c0 | ||
|
|
7faa805176 | ||
|
|
91651b918e | ||
|
|
725e0930fe | ||
|
|
93ba903fc8 | ||
|
|
56064831d3 | ||
|
|
4bdb813b64 | ||
|
|
ad69887e4a | ||
|
|
c8f148d1f8 | ||
|
|
365e39a20a | ||
|
|
48c2fd2e81 | ||
|
|
3a5dc568c5 | ||
|
|
a180f7a46c | ||
|
|
07a12ba41f | ||
|
|
dd5351a3de | ||
|
|
ae48a17301 | ||
|
|
9e19698788 | ||
|
|
323725df33 | ||
|
|
7c40420048 | ||
|
|
fac51aefb9 | ||
|
|
8f1fbc511a | ||
|
|
f0bf112faf | ||
|
|
b2a15b92cd | ||
|
|
9b71bbea2e | ||
|
|
2645ab3732 | ||
|
|
8672c4ac40 | ||
|
|
b8bfd54515 | ||
|
|
a29d245381 | ||
|
|
f57427e2c4 | ||
|
|
3631f06075 | ||
|
|
67a66f85da | ||
|
|
16f620b034 | ||
|
|
77b32b4912 | ||
|
|
257197d4d8 | ||
|
|
19cc97a1c4 | ||
|
|
93652cd9f7 | ||
|
|
540a0dc915 | ||
|
|
54c1b9a96e | ||
|
|
a9663b45fc | ||
|
|
9bf029f8b3 | ||
|
|
a94d1dfc92 | ||
|
|
e90ef93a04 | ||
|
|
a7ba5da943 | ||
|
|
1e287dde6f | ||
|
|
05461fb03a | ||
|
|
aa79368b54 | ||
|
|
cb4e52f103 | ||
|
|
91fc745d2f | ||
|
|
a719783cce | ||
|
|
766636718a | ||
|
|
59d2430e2f | ||
|
|
074b4dc643 | ||
|
|
92dd56b0c4 | ||
|
|
25c414faa3 | ||
|
|
dc2df81c75 | ||
|
|
ddc50ce621 | ||
|
|
701fae92a0 | ||
|
|
f3d22219b4 | ||
|
|
0027cf7c59 | ||
|
|
b6c45fc346 | ||
|
|
e6f2902bd1 | ||
|
|
1190e367bb | ||
|
|
d619f55ff2 | ||
|
|
605d837716 | ||
|
|
3aa57c6d2f | ||
|
|
1cf2f04b06 | ||
|
|
780de2b753 | ||
|
|
e19511469d | ||
|
|
bedf1a9bc5 | ||
|
|
6e330448e6 | ||
|
|
31802da0e3 | ||
|
|
9fae5b2cf2 | ||
|
|
cde62c3511 | ||
|
|
2b6256ff25 | ||
|
|
0c9fd6685b | ||
|
|
999f7a7151 | ||
|
|
a1397ef09e | ||
|
|
a43aac0c66 | ||
|
|
06747abcb9 | ||
|
|
8bce45cf71 | ||
|
|
084654582a | ||
|
|
29d5023cf4 | ||
|
|
a0c50c4b50 | ||
|
|
45a8d23347 | ||
|
|
6d87f4c52b | ||
|
|
8352d016cc | ||
|
|
2dd9623ea9 | ||
|
|
9e6fba0e7f | ||
|
|
e89ef2aa37 | ||
|
|
8ed8c6d04b | ||
|
|
913a7a0b39 | ||
|
|
8dabb27689 | ||
|
|
db0daa1f41 | ||
|
|
748406b2c0 | ||
|
|
46b43ca670 | ||
|
|
471159417c | ||
|
|
5b92186930 | ||
|
|
cde081acb5 | ||
|
|
4af0f718bc | ||
|
|
dac4c36caa | ||
|
|
96bdf360df | ||
|
|
54fbe3b505 | ||
|
|
3f76dfdbe9 | ||
|
|
763cb98b33 | ||
|
|
eb2379585a | ||
|
|
541b5e032f | ||
|
|
43c24c9150 | ||
|
|
ada2893069 | ||
|
|
9707bdc2bb | ||
|
|
157c43e969 | ||
|
|
1a04082564 | ||
|
|
f2e6f1aac8 | ||
|
|
672a28c620 | ||
|
|
a7c8170ba4 | ||
|
|
3ee402b297 | ||
|
|
9080e84089 | ||
|
|
e8f4f8aa89 | ||
|
|
d8138a80de | ||
|
|
208e24b17e | ||
|
|
77904b3dd2 | ||
|
|
831e47fe15 | ||
|
|
21f0c9dafd | ||
|
|
83ea27f736 | ||
|
|
a62d193edf | ||
|
|
ef280c8836 | ||
|
|
7bbbe54d6c | ||
|
|
0c6d34bd30 | ||
|
|
d7987fa4a5 | ||
|
|
f7a777f26c | ||
|
|
e507ef891b | ||
|
|
e488b9bddc | ||
|
|
c9c990df58 | ||
|
|
d4a7576432 | ||
|
|
fd86bc828d | ||
|
|
766eeff097 | ||
|
|
69567d1c6c | ||
|
|
6d22182e03 | ||
|
|
6fc30bf2a7 | ||
|
|
b16e2aa7f7 | ||
|
|
b64b96461c | ||
|
|
c7f8c560a1 | ||
|
|
26bc4fe37f | ||
|
|
ce427feee4 | ||
|
|
9c1f239f53 | ||
|
|
478c699aff | ||
|
|
5eef0887eb | ||
|
|
3438c1716e | ||
|
|
113602dea7 | ||
|
|
ac93581045 | ||
|
|
94f8e9550e | ||
|
|
f4ea0b7389 | ||
|
|
849867728c | ||
|
|
9fba69566d | ||
|
|
86d2ee0be0 | ||
|
|
f333f50016 | ||
|
|
47faa4581e | ||
|
|
c8cc4f3960 | ||
|
|
8834a4bb88 | ||
|
|
51c01a5afa | ||
|
|
e550f49a18 | ||
|
|
65c46570c5 | ||
|
|
126f588fcb | ||
|
|
6fbf6e139b | ||
|
|
15fdd0ae1a | ||
|
|
0096346b0c | ||
|
|
e19aece78a | ||
|
|
d540114ae5 | ||
|
|
454aeac5e2 | ||
|
|
f6cc6ac894 | ||
|
|
adef5b5671 | ||
|
|
9f00890f46 | ||
|
|
8ee265f926 | ||
|
|
bc94c33807 | ||
|
|
5ee5de4ebb | ||
|
|
e941648eb1 | ||
|
|
625bcb3f1f | ||
|
|
2725928363 | ||
|
|
b471ad70fe | ||
|
|
ce18aa7de2 | ||
|
|
25a761d7d1 | ||
|
|
d944af7a39 | ||
|
|
81555bef5b | ||
|
|
02acbb2d70 | ||
|
|
8ddce304b2 | ||
|
|
d989ec5324 | ||
|
|
01ea3a0dc8 | ||
|
|
5e7d590447 | ||
|
|
ed4fbc7950 | ||
|
|
07994db0a5 | ||
|
|
2290105ac1 | ||
|
|
3b695031bc | ||
|
|
83cb2c3b90 |
1
.github/FUNDING.yml
vendored
@@ -1,6 +1,7 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: jeffser # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
ko_fi: jeffser
|
||||
#patreon: # Replace with a single Patreon username
|
||||
#open_collective: # Replace with a single Open Collective username
|
||||
#ko_fi: # Replace with a single Ko-fi username
|
||||
|
||||
20
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Something is wrong
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
60
README.md
@@ -1,33 +1,34 @@
|
||||
<img src="https://jeffser.com/images/alpaca/logo.svg">
|
||||
<p align="center"><img src="https://jeffser.com/images/alpaca/logo.svg"></p>
|
||||
|
||||
# Alpaca
|
||||
|
||||
An [Ollama](https://github.com/ollama/ollama) client made with GTK4 and Adwaita.
|
||||
|
||||
|
||||
|
||||
<a href='https://flathub.org/apps/com.jeffser.Alpaca'><img width='240' alt='Download on Flathub' src='https://flathub.org/api/badge?locale=en'/></a>
|
||||
|
||||
Alpaca is an [Ollama](https://github.com/ollama/ollama) client where you can manage and chat with multiple models, Alpaca provides an easy and begginer friendly way of interacting with local AI, everything is open source and powered by Ollama.
|
||||
|
||||
---
|
||||
|
||||
> [!WARNING]
|
||||
> This project is not affiliated at all with Ollama, I'm not responsible for any damages to your device or software caused by running code given by any models.
|
||||
|
||||
> [!important]
|
||||
> This is my first GTK4 / Adwaita / Python app, so it might crash and some features are still under development, please report any errors if you can, thank you!
|
||||
> This project is not affiliated at all with Ollama, I'm not responsible for any damages to your device or software caused by running code given by any AI models.
|
||||
|
||||
## Features!
|
||||
- Talk to multiple models in the same conversation
|
||||
- Pull and delete models from the app
|
||||
- Image recognition
|
||||
- Document recognition (plain text files)
|
||||
- Code highlighting
|
||||
- Multiple conversations
|
||||
- Notifications
|
||||
- Import / Export chats
|
||||
- Delete messages
|
||||
|
||||
## Future features!
|
||||
- Multiple conversations
|
||||
- Image / document recognition
|
||||
- Notifications
|
||||
- Code highlighting
|
||||
- YouTube recognition (Ask questions about a YouTube video using the transcript)
|
||||
- Edit messages
|
||||
- Snap Package (maybe)
|
||||
|
||||
## Screenies
|
||||
Login to Ollama instance | Chatting with models | Managing models
|
||||
Code highlighting | Chatting with models | Managing models
|
||||
:-------------------------:|:-------------------------:|:-------------------------:
|
||||
 |  | 
|
||||
|
||||
@@ -40,11 +41,32 @@ Login to Ollama instance | Chatting with models | Managing
|
||||
2. Download the latest flatpak package
|
||||
3. Open it
|
||||
|
||||
## Usage
|
||||
- You'll need an Ollama instance, I recommend using the [Docker image](https://ollama.com/blog/ollama-is-now-available-as-an-official-docker-image)
|
||||
- Once you open Alpaca it will ask you for a url, if you are using the same computer as the Ollama instance and didn't change the ports you can use the default url.
|
||||
- You might need a model, you can get one using the box icon at the top of the app, I recommend using phi3 because it is very lightweight but you can use whatever you want (I haven't actually tested all so your mileage may vary).
|
||||
- Then just start talking! you can mix different models, they all share the same conversation, it's really cool in my opinion.
|
||||
## Ollama session tips
|
||||
|
||||
### Migrate Ollama session to Alpaca's integrated session
|
||||
For now Alpaca doesn't offer a way to do this from the GUI but it's really simple, when you are using Ollama it creates a folder in the home directory called `.ollama`, you just need to move that folder to `~/.var/app/com.jeffser.Alpaca/data/`
|
||||
|
||||
### Change the port of the integrated Ollama instance
|
||||
Go to `~/.var/app/com.jeffser.Alpaca/config/server.json` and change the `"local_port"` value, by default it is `11435`.
|
||||
|
||||
### Backup all the chats
|
||||
The chat data is located in `~/.var/app/com.jeffser.Alpaca/data/chats` you can copy that directory wherever you want to.
|
||||
|
||||
### Force showing the welcome dialog
|
||||
To do that you just need to delete the file `~/.var/app/com.jeffser.Alpaca/config/server.json`, this won't affect your saved chats or models.
|
||||
|
||||
### Add/Change environment variables for Ollama
|
||||
You can change anything except `$HOME` and `$OLLAMA_HOST`, to do this go to `~/.var/app/com.jeffser.Alpaca/config/server.json` and change `ollama_overrides` accordingly, some overrides are available to change on the GUI.
|
||||
|
||||
---
|
||||
|
||||
## Thanks
|
||||
- [not-a-dev-stein](https://github.com/not-a-dev-stein) for their help with requesting a new icon, bug reports and the translation to Brazilian Portuguese
|
||||
- [TylerLaBree](https://github.com/TylerLaBree) for their requests and ideas
|
||||
- [Alexkdeveloper](https://github.com/alexkdeveloper) for their help translating the app to Russian
|
||||
- [Imbev](https://github.com/imbev) for their reports and suggestions
|
||||
- [Nokse](https://github.com/Nokse22) for their contributions to the UI
|
||||
- [Louis Chauvet-Villaret](https://github.com/loulou64490) for their suggestions and help translating the app to French
|
||||
|
||||
## About forks
|
||||
If you want to fork this... I mean, I think it would be better if you start from scratch, my code isn't well documented at all, but if you really want to, please give me some credit, that's all I ask for... And maybe a donation (joke)
|
||||
|
||||
@@ -57,6 +57,45 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "python3-pillow",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"pillow\" --no-build-isolation"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://files.pythonhosted.org/packages/ef/43/c50c17c5f7d438e836c169e343695534c38c77f60e7c90389bd77981bc21/pillow-10.3.0.tar.gz",
|
||||
"sha256": "9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ollama",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"install -Dm0755 ollama* ${FLATPAK_DEST}/bin/ollama"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://github.com/ollama/ollama/releases/download/v0.1.39/ollama-linux-amd64",
|
||||
"sha256": "4d19be355842a6297c93ab5ada139fe396126736bf3c3882a879dc245dffe3af",
|
||||
"only-arches": [
|
||||
"x86_64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"url": "https://github.com/ollama/ollama/releases/download/v0.1.39/ollama-linux-arm64",
|
||||
"sha256": "60ec2d36928c11d6c6d84fe91451308a46aafaedbdba44664e5a6080009ce097",
|
||||
"only-arches": [
|
||||
"aarch64"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "alpaca",
|
||||
"builddir" : true,
|
||||
@@ -64,7 +103,8 @@
|
||||
"sources" : [
|
||||
{
|
||||
"type" : "git",
|
||||
"url" : "file:///home/tentri/Documents/Alpaca"
|
||||
"url" : "file:///home/tentri/Documents/Alpaca",
|
||||
"branch" : "main"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
6
data/com.jeffser.Alpaca.SearchProvider.ini.in
Normal file
@@ -0,0 +1,6 @@
|
||||
[Shell Search Provider]
|
||||
DesktopId=@appid@.desktop
|
||||
BusName=@appid@.SearchProvider
|
||||
ObjectPath=/com/jeffser/Alpaca/SearchProvider
|
||||
Version=2
|
||||
|
||||
3
data/com.jeffser.Alpaca.SearchProvider.service.in
Normal file
@@ -0,0 +1,3 @@
|
||||
[D-BUS Service]
|
||||
Name=@appid@.SearchProvider
|
||||
Exec=@libexecdir@/alpaca_search_provider
|
||||
@@ -6,3 +6,4 @@ Terminal=false
|
||||
Type=Application
|
||||
Categories=Utility;Development;Chat;
|
||||
StartupNotify=true
|
||||
X-Purism-FormFactor=Workstation;Mobile;
|
||||
@@ -5,14 +5,18 @@
|
||||
<project_license>GPL-3.0-or-later</project_license>
|
||||
<launchable type="desktop-id">com.jeffser.Alpaca.desktop</launchable>
|
||||
<name>Alpaca</name>
|
||||
<summary>An Ollama client</summary>
|
||||
<summary>Chat with local AI models</summary>
|
||||
<description>
|
||||
<p>Chat with multiple AI models</p>
|
||||
<p>An Ollama client</p>
|
||||
<p>Features</p>
|
||||
<ul>
|
||||
<li>Built in Ollama instance</li>
|
||||
<li>Talk to multiple models in the same conversation</li>
|
||||
<li>Pull and delete models from the app</li>
|
||||
<li>Have multiple conversations</li>
|
||||
<li>Image recognition (Only available with compatible models)</li>
|
||||
<li>Plain text documents recognition</li>
|
||||
<li>Import and export chats</li>
|
||||
</ul>
|
||||
<p>Disclaimer</p>
|
||||
<p>This project is not affiliated at all with Ollama, I'm not responsible for any damages to your device or software caused by running code given by any models.</p>
|
||||
@@ -29,6 +33,14 @@
|
||||
<category>Development</category>
|
||||
<category>Chat</category>
|
||||
</categories>
|
||||
<requires>
|
||||
<display_length compare="ge">360</display_length>
|
||||
</requires>
|
||||
<recommends>
|
||||
<control>keyboard</control>
|
||||
<control>pointing</control>
|
||||
<control>touch</control>
|
||||
</recommends>
|
||||
<branding>
|
||||
<color type="primary" scheme_preference="light">#8cdef5</color>
|
||||
<color type="primary" scheme_preference="dark">#0f2b78</color>
|
||||
@@ -36,7 +48,7 @@
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://jeffser.com/images/alpaca/screenie1.png</image>
|
||||
<caption>Welcome dialog</caption>
|
||||
<caption>A conversation showing code highlight</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://jeffser.com/images/alpaca/screenie2.png</image>
|
||||
@@ -52,6 +64,260 @@
|
||||
<url type="homepage">https://github.com/Jeffser/Alpaca</url>
|
||||
<url type="donation">https://github.com/sponsors/Jeffser</url>
|
||||
<releases>
|
||||
<release version="0.9.4" date="2024-06-04">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.9.4</url>
|
||||
<description>
|
||||
<p>Huge Update</p>
|
||||
<ul>
|
||||
<li>Added: Support for plain text files</li>
|
||||
<li>Added: New backend system for storing messages</li>
|
||||
<li>Added: Support for changing Ollama's overrides</li>
|
||||
<li>General Optimization</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.9.3" date="2024-06-01">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.9.3</url>
|
||||
<description>
|
||||
<p>Big Update</p>
|
||||
<ul>
|
||||
<li>Added: Support for GGUF models (experimental)</li>
|
||||
<li>Added: Support for customization and creation of models</li>
|
||||
<li>Fixed: Icons don't appear on non Gnome systems</li>
|
||||
<li>Update Ollama to v0.1.39</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.9.2" date="2024-05-30">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.9.2</url>
|
||||
<description>
|
||||
<p>Fix</p>
|
||||
<ul>
|
||||
<li>Fixed: app didn't open if models tweaks wasn't present in the config files</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.9.1" date="2024-05-29">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.9.1</url>
|
||||
<description>
|
||||
<p>Big Update</p>
|
||||
<ul>
|
||||
<li>Changed multiple icons (paper airplane for the send button)</li>
|
||||
<li>Combined export / import chat buttons into a menu</li>
|
||||
<li>Added 'model tweaks' (temperature, seed, keep_alive)</li>
|
||||
<li>Fixed send / stop button</li>
|
||||
<li>Fixed app not checking if remote connection works when starting</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.9.0" date="2024-05-29">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.9.0</url>
|
||||
<description>
|
||||
<p>Daily Update</p>
|
||||
<ul>
|
||||
<li>Added text ellipsis to chat name so it doesn't change the button width</li>
|
||||
<li>New shortcut for creating a chat (CTRL+N)</li>
|
||||
<li>New message entry design</li>
|
||||
<li>Fixed: Can't rename the same chat multiple times</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.8.8" date="2024-05-28">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.8.8</url>
|
||||
<description>
|
||||
<p>The fix</p>
|
||||
<ul>
|
||||
<li>Fixed: Ollama instance keeps running on the background even when it is disabled</li>
|
||||
<li>Fixed: Can't pull models on the integrated instance</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.8.7" date="2024-05-27">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.8.7</url>
|
||||
<description>
|
||||
<p>Quick tweaks</p>
|
||||
<ul>
|
||||
<li>Added progress bar to models that are being pulled</li>
|
||||
<li>Added size to tags when pulling a model</li>
|
||||
<li>General optimizations on the background</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.8.6" date="2024-05-26">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.8.6</url>
|
||||
<description>
|
||||
<p>Quick fixes</p>
|
||||
<ul>
|
||||
<li>Fixed: Scroll when message is received</li>
|
||||
<li>Fixed: Content doesn't change when creating a new chat</li>
|
||||
<li>Added 'Featured Models' page on welcome dialog</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.8.5" date="2024-05-26">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.8.5</url>
|
||||
<description>
|
||||
<p>Nice Update</p>
|
||||
<ul>
|
||||
<li>UI tweaks (Thanks Nokse22)</li>
|
||||
<li>General optimizations</li>
|
||||
<li>Metadata fixes</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.8.1" date="2024-05-24">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.8.1</url>
|
||||
<description>
|
||||
<p>Quick fix</p>
|
||||
<ul>
|
||||
<li>Updated Spanish translation</li>
|
||||
<li>Added compatibility for PNG</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.8.0" date="2024-05-24">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.8.0</url>
|
||||
<description>
|
||||
<p>New Update</p>
|
||||
<ul>
|
||||
<li>Updated model list</li>
|
||||
<li>Added image recognition to more models</li>
|
||||
<li>Added Brazilian Portuguese translation (Thanks Daimaar Stein)</li>
|
||||
<li>Refined the general UI (Thanks Nokse22)</li>
|
||||
<li>Added 'delete message' feature</li>
|
||||
<li>Added metadata so that software distributors know that the app is compatible with mobile</li>
|
||||
<li>Changed 'send' shortcut to just the return/enter key (to add a new line use shift+return)</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.7.1" date="2024-05-23">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.7.1</url>
|
||||
<description>
|
||||
<p>Bug Fixes</p>
|
||||
<ul>
|
||||
<li>Fixed: Minor spelling mistake</li>
|
||||
<li>Added 'mobile' as a supported form factor</li>
|
||||
<li>Fixed: 'Connection Error' dialog not working properly</li>
|
||||
<li>Fixed: App might freeze randomly on startup</li>
|
||||
<li>Changed 'chats' label on sidebar for 'Alpaca'</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.7.0" date="2024-05-22">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.7.0</url>
|
||||
<description>
|
||||
<p>Cool Update</p>
|
||||
<ul>
|
||||
<li>Better design for chat window</li>
|
||||
<li>Better design for chat sidebar</li>
|
||||
<li>Fixed remote connections</li>
|
||||
<li>Fixed Ollama restarting in loop</li>
|
||||
<li>Other cool backend stuff</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.6.0" date="2024-05-21">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.6.0</url>
|
||||
<description>
|
||||
<p>Huge Update</p>
|
||||
<ul>
|
||||
<li>Added Ollama as part of Alpaca, Ollama will run in a sandbox</li>
|
||||
<li>Added option to connect to remote instances (how it worked before)</li>
|
||||
<li>Added option to import and export chats</li>
|
||||
<li>Added option to run Alpaca with Ollama in the background</li>
|
||||
<li>Added preferences dialog</li>
|
||||
<li>Changed the welcome dialog</li>
|
||||
</ul>
|
||||
<p>
|
||||
Please report any errors to the issues page, thank you.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.5.5" date="2024-05-20">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.5.5</url>
|
||||
<description>
|
||||
<p>Yet Another Daily Update</p>
|
||||
<ul>
|
||||
<li>Added better UI for 'Manage Models' dialog</li>
|
||||
<li>Added better UI for the chat sidebar</li>
|
||||
<li>Replaced model description with a button to open Ollama's website for the model</li>
|
||||
<li>Added myself to the credits as the spanish translator</li>
|
||||
<li>Using XDG properly to get config folder</li>
|
||||
<li>Update for translations</li>
|
||||
</ul>
|
||||
<p>
|
||||
Please report any errors to the issues page, thank you.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.5.2" date="2024-05-19">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.5.2</url>
|
||||
<description>
|
||||
<p>Quick Fix</p>
|
||||
<ul>
|
||||
<li>The last update had some mistakes in the description of the update</li>
|
||||
</ul>
|
||||
<p>
|
||||
Please report any errors to the issues page, thank you.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.5.1" date="2024-05-19">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.5.1</url>
|
||||
<description>
|
||||
<p>Another Daily Update</p>
|
||||
<ul>
|
||||
<li>Added full Spanish translation</li>
|
||||
<li>Added support for background pulling of multiple models</li>
|
||||
<li>Added interrupt button</li>
|
||||
<li>Added basic shortcuts</li>
|
||||
<li>Better translation support</li>
|
||||
<li>User can now leave chat name empty when creating a new one, it will add a placeholder name</li>
|
||||
<li>Better scalling for different window sizes</li>
|
||||
<li>Fixed: Can't close app if first time setup fails</li>
|
||||
</ul>
|
||||
<p>
|
||||
Please report any errors to the issues page, thank you.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.5.0" date="2024-05-19">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.5.0</url>
|
||||
<description>
|
||||
<p>Really Big Update</p>
|
||||
<ul>
|
||||
<li>Added multiple chats support!</li>
|
||||
<li>Added Pango Markup support (bold, list, title, subtitle, monospace)</li>
|
||||
<li>Added autoscroll if the user is at the bottom of the chat</li>
|
||||
<li>Added support for multiple tags on a single model</li>
|
||||
<li>Added better model management dialog</li>
|
||||
<li>Added loading spinner when sending message</li>
|
||||
<li>Added notifications if app is not active and a model pull finishes</li>
|
||||
<li>Added new symbolic icon</li>
|
||||
<li>Added frame to message textview widget</li>
|
||||
<li>Fixed "code blocks shouldn't be editable"</li>
|
||||
</ul>
|
||||
<p>
|
||||
Please report any errors to the issues page, thank you.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.4.0" date="2024-05-17">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.4.0</url>
|
||||
<description>
|
||||
<p>Big Update</p>
|
||||
<ul>
|
||||
<li>Added code highlighting</li>
|
||||
<li>Added image recognition (llava model)</li>
|
||||
<li>Added multiline prompt</li>
|
||||
<li>Fixed some small bugs</li>
|
||||
<li>General optimization</li>
|
||||
</ul>
|
||||
<p>
|
||||
Please report any errors to the issues page, thank you.
|
||||
</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.3.0" date="2024-05-16">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.3.0</url>
|
||||
<description>
|
||||
@@ -69,7 +335,7 @@
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.2.2" date="2024-05-14">
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.2.1</url>
|
||||
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.2.2</url>
|
||||
<description>
|
||||
<p>0.2.2 Bug fixes</p>
|
||||
<ul>
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M7.188 2.281c-.094.056-.192.125-.29.19L5.566 3.803a1.684 1.684 0 11-2.17 2.17L2.332 7.037c.506-.069 1.017-.136 1.2.026.242.214.139 1.031.155 1.656.213.088.427.171.657.219.04.008.085-.007.125 0 .337-.525.683-1.288 1-1.344.322-.057.905.562 1.406.937a3.67 3.67 0 00.656-.468c-.195-.595-.594-1.369-.437-1.657.158-.29 1.019-.37 1.625-.531.028-.183.062-.371.062-.562 0-.075-.027-.146-.031-.22-.587-.217-1.435-.385-1.562-.687-.128-.302.34-1.021.593-1.593a3.722 3.722 0 00-.593-.532zm3.875 3.25c-.165.475-.305 1.086-.47 1.563-.43.047-.84.14-1.218.312-.38-.322-.787-.773-1.156-1.093a5.562 5.562 0 00-.688.468c.177.46.453 1.001.625 1.469-.298.309-.531.67-.719 1.063-.494 0-1.102-.084-1.593-.094a5.68 5.68 0 00-.219.812c.435.24 1.006.468 1.438.72-.006.093-.032.185-.032.28 0 .333.049.66.125.97-.382.304-.898.63-1.28.937.015.044.04.083.058.127l.613.613c.417-.1.868-.223 1.266-.303.248.343.532.626.875.875-.027.135-.068.283-.104.428.174-.063.34-.155.482-.297l1.432-1.432a1.994 1.994 0 01.533-3.918c.919 0 1.684.623 1.918 1.467l1.338-1.338c.06-.06.11-.124.156-.191-.035-.062-.06-.13-.1-.188.096-.152.205-.31.315-.47.017-.348-.1-.7-.37-.971l-.177-.176c-.28.192-.561.387-.83.555-.345-.233-.746-.383-1.156-.5-.077-.507-.107-1.132-.187-1.625a5.44 5.44 0 00-.875-.063zm-9.247.608c-.087.068-.173.138-.254.205l.014.035z" style="marker:none" overflow="visible"/><path d="M8.707.293a1 1 0 00-1.415 0l-6.999 7a1 1 0 000 1.413l7 7.001a1 1 0 001.415 0l7-7a1 1 0 000-1.413zm-.708 2.121l5.587 5.587L8 13.586 2.414 7.999z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/></g></svg>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 14 3.175781 v 3.824219 c 0 2.179688 -1.820312 4 -4 4 h -3.585938 l -2 2 h 5.585938 l 3 3 v -3 c 1.644531 0 3 -1.355469 3 -3 v -4 c 0 -1.292969 -0.839844 -2.40625 -2 -2.824219 z m 0 0"/><path d="m 3 0 c -1.644531 0 -3 1.355469 -3 3 v 4 c 0 1.644531 1.355469 3 3 3 v 3 l 3 -3 h 4 c 1.644531 0 3 -1.355469 3 -3 v -4 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 0"/></g></svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 522 B |
@@ -33,4 +33,24 @@ test('Validate schema file',
|
||||
compile_schemas,
|
||||
args: ['--strict', '--dry-run', meson.current_source_dir()])
|
||||
|
||||
subdir('icons')
|
||||
#service_conf = configuration_data()
|
||||
#service_conf.set('appid', application_id)
|
||||
#service_conf.set('libexecdir', join_paths(get_option('prefix'), get_option('bindir')))
|
||||
#configure_file(
|
||||
#input: 'com.jeffser.Alpaca.SearchProvider.service.in',
|
||||
#output: '@0@.SearchProvider.service'.format(application_id),
|
||||
#configuration: service_conf,
|
||||
#install_dir: join_paths(join_paths(get_option('prefix'), get_option('datadir')), 'dbus-1', 'services')
|
||||
#)
|
||||
|
||||
#search_provider_conf = configuration_data()
|
||||
#search_provider_conf.set('appid', application_id)
|
||||
#configure_file(
|
||||
#configuration: search_provider_conf,
|
||||
#input: files('com.jeffser.Alpaca.SearchProvider.ini.in'),
|
||||
#install_dir: join_paths(get_option('datadir'), 'gnome-shell', 'search-providers'),
|
||||
#output: '@0@.SearchProvider.ini'.format(application_id)
|
||||
#)
|
||||
|
||||
|
||||
subdir('icons')
|
||||
@@ -1,11 +1,12 @@
|
||||
project('Alpaca',
|
||||
version: '0.2.2',
|
||||
project('Alpaca', 'c',
|
||||
version: '0.9.4',
|
||||
meson_version: '>= 0.62.0',
|
||||
default_options: [ 'warning_level=2', 'werror=false', ],
|
||||
)
|
||||
|
||||
i18n = import('i18n')
|
||||
gnome = import('gnome')
|
||||
application_id = 'com.jeffser.Alpaca'
|
||||
|
||||
subdir('data')
|
||||
subdir('src')
|
||||
|
||||
@@ -1 +1,4 @@
|
||||
ru
|
||||
ru
|
||||
es
|
||||
pt_BR
|
||||
fr
|
||||
987
po/alpaca.pot
Normal file
@@ -0,0 +1,987 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-06-04 13:48-0600\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: data/com.jeffser.Alpaca.desktop.in:3
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:7
|
||||
msgid "Alpaca"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:8
|
||||
msgid "Chat with local AI models"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:10
|
||||
msgid "An Ollama client"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:390
|
||||
msgid "Features"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:13
|
||||
msgid "Built in Ollama instance"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:14
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:392
|
||||
msgid "Talk to multiple models in the same conversation"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:15
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:393
|
||||
msgid "Pull and delete models from the app"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:16
|
||||
msgid "Have multiple conversations"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:17
|
||||
msgid "Image recognition (Only available with compatible models)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:18
|
||||
msgid "Import and export chats"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:20 src/window.ui:763
|
||||
msgid "Disclaimer"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:21
|
||||
msgid ""
|
||||
"This project is not affiliated at all with Ollama, I'm not responsible for "
|
||||
"any damages to your device or software caused by running code given by any "
|
||||
"models."
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:24
|
||||
msgid "Jeffry Samuel Eduarte Rojas"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:50
|
||||
msgid "A conversation showing code highlight"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:54
|
||||
msgid "A conversation involving multiple models"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:58
|
||||
msgid "Managing models"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:69
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:221
|
||||
msgid "Huge Update"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:71
|
||||
msgid "Added: Support for plain text files"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:72
|
||||
msgid "Added: New backend system for storing messages"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:73
|
||||
msgid "Added: Support for changing Ollama's overrides"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:74
|
||||
msgid "General Optimization"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:81
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:102
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:307
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:364
|
||||
msgid "Big Update"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:83
|
||||
msgid "Added: Support for GGUF models (experimental)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:84
|
||||
msgid "Added: Support for customization and creation of models"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:85
|
||||
msgid "Fixed: Icons don't appear on non Gnome systems"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:86
|
||||
msgid "Update Ollama to v0.1.39"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:93
|
||||
msgid "Fix"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:95
|
||||
msgid ""
|
||||
"Fixed: app didn't open if models tweaks wasn't present in the config files"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:104
|
||||
msgid "Changed multiple icons (paper airplane for the send button)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:105
|
||||
msgid "Combined export / import chat buttons into a menu"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:106
|
||||
msgid "Added 'model tweaks' (temperature, seed, keep_alive)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:107
|
||||
msgid "Fixed send / stop button"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:108
|
||||
msgid "Fixed app not checking if remote connection works when starting"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:115
|
||||
msgid "Daily Update"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:117
|
||||
msgid "Added text ellipsis to chat name so it doesn't change the button width"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:118
|
||||
msgid "New shortcut for creating a chat (CTRL+N)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:119
|
||||
msgid "New message entry design"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:120
|
||||
msgid "Fixed: Can't rename the same chat multiple times"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:127
|
||||
msgid "The fix"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:129
|
||||
msgid ""
|
||||
"Fixed: Ollama instance keeps running on the background even when it is "
|
||||
"disabled"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:130
|
||||
msgid "Fixed: Can't pull models on the integrated instance"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:137
|
||||
msgid "Quick tweaks"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:139
|
||||
msgid "Added progress bar to models that are being pulled"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:140
|
||||
msgid "Added size to tags when pulling a model"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:141
|
||||
msgid "General optimizations on the background"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:148
|
||||
msgid "Quick fixes"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:150
|
||||
msgid "Fixed: Scroll when message is received"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:151
|
||||
msgid "Fixed: Content doesn't change when creating a new chat"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:152
|
||||
msgid "Added 'Featured Models' page on welcome dialog"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:159
|
||||
msgid "Nice Update"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:161
|
||||
msgid "UI tweaks (Thanks Nokse22)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:162
|
||||
msgid "General optimizations"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:163
|
||||
msgid "Metadata fixes"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:170
|
||||
msgid "Quick fix"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:172
|
||||
msgid "Updated Spanish translation"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:173
|
||||
msgid "Added compatibility for PNG"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:180
|
||||
msgid "New Update"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:182
|
||||
msgid "Updated model list"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:183
|
||||
msgid "Added image recognition to more models"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:184
|
||||
msgid "Added Brazilian Portuguese translation (Thanks Daimaar Stein)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:185
|
||||
msgid "Refined the general UI (Thanks Nokse22)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:186
|
||||
msgid "Added 'delete message' feature"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:187
|
||||
msgid ""
|
||||
"Added metadata so that software distributors know that the app is compatible "
|
||||
"with mobile"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:188
|
||||
msgid ""
|
||||
"Changed 'send' shortcut to just the return/enter key (to add a new line use "
|
||||
"shift+return)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:195
|
||||
msgid "Bug Fixes"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:197
|
||||
msgid "Fixed: Minor spelling mistake"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:198
|
||||
msgid "Added 'mobile' as a supported form factor"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:199
|
||||
msgid "Fixed: 'Connection Error' dialog not working properly"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:200
|
||||
msgid "Fixed: App might freeze randomly on startup"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:201
|
||||
msgid "Changed 'chats' label on sidebar for 'Alpaca'"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:208
|
||||
msgid "Cool Update"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:210
|
||||
msgid "Better design for chat window"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:211
|
||||
msgid "Better design for chat sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:212
|
||||
msgid "Fixed remote connections"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:213
|
||||
msgid "Fixed Ollama restarting in loop"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:214
|
||||
msgid "Other cool backend stuff"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:223
|
||||
msgid "Added Ollama as part of Alpaca, Ollama will run in a sandbox"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:224
|
||||
msgid "Added option to connect to remote instances (how it worked before)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:225
|
||||
msgid "Added option to import and export chats"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:226
|
||||
msgid "Added option to run Alpaca with Ollama in the background"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:227
|
||||
msgid "Added preferences dialog"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:228
|
||||
msgid "Changed the welcome dialog"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:230
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:247
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:259
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:278
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:299
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:315
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:331
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:345
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:355
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:373
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:395
|
||||
msgid "Please report any errors to the issues page, thank you."
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:238
|
||||
msgid "Yet Another Daily Update"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:240
|
||||
msgid "Added better UI for 'Manage Models' dialog"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:241
|
||||
msgid "Added better UI for the chat sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:242
|
||||
msgid ""
|
||||
"Replaced model description with a button to open Ollama's website for the "
|
||||
"model"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:243
|
||||
msgid "Added myself to the credits as the spanish translator"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:244
|
||||
msgid "Using XDG properly to get config folder"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:245
|
||||
msgid "Update for translations"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:255
|
||||
msgid "Quick Fix"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:257
|
||||
msgid "The last update had some mistakes in the description of the update"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:267
|
||||
msgid "Another Daily Update"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:269
|
||||
msgid "Added full Spanish translation"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:270
|
||||
msgid "Added support for background pulling of multiple models"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:271
|
||||
msgid "Added interrupt button"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:272
|
||||
msgid "Added basic shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:273
|
||||
msgid "Better translation support"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:274
|
||||
msgid ""
|
||||
"User can now leave chat name empty when creating a new one, it will add a "
|
||||
"placeholder name"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:275
|
||||
msgid "Better scalling for different window sizes"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:276
|
||||
msgid "Fixed: Can't close app if first time setup fails"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:286
|
||||
msgid "Really Big Update"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:288
|
||||
msgid "Added multiple chats support!"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:289
|
||||
msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:290
|
||||
msgid "Added autoscroll if the user is at the bottom of the chat"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:291
|
||||
msgid "Added support for multiple tags on a single model"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:292
|
||||
msgid "Added better model management dialog"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:293
|
||||
msgid "Added loading spinner when sending message"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:294
|
||||
msgid "Added notifications if app is not active and a model pull finishes"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:295
|
||||
msgid "Added new symbolic icon"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:296
|
||||
msgid "Added frame to message textview widget"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:297
|
||||
msgid "Fixed \"code blocks shouldn't be editable\""
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:309
|
||||
msgid "Added code highlighting"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:310
|
||||
msgid "Added image recognition (llava model)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:311
|
||||
msgid "Added multiline prompt"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:312
|
||||
msgid "Fixed some small bugs"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:313
|
||||
msgid "General optimization"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:323
|
||||
msgid "Fixes and features"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:325
|
||||
msgid "Russian translation (thanks github/alexkdeveloper)"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:326
|
||||
msgid "Fixed: Cannot close app on first setup"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:327
|
||||
msgid "Fixed: Brand colors for Flathub"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:328
|
||||
msgid "Fixed: App description"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:329
|
||||
msgid "Fixed: Only show 'save changes dialog' when you actually change the url"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:339
|
||||
msgid "0.2.2 Bug fixes"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:341
|
||||
msgid "Toast messages appearing behind dialogs"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:342
|
||||
msgid "Local model list not updating when changing servers"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:343
|
||||
msgid "Closing the setup dialog closes the whole app"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:353
|
||||
msgid "0.2.1 Data saving fix"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:354
|
||||
msgid ""
|
||||
"The app didn't save the config files and chat history to the right "
|
||||
"directory, this is now fixed"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:363
|
||||
msgid "0.2.0"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:365
|
||||
msgid "New Features"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:367
|
||||
msgid "Restore chat after closing the app"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:368
|
||||
msgid "A button to clear the chat"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:369
|
||||
msgid "Fixed multiple bugs involving how messages are shown"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:370
|
||||
msgid "Added welcome dialog"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:371
|
||||
msgid "More stability"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:381
|
||||
msgid "0.1.2 Quick fixes"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:382
|
||||
msgid ""
|
||||
"This release fixes some metadata needed to have a proper Flatpak application"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:388
|
||||
msgid "0.1.1 Stable Release"
|
||||
msgstr ""
|
||||
|
||||
#: data/com.jeffser.Alpaca.metainfo.xml.in:389
|
||||
msgid "This is the first public version of Alpaca"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:55 src/window.py:876 src/window.py:878 src/window.py:922
|
||||
#: src/window.ui:981
|
||||
msgid "New Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:116
|
||||
msgid "An error occurred"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:117
|
||||
msgid "Failed to connect to server"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:118
|
||||
msgid "Could not list local models"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:119
|
||||
msgid "Could not delete model"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:120
|
||||
msgid "Could not pull model"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:121
|
||||
msgid "Cannot open image"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:122
|
||||
msgid "Cannot delete chat because it's the only one left"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:123
|
||||
msgid "There was an error with the local Ollama instance, so it has been reset"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:124
|
||||
msgid "Image recognition is only available on specific models"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:127
|
||||
msgid "Please select a model before chatting"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:128
|
||||
msgid "Chat cannot be cleared while receiving a message"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:129
|
||||
msgid "That tag is already being pulled"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:130
|
||||
msgid "That tag has been pulled already"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:131
|
||||
msgid "Code copied to the clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:132
|
||||
msgid "Message copied to the clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:135
|
||||
msgid "Model deleted successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:136
|
||||
msgid "Model pulled successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:137
|
||||
msgid "Chat exported successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:138
|
||||
msgid "Chat imported successfully"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:233
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:234 src/window.ui:716
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:273
|
||||
msgid "Pulling in the background..."
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:783
|
||||
msgid "Task Complete"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:783
|
||||
msgid "Model '{}' pulled successfully."
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:788
|
||||
msgid "Pull Model Error"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.py:788
|
||||
msgid "Failed to pull model '{}' due to network error."
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:41
|
||||
msgid "New chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:82
|
||||
msgid "Toggle Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:105 src/window.ui:600
|
||||
msgid "Manage models"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:119
|
||||
msgid "Menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:197
|
||||
msgid "Attach file"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:243
|
||||
msgid "Send message"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:291 src/window.ui:869 src/window.ui:975
|
||||
msgid "Preferences"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:294 src/window.ui:959
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:298
|
||||
msgid "Remote Connection"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:299
|
||||
msgid "Manage a remote connection to Ollama"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:302
|
||||
msgid "Use remote connection"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:308
|
||||
msgid "URL of remote instance"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:316
|
||||
msgid "Behavior"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:317
|
||||
msgid "Manage Alpaca's Behavior"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:320
|
||||
msgid "Run in background"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:329
|
||||
msgid "Model"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:333
|
||||
msgid "Model Tweaks"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:334
|
||||
msgid "Manage the behavior of the AI models"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:339
|
||||
msgid "Temperature"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:340
|
||||
msgid ""
|
||||
"The temperature of the model. Increasing the temperature will make the model "
|
||||
"answer more creatively. (Default: 0.8)"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:355
|
||||
msgid "Seed"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:356
|
||||
msgid ""
|
||||
"Sets the random number seed to use for generation. Setting this to a "
|
||||
"specific number will make the model generate the same text for the same "
|
||||
"prompt. (Default: 0 (random))"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:370
|
||||
msgid "Keep Alive Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:371
|
||||
msgid ""
|
||||
"Controls how long the model will stay loaded into memory following the "
|
||||
"request in minutes (default: 5)"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:387
|
||||
msgid "Ollama Instance"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:391
|
||||
msgid "Ollama Overrides"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:392
|
||||
msgid ""
|
||||
"Manage the arguments used on Ollama, any changes on this page only applies "
|
||||
"to the integrated instance, the instance will restart if you make changes"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:472
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:485 src/window.ui:594
|
||||
msgid "Create model"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:511
|
||||
msgid "Base"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:529
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:535
|
||||
msgid "Context"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:550
|
||||
msgid "Template"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:556
|
||||
msgid ""
|
||||
"Some models require a specific template. Please visit the model's website "
|
||||
"for more information if you're unsure."
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:700
|
||||
msgid "Previous"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:743
|
||||
msgid "Welcome to Alpaca"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:744
|
||||
msgid "Powered by Ollama"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:747
|
||||
msgid "Ollama Website"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:764
|
||||
msgid ""
|
||||
"Alpaca and its developers are not liable for any damages to devices or "
|
||||
"software resulting from the execution of code generated by an AI model. "
|
||||
"Please exercise caution and review the code carefully before running it."
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:775
|
||||
msgid "Featured Models"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:776
|
||||
msgid ""
|
||||
"Alpaca works locally on your device, to start chatting you'll need an AI "
|
||||
"model, you can either pull models from this list or the 'Manage Models' menu "
|
||||
"later."
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:786
|
||||
msgid "Built by Meta"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:803
|
||||
msgid "Built by Google DeepMind"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:820
|
||||
msgid "Built by Microsoft"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:837
|
||||
msgid "Multimodal AI with image recognition"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:865
|
||||
msgid "Clear Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:873
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:877
|
||||
msgid "About Alpaca"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:885
|
||||
msgid "Export current chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:889
|
||||
msgid "Import chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:897
|
||||
msgid "From existing model"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:901
|
||||
msgid "From GGUF file (Testing)"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:909
|
||||
msgid "Plain text file"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:913
|
||||
msgid "Image"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:963
|
||||
msgid "Close application"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:969
|
||||
msgid "Clear chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:987
|
||||
msgid "Show shortcuts window"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:994
|
||||
msgid "Editor"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:998
|
||||
msgid "Copy"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:1004
|
||||
msgid "Paste"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:1010
|
||||
msgid "Insert new line"
|
||||
msgstr ""
|
||||
|
||||
#: src/window.ui:1016
|
||||
msgid "Send Message"
|
||||
msgstr ""
|
||||
1195
po/pt_BR.po
Normal file
1190
po/pt_BR.po~
Normal file
442
po/ru.po
@@ -1,15 +1,16 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: 2024-05-16 19:29+0800\n"
|
||||
"PO-Revision-Date: 2024-05-16 19:59+0800\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-05-25 10:21+0800\n"
|
||||
"PO-Revision-Date: 2024-05-25 10:44+0800\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: ru_RU\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
"X-Generator: Poedit 3.4.4\n"
|
||||
"X-Poedit-Basepath: ../src\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
@@ -21,92 +22,435 @@ msgstr "Общие"
|
||||
#: gtk/help-overlay.ui:14
|
||||
msgctxt "shortcut window"
|
||||
msgid "Show Shortcuts"
|
||||
msgstr "Показывать ярлыки"
|
||||
msgstr "Показывать комбинации клавиш"
|
||||
|
||||
#: gtk/help-overlay.ui:20
|
||||
msgctxt "shortcut window"
|
||||
msgid "Quit"
|
||||
msgstr "Выйти"
|
||||
|
||||
#: window.ui:30
|
||||
#: window.py:57 window.py:783
|
||||
msgid "New Chat"
|
||||
msgstr "Новый Чат"
|
||||
|
||||
#: window.py:102
|
||||
msgid "An error occurred"
|
||||
msgstr "Произошла ошибка"
|
||||
|
||||
#: window.py:103
|
||||
msgid "Failed to connect to server"
|
||||
msgstr "Не удалось подключиться к серверу"
|
||||
|
||||
#: window.py:104
|
||||
msgid "Could not list local models"
|
||||
msgstr "Не удалось перечислить локальные модели"
|
||||
|
||||
#: window.py:105
|
||||
msgid "Could not delete model"
|
||||
msgstr "Не удалось удалить модель"
|
||||
|
||||
#: window.py:106
|
||||
msgid "Could not pull model"
|
||||
msgstr "Не удалось извлечь модель"
|
||||
|
||||
#: window.py:107
|
||||
msgid "Cannot open image"
|
||||
msgstr "Не удается открыть изображение"
|
||||
|
||||
#: window.py:108
|
||||
msgid "Cannot delete chat because it's the only one left"
|
||||
msgstr "Не удается удалить чат, потому что он единственный оставшийся"
|
||||
|
||||
#: window.py:109
|
||||
msgid "There was an error with the local Ollama instance, so it has been reset"
|
||||
msgstr ""
|
||||
"Произошла ошибка с локальным экземпляром Ollama, поэтому он был сброшен"
|
||||
|
||||
#: window.py:112
|
||||
msgid "Please select a model before chatting"
|
||||
msgstr "Пожалуйста, выберите модель перед началом общения"
|
||||
|
||||
#: window.py:113
|
||||
msgid "Chat cannot be cleared while receiving a message"
|
||||
msgstr "Чат не может быть удален при получении сообщения"
|
||||
|
||||
#: window.py:114
|
||||
msgid "That tag is already being pulled"
|
||||
msgstr "Этот тег уже удален"
|
||||
|
||||
#: window.py:115
|
||||
msgid "That tag has been pulled already"
|
||||
msgstr "Этот тег уже был удален"
|
||||
|
||||
#: window.py:118
|
||||
msgid "Model deleted successfully"
|
||||
msgstr "Модель успешно удалена"
|
||||
|
||||
#: window.py:119
|
||||
msgid "Model pulled successfully"
|
||||
msgstr "Модель успешно извлечена"
|
||||
|
||||
#: window.py:120
|
||||
msgid "Chat exported successfully"
|
||||
msgstr "Чат успешно экспортирован"
|
||||
|
||||
#: window.py:121
|
||||
msgid "Chat imported successfully"
|
||||
msgstr "Чат успешно импортирован"
|
||||
|
||||
#: window.py:476
|
||||
msgid "Task Complete"
|
||||
msgstr "Задача выполнена"
|
||||
|
||||
#: window.py:476
|
||||
msgid "Model '{}' pulled successfully."
|
||||
msgstr "Модель '{}' успешно извлечена."
|
||||
|
||||
#: window.py:481
|
||||
msgid "Pull Model Error"
|
||||
msgstr "Ошибка Извлечения Модели"
|
||||
|
||||
#: window.py:481
|
||||
msgid "Failed to pull model '{}' due to network error."
|
||||
msgstr "Не удалось извлечь модель '{}' из-за сетевой ошибки."
|
||||
|
||||
#: window.py:496
|
||||
msgid "Stop Model"
|
||||
msgstr "Остановить Модель"
|
||||
|
||||
#: window.py:497
|
||||
msgid "Are you sure you want to stop pulling '{}'?"
|
||||
msgstr "Вы уверены, что хотите прекратить извлечение '{}'?"
|
||||
|
||||
#: window.py:500 window.py:543 window.py:566 window.py:638 window.py:711
|
||||
#: window.py:737 window.py:769 window.py:810
|
||||
msgid "Cancel"
|
||||
msgstr "Отмена"
|
||||
|
||||
#: window.py:501
|
||||
msgid "Stop"
|
||||
msgstr "Стоп"
|
||||
|
||||
#: window.py:539
|
||||
msgid "Delete Model"
|
||||
msgstr "Удалить Модель"
|
||||
|
||||
#: window.py:540 window.py:734
|
||||
msgid "Are you sure you want to delete '{}'?"
|
||||
msgstr "Вы уверены, что хотите удалить '{}'?"
|
||||
|
||||
#: window.py:544 window.py:738
|
||||
msgid "Delete"
|
||||
msgstr "Удалить"
|
||||
|
||||
#: window.py:561
|
||||
msgid "Pull Model"
|
||||
msgstr "Извлечение модели"
|
||||
|
||||
#: window.py:562
|
||||
msgid "Please select a tag to pull '{}'"
|
||||
msgstr "Пожалуйста, выберите тег для извлечения '{}'"
|
||||
|
||||
#: window.py:567
|
||||
msgid "Pull"
|
||||
msgstr "Извлечение"
|
||||
|
||||
#: window.py:634 window.ui:446
|
||||
msgid "Clear Chat"
|
||||
msgstr "Очистить Чат"
|
||||
|
||||
#: window.py:635
|
||||
msgid "Are you sure you want to clear the chat?"
|
||||
msgstr "Вы уверены, что хотите очистить чат?"
|
||||
|
||||
#: window.py:639
|
||||
msgid "Clear"
|
||||
msgstr "Очистить"
|
||||
|
||||
#: window.py:707
|
||||
msgid "Remove Image"
|
||||
msgstr "Удалить Изображение"
|
||||
|
||||
#: window.py:708
|
||||
msgid "Are you sure you want to remove image?"
|
||||
msgstr "Вы уверены, что хотите удалить изображение?"
|
||||
|
||||
#: window.py:712 window.ui:466
|
||||
msgid "Remove"
|
||||
msgstr "Удалить"
|
||||
|
||||
#: window.py:733
|
||||
msgid "Delete Chat"
|
||||
msgstr "Удалить Чат"
|
||||
|
||||
#: window.py:763
|
||||
msgid "Rename Chat"
|
||||
msgstr "Переименовать Чат"
|
||||
|
||||
#: window.py:770
|
||||
msgid "Rename"
|
||||
msgstr "Переименовать"
|
||||
|
||||
#: window.py:791
|
||||
msgid "The name '{}' is already in use"
|
||||
msgstr "Имя '{}' уже используется"
|
||||
|
||||
#: window.py:804
|
||||
msgid "Create Chat"
|
||||
msgstr "Создать Чат"
|
||||
|
||||
#: window.py:811
|
||||
msgid "Create"
|
||||
msgstr "Создать"
|
||||
|
||||
#: window.py:914
|
||||
msgid "Connection Error"
|
||||
msgstr "Ошибка Соединения"
|
||||
|
||||
#: window.py:915
|
||||
msgid "The remote instance has disconnected"
|
||||
msgstr "Удаленный экземпляр отключился"
|
||||
|
||||
#: window.py:919
|
||||
msgid "Close Alpaca"
|
||||
msgstr "Закрыть Программу"
|
||||
|
||||
#: window.py:920
|
||||
msgid "Use local instance"
|
||||
msgstr "Использовать локальный экземпляр"
|
||||
|
||||
#: window.py:921
|
||||
msgid "Connect"
|
||||
msgstr "Подключить"
|
||||
|
||||
#: window.ui:40
|
||||
msgid "New chat"
|
||||
msgstr "Новый чат"
|
||||
|
||||
#: window.ui:49
|
||||
msgid "Import chat"
|
||||
msgstr "Импорт чата"
|
||||
|
||||
#: window.ui:58
|
||||
msgid "Export chat"
|
||||
msgstr "Экспорт чата"
|
||||
|
||||
#: window.ui:90
|
||||
msgid "Toggle Sidebar"
|
||||
msgstr "Переключение боковой панели"
|
||||
|
||||
#: window.ui:111 window.ui:303
|
||||
msgid "Manage models"
|
||||
msgstr "Управление моделями"
|
||||
|
||||
#: window.ui:44
|
||||
#: window.ui:125
|
||||
msgid "Menu"
|
||||
msgstr "Меню"
|
||||
|
||||
#: window.ui:106
|
||||
#: window.ui:216
|
||||
msgid "Send"
|
||||
msgstr "Отправить"
|
||||
|
||||
#: window.ui:137
|
||||
msgid "Pulling Model"
|
||||
msgstr "Тянущая модель"
|
||||
#: window.ui:225
|
||||
msgid "Only available on selected models"
|
||||
msgstr "Доступно только для некоторых моделей"
|
||||
|
||||
#: window.ui:218
|
||||
#: window.ui:228
|
||||
msgid "Image"
|
||||
msgstr "Изображение"
|
||||
|
||||
#: window.ui:254 window.ui:450 window.ui:508
|
||||
msgid "Preferences"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: window.ui:257 window.ui:492
|
||||
msgid "General"
|
||||
msgstr "Общие"
|
||||
|
||||
#: window.ui:261
|
||||
msgid "Remote Connection"
|
||||
msgstr "Удаленное подключение"
|
||||
|
||||
#: window.ui:262
|
||||
msgid "Manage a remote connection to Ollama"
|
||||
msgstr "Управление удаленным подключением к Ollama"
|
||||
|
||||
#: window.ui:265
|
||||
msgid "Use remote connection"
|
||||
msgstr "Использовать удаленное подключение"
|
||||
|
||||
#: window.ui:270
|
||||
msgid "URL of remote instance"
|
||||
msgstr "URL-адрес удаленного экземпляра"
|
||||
|
||||
#: window.ui:278
|
||||
msgid "Behavior"
|
||||
msgstr "Поведение"
|
||||
|
||||
#: window.ui:279
|
||||
msgid "Manage Alpaca's Behavior"
|
||||
msgstr "Управление поведением Alpaca"
|
||||
|
||||
#: window.ui:282
|
||||
msgid "Run in background"
|
||||
msgstr "Запуск в фоновом режиме"
|
||||
|
||||
#: window.ui:371
|
||||
msgid "Previous"
|
||||
msgstr "Предыдущий"
|
||||
|
||||
#: window.ui:233
|
||||
#: window.ui:386
|
||||
msgid "Next"
|
||||
msgstr "Следующий"
|
||||
|
||||
#: window.ui:259
|
||||
#: window.ui:412
|
||||
msgid "Welcome to Alpaca"
|
||||
msgstr "Добро пожаловать в Alpaca"
|
||||
|
||||
#: window.ui:260
|
||||
msgid ""
|
||||
"To get started, please ensure you have an Ollama instance set up. You can "
|
||||
"either run Ollama locally on your machine or connect to a remote instance."
|
||||
msgstr ""
|
||||
"Для начала, пожалуйста, убедитесь, что у вас настроен экземпляр Ollama. Вы "
|
||||
"можете либо запустить Ollama локально на своем компьютере, либо "
|
||||
"подключиться к удаленному экземпляру."
|
||||
#: window.ui:413
|
||||
msgid "Powered by Ollama"
|
||||
msgstr "При поддержке Ollama"
|
||||
|
||||
#: window.ui:263
|
||||
#: window.ui:416
|
||||
msgid "Ollama Website"
|
||||
msgstr "Веб-сайт Ollama"
|
||||
|
||||
#: window.ui:279
|
||||
#: window.ui:432
|
||||
msgid "Disclaimer"
|
||||
msgstr "Отказ от ответственности"
|
||||
|
||||
#: window.ui:280
|
||||
#: window.ui:433
|
||||
msgid ""
|
||||
"Alpaca and its developers are not liable for any damages to devices or "
|
||||
"software resulting from the execution of code generated by an AI model. "
|
||||
"Please exercise caution and review the code carefully before running it."
|
||||
msgstr ""
|
||||
"Alpaca и ее разработчики не несут ответственности за любой ущерб, "
|
||||
"причиненный устройствам или программному обеспечению в результате "
|
||||
"выполнения кода, сгенерированного с помощью модели искусственного "
|
||||
"интеллекта. Пожалуйста, будьте осторожны и внимательно ознакомьтесь с кодом "
|
||||
"перед его запуском."
|
||||
"причиненный устройствам или программному обеспечению в результате выполнения "
|
||||
"кода, сгенерированного с помощью модели искусственного интеллекта. "
|
||||
"Пожалуйста, будьте осторожны и внимательно ознакомьтесь с кодом перед его "
|
||||
"запуском."
|
||||
|
||||
#: window.ui:292
|
||||
msgid "Setup"
|
||||
msgstr "Установка"
|
||||
#: window.ui:454
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Комбинации Клавиш"
|
||||
|
||||
#: window.ui:293
|
||||
msgid ""
|
||||
"If you are running an Ollama instance locally and haven't modified the "
|
||||
"default ports, you can use the default URL. Otherwise, please enter the URL "
|
||||
"of your Ollama instance."
|
||||
msgstr ""
|
||||
"Если вы запускаете локальный экземпляр Ollama и не изменили порты по "
|
||||
"умолчанию, вы можете использовать URL-адрес по умолчанию. В противном "
|
||||
"случае, пожалуйста, введите URL-адрес вашего экземпляра Ollama."
|
||||
#: window.ui:458
|
||||
msgid "About Alpaca"
|
||||
msgstr "О Программе"
|
||||
|
||||
#: window.ui:313
|
||||
msgid "_Clear Conversation"
|
||||
msgstr "_Очистить разговор"
|
||||
#: window.ui:496
|
||||
msgid "Close application"
|
||||
msgstr "Закрыть приложение"
|
||||
|
||||
#: window.ui:317
|
||||
msgid "_Change Server"
|
||||
msgstr "_Изменить Сервер"
|
||||
#: window.ui:502
|
||||
msgid "Clear chat"
|
||||
msgstr "Очистить чат"
|
||||
|
||||
#: window.ui:321
|
||||
msgid "_About Alpaca"
|
||||
msgstr "_О Программе"
|
||||
#: window.ui:514
|
||||
msgid "Show shortcuts window"
|
||||
msgstr "Показать окно комбинаций клавиш"
|
||||
|
||||
#: window.ui:521
|
||||
msgid "Editor"
|
||||
msgstr "Редактор"
|
||||
|
||||
#: window.ui:525
|
||||
msgid "Copy"
|
||||
msgstr "Копировать"
|
||||
|
||||
#: window.ui:531
|
||||
msgid "Paste"
|
||||
msgstr "Вставить"
|
||||
|
||||
#: window.ui:537
|
||||
msgid "Insert new line"
|
||||
msgstr "Вставить новую строку"
|
||||
|
||||
#: window.ui:543
|
||||
msgid "Send Message"
|
||||
msgstr "Отправить Сообщение"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Alpaca"
|
||||
#~ msgstr "О Программе"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Chat with local AI models"
|
||||
#~ msgstr "Не удалось перечислить локальные модели"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "An Ollama client"
|
||||
#~ msgstr "Веб-сайт Ollama"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Import and export chats"
|
||||
#~ msgstr "Импорт чата"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Managing models"
|
||||
#~ msgstr "Управление моделями"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "New Update"
|
||||
#~ msgstr "Новый Чат"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Fixed remote connections"
|
||||
#~ msgstr "Использовать удаленное подключение"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Added basic shortcuts"
|
||||
#~ msgstr "Показывать ярлыки"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "New Features"
|
||||
#~ msgstr "Новый Чат"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "A button to clear the chat"
|
||||
#~ msgstr "Вы уверены, что хотите очистить чат?"
|
||||
|
||||
#~ msgid "Chats"
|
||||
#~ msgstr "Чаты"
|
||||
|
||||
#~ msgid "Requires model 'llava' to be selected"
|
||||
#~ msgstr "Требуется выбрать модель \"llava\""
|
||||
|
||||
#~ msgid "Save Changes"
|
||||
#~ msgstr "Сохранить Изменения"
|
||||
|
||||
#~ msgid "Do you want to save the URL change?"
|
||||
#~ msgstr "Хотите сохранить изменение URL?"
|
||||
|
||||
#~ msgid "Discard"
|
||||
#~ msgstr "Отказаться"
|
||||
|
||||
#~ msgid "Save"
|
||||
#~ msgstr "Сохранить"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "To get started, please ensure you have an Ollama instance set up. You can "
|
||||
#~ "either run Ollama locally on your machine or connect to a remote instance."
|
||||
#~ msgstr ""
|
||||
#~ "Для начала, пожалуйста, убедитесь, что у вас настроен экземпляр Ollama. "
|
||||
#~ "Вы можете либо запустить Ollama локально на своем компьютере, либо "
|
||||
#~ "подключиться к удаленному экземпляру."
|
||||
|
||||
#~ msgid "Setup"
|
||||
#~ msgstr "Установка"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "If you are running an Ollama instance locally and haven't modified the "
|
||||
#~ "default ports, you can use the default URL. Otherwise, please enter the "
|
||||
#~ "URL of your Ollama instance."
|
||||
#~ msgstr ""
|
||||
#~ "Если вы запускаете локальный экземпляр Ollama и не изменили порты по "
|
||||
#~ "умолчанию, вы можете использовать URL-адрес по умолчанию. В противном "
|
||||
#~ "случае, пожалуйста, введите URL-адрес вашего экземпляра Ollama."
|
||||
|
||||
#~ msgid "Change Server"
|
||||
#~ msgstr "Изменить Сервер"
|
||||
|
||||
#~ msgid "Change server"
|
||||
#~ msgstr "Изменить Сервер"
|
||||
|
||||
@@ -1,6 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gresources>
|
||||
<gresource prefix="/com/jeffser/Alpaca">
|
||||
<file>style.css</file>
|
||||
<file>style-dark.css</file>
|
||||
<file alias="icons/scalable/status/library-symbolic.svg">icons/library-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/paper-plane-symbolic.svg">icons/paper-plane-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/globe-symbolic.svg">icons/globe-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/chat-message-new-symbolic.svg">icons/chat-message-new-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/dialog-warning-symbolic.svg">icons/dialog-warning-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/document-edit-symbolic.svg">icons/document-edit-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/edit-copy-symbolic.svg">icons/edit-copy-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/folder-download-symbolic.svg">icons/folder-download-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/image-x-generic-symbolic.svg">icons/image-x-generic-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/media-playback-stop-symbolic.svg">icons/media-playback-stop-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/open-menu-symbolicsvg">icons/open-menu-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/preferences-other-symbolic.svg">icons/preferences-other-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/preferences-system-symbolic.svg">icons/preferences-system-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/sidebar-show-symbolic.svg">icons/sidebar-show-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/user-trash-symbolic.svg">icons/user-trash-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/view-more-symbolic.svg">icons/view-more-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/document-open-symbolic.svg">icons/document-open-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/list-add-symbolic.svg">icons/list-add-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/brain-augemnted-symbolic.svg">icons/brain-augemnted-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/chain-link-loose-symbolic.svg">icons/chain-link-loose-symbolic.svg</file>
|
||||
<file alias="icons/scalable/status/document-text-symbolic.svg">icons/document-text-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">window.ui</file>
|
||||
<file preprocess="xml-stripblanks">gtk/help-overlay.ui</file>
|
||||
</gresource>
|
||||
|
||||
127
src/alpaca_search_provider.in
Normal file
@@ -0,0 +1,127 @@
|
||||
#!@PYTHON@
|
||||
|
||||
import sys
|
||||
from gi.repository import Gio, GLib
|
||||
|
||||
DBUS_NAME = "com.jeffser.Alpaca.SearchProvider"
|
||||
DBUS_OBJECT_PATH = "/com/jeffser/Alpaca/SearchProvider"
|
||||
DBUS_INTERFACE = "org.gnome.Shell.SearchProvider2"
|
||||
|
||||
class SearchProvider:
|
||||
def __init__(self):
|
||||
print("ALPACA __init__")
|
||||
self.connection = Gio.bus_get_sync(Gio.BusType.SESSION, None)
|
||||
if not self.connection:
|
||||
print("ALPACA Failed to get D-Bus connection")
|
||||
return
|
||||
|
||||
print("ALPACA D-Bus connection obtained")
|
||||
interface_info = self.get_interface_info()
|
||||
|
||||
self.registration_id = self.connection.register_object(
|
||||
DBUS_OBJECT_PATH,
|
||||
interface_info,
|
||||
self.handle_method_call,
|
||||
None,
|
||||
None
|
||||
)
|
||||
|
||||
if self.registration_id > 0:
|
||||
print(f"ALPACA Object registered with ID: {self.registration_id}")
|
||||
else:
|
||||
print("ALPACA Failed to register object")
|
||||
|
||||
def get_interface_info(self):
|
||||
print("ALPACA get_interface_info")
|
||||
xml = """
|
||||
<node>
|
||||
<interface name="org.gnome.Shell.SearchProvider2">
|
||||
|
||||
<method name="GetInitialResultSet">
|
||||
<arg type="as" name="terms" direction="in" />
|
||||
<arg type="as" name="results" direction="out" />
|
||||
</method>
|
||||
|
||||
<method name="GetSubsearchResultSet">
|
||||
<arg type="as" name="previous_results" direction="in" />
|
||||
<arg type="as" name="terms" direction="in" />
|
||||
<arg type="as" name="results" direction="out" />
|
||||
</method>
|
||||
|
||||
<method name="GetResultMetas">
|
||||
<arg type="as" name="identifiers" direction="in" />
|
||||
<arg type="aa{sv}" name="metas" direction="out" />
|
||||
</method>
|
||||
|
||||
<method name="ActivateResult">
|
||||
<arg type="s" name="identifier" direction="in" />
|
||||
<arg type="as" name="terms" direction="in" />
|
||||
<arg type="u" name="timestamp" direction="in" />
|
||||
</method>
|
||||
|
||||
<method name="LaunchSearch">
|
||||
<arg type="as" name="terms" direction="in" />
|
||||
<arg type="u" name="timestamp" direction="in" />
|
||||
</method>
|
||||
|
||||
</interface>
|
||||
</node>
|
||||
"""
|
||||
return Gio.DBusNodeInfo.new_for_xml(xml).interfaces[0]
|
||||
|
||||
def handle_method_call(self, connection, sender, object_path, interface_name, method_name, parameters, invocation):
|
||||
print(f"ALPACA handle_method_call: {method_name}")
|
||||
if method_name == "GetInitialResultSet":
|
||||
self.handle_get_initial_result_set(invocation, parameters)
|
||||
elif method_name == "GetSubsearchResultSet":
|
||||
self.handle_get_subsearch_result_set(invocation, parameters)
|
||||
elif method_name == "GetResultMetas":
|
||||
self.handle_get_result_metas(invocation, parameters)
|
||||
elif method_name == "ActivateResult":
|
||||
self.handle_activate_result(invocation, parameters)
|
||||
|
||||
def handle_get_initial_result_set(self, invocation, parameters):
|
||||
print("ALPACA handle_get_initial_result_set")
|
||||
terms = parameters.unpack()[0]
|
||||
print(f"Initial search terms: {terms}")
|
||||
results = ["result1", "result2"]
|
||||
if "Alpaca" in terms:
|
||||
results.append("alpaca_placeholder_result")
|
||||
print(f"Returning results: {results}")
|
||||
invocation.return_value(GLib.Variant("(as)", [results]))
|
||||
|
||||
def handle_get_subsearch_result_set(self, invocation, parameters):
|
||||
print("ALPACA handle_get_subsearch_result_set")
|
||||
previous_results, terms = parameters.unpack()
|
||||
print(f"Subsearch terms: {terms}, previous results: {previous_results}")
|
||||
results = ["result3", "result4"]
|
||||
if "Alpaca" in terms:
|
||||
results.append("sub_alpaca_placeholder_result")
|
||||
print(f"Returning subsearch results: {results}")
|
||||
invocation.return_value(GLib.Variant("(as)", [results]))
|
||||
|
||||
def handle_get_result_metas(self, invocation, parameters):
|
||||
print("ALPACA handle_get_result_metas")
|
||||
identifiers = parameters.unpack()[0]
|
||||
print(f"Result metas for identifiers: {identifiers}")
|
||||
metas = []
|
||||
for identifier in identifiers:
|
||||
meta = {"name": GLib.Variant("s", "Placeholder result for " + identifier)}
|
||||
metas.append(GLib.Variant("a{sv}", meta))
|
||||
print(f"Returning metas: {metas}")
|
||||
invocation.return_value(GLib.Variant("(a{sv})", [metas]))
|
||||
|
||||
def handle_activate_result(self, invocation, parameters):
|
||||
print("ALPACA handle_activate_result")
|
||||
identifier, terms, timestamp = parameters.unpack()
|
||||
print(f"Activated result: {identifier}, terms: {terms}, timestamp: {timestamp}")
|
||||
invocation.return_value(None)
|
||||
|
||||
if __name__ == "__main__":
|
||||
provider = SearchProvider()
|
||||
if provider.registration_id > 0:
|
||||
loop = GLib.MainLoop()
|
||||
print("ALPACA Running main loop")
|
||||
loop.run()
|
||||
else:
|
||||
print("ALPACA Failed to start main loop due to object registration failure")
|
||||
@@ -1,6 +1,8 @@
|
||||
# connectionhandler.py
|
||||
import json, requests
|
||||
|
||||
url = None
|
||||
|
||||
def simple_get(connection_url:str) -> dict:
|
||||
try:
|
||||
response = requests.get(connection_url)
|
||||
@@ -11,6 +13,19 @@ def simple_get(connection_url:str) -> dict:
|
||||
except Exception as e:
|
||||
return {"status": "error", "status_code": 0}
|
||||
|
||||
def simple_post(connection_url:str, data) -> dict:
|
||||
try:
|
||||
headers = {
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
response = requests.post(connection_url, headers=headers, data=data, stream=False)
|
||||
if response.status_code == 200:
|
||||
return {"status": "ok", "text": response.text, "status_code": response.status_code}
|
||||
else:
|
||||
return {"status": "error", "status_code": response.status_code}
|
||||
except Exception as e:
|
||||
return {"status": "error", "status_code": 0}
|
||||
|
||||
def simple_delete(connection_url:str, data) -> dict:
|
||||
try:
|
||||
response = requests.delete(connection_url, json=data)
|
||||
@@ -36,26 +51,3 @@ def stream_post(connection_url:str, data, callback:callable) -> dict:
|
||||
return {"status": "error", "status_code": response.status_code}
|
||||
except Exception as e:
|
||||
return {"status": "error", "status_code": 0}
|
||||
|
||||
|
||||
from time import sleep
|
||||
def stream_post_fake(connection_url:str, data, callback:callable) -> dict:
|
||||
data = {
|
||||
"status": "pulling manifest"
|
||||
}
|
||||
callback(data)
|
||||
for i in range(2):
|
||||
for a in range(11):
|
||||
sleep(.1)
|
||||
data = {
|
||||
"status": f"downloading digestname {i}",
|
||||
"digest": f"digestname {i}",
|
||||
"total": 500,
|
||||
"completed": a * 50
|
||||
}
|
||||
callback(data)
|
||||
for msg in ["verifying sha256 digest", "writting manifest", "removing any unused layers", "success"]:
|
||||
sleep(.1)
|
||||
data = {"status": msg}
|
||||
callback(data)
|
||||
return {"status": "ok", "status_code": 200}
|
||||
|
||||
284
src/dialogs.py
Normal file
@@ -0,0 +1,284 @@
|
||||
# dialogs.py
|
||||
|
||||
from gi.repository import Adw, Gtk, Gdk, GLib, GtkSource, Gio, GdkPixbuf
|
||||
from .available_models import available_models
|
||||
|
||||
# CLEAR CHAT | WORKS
|
||||
|
||||
def clear_chat_response(self, dialog, task):
|
||||
if dialog.choose_finish(task) == "clear":
|
||||
self.clear_chat()
|
||||
|
||||
def clear_chat(self):
|
||||
if self.bot_message is not None:
|
||||
self.show_toast("info", 1, self.main_overlay)
|
||||
return
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Clear Chat"),
|
||||
body=_("Are you sure you want to clear the chat?"),
|
||||
close_response="cancel"
|
||||
)
|
||||
dialog.add_response("cancel", _("Cancel"))
|
||||
dialog.add_response("clear", _("Clear"))
|
||||
dialog.set_response_appearance("clear", Adw.ResponseAppearance.DESTRUCTIVE)
|
||||
dialog.choose(
|
||||
parent = self,
|
||||
cancellable = None,
|
||||
callback = lambda dialog, task: clear_chat_response(self, dialog, task)
|
||||
)
|
||||
|
||||
# DELETE CHAT | WORKS
|
||||
|
||||
def delete_chat_response(self, dialog, task, chat_name):
|
||||
if dialog.choose_finish(task) == "delete":
|
||||
self.delete_chat(chat_name)
|
||||
|
||||
def delete_chat(self, chat_name):
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Delete Chat"),
|
||||
body=_("Are you sure you want to delete '{}'?").format(chat_name),
|
||||
close_response="cancel"
|
||||
)
|
||||
dialog.add_response("cancel", _("Cancel"))
|
||||
dialog.add_response("delete", _("Delete"))
|
||||
dialog.set_response_appearance("delete", Adw.ResponseAppearance.DESTRUCTIVE)
|
||||
dialog.choose(
|
||||
parent = self,
|
||||
cancellable = None,
|
||||
callback = lambda dialog, task, chat_name=chat_name: delete_chat_response(self, dialog, task, chat_name)
|
||||
)
|
||||
|
||||
# RENAME CHAT | WORKS
|
||||
|
||||
def rename_chat_response(self, dialog, task, old_chat_name, entry, label_element):
|
||||
if not entry: return
|
||||
new_chat_name = entry.get_text()
|
||||
if old_chat_name == new_chat_name: return
|
||||
if new_chat_name and (task is None or dialog.choose_finish(task) == "rename"):
|
||||
self.rename_chat(old_chat_name, new_chat_name, label_element)
|
||||
|
||||
def rename_chat(self, label_element):
|
||||
chat_name = label_element.get_parent().get_name()
|
||||
entry = Gtk.Entry()
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Rename Chat"),
|
||||
body=_("Renaming '{}'").format(chat_name),
|
||||
extra_child=entry,
|
||||
close_response="cancel"
|
||||
)
|
||||
entry.connect("activate", lambda dialog, old_chat_name=chat_name, entry=entry, label_element=label_element: rename_chat_response(self, dialog, None, old_chat_name, entry, label_element))
|
||||
dialog.add_response("cancel", _("Cancel"))
|
||||
dialog.add_response("rename", _("Rename"))
|
||||
dialog.set_response_appearance("rename", Adw.ResponseAppearance.SUGGESTED)
|
||||
dialog.choose(
|
||||
parent = self,
|
||||
cancellable = None,
|
||||
callback = lambda dialog, task, old_chat_name=chat_name, entry=entry, label_element=label_element: rename_chat_response(self, dialog, task, old_chat_name, entry, label_element)
|
||||
)
|
||||
|
||||
# NEW CHAT | WORKS | UNUSED REASON: The 'Add Chat' button now creates a chat without a name AKA "New Chat"
|
||||
|
||||
def new_chat_response(self, dialog, task, entry):
|
||||
chat_name = _("New Chat")
|
||||
if entry is not None and entry.get_text() != "": chat_name = entry.get_text()
|
||||
if chat_name and (task is None or dialog.choose_finish(task) == "create"):
|
||||
self.new_chat(chat_name)
|
||||
|
||||
|
||||
def new_chat(self):
|
||||
entry = Gtk.Entry()
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Create Chat"),
|
||||
body=_("Enter name for new chat"),
|
||||
extra_child=entry,
|
||||
close_response="cancel"
|
||||
)
|
||||
entry.connect("activate", lambda dialog, entry: new_chat_response(self, dialog, None, entry))
|
||||
dialog.add_response("cancel", _("Cancel"))
|
||||
dialog.add_response("create", _("Create"))
|
||||
dialog.set_response_appearance("create", Adw.ResponseAppearance.SUGGESTED)
|
||||
dialog.choose(
|
||||
parent = self,
|
||||
cancellable = None,
|
||||
callback = lambda dialog, task, entry=entry: new_chat_response(self, dialog, task, entry)
|
||||
)
|
||||
|
||||
# STOP PULL MODEL | WORKS
|
||||
|
||||
def stop_pull_model_response(self, dialog, task, model_name):
|
||||
if dialog.choose_finish(task) == "stop":
|
||||
self.stop_pull_model(model_name)
|
||||
|
||||
def stop_pull_model(self, model_name):
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Stop Model"),
|
||||
body=_("Are you sure you want to stop pulling '{}'?").format(model_name),
|
||||
close_response="cancel"
|
||||
)
|
||||
dialog.add_response("cancel", _("Cancel"))
|
||||
dialog.add_response("stop", _("Stop"))
|
||||
dialog.set_response_appearance("stop", Adw.ResponseAppearance.DESTRUCTIVE)
|
||||
dialog.choose(
|
||||
parent = self.manage_models_dialog,
|
||||
cancellable = None,
|
||||
callback = lambda dialog, task, model_name = model_name: stop_pull_model_response(self, dialog, task, model_name)
|
||||
)
|
||||
|
||||
# DELETE MODEL | WORKS
|
||||
|
||||
def delete_model_response(self, dialog, task, model_name):
|
||||
if dialog.choose_finish(task) == "delete":
|
||||
self.delete_model(model_name)
|
||||
|
||||
def delete_model(self, model_name):
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Delete Model"),
|
||||
body=_("Are you sure you want to delete '{}'?").format(model_name),
|
||||
close_response="cancel"
|
||||
)
|
||||
dialog.add_response("cancel", _("Cancel"))
|
||||
dialog.add_response("delete", _("Delete"))
|
||||
dialog.set_response_appearance("delete", Adw.ResponseAppearance.DESTRUCTIVE)
|
||||
dialog.choose(
|
||||
parent = self.manage_models_dialog,
|
||||
cancellable = None,
|
||||
callback = lambda dialog, task, model_name = model_name: delete_model_response(self, dialog, task, model_name)
|
||||
)
|
||||
|
||||
# PULL MODEL | WORKS
|
||||
|
||||
def pull_model_response(self, dialog, task, model_name, tag_drop_down):
|
||||
if dialog.choose_finish(task) == "pull":
|
||||
model = f"{model_name}:{tag_drop_down.get_selected_item().get_string().split(' | ')[0]}"
|
||||
self.pull_model(model)
|
||||
|
||||
def pull_model(self, model_name):
|
||||
tag_list = Gtk.StringList()
|
||||
for tag in available_models[model_name]['tags']:
|
||||
tag_list.append(f"{tag[0]} | {tag[1]}")
|
||||
tag_drop_down = Gtk.DropDown(
|
||||
enable_search=True,
|
||||
model=tag_list
|
||||
)
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Pull Model"),
|
||||
body=_("Please select a tag to pull '{}'").format(model_name),
|
||||
extra_child=tag_drop_down,
|
||||
close_response="cancel"
|
||||
)
|
||||
dialog.add_response("cancel", _("Cancel"))
|
||||
dialog.add_response("pull", _("Pull"))
|
||||
dialog.set_response_appearance("pull", Adw.ResponseAppearance.SUGGESTED)
|
||||
dialog.choose(
|
||||
parent = self.manage_models_dialog,
|
||||
cancellable = None,
|
||||
callback = lambda dialog, task, model_name = model_name, tag_drop_down = tag_drop_down: pull_model_response(self, dialog, task, model_name, tag_drop_down)
|
||||
)
|
||||
|
||||
# REMOVE IMAGE | WORKS
|
||||
|
||||
def remove_attached_file_response(self, dialog, task, button):
|
||||
if dialog.choose_finish(task) == 'remove':
|
||||
self.remove_attached_file(button)
|
||||
|
||||
def remove_attached_file(self, button):
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Remove File"),
|
||||
body=_("Are you sure you want to remove file?"),
|
||||
close_response="cancel"
|
||||
)
|
||||
dialog.add_response("cancel", _("Cancel"))
|
||||
dialog.add_response("remove", _("Remove"))
|
||||
dialog.set_response_appearance("remove", Adw.ResponseAppearance.DESTRUCTIVE)
|
||||
dialog.choose(
|
||||
parent = self,
|
||||
cancellable = None,
|
||||
callback = lambda dialog, task, button=button: remove_attached_file_response(self, dialog, task, button)
|
||||
)
|
||||
|
||||
# RECONNECT REMOTE | WORKS
|
||||
|
||||
def reconnect_remote_response(self, dialog, task, entry):
|
||||
response = dialog.choose_finish(task)
|
||||
if not task or response == "remote":
|
||||
self.connect_remote(entry.get_text())
|
||||
elif response == "local":
|
||||
self.connect_local()
|
||||
elif response == "close":
|
||||
self.destroy()
|
||||
|
||||
def reconnect_remote(self, current_url):
|
||||
entry = Gtk.Entry(
|
||||
css_classes = ["error"],
|
||||
text = current_url
|
||||
)
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Connection Error"),
|
||||
body=_("The remote instance has disconnected"),
|
||||
extra_child=entry
|
||||
)
|
||||
entry.connect("activate", lambda entry, dialog: reconnect_remote_response(self, dialog, None, entry))
|
||||
dialog.add_response("close", _("Close Alpaca"))
|
||||
dialog.add_response("local", _("Use local instance"))
|
||||
dialog.add_response("remote", _("Connect"))
|
||||
dialog.set_response_appearance("remote", Adw.ResponseAppearance.SUGGESTED)
|
||||
dialog.choose(
|
||||
parent = self,
|
||||
cancellable = None,
|
||||
callback = lambda dialog, task, entry=entry: reconnect_remote_response(self, dialog, task, entry)
|
||||
)
|
||||
|
||||
# CREATE MODEL | WORKS
|
||||
|
||||
def create_model_from_existing_response(self, dialog, task, dropdown):
|
||||
model = dropdown.get_selected_item().get_string()
|
||||
if dialog.choose_finish(task) == 'accept' and model:
|
||||
self.create_model(model, False)
|
||||
|
||||
def create_model_from_existing(self):
|
||||
string_list = Gtk.StringList()
|
||||
for model in self.local_models:
|
||||
string_list.append(model)
|
||||
|
||||
dropdown = Gtk.DropDown()
|
||||
dropdown.set_model(string_list)
|
||||
dialog = Adw.AlertDialog(
|
||||
heading=_("Select Model"),
|
||||
body=_("This model will be used as the base for the new model"),
|
||||
extra_child=dropdown
|
||||
)
|
||||
dialog.add_response("cancel", _("Cancel"))
|
||||
dialog.add_response("accept", _("Accept"))
|
||||
dialog.set_response_appearance("accept", Adw.ResponseAppearance.SUGGESTED)
|
||||
dialog.choose(
|
||||
parent = self,
|
||||
cancellable = None,
|
||||
callback = lambda dialog, task, dropdown=dropdown: create_model_from_existing_response(self, dialog, task, dropdown)
|
||||
)
|
||||
|
||||
def create_model_from_file_response(self, file_dialog, result):
|
||||
try: file = file_dialog.open_finish(result)
|
||||
except: return
|
||||
try:
|
||||
self.create_model(file.get_path(), True)
|
||||
except Exception as e:
|
||||
self.show_toast("error", 5, self.main_overlay) ##TODO NEW ERROR MESSAGE
|
||||
|
||||
def create_model_from_file(self):
|
||||
file_dialog = Gtk.FileDialog(default_filter=self.file_filter_gguf)
|
||||
file_dialog.open(self, None, lambda file_dialog, result: create_model_from_file_response(self, file_dialog, result))
|
||||
|
||||
# FILE CHOOSER | WORKS
|
||||
|
||||
def attach_file_response(self, file_dialog, result, file_type):
|
||||
try: file = file_dialog.open_finish(result)
|
||||
except: return
|
||||
self.attach_file(file.get_path(), file_type)
|
||||
|
||||
|
||||
def attach_file(self, filter, file_type):
|
||||
if file_type == 'image' and not self.verify_if_image_can_be_used():
|
||||
self.show_toast('error', 8, self.main_overlay)
|
||||
return
|
||||
file_dialog = Gtk.FileDialog(default_filter=filter)
|
||||
file_dialog.open(self, None, lambda file_dialog, result, file_type=file_type: attach_file_response(self, file_dialog, result, file_type))
|
||||
2
src/icons/brain-augemnted-symbolic.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 5.976562 2 c 0.546876 0 1 0.453125 1 1 v 10 c 0 0.546875 -0.453124 1 -1 1 h -0.976562 c -1.652344 0 -3 -1.347656 -3 -3 v -6 c 0 -1.652344 1.347656 -3 3 -3 z m -5.976562 3 v 6 c 0 2.765625 2.234375 5 5 5 h 0.976562 c 1.660157 0 3 -1.339844 3 -3 v -10 c 0 -1.660156 -1.339843 -3 -3 -3 h -0.976562 c -2.765625 0 -5 2.234375 -5 5 z m 0 0"/><path d="m 1.488281 8.996094 h 1.511719 c 1.101562 0 1.988281 -0.886719 1.988281 -1.984375 v -0.515625 c 0 -0.273438 -0.222656 -0.5 -0.5 -0.5 c -0.273437 0 -0.5 0.226562 -0.5 0.5 v 0.515625 c 0 0.542969 -0.445312 0.984375 -0.988281 0.984375 h -1.511719 c -0.273437 0 -0.5 0.226562 -0.5 0.5 c 0 0.277344 0.226563 0.5 0.5 0.5 z m 0 0"/><path d="m 7.5 9.992188 h -1.511719 c -1.101562 0 -1.988281 0.886718 -1.988281 1.984374 v 0.515626 c 0 0.273437 0.222656 0.5 0.5 0.5 s 0.5 -0.226563 0.5 -0.5 v -0.515626 c 0 -0.539062 0.445312 -0.984374 0.988281 -0.984374 h 1.511719 c 0.277344 0 0.5 -0.226563 0.5 -0.5 c 0 -0.277344 -0.222656 -0.5 -0.5 -0.5 z m 0 0"/><path d="m 11.015625 14 h -1.035156 c -0.546875 0 -1 -0.453125 -1 -1 v -10 c 0 -0.546875 0.453125 -1 1 -1 h 1.035156 v -2 h -1.035156 c -1.664063 0 -3 1.339844 -3 3 v 10 c 0 1.660156 1.335937 3 3 3 h 1.035156 z m 0 0"/><path d="m 10 5 h 2.242188 l 2.148437 -2.6875 l -0.78125 -0.625 l -2 2.5 l 0.390625 -0.1875 h -2 z m 0 0"/><path d="m 10 11 h 2 l -0.390625 -0.1875 l 2 2.5 l 0.78125 -0.625 l -2.148437 -2.6875 h -2.242188 z m 0 0"/><path d="m 14.488281 1.976562 c -0.265625 0 -0.488281 -0.21875 -0.488281 -0.488281 c 0 -0.265625 0.222656 -0.488281 0.488281 -0.488281 c 0.269531 0 0.488281 0.222656 0.488281 0.488281 c 0 0.269531 -0.21875 0.488281 -0.488281 0.488281 z m 0 -1.976562 c -0.824219 0 -1.488281 0.664062 -1.488281 1.488281 s 0.664062 1.488281 1.488281 1.488281 s 1.488281 -0.664062 1.488281 -1.488281 s -0.664062 -1.488281 -1.488281 -1.488281 z m 0 0"/><path d="m 14.488281 13.976562 c -0.265625 0 -0.488281 -0.21875 -0.488281 -0.488281 c 0 -0.265625 0.222656 -0.488281 0.488281 -0.488281 c 0.269531 0 0.488281 0.222656 0.488281 0.488281 c 0 0.269531 -0.21875 0.488281 -0.488281 0.488281 z m 0 -1.976562 c -0.824219 0 -1.488281 0.664062 -1.488281 1.488281 s 0.664062 1.488281 1.488281 1.488281 s 1.488281 -0.664062 1.488281 -1.488281 s -0.664062 -1.488281 -1.488281 -1.488281 z m 0 0"/><path d="m 14.488281 7.976562 c -0.265625 0 -0.488281 -0.21875 -0.488281 -0.488281 c 0 -0.265625 0.222656 -0.488281 0.488281 -0.488281 c 0.269531 0 0.488281 0.222656 0.488281 0.488281 c 0 0.269531 -0.21875 0.488281 -0.488281 0.488281 z m 0 -1.976562 c -0.824219 0 -1.488281 0.664062 -1.488281 1.488281 s 0.664062 1.488281 1.488281 1.488281 s 1.488281 -0.664062 1.488281 -1.488281 s -0.664062 -1.488281 -1.488281 -1.488281 z m 0 0"/></g><path d="m 10 7.53125 h 4" fill="none" stroke="#222222"/><path d="m 4.5 4 h 3 c 0.277344 0 0.5 0.222656 0.5 0.5 s -0.222656 0.5 -0.5 0.5 h -3 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 s 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#222222"/></svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
2
src/icons/chain-link-loose-symbolic.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 2.683594 9.777344 c -1.570313 -0.542969 -2.683594 -2.039063 -2.683594 -3.777344 c 0 -2.199219 1.800781 -4 4 -4 h 3 c 2.199219 0 4 1.800781 4 4 c 0 1.640625 -0.992188 3.070312 -2.421875 3.679688 l -0.785156 -1.839844 c 0.710937 -0.304688 1.207031 -1 1.207031 -1.839844 c 0 -1.125 -0.875 -2 -2 -2 h -3 c -1.125 0 -2 0.875 -2 2 c 0 0.890625 0.558594 1.621094 1.339844 1.890625 z m 0 0"/><path d="m 8 14 c -2.199219 0 -4 -1.800781 -4 -4 c 0 -1.621094 0.96875 -3.03125 2.367188 -3.65625 l 0.816406 1.828125 c -0.699219 0.3125 -1.183594 1 -1.183594 1.828125 c 0 1.125 0.875 2 2 2 h 3 c 1.125 0 2 -0.875 2 -2 c 0 -0.867188 -0.53125 -1.582031 -1.277344 -1.867188 l 0.714844 -1.867187 c 1.503906 0.574219 2.5625 2.039063 2.5625 3.734375 c 0 2.199219 -1.800781 4 -4 4 z m 0 0"/></g></svg>
|
||||
|
After Width: | Height: | Size: 934 B |
4
src/icons/chat-message-new-symbolic.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 3 1 c -1.644531 0 -3 1.355469 -3 3 v 6 c 0 1.644531 1.355469 3 3 3 h 1 v 3 l 3 -3 v -1 c 0 -0.550781 -0.449219 -1 -1 -1 h -3 c -0.570312 0 -1 -0.429688 -1 -1 v -6 c 0 -0.554688 0.445312 -1 1 -1 h 10 c 0.554688 0 1 0.445312 1 1 v 4 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -4 c 0 -1.644531 -1.355469 -3 -3 -3 z m 8 7 v 3 h -3 v 2 h 3 v 3 h 2 v -3 h 3 v -2 h -3 v -3 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 548 B |
4
src/icons/dialog-warning-symbolic.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 7.90625 0.09375 c -0.527344 -0.0273438 -1.039062 0.28125 -1.4375 0.96875 l -6.25 11.59375 c -0.535156 0.964844 0.046875 2.34375 1.09375 2.34375 h 13.15625 c 0.980469 0 1.902344 -1.160156 1.21875 -2.34375 l -6.3125 -11.53125 c -0.398438 -0.644531 -0.941406 -1.003906 -1.46875 -1.03125 z m 1.09375 3.90625 v 5 c 0.007812 0.527344 -0.472656 1 -1 1 s -1.007812 -0.472656 -1 -1 v -5 z m -1 7 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 s -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 649 B |
4
src/icons/document-edit-symbolic.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 12.277344 0.832031 c -0.578125 0.007813 -1.167969 0.230469 -1.691406 0.753907 l -9 9 c -0.375 0.375 -0.585938 0.882812 -0.585938 1.414062 v 3 h 3 c 0.53125 0 1.039062 -0.210938 1.414062 -0.585938 l 9 -9 c 1.789063 -1.789062 0.082032 -4.390624 -1.890624 -4.570312 c -0.082032 -0.011719 -0.164063 -0.011719 -0.246094 -0.011719 z m -1.777344 3.605469 l 1.0625 1.0625 l -7.0625 7.0625 l -1.0625 -1.0625 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 574 B |
7
src/icons/document-open-symbolic.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="#2e3436">
|
||||
<path d="m 3 1 c -1.644531 0 -3 1.355469 -3 3 v 8 c 0 1.644531 1.355469 3 3 3 h 8.882812 c 0.832032 0 1.578126 -0.402344 2.054688 -0.9375 c 0.472656 -0.53125 0.738281 -1.167969 0.910156 -1.800781 l 0.972656 -2.609375 c 0.390626 -1.449219 -0.09375 -2.652344 -0.820312 -3.167969 c -0.484375 -0.34375 -0.714844 -0.292969 -1 -0.324219 v -1.160156 c 0 -0.855469 -0.558594 -1.589844 -1.09375 -1.828125 c -0.53125 -0.238281 -1.011719 -0.167969 -1.011719 -0.167969 l 0.105469 -0.003906 h -3.585938 l -1.707031 -1.707031 c -0.1875 -0.1875 -0.441406 -0.292969 -0.707031 -0.292969 z m 0 2 h 2.585938 l 1.707031 1.707031 c 0.1875 0.1875 0.441406 0.292969 0.707031 0.292969 h 4 c 0.035156 0 0.070312 -0.003906 0.105469 -0.007812 c 0 0 0.019531 0.019531 -0.011719 0.003906 c -0.035156 -0.011719 -0.09375 -0.25 -0.09375 0.003906 v 2 c 0 0.550781 0.449219 1 1 1 c 1 0 1.046875 0.703125 0.886719 1.128906 l -0.972657 2.609375 c -0.117187 0.4375 -0.296874 0.800781 -0.472656 0.996094 c -0.175781 0.199219 -0.285156 0.265625 -0.558594 0.265625 h -8.882812 c -0.570312 0 -1 -0.429688 -1 -1 v -8 c 0 -0.570312 0.46875 -0.792969 1 -1 z m 0 0"/>
|
||||
<path d="m 7 6 l 0.042969 0.003906 c -0.914063 -0.042968 -1.75 0.390625 -2.195313 0.96875 c -0.710937 1.222656 -1.15625 2.277344 -1.800781 3.71875 c -0.171875 0.523438 0.117187 1.089844 0.640625 1.261719 c 0.527344 0.171875 1.09375 -0.117187 1.261719 -0.640625 c 0.488281 -1.011719 0.921875 -1.816406 1.339843 -2.808594 c 0.210938 -0.503906 0.703126 -0.492187 0.898438 -0.503906 h 5.8125 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m 0 0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
2
src/icons/document-text-symbolic.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 9 2 v 5 h 4 v -1 z m -4 2 v 1 h 3 v -1 z m 0 2 v 1 h 3 v -1 z m 0 2 v 1 h 6 v -1 z m 0 2 v 1 h 6 v -1 z m 0 2 v 1 h 6 v -1 z m 0 0"/><path d="m 2 13 c 0 1.660156 1.339844 3 3 3 h 6 c 1.660156 0 3 -1.339844 3 -3 v -6 c 0 -0.90625 -0.359375 -1.773438 -1 -2.414062 l -2.585938 -2.585938 c -0.640624 -0.640625 -1.507812 -1 -2.414062 -1 h -3 c -1.660156 0 -3 1.339844 -3 3 z m 3 -10 h 3 c 0.375 0 0.734375 0.148438 1 0.414062 l 2.585938 2.585938 c 0.265624 0.265625 0.414062 0.625 0.414062 1 v 6 c 0 0.546875 -0.453125 1 -1 1 h -6 c -0.546875 0 -1 -0.453125 -1 -1 v -9 c 0 -0.546875 0.453125 -1 1 -1 z m 0 0"/></g></svg>
|
||||
|
After Width: | Height: | Size: 771 B |
4
src/icons/edit-copy-symbolic.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 0 3 c 0 -1.644531 1.355469 -3 3 -3 h 5 c 1.644531 0 3 1.355469 3 3 c 0 0.550781 -0.449219 1 -1 1 s -1 -0.449219 -1 -1 c 0 -0.570312 -0.429688 -1 -1 -1 h -5 c -0.570312 0 -1 0.429688 -1 1 v 5 c 0 0.570312 0.429688 1 1 1 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 c -1.644531 0 -3 -1.355469 -3 -3 z m 5 5 c 0 -1.644531 1.355469 -3 3 -3 h 5 c 1.644531 0 3 1.355469 3 3 v 5 c 0 1.644531 -1.355469 3 -3 3 h -5 c -1.644531 0 -3 -1.355469 -3 -3 z m 2 0 v 5 c 0 0.570312 0.429688 1 1 1 h 5 c 0.570312 0 1 -0.429688 1 -1 v -5 c 0 -0.570312 -0.429688 -1 -1 -1 h -5 c -0.570312 0 -1 0.429688 -1 1 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 765 B |
4
src/icons/folder-download-symbolic.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 8 0 c -0.550781 0 -1 0.449219 -1 1 v 8.585938 l -2.292969 -2.292969 c -0.1875 -0.1875 -0.441406 -0.292969 -0.707031 -0.292969 s -0.519531 0.105469 -0.707031 0.292969 c -0.390625 0.390625 -0.390625 1.023437 0 1.414062 l 4 4 c 0.390625 0.390625 1.023437 0.390625 1.414062 0 l 4 -4 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 s -1.023437 -0.390625 -1.414062 0 l -2.292969 2.292969 v -8.585938 c 0 -0.550781 -0.449219 -1 -1 -1 z m -6 14 v 2 h 12 v -2 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 630 B |
2
src/icons/globe-symbolic.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 7.5 0 c -4.128906 0 -7.5 3.371094 -7.5 7.5 s 3.371094 7.5 7.5 7.5 s 7.5 -3.371094 7.5 -7.5 s -3.371094 -7.5 -7.5 -7.5 z m 0 2 c 0.257812 0 0.503906 0.023438 0.75 0.054688 c 0.191406 0.261718 0.382812 0.59375 0.550781 1.027343 c 0.105469 0.277344 0.203125 0.585938 0.289063 0.917969 h -3.179688 c 0.085938 -0.332031 0.183594 -0.640625 0.289063 -0.917969 c 0.167969 -0.433593 0.359375 -0.765625 0.550781 -1.027343 c 0.246094 -0.03125 0.492188 -0.054688 0.75 -0.054688 z m -2.085938 0.40625 c -0.050781 0.109375 -0.105468 0.203125 -0.148437 0.316406 c -0.148437 0.386719 -0.269531 0.820313 -0.378906 1.277344 h -1.617188 c 0.570313 -0.691406 1.296875 -1.246094 2.144531 -1.59375 z m 4.171876 0 c 0.847656 0.347656 1.574218 0.902344 2.144531 1.59375 h -1.617188 c -0.109375 -0.457031 -0.230469 -0.890625 -0.378906 -1.277344 c -0.042969 -0.113281 -0.097656 -0.207031 -0.148437 -0.316406 z m -6.980469 2.59375 h 2.082031 c -0.097656 0.628906 -0.148438 1.300781 -0.167969 2 h -2.480469 c 0.0625 -0.714844 0.253907 -1.390625 0.566407 -2 z m 3.09375 0 h 3.601562 c 0.101563 0.617188 0.15625 1.292969 0.179688 2 h -3.960938 c 0.023438 -0.707031 0.078125 -1.382812 0.179688 -2 z m 4.613281 0 h 2.082031 c 0.3125 0.609375 0.503907 1.285156 0.566407 2 h -2.480469 c -0.019531 -0.699219 -0.070313 -1.371094 -0.167969 -2 z m -8.273438 3 h 2.480469 c 0.019531 0.699219 0.070313 1.375 0.167969 2 h -2.082031 c -0.3125 -0.609375 -0.503907 -1.285156 -0.566407 -2 z m 3.480469 0 h 3.960938 c -0.023438 0.707031 -0.078125 1.382812 -0.179688 2 h -3.601562 c -0.101563 -0.617188 -0.15625 -1.292969 -0.179688 -2 z m 4.960938 0 h 2.480469 c -0.0625 0.714844 -0.253907 1.390625 -0.566407 2 h -2.082031 c 0.097656 -0.625 0.148438 -1.300781 0.167969 -2 z m -7.210938 3 h 1.617188 c 0.109375 0.457031 0.230469 0.890625 0.378906 1.273438 c 0.042969 0.117187 0.097656 0.210937 0.148437 0.320312 c -0.847656 -0.347656 -1.574218 -0.902344 -2.144531 -1.59375 z m 2.640625 0 h 3.179688 c -0.085938 0.332031 -0.183594 0.640625 -0.289063 0.917969 c -0.167969 0.433593 -0.359375 0.765625 -0.550781 1.027343 c -0.246094 0.03125 -0.496094 0.054688 -0.75 0.054688 s -0.503906 -0.023438 -0.75 -0.054688 c -0.191406 -0.261718 -0.382812 -0.59375 -0.550781 -1.027343 c -0.105469 -0.277344 -0.203125 -0.585938 -0.289063 -0.917969 z m 4.203125 0 h 1.617188 c -0.570313 0.691406 -1.296875 1.246094 -2.144531 1.59375 c 0.050781 -0.109375 0.105468 -0.203125 0.148437 -0.320312 c 0.148437 -0.382813 0.269531 -0.816407 0.378906 -1.273438 z m 0 0" fill="#222222"/></svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
7
src/icons/image-x-generic-symbolic.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="#2e3436">
|
||||
<path d="m 6 5 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 s 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m 3.5 3 l -2 2 l -1.5 -1 l -2 2 v 0.5 c 0 0.5 0.5 0.5 0.5 0.5 h 7 s 0.472656 -0.035156 0.5 -0.5 v -1 z m 0 0"/>
|
||||
<path d="m 4 1 c -1.644531 0 -3 1.355469 -3 3 v 8 c 0 1.644531 1.355469 3 3 3 h 8 c 1.644531 0 3 -1.355469 3 -3 v -8 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 2 h 8 c 0.570312 0 1 0.429688 1 1 v 8 c 0 0.570312 -0.429688 1 -1 1 h -8 c -0.570312 0 -1 -0.429688 -1 -1 v -8 c 0 -0.570312 0.429688 -1 1 -1 z m 0 0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 708 B |
2
src/icons/library-symbolic.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 1.5 2 h 2 c 0.277344 0 0.5 0.222656 0.5 0.5 v 12 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -2 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -12 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 5.5 4 h 1 c 0.277344 0 0.5 0.222656 0.5 0.5 v 10 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -1 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -10 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 8.5 3 h 1 c 0.277344 0 0.5 0.222656 0.5 0.5 v 11 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -1 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -11 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 10.707031 1.460938 l 0.964844 -0.261719 c 0.265625 -0.070313 0.539063 0.089843 0.613281 0.355469 l 3.363282 12.558593 c 0.070312 0.265625 -0.085938 0.539063 -0.351563 0.609375 l -0.96875 0.261719 c -0.265625 0.070313 -0.539063 -0.089844 -0.613281 -0.355469 l -3.363282 -12.554687 c -0.070312 -0.269531 0.085938 -0.542969 0.355469 -0.613281 z m 0 0"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
4
src/icons/list-add-symbolic.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 7 1 v 6 h -6 v 2 h 6 v 6 h 2 v -6 h 6 v -2 h -6 v -6 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 228 B |
4
src/icons/media-playback-stop-symbolic.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 3.5 2 h 9 c 0.828125 0 1.5 0.671875 1.5 1.5 v 9 c 0 0.828125 -0.671875 1.5 -1.5 1.5 h -9 c -0.828125 0 -1.5 -0.671875 -1.5 -1.5 v -9 c 0 -0.828125 0.671875 -1.5 1.5 -1.5 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 345 B |
8
src/icons/open-menu-symbolic.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="#2e3436">
|
||||
<path d="m 1 2 h 14 v 2 h -14 z m 0 0"/>
|
||||
<path d="m 1 7 h 14 v 2 h -14 z m 0 0"/>
|
||||
<path d="m 1 12 h 14 v 2 h -14 z m 0 0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 314 B |
2
src/icons/paper-plane-symbolic.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 15 8 l -14 -7 v 6 l 8 1 l -8 1 v 6 z m 0 0" fill="#222222"/></svg>
|
||||
|
After Width: | Height: | Size: 204 B |
4
src/icons/preferences-other-symbolic.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 12.5 0.0234375 c -0.292969 -0.0039063 -0.59375 0.0195313 -0.882812 0.0937505 c -1.867188 0.488281 -2.984376 2.382812 -2.496094 4.234374 c 0.101562 0.386719 0.289062 0.742188 0.5 1.054688 c -0.109375 0.015625 -1.625 2.59375 -1.625 2.59375 l 3.410156 0.023438 l 0.800781 -1.117188 c 0.378907 0.03125 0.78125 0.023438 1.171875 -0.078125 c 1.863282 -0.484375 2.980469 -2.382813 2.496094 -4.234375 c -0.105469 -0.386719 -0.292969 -0.738281 -0.503906 -1.054688 l -1.359375 2.304688 c -0.28125 0.476562 -0.882813 0.632812 -1.355469 0.355469 l -0.875 -0.507813 c -0.476562 -0.277344 -0.636719 -0.875 -0.355469 -1.347656 l 1.363281 -2.3085938 c -0.097656 -0.0039062 -0.195312 -0.0117187 -0.289062 -0.0117187 z m -8.875 0.6914065 c -0.011719 0 -0.019531 0 -0.027344 0.003906 c -0.230468 0.046875 -0.445312 0.132812 -0.65625 0.21875 c -0.019531 0.625 0.085938 1.441406 -0.15625 1.65625 c -0.242187 0.210938 -1.039062 0.035156 -1.652344 -0.03125 c -0.132812 0.238281 -0.238281 0.484375 -0.3125 0.75 c 0.476563 0.394531 1.136719 0.839844 1.152344 1.15625 c 0.015625 0.320312 -0.625 0.804688 -1.058594 1.25 c 0.101563 0.257812 0.25 0.492188 0.40625 0.71875 c 0.605469 -0.125 1.359376 -0.375 1.621094 -0.1875 c 0.261719 0.1875 0.261719 1.003906 0.34375 1.625 c 0.246094 0.074219 0.507813 0.105469 0.777344 0.125 c 0.28125 -0.554688 0.566406 -1.320312 0.875 -1.40625 c 0.316406 -0.089844 0.960938 0.457031 1.5 0.78125 c 0.214844 -0.152344 0.410156 -0.335938 0.589844 -0.53125 c -0.253906 -0.574219 -0.71875 -1.292969 -0.589844 -1.59375 c 0.125 -0.300781 0.96875 -0.46875 1.558594 -0.6875 c 0.003906 -0.074219 0.03125 -0.144531 0.03125 -0.21875 c 0 -0.191406 -0.035156 -0.378906 -0.0625 -0.5625 c -0.605469 -0.160156 -1.464844 -0.242188 -1.621094 -0.53125 c -0.160156 -0.289062 0.238281 -1.0625 0.433594 -1.65625 c -0.199219 -0.179688 -0.417969 -0.335938 -0.652344 -0.46875 c -0.503906 0.375 -1.085938 0.996094 -1.40625 0.9375 c -0.316406 -0.054688 -0.660156 -0.820312 -0.996094 -1.34375 c -0.03125 0.003906 -0.066406 0 -0.097656 -0.003906 z m 0.59375 1.878906 c 0.929688 0 1.6875 0.753906 1.6875 1.6875 s -0.757812 1.6875 -1.6875 1.6875 s -1.683594 -0.753906 -1.683594 -1.6875 s 0.753906 -1.6875 1.683594 -1.6875 z m 8.621094 6.332031 c -0.144532 0 -0.273438 0.023438 -0.359375 0.074219 h -9.050781 c -0.246094 -0.105469 -0.746094 -0.046875 -0.964844 0.179688 l -2.160156 2.113281 c -0.191407 0.175781 -0.30078175 0.484375 -0.304688 0.707031 c -0.0546875 0.886719 1 1.320312 1.636719 0.792969 l 1.363281 -1.332031 l 0.003906 3.539062 c 0 0.570312 0.457032 1 0.996094 1 h 7.992188 c 0.523437 0 0.996093 -0.445312 0.996093 -0.9375 l -0.003906 -3.601562 l 1.335937 1.308593 c 0.636719 0.527344 1.6875 0.09375 1.636719 -0.792969 c -0.003906 -0.222656 -0.113281 -0.53125 -0.300781 -0.703124 l -2.164062 -2.117188 c -0.144532 -0.152344 -0.417969 -0.226562 -0.652344 -0.230469 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
4
src/icons/preferences-system-symbolic.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 13.855469 0 l -1.539063 1.4375 c -0.453125 0.421875 -0.53125 1.148438 -0.269531 1.707031 l -5.886719 5.996094 c -0.011718 0 -0.019531 0 -0.03125 0 c -0.257812 -0.128906 -0.550781 -0.183594 -0.839844 -0.148437 c -0.328124 0.046874 -0.632812 0.199218 -0.867187 0.441406 l -3.945313 3.996094 c -0.3906245 0.375 -0.5468745 0.933593 -0.4062495 1.457031 c 0.1406255 0.523437 0.5546875 0.929687 1.0820315 1.058593 c 0.527344 0.132813 1.082031 -0.03125 1.453125 -0.425781 l 3.945312 -3.996093 c 0.472657 -0.453126 0.59375 -1.15625 0.296875 -1.738282 l 5.890625 -5.964844 c 0.558594 0.25 1.273438 0.148438 1.707031 -0.289062 l 1.414063 -1.5625 z m -10.308594 0.0898438 c -0.398437 0 -0.785156 0.0937502 -1.140625 0.2187502 l 1.882812 1.878906 c 0.390626 0.382812 0.390626 1 0 1.386719 l -0.710937 0.707031 c -0.386719 0.386719 -1 0.386719 -1.390625 0 l -1.882812 -1.878906 c -0.125 0.355468 -0.2187505 0.742187 -0.2187505 1.140625 c 0 1.90625 1.5507815 3.453125 3.4609375 3.453125 c 0.402344 0 0.789063 -0.09375 1.144531 -0.21875 l 1.175782 1.171875 h 0.058593 l 2.070313 -2.0625 l -1.203125 -1.203125 c 0.125 -0.359375 0.214843 -0.742188 0.214843 -1.140625 c 0 -1.90625 -1.546874 -3.4531252 -3.460937 -3.4531252 z m 6.550781 7.8906252 l -2.070312 2.066406 c 0.011718 0.027344 0.023437 0.058594 0.03125 0.089844 l 1.144531 1.140625 c -0.125 0.355468 -0.21875 0.742187 -0.21875 1.140625 c 0 1.902343 1.550781 3.449219 3.460937 3.449219 c 0.433594 0 0.855469 -0.101563 1.238282 -0.246094 l -2.007813 -2 c -0.386719 -0.386719 -0.386719 -1.035156 0 -1.417969 l 0.679688 -0.679687 c 0.195312 -0.191407 0.457031 -0.308594 0.710937 -0.308594 s 0.515625 0.117187 0.710938 0.308594 l 1.945312 1.941406 c 0.105469 -0.328125 0.183594 -0.683594 0.183594 -1.046875 c 0 -1.90625 -1.546875 -3.453125 -3.460938 -3.453125 c -0.398437 0 -0.785156 0.09375 -1.140624 0.21875 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
8
src/icons/sidebar-show-symbolic.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="#2e3436">
|
||||
<path d="m 6.5 14 v -12 h -5 v 12 z m 0 0" fill-opacity="0.34902"/>
|
||||
<path d="m 3 1 c -1.644531 0 -3 1.355469 -3 3 v 8 c 0 1.644531 1.355469 3 3 3 h 10 c 1.644531 0 3 -1.355469 3 -3 v -8 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 2 h 10 c 0.570312 0 1 0.429688 1 1 v 8 c 0 0.570312 -0.429688 1 -1 1 h -10 c -0.570312 0 -1 -0.429688 -1 -1 v -8 c 0 -0.570312 0.429688 -1 1 -1 z m 0 0"/>
|
||||
<path d="m 6 2 h 1 v 12 h -1 z m 0 0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 610 B |
10
src/icons/user-trash-symbolic.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="#2e3436">
|
||||
<path d="m 1 3 h 14 c 0.550781 0 1 0.449219 1 1 s -0.449219 1 -1 1 h -14 c -0.550781 0 -1 -0.449219 -1 -1 s 0.449219 -1 1 -1 z m 0 0"/>
|
||||
<path d="m 4 4 v -1.5 c 0 -1.386719 1.113281 -2.5 2.5 -2.5 h 2.980469 c 1.382812 0 2.5 1.113281 2.5 2.5 v 1.5 h -2 v -1.5 c 0 -0.269531 -0.230469 -0.5 -0.5 -0.5 h -2.980469 c -0.269531 0 -0.5 0.230469 -0.5 0.5 v 1.5 z m 0 0"/>
|
||||
<path d="m 4 4 v 9 c 0 0.546875 0.453125 1 1 1 h 6 c 0.546875 0 1 -0.453125 1 -1 v -9 h 2 v 9 c 0 1.660156 -1.339844 3 -3 3 h -6 c -1.660156 0 -3 -1.339844 -3 -3 v -9 z m 0 0"/>
|
||||
<path d="m 7 7 v 5 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -5 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 s 0.5 0.222656 0.5 0.5 z m 0 0"/>
|
||||
<path d="m 10 7 v 5 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -5 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 s 0.5 0.222656 0.5 0.5 z m 0 0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
4
src/icons/view-more-symbolic.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 7.996094 0 c -1.105469 0 -2 0.894531 -2 2 s 0.894531 2 2 2 c 1.101562 0 2 -0.894531 2 -2 s -0.898438 -2 -2 -2 z m 0 6 c -1.105469 0 -2 0.894531 -2 2 s 0.894531 2 2 2 c 1.101562 0 2 -0.894531 2 -2 s -0.898438 -2 -2 -2 z m 0 6 c -1.105469 0 -2 0.894531 -2 2 s 0.894531 2 2 2 c 1.101562 0 2 -0.894531 2 -2 s -0.898438 -2 -2 -2 z m 0 0" fill="#2e3436"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 499 B |
32
src/local_instance.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# local_instance.py
|
||||
import subprocess, os, threading
|
||||
from time import sleep
|
||||
|
||||
instance = None
|
||||
port = 11435
|
||||
data_dir = os.getenv("XDG_DATA_HOME")
|
||||
overrides = {}
|
||||
|
||||
def start():
|
||||
global instance, overrides
|
||||
params = overrides.copy()
|
||||
params["OLLAMA_HOST"] = f"127.0.0.1:{port}" # You can't change this directly sorry :3
|
||||
params["HOME"] = data_dir
|
||||
instance = subprocess.Popen(["/app/bin/ollama", "serve"], env={**os.environ, **params}, stderr=subprocess.PIPE, text=True)
|
||||
print("Starting Alpaca's Ollama instance...")
|
||||
sleep(1)
|
||||
print("Started Alpaca's Ollama instance")
|
||||
|
||||
def stop():
|
||||
global instance
|
||||
if instance:
|
||||
instance.kill()
|
||||
instance.wait()
|
||||
instance = None
|
||||
print("Stopped Alpaca's Ollama instance")
|
||||
|
||||
def reset():
|
||||
stop()
|
||||
sleep(1)
|
||||
start()
|
||||
|
||||
15
src/main.py
@@ -1,6 +1,6 @@
|
||||
# main.py
|
||||
#
|
||||
# Copyright 2024 Unknown
|
||||
# Copyright 2024 Jeffser
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -33,8 +33,7 @@ class AlpacaApplication(Adw.Application):
|
||||
super().__init__(application_id='com.jeffser.Alpaca',
|
||||
flags=Gio.ApplicationFlags.DEFAULT_FLAGS)
|
||||
self.create_action('quit', lambda *_: self.quit(), ['<primary>q'])
|
||||
self.create_action('clear', lambda *_: AlpacaWindow.clear_conversation_dialog(self.props.active_window), ['<primary>e'])
|
||||
self.create_action('reconnect', lambda *_: AlpacaWindow.show_connection_dialog(self.props.active_window), ['<primary>r'])
|
||||
self.create_action('preferences', lambda *_: AlpacaWindow.show_preferences_dialog(self.props.active_window), ['<primary>p'])
|
||||
self.create_action('about', self.on_about_action)
|
||||
|
||||
def do_activate(self):
|
||||
@@ -44,17 +43,17 @@ class AlpacaApplication(Adw.Application):
|
||||
win.present()
|
||||
|
||||
def on_about_action(self, widget, _):
|
||||
about = Adw.AboutWindow(transient_for=self.props.active_window,
|
||||
about = Adw.AboutDialog(#transient_for=self.props.active_window,
|
||||
application_name='Alpaca',
|
||||
application_icon='com.jeffser.Alpaca',
|
||||
developer_name='Jeffry Samuel Eduarte Rojas',
|
||||
version='0.2.2',
|
||||
version='0.9.4',
|
||||
developers=['Jeffser https://jeffser.com'],
|
||||
designers=['Jeffser https://jeffser.com'],
|
||||
translator_credits='Alex K (Russian) https://github.com/alexkdeveloper',
|
||||
copyright='© 2024 Jeffser',
|
||||
translator_credits='Alex K (Russian) https://github.com/alexkdeveloper\nJeffser (Spanish) https://jeffser.com\nDaimar Stein (Brazilian Portuguese) https://github.com/not-a-dev-stein\nLouis Chauvet-Villaret (French) https://github.com/loulou64490',
|
||||
copyright='© 2024 Jeffser\n© 2024 Ollama',
|
||||
issue_url='https://github.com/Jeffser/Alpaca/issues')
|
||||
about.present()
|
||||
about.present(parent=self.props.active_window)
|
||||
|
||||
def create_action(self, name, callback, shortcuts=None):
|
||||
action = Gio.SimpleAction.new(name, None)
|
||||
|
||||
@@ -26,12 +26,24 @@ configure_file(
|
||||
install_mode: 'r-xr-xr-x'
|
||||
)
|
||||
|
||||
#configure_file(
|
||||
#input: 'alpaca_search_provider.in',
|
||||
#output: 'alpaca_search_provider',
|
||||
#configuration: conf,
|
||||
#install: true,
|
||||
#install_dir: get_option('bindir'),
|
||||
#install_mode: 'r-xr-xr-x'
|
||||
#)
|
||||
|
||||
alpaca_sources = [
|
||||
'__init__.py',
|
||||
'main.py',
|
||||
'window.py',
|
||||
'connection_handler.py',
|
||||
'available_models.py',
|
||||
'dialogs.py',
|
||||
'local_instance.py',
|
||||
'update_history.py'
|
||||
]
|
||||
|
||||
install_data(alpaca_sources, install_dir: moduledir)
|
||||
|
||||
4
src/style-dark.css
Normal file
@@ -0,0 +1,4 @@
|
||||
.message-input {
|
||||
background-color: #343434;
|
||||
}
|
||||
|
||||
24
src/style.css
Normal file
@@ -0,0 +1,24 @@
|
||||
.message-input {
|
||||
background-color: #EBEBEB;
|
||||
}
|
||||
|
||||
.chat_row box.header {
|
||||
font-size: 14px;
|
||||
}
|
||||
.chat_row box {
|
||||
margin: 0;
|
||||
}
|
||||
.chat_row button {
|
||||
opacity: 0;
|
||||
transition: opacity .05s;
|
||||
}
|
||||
.chat_row:hover button {
|
||||
opacity: 1;
|
||||
}
|
||||
.message .delete-message-button {
|
||||
opacity: 0;
|
||||
transition: opacity .05s;
|
||||
}
|
||||
.message:hover .delete-message-button {
|
||||
opacity: 1;
|
||||
}
|
||||
38
src/update_history.py
Normal file
@@ -0,0 +1,38 @@
|
||||
# update_history.py
|
||||
# This script updates the old chats.json file to the structure needed for the new version
|
||||
import os, json, base64
|
||||
from PIL import Image
|
||||
import io
|
||||
|
||||
|
||||
def update(self):
|
||||
old_data = None
|
||||
new_data = {"chats": {}}
|
||||
with open(os.path.join(self.config_dir, "chats.json"), 'r') as f:
|
||||
old_data = json.load(f)["chats"]
|
||||
for chat_name, content in old_data.items():
|
||||
directory = os.path.join(self.data_dir, "chats", chat_name)
|
||||
if not os.path.exists(directory): os.makedirs(directory)
|
||||
new_messages = {}
|
||||
for message in content['messages']:
|
||||
message_id = self.generate_uuid()
|
||||
if 'images' in message:
|
||||
if not os.path.exists(os.path.join(directory, message_id)): os.makedirs(os.path.join(directory, message_id))
|
||||
new_images = []
|
||||
for image in message['images']:
|
||||
file_name = f"{self.generate_uuid()}.png"
|
||||
decoded = base64.b64decode(image)
|
||||
buffer = io.BytesIO(decoded)
|
||||
im = Image.open(buffer)
|
||||
im.save(os.path.join(directory, message_id, file_name))
|
||||
new_images.append(file_name)
|
||||
message['images'] = new_images
|
||||
new_messages[message_id] = message
|
||||
new_data['chats'][chat_name] = {}
|
||||
new_data['chats'][chat_name]['messages'] = new_messages
|
||||
|
||||
with open(os.path.join(self.data_dir, "chats", "chats.json"), "w+") as f:
|
||||
json.dump(new_data, f, indent=6)
|
||||
|
||||
os.remove(os.path.join(self.config_dir, "chats.json"))
|
||||
|
||||
1371
src/window.py
1090
src/window.ui
12
update_translation_files.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
cd "$(dirname "$0")"
|
||||
echo "Preparing template..."
|
||||
xgettext --output=po/alpaca.pot --files-from=po/POTFILES
|
||||
echo "Updating Spanish..."
|
||||
msgmerge -U po/es.po po/alpaca.pot
|
||||
#echo "Updating Russian..."
|
||||
#msgmerge -U po/ru.po po/alpaca.pot
|
||||
echo "Updating French"
|
||||
msgmerge -U po/fr.po po/alpaca.pot
|
||||
echo "Updating Brazilian Portuguese"
|
||||
msgmerge -U po/pt_BR.po po/alpaca.pot
|
||||