303 Commits
0.8.5 ... 1.0.4

Author SHA1 Message Date
jeffser
3f767d22e9 New relase notes 2024-08-01 14:56:38 -06:00
jeffser
7f3fb0d82d Tweaks to chat title generation 2024-08-01 14:52:37 -06:00
jeffser
d56c132459 Fixed title of model tag selector dialog 2024-08-01 14:48:11 -06:00
jeffser
acdce762c9 Translations update 2024-08-01 14:37:06 -06:00
jeffser
bd557d9652 Preparing for 1.0.4 2024-08-01 14:21:55 -06:00
Jeffry Samuel
3363d13fa0 changed support dialog frequency 2024-08-01 14:03:38 -06:00
Jeffry Samuel
52ba44e260 Update README.md 2024-08-01 14:02:28 -06:00
Nokse22
f06c2dae23 Added tables (#179) 2024-08-01 13:44:56 -06:00
jeffser
55a636f4d1 typo 2024-08-01 01:30:20 -06:00
jeffser
0fc8730272 dialog added to version notes 2024-08-01 01:27:49 -06:00
jeffser
61a2bc466e Changed content rating because of the donation dialog 2024-08-01 01:13:14 -06:00
jeffser
62b1923bf4 Added support dialog 2024-08-01 01:11:27 -06:00
jeffser
8e25376a12 Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-08-01 00:49:26 -06:00
jeffser
a9ab5d45a4 Preparing for 1.0.3 2024-08-01 00:49:19 -06:00
Jeffry Samuel
ce2a2f0b93 :) 2024-08-01 00:40:45 -06:00
jeffser
9cb6b0b665 Code block and markup fixes 2024-08-01 00:33:26 -06:00
jeffser
dfc21fc0e9 Fixed date format for Chinese translation 2024-07-31 23:32:49 -06:00
jeffser
19b089e6c6 Fixed problems with localization 2024-07-31 22:36:39 -06:00
jeffser
02aa2734e0 Changed window min height 2024-07-31 22:08:48 -06:00
jeffser
66f9fd7231 better check for connection 2024-07-31 21:17:31 -06:00
jeffser
1b125cb704 Appearance changes 2024-07-31 21:13:23 -06:00
jeffser
29f5d85c7b Added string to translation list 2024-07-31 19:55:30 -06:00
jeffser
c192a1f31c Added compatibility with generic code blocks without explicit language 2024-07-31 19:54:47 -06:00
jeffser
3b20daf807 Added bearer token entry to connection error dialog 2024-07-31 19:42:46 -06:00
jeffser
760c00e8ae Added German template 2024-07-30 12:48:20 -06:00
jeffser
6d8d3788a6 Added new models 2024-07-29 02:06:06 -06:00
jeffser
98e23e0033 Updated Ollama to v0.3.0 2024-07-29 01:50:52 -06:00
jeffser
4d7aff3458 Preparing for 1.0.2 2024-07-29 01:47:32 -06:00
jeffser
33e47696dc Fixed: Models with capital letters on the tag don't work 2024-07-29 01:41:22 -06:00
jeffser
c0f8825f83 Logging to file / about dialog, youtube transcripts are downloaded on the right folder, fixed Ollama not running sometimes 2024-07-29 01:35:07 -06:00
jeffser
7c26956cd4 Autodetect version 2024-07-23 21:53:52 -06:00
jeffser
52f02cd5d0 Preparing for 1.0.1 2024-07-23 21:45:48 -06:00
jeffser
0df6b20147 Removed AMD stuff for now 2024-07-23 21:43:23 -06:00
jeffser
253a2dda7d Removed filesystem permissions 2024-07-23 20:30:52 -06:00
jeffser
d762a85130 ROCM fix (maybe) 2024-07-23 20:03:27 -06:00
jeffser
a765e8cf2e Better verification for instance connection 2024-07-23 19:20:27 -06:00
jeffser
3e7fd1140c Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-07-23 19:16:55 -06:00
jeffser
a56631510d Fixed models with '-' in their names don't work 2024-07-23 19:16:40 -06:00
Jeffry Samuel
a042dfee50 Screenies labels fixed 2024-07-22 22:54:57 -06:00
jeffser
976fe138f7 New screenies 2024-07-22 22:51:33 -06:00
jeffser
88ff7c4dda Better progressbar 2024-07-22 22:26:39 -06:00
jeffser
f51d01b618 New models added! 2024-07-22 22:19:47 -06:00
jeffser
6122b732a3 Fixed logging bug 2024-07-22 22:03:44 -06:00
jeffser
818b88c94c Changed Ollama version to 0.2.8 2024-07-22 22:00:03 -06:00
jeffser
5ba1ba7823 Removed line I was using for testing 2024-07-22 21:52:29 -06:00
jeffser
dd1bf5118d It's comming! 2024-07-22 21:51:41 -06:00
jeffser
2462220e18 Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-07-22 20:21:40 -06:00
jeffser
f40260608f Added credits to simplified chinese translator 2024-07-22 20:21:37 -06:00
aritra saha
a319b9572f some fix (#151)
* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

---------

Co-authored-by: aritra saha <162728301+botollama@users.noreply.github.com>
Co-authored-by: Jeffry Samuel <69224322+Jeffser@users.noreply.github.com>
2024-07-22 17:41:25 -06:00
jeffser
8b704fba47 Translation updates 2024-07-21 18:28:44 -06:00
jeffser
69ecd7ff6e Updated languages 2024-07-21 18:18:46 -06:00
Yuehao Sui
423a258d27 Add Simplified Chinese localization (#150)
* Add Simplified Chinese localization

* Edit the header of zh_CN.po
2024-07-21 17:26:42 -06:00
jeffser
c7c1909fe7 Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-07-21 17:19:14 -06:00
jeffser
0be53dba98 Fixed toast notification 2024-07-21 17:17:37 -06:00
aritra saha
01c9bf3d1c small fix (#146)
* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

---------

Co-authored-by: aritra saha <162728301+botollama@users.noreply.github.com>
Co-authored-by: Jeffry Samuel <69224322+Jeffser@users.noreply.github.com>
2024-07-19 12:41:32 -06:00
aritra saha
619b404fd3 minor fixes (#143)
* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

---------

Co-authored-by: aritra saha <162728301+botollama@users.noreply.github.com>
Co-authored-by: Jeffry Samuel <69224322+Jeffser@users.noreply.github.com>
2024-07-18 16:55:03 -06:00
jeffser
d73389d889 Better about dialog 2024-07-17 21:12:22 -06:00
jeffser
b8796f4e4f Added credit for Bengali translation 2024-07-17 21:00:29 -06:00
aritra saha
a5fa7d4692 some fixes and some rephrase (#140)
* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

---------

Co-authored-by: aritra saha <162728301+botollama@users.noreply.github.com>
Co-authored-by: Jeffry Samuel <69224322+Jeffser@users.noreply.github.com>
2024-07-17 20:50:32 -06:00
imbev
92f1b62f8c Add logging (#142)
* Configure logger

* Add logging at various points

* Add logging to window verify_if_image_can_be_used
2024-07-17 20:49:55 -06:00
jeffser
c8ace20e60 Fixed messages not using standard datetime format 2024-07-10 21:32:49 -06:00
jeffser
f6920bf423 Fixed small bug 2024-07-10 21:15:11 -06:00
jeffser
09fee716f7 Better format for timestamps 2024-07-10 21:10:25 -06:00
jeffser
dc8a6ae1ec Hide 'Toggle Sidebar' button when window is wide enough 2024-07-10 20:49:59 -06:00
jeffser
173f08ba11 Fixed footer format 2024-07-10 16:21:44 -06:00
jeffser
2aa39e86d7 Better PDF extraction 2024-07-10 16:20:40 -06:00
jeffser
840a3030f7 New icon for manage models 2024-07-10 16:19:38 -06:00
jeffser
510fe83b6f Better format for date on footer of messages 2024-07-08 19:41:31 -06:00
jeffser
e7f04bbb1a Added error logging, removed debug messages 2024-07-08 16:55:04 -06:00
jeffser
efafdcc15e Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-07-08 16:48:21 -06:00
jeffser
86c329982c Removed legacy chat updater (pre 0.9.4) 2024-07-08 16:48:14 -06:00
Jeffry Samuel
87b9fe6e62 Removed Ko_fi 2024-07-08 16:41:19 -06:00
jeffser
32d16a1e61 Better image rendering for previous messages 2024-07-08 16:31:39 -06:00
jeffser
e0e2b5c3c2 Added image previews before sending! + Fixed sintaxis in nb_NO and fr translations 2024-07-08 13:33:02 -06:00
jeffser
0d725d430b Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-07-08 13:08:16 -06:00
jeffser
9ccf46663d Added file preview before sending message 2024-07-08 13:08:10 -06:00
jeffser
5420bcb92d Fixed welcome dialog 2024-07-08 11:41:20 -06:00
jeffser
8158026d96 Better welcome dialog 2024-07-08 11:37:16 -06:00
CounterFlow64
989c634907 Translated model descriptions to Norwegian (#133) 2024-07-08 10:39:11 -06:00
Louis Chauvet-Villaret
5397be92fe French update (#134) 2024-07-08 10:38:47 -06:00
aritra saha
9897eaf18a bengali translation (#136)
* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

* Update bn.po

---------

Co-authored-by: Jeffry Samuel <69224322+Jeffser@users.noreply.github.com>
2024-07-08 10:38:07 -06:00
Alex K
5a7990ad3b Update Russian translation (#135)
* Add files via upload

* Add files via upload
2024-07-08 10:36:54 -06:00
jeffser
a516db63b3 Changed tmp directory 2024-07-07 21:53:38 -06:00
jeffser
a723deaa00 Fixed connection handler 2024-07-07 21:49:04 -06:00
jeffser
215f7251d1 Starting to implement logging 2024-07-07 21:35:41 -06:00
jeffser
86c81cf7f0 Better padding for disclaimer 2024-07-07 21:04:08 -06:00
jeffser
57e23ce272 Updated spanish 2024-07-07 20:51:49 -06:00
jeffser
0d375a8418 Updated languages again 2024-07-07 20:45:48 -06:00
jeffser
b0453d645c Updated languages 2024-07-07 20:43:15 -06:00
jeffser
6cd813c146 Simplified connection_handler 2024-07-07 20:41:25 -06:00
jeffser
35869c0fbf Better system for toast messages 2024-07-07 20:24:29 -06:00
jeffser
93893ff95a Finished Spanish translation 2024-07-07 20:04:49 -06:00
jeffser
815587e8b3 Fix spanish translation 2024-07-07 19:50:39 -06:00
jeffser
0e4b216df0 Better image recognition indicator 2024-07-07 19:42:23 -06:00
jeffser
2ab830367c Removed residual files 2024-07-07 18:29:44 -06:00
jeffser
57fbf397c3 Updated Spanish translation 2024-07-07 18:21:10 -06:00
jeffser
6c851784e2 Added model descriptions to localization process 2024-07-07 17:41:01 -06:00
jeffser
04c47554b7 Fixed nb_NO.po on update script 2024-07-07 17:30:50 -06:00
jeffser
e4879bd29e Fixed nb_NO 2024-07-07 17:01:03 -06:00
jeffser
783d0f6032 Fixed syntaxis errors on nb language file 2024-07-07 16:08:18 -06:00
jeffser
28be73b25b Changed no to nb 2024-07-07 15:56:29 -06:00
jeffser
c359b68635 Fixed bengali 2024-07-07 15:33:19 -06:00
jeffser
448d212621 Added new language files 2024-07-07 15:22:33 -06:00
jeffser
5c29ba4ae6 Added Bengali language template and fixed metadata for every language 2024-07-07 15:22:16 -06:00
Louis Chauvet-Villaret
1969672460 Pre-1.0 FR translation (#127) 2024-07-07 15:09:23 -06:00
jeffser
d81596b8e4 Added a disclaimer when downloading models, replaced the library icon for a download icon 2024-07-07 14:58:29 -06:00
jeffser
4dd67f9d71 Hide text cursor on previous messages (except when editing) 2024-07-05 13:22:25 -06:00
jeffser
f3550eebd3 Better message editing textview 2024-07-05 13:19:51 -06:00
jeffser
12bc3cfba7 Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-07-04 19:47:16 -06:00
jeffser
489d5208af Added 'Tobias Bernard' to the credits 2024-07-04 19:47:09 -06:00
Jeffry Samuel
db749c9d00 Credits for Norwegian translation 2024-07-04 18:27:49 -06:00
Jeffry Samuel
57932a8013 Update README.md 2024-07-04 18:26:25 -06:00
jeffser
7bdbd875b8 Added credits for Norwegian translation 2024-07-04 18:25:00 -06:00
jeffser
7c4434d3d9 Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-07-04 18:21:49 -06:00
jeffser
4665e9419b Better margins for message textview 2024-07-04 18:21:40 -06:00
CounterFlow64
6f004b3597 Complete Norwegian translation (#124)
* Complete Norwegian translation

* Update no_NO.po

Fixed spelling mistake for python-lxml
2024-07-04 12:51:34 -06:00
jeffser
e4c77698bb Visually replaced '-' for a space on everywhere a model title is shown 2024-07-04 11:56:45 -06:00
jeffser
83949e3698 Merged general / model settings into one page and changed the icons 2024-07-04 11:47:29 -06:00
jeffser
637ab030b2 Tweaked max auto title length 2024-07-04 11:43:54 -06:00
jeffser
3795de4ae9 removed unnecesary lines 2024-07-04 11:43:07 -06:00
jeffser
c75556346a Better chat notification 2024-07-04 11:42:35 -06:00
jeffser
91f203fc23 Removed unused files 2024-07-03 21:25:29 -06:00
jeffser
e2c7961a2a Autoscroll when message is received 2024-07-03 20:53:25 -06:00
jeffser
6531ee8e8e Removed test print lines 2024-07-03 20:47:29 -06:00
jeffser
66b35078b9 Even better chat title generator 2024-07-03 20:46:48 -06:00
jeffser
1a6287ba73 Fixed small bug 2024-07-03 20:43:35 -06:00
jeffser
4a11833206 New icon 2024-07-03 18:02:07 -06:00
jeffser
20b5722c17 Added 'missing image' indicator in chat 2024-07-03 18:01:51 -06:00
jeffser
ac8439fe6c Fixed auto scroll when receiving message and save last used chat 2024-07-03 17:43:56 -06:00
jeffser
e81d918675 Changed code so that Ollama closes gracefully 2024-07-03 17:12:31 -06:00
jeffser
cf4a17b6eb Better message entry 2024-07-03 13:13:48 -06:00
BurntSouls
ccc92bd541 Added dynamic height to text box (#112)
Co-authored-by: Jeffry Samuel <69224322+Jeffser@users.noreply.github.com>
2024-07-03 13:03:31 -06:00
jeffser
1598e1e60a Added no_NO.po 2024-07-03 11:49:51 -06:00
jeffser
9a77ea6f9c Updated languages, added no_NO.po 2024-07-03 11:49:30 -06:00
jeffser
c731e68e3f Added '?' to dialogs 2024-07-02 18:03:04 -06:00
jeffser
b66a3ab380 New 'image reconition' indicator for available models 2024-07-02 17:44:48 -06:00
jeffser
a296e38fa1 Tweaks to stop downloading dialog 2024-07-01 20:19:14 -06:00
jeffser
073754f1f3 Fixed title generation 2024-07-01 20:15:33 -06:00
jeffser
b60e01ee98 Changed Gemma to Gemma2 on featured models at welcome dialog 2024-06-30 23:54:00 -06:00
jeffser
0ae9e65f38 Changed how title generation works 2024-06-30 23:27:23 -06:00
jeffser
2ded3c72fd New big feature: Attach website (experimental) 2024-06-30 23:24:29 -06:00
jeffser
2c2a1ac2bc Verify if image can be used when pasting it 2024-06-30 22:12:46 -06:00
jeffser
ff8b20df98 Fixed: Can't preview files if chat is renamed 2024-06-30 22:10:02 -06:00
jeffser
18bd8f48be New feature: Keep most recent chat on top 2024-06-30 21:52:52 -06:00
jeffser
c98eac246d New icon 2024-06-30 20:51:37 -06:00
jeffser
7e4f1b25ee New feature: Edit messages! 2024-06-30 20:45:22 -06:00
jeffser
e735d45d09 Tweak to how attachments are displayed 2024-06-30 19:23:26 -06:00
jeffser
b45344b08e tweak to title generation 2024-06-30 19:15:52 -06:00
jeffser
43af2b2425 Small tweaks on how images arer shown 2024-06-30 19:14:30 -06:00
jeffser
151303d8b4 New feature, open sent images in default image viewer 2024-06-30 18:58:45 -06:00
jeffser
90bcf687cc Added 'no results' indicator 2024-06-30 18:31:10 -06:00
jeffser
992193e719 Better model search algorithm 2024-06-30 18:16:17 -06:00
jeffser
380ec93c6a Redesign for pulling model 2024-06-30 18:09:06 -06:00
jeffser
4994f6d177 New feature: Attach image straight from clipboard 2024-06-30 17:45:03 -06:00
jeffser
1da347ff2f Fix: first chat was not shown 2024-06-30 17:11:40 -06:00
jeffser
80fea3a3b5 Removed DOCX, I don't think it is going to work 2024-06-30 16:57:36 -06:00
jeffser
9967ea3249 Added chat message notification 2024-06-30 16:56:28 -06:00
jeffser
39b65d5576 Fixed a little bug in chat title generation + small UI tweak 2024-06-30 16:13:36 -06:00
jeffser
02e2448001 Restored support for DOCX 2024-06-30 16:04:29 -06:00
jeffser
4e64ce8f43 changed capitalize to title for chat title generation 2024-06-30 15:10:52 -06:00
jeffser
8ad1ec0a21 Much better chat title generation (includes image recognition) 2024-06-30 15:06:02 -06:00
jeffser
b6a180080f Fixed chat title generation and image recognition (+ added support for jpg) 2024-06-30 14:43:12 -06:00
jeffser
c6110e8cde Updated Ollama to 0.1.48 and added Gemma 2 2024-06-30 14:10:02 -06:00
jeffser
04fb59ef5c UI Tweaks (more :3) 2024-06-30 13:28:08 -06:00
Louis Chauvet-Villaret
dcc8ffb5b7 French update🥖🥖🥖 (#115) 2024-06-30 13:12:28 -06:00
jeffser
eae71dae16 Model searchbar (WIP) 2024-06-29 11:10:31 -06:00
jeffser
bf9042f9aa Fixed url label 2024-06-29 09:43:01 -06:00
jeffser
28eb62346c Even better UI (no way) 2024-06-28 21:56:15 -06:00
jeffser
527f7b4452 Added bearer token 2024-06-28 21:29:36 -06:00
jeffser
0fbde265ef UI Tweaks 2024-06-28 20:46:31 -06:00
jeffser
a532b018bc Visual tweaks 2024-06-28 18:51:08 -06:00
jeffser
073a63fb2d Added secondary_menu_button to the list of elements that become inactive when a message is being generated 2024-06-28 16:42:58 -06:00
jeffser
665f6eb872 ...and spaces 2024-06-28 16:36:04 -06:00
jeffser
9c0779a0c7 Chat title generation! (yes finally) 2024-06-28 16:30:47 -06:00
jeffser
107ef2c3d0 New chat order backend system / fixed secondary menu not working if context menu was cancelled 2024-06-28 15:39:26 -06:00
jeffser
6a825f534f UI Tweaks to manage models 2024-06-28 14:40:32 -06:00
jeffser
5bf77d6b97 Fixes to UI 2024-06-27 22:48:02 -06:00
jeffser
898c64ce35 Fixed message entry color 2024-06-27 21:53:04 -06:00
jeffser
efcc8512c1 tweaks 2024-06-26 17:14:23 -06:00
jeffser
52449243ed UI tweaks 2024-06-26 16:38:00 -06:00
jeffser
d457a1cfb8 Added new button to open file in default app 2024-06-26 16:03:44 -06:00
jeffser
4a9349769a Quick fix to youtube integration 2024-06-26 15:44:04 -06:00
jeffser
3dccba943e Fixed copy/delete message buttons 2024-06-26 15:35:59 -06:00
jeffser
bd146bdfb3 Better YouTube integration 2024-06-26 14:26:41 -06:00
jeffser
f150aa24ab New icon 2024-06-26 13:13:16 -06:00
jeffser
084b230383 New icon and quick capitalization fix 2024-06-26 13:11:19 -06:00
jeffser
69b550b70f Added back button to Manage Models Dialog 2024-06-26 13:07:23 -06:00
jeffser
191feb7299 Capitalized tooltip text 2024-06-26 00:38:09 -06:00
jeffser
f49b68f1a6 New manage models interface and new metadata for available models 2024-06-26 00:34:05 -06:00
jeffser
ade0b3735e New pull model menu 2024-06-25 23:32:09 -06:00
jeffser
ce3dce4c67 Added description to model list and change it to JSON file 2024-06-25 00:36:02 -06:00
jeffser
8bf8ca1b90 Tweaks 2024-06-24 23:13:17 -06:00
Tobias Bernard
22d52f76d1 app icon: new, more HIG-compliant alpaca (#114) 2024-06-24 22:26:38 -06:00
jeffser
ab720278cd Fixed, deleting chat doesn't change actual selected chat 2024-06-24 22:22:46 -06:00
jeffser
f9b3f91d3f Fixed chat context menu and added stuff to secondary menu 2024-06-24 22:08:05 -06:00
jeffser
dd20ff78c4 Fixed, can't fit long names on model switcher 2024-06-24 21:14:29 -06:00
jeffser
862d377ead Fixed capitalization 2024-06-24 00:44:15 -06:00
jeffser
219843d6d2 Changed footer for new bot messages 2024-06-24 00:23:32 -06:00
jeffser
01608696d6 Added YouTube integration (yeah) 2024-06-24 00:18:55 -06:00
jeffser
9d332a0d1d Removed leftover code 2024-06-23 21:47:54 -06:00
jeffser
6ba790416c } 2024-06-23 20:51:47 -06:00
jeffser
262988d4c8 Removed references to style-dark.css 2024-06-23 20:27:17 -06:00
jeffser
b8c420526c Added shortcut to import chat, moved option to primary menu and moved primary menu to sidebar 2024-06-23 20:17:45 -06:00
jeffser
39691cc83c Moved chat options to conext menu (right click) 2024-06-23 20:07:27 -06:00
jeffser
2dae041efa Added tooltips and small tweaks to message entry 2024-06-23 18:00:54 -06:00
jeffser
c0a0ca7f39 Tweaked how model names are displayed on selector 2024-06-23 17:34:41 -06:00
jeffser
fb8e3a434c Getting ready for 0.9.6.1 2024-06-22 02:13:20 -06:00
jeffser
e42e01a92c Removed DOCX compatibility due to error on dependencies 2024-06-22 02:11:17 -06:00
jeffser
5f0cddffd0 Getting ready for 0.9.6 2024-06-21 17:22:46 -06:00
jeffser
6fdf335412 Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-06-21 17:17:16 -06:00
jeffser
3db0a374e6 Added compatibility for docx and pdf 2024-06-21 17:16:59 -06:00
Théo FORTIN
aa6d317321 Fix french typos (#105) 2024-06-21 15:36:09 -06:00
Jeffry Samuel
37702a2527 :( 2024-06-07 19:17:39 -06:00
Louis Chauvet-Villaret
ccb19516bb FR update (#95) 2024-06-05 11:54:41 -06:00
jeffser
b7f11f17d2 Preparing for 0.9.5 2024-06-04 20:10:49 -06:00
jeffser
60dd1de39d Fixed added check so it doesn't fail if there isn't data in a message when converting 2024-06-04 20:00:45 -06:00
jeffser
887a7645d4 Fix 2024-06-04 19:56:49 -06:00
jeffser
340cf9375e Quick fix 2024-06-04 19:54:41 -06:00
jeffser
1d37de6499 :3 2024-06-04 18:54:16 -06:00
jeffser
2d8cb68628 Better handling of missing files 2024-06-04 18:53:41 -06:00
jeffser
4ececd850b Quick fix with images handling 2024-06-04 18:45:50 -06:00
jeffser
a4d26b2bda Added feature to description 2024-06-04 14:15:50 -06:00
jeffser
d7961f2510 Last minute fix 2024-06-04 14:14:09 -06:00
jeffser
45f5214ec9 Preparing for 0.9.4 (again) 2024-06-04 13:49:25 -06:00
jeffser
5e1e770aee Preparing for 0.9.4 2024-06-04 13:46:15 -06:00
jeffser
5eb18d00d3 Fix export 2024-06-04 13:39:50 -06:00
jeffser
bcbfd44e1f Fixed overrides 2024-06-04 13:34:48 -06:00
jeffser
073c619d89 New system for override and new overrides 2024-06-04 12:55:31 -06:00
jeffser
71ab8cfba4 Remove old file 2024-06-04 12:13:48 -06:00
jeffser
0ec812099c Update readme 2024-06-04 12:11:36 -06:00
jeffser
f7f05a0538 Rewrote a lot of code, new chat system and file uploading! 2024-06-04 12:07:15 -06:00
jeffser
82a0ab0d9e Preserve changes to override and added link button 2024-06-03 17:01:27 -06:00
jeffser
60b24da482 Fixed mistakes on readme 2024-06-03 16:37:03 -06:00
jeffser
66d209e4c6 New tip 2024-06-03 16:34:35 -06:00
jeffser
0c9ab4e17e Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-06-03 16:31:09 -06:00
jeffser
fff3a68b29 Added overrides system to Ollama instance 2024-06-03 16:31:03 -06:00
Louis Chauvet-Villaret
580a104894 the regular french update (baguette) (#87) 2024-06-03 15:51:44 -06:00
jeffser
3fe9b6e121 Changed sha256 for the new ones 2024-06-01 00:29:45 -06:00
jeffser
6979d1a775 Last minute fix to width of new model creation dialog 2024-06-01 00:24:56 -06:00
jeffser
90385ce461 Preparing for 0.9.3 2024-06-01 00:16:11 -06:00
jeffser
c579e6ec99 Custom models support! 2024-06-01 00:07:34 -06:00
jeffser
b8d93cfd17 New icon (document-open-symbolic) 2024-05-31 10:29:18 -06:00
jeffser
359f28f5c1 Manually added all icons so that they work on desktops that don't use Adwaita 2024-05-31 10:17:10 -06:00
jeffser
6e8bff8493 Disabled Gnome Search (for now) 2024-05-31 09:59:04 -06:00
jeffser
ad25d5a50f Fixed: Ollama instance wasn't shutting down 2024-05-30 19:15:19 -06:00
jeffser
4b17601baf Preparing for 0.9.2 2024-05-30 10:49:53 -06:00
jeffser
c994307954 Fixed model tweaks loading 2024-05-30 09:53:17 -06:00
jeffser
a13ffd22f1 Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-05-30 09:33:13 -06:00
jeffser
7b8f40e117 Initial support for Gnome Search (doesn't work yet) 2024-05-30 09:33:06 -06:00
Louis Chauvet-Villaret
add4dad8c0 French translation update (#72)
Hop, I translate all, and I harmonize the changelogs with 3 categories : added, changed, fixed (but in French you know)
2024-05-30 09:31:21 -06:00
Surjyadip Sen
7faa805176 Lowered the lower limit of keep_alive to -1 (#69) 2024-05-30 09:31:06 -06:00
jeffser
91651b918e I dind't mean to delete that 2024-05-30 09:29:37 -06:00
jeffser
725e0930fe Fixed app crashing because of model tweaks 2024-05-30 09:27:56 -06:00
jeffser
93ba903fc8 Added copy button 2024-05-29 21:59:47 -06:00
jeffser
56064831d3 Updated Spanish translation 2024-05-29 16:19:37 -06:00
jeffser
4bdb813b64 Preparing for 0.9.1 2024-05-29 16:09:57 -06:00
jeffser
ad69887e4a Another icon for manage models 2024-05-29 16:00:59 -06:00
jeffser
c8f148d1f8 Changed manage models button icon 2024-05-29 15:59:27 -06:00
jeffser
365e39a20a New Icons and fixed delete message button 2024-05-29 15:58:09 -06:00
jeffser
48c2fd2e81 New icon for send button 2024-05-29 15:22:42 -06:00
jeffser
3a5dc568c5 Changed export/import buttons for a secundary menu button 2024-05-29 15:00:19 -06:00
jeffser
a180f7a46c Fixed image button 2024-05-29 14:34:59 -06:00
jeffser
07a12ba41f Fixed send/stop buttons 2024-05-29 14:32:57 -06:00
jeffser
dd5351a3de Added Model Tweaks 2024-05-29 14:24:30 -06:00
jeffser
ae48a17301 Check if remote instance is connected at start when the toggle is on 2024-05-29 12:04:05 -06:00
jeffser
9e19698788 Preparing for 0.9.0 (again) 2024-05-29 00:18:42 -06:00
jeffser
323725df33 Fixed: Can't rename the same chat multiple times 2024-05-29 00:17:41 -06:00
jeffser
7c40420048 Preparing for 0.9.0 2024-05-29 00:10:04 -06:00
jeffser
fac51aefb9 Spanish update 2024-05-29 00:06:08 -06:00
Louis Chauvet-Villaret
8f1fbc511a French translation update (#54)
I see my work in the app and... wasn't so good, so here are some modifications 😄 

After all, I switch back on the original name Alpaca because Alpaga won't be nicely integrated (desktop icon name, title name, and it's just not a good idea)

There is just a small problem, the 'send' button can't be translated. Can you add it ?
2024-05-29 00:02:53 -06:00
jeffser
f0bf112faf Starting model tweaks page 2024-05-29 00:00:56 -06:00
jeffser
b2a15b92cd Fixed error message when pulling a model that's already pulled 2024-05-28 22:59:32 -06:00
jeffser
9b71bbea2e Fixed background color of message entry 2024-05-28 22:57:42 -06:00
jeffser
2645ab3732 Added new shortcut for creating a chat 2024-05-28 22:45:26 -06:00
jeffser
8672c4ac40 fix 2024-05-28 22:42:03 -06:00
jeffser
b8bfd54515 Added chat name wrap 2024-05-28 22:37:06 -06:00
jeffser
a29d245381 Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-05-28 22:26:48 -06:00
jeffser
f57427e2c4 Fixed: When deleting the last chat it didn't make a new one 2024-05-28 22:26:36 -06:00
Jeffry Samuel
3631f06075 Update FUNDING.yml 2024-05-28 14:14:47 -06:00
Jeffry Samuel
67a66f85da Update issue templates 2024-05-28 11:50:23 -06:00
jeffser
16f620b034 Fixed French connection 2024-05-28 11:30:00 -06:00
jeffser
77b32b4912 Preparing for 0.8.8 2024-05-28 11:28:09 -06:00
jeffser
257197d4d8 Fixed local instance 2024-05-28 11:24:50 -06:00
jeffser
19cc97a1c4 Fixed reconnect remote instance dialog 2024-05-28 10:41:52 -06:00
jeffser
93652cd9f7 Added French translation credits 2024-05-28 10:36:08 -06:00
jeffser
540a0dc915 Turned on French translation 2024-05-28 10:34:19 -06:00
jeffser
54c1b9a96e Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-05-28 10:29:29 -06:00
jeffser
a9663b45fc Quick fix local instance 2024-05-28 10:29:22 -06:00
Louis Chauvet-Villaret
9bf029f8b3 French translation 🥖 (#52)
## French translation for Alpaca

# Translate guideline :

English	French
to chat	discuter
a chat	une discussion

Translation harmonized except changelogs (because the original changelogs aren't harmonized)
2024-05-28 10:21:36 -06:00
jeffser
a94d1dfc92 Removed prompt to name a new chat 2024-05-27 21:21:27 -06:00
jeffser
e90ef93a04 Preparing for 0.8.7 2024-05-27 21:03:52 -06:00
jeffser
a7ba5da943 Changed summary 2024-05-27 21:01:43 -06:00
jeffser
1e287dde6f Better progressbar for models 2024-05-27 20:47:59 -06:00
jeffser
05461fb03a Adding size to tags and adding progress bar to models that are being pulled 2024-05-27 17:27:05 -06:00
jeffser
aa79368b54 Added french template 2024-05-27 14:58:47 -06:00
Jeffry Samuel
cb4e52f103 French 2024-05-27 14:57:31 -06:00
jeffser
91fc745d2f Merge branch 'main' of github.com-jeffser:Jeffser/Alpaca 2024-05-26 14:49:49 -06:00
jeffser
a719783cce Preparing for 0.8.6 2024-05-26 14:49:42 -06:00
Jeffry Samuel
766636718a Tips 2024-05-26 14:37:17 -06:00
jeffser
59d2430e2f Tweak to notifications 2024-05-26 14:29:45 -06:00
jeffser
074b4dc643 Added 'Feature Models' page on welcome dialog 2024-05-26 14:10:20 -06:00
jeffser
92dd56b0c4 Fixed: content doesn't change when creating a new chat 2024-05-26 12:39:22 -06:00
jeffser
25c414faa3 Fixed scroll when message received 2024-05-26 12:23:13 -06:00
69 changed files with 42255 additions and 4505 deletions

1
.github/FUNDING.yml vendored
View File

@@ -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
View 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.

View 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.

View File

@@ -15,21 +15,18 @@ Alpaca is an [Ollama](https://github.com/ollama/ollama) client where you can man
- 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!
- Document recognition (Probably only Markdown because it's really easy for AI to read)
- Delete / Edit messages
- YouTube recognition (Ask questions about a YouTube video using the transcript)
- Edit messages
- Snap Package (maybe)
- Website recognition (Ask questions about a certain website by parsing the url)
## Screenies
Login to Ollama instance | Chatting with models | Managing models
:-------------------------:|:-------------------------:|:-------------------------:
Chatting with a model | Image recognition | Code highlighting
:--------------------:|:-----------------:|:----------------------:
![Screenshot from 2024-05-12 19-58-28](https://jeffser.com/images/alpaca/screenie1.png) | ![Screenshot from 2024-05-12 20-01-08](https://jeffser.com/images/alpaca/screenie2.png) | ![Screenshot from 2024-05-12 20-01-31](https://jeffser.com/images/alpaca/screenie3.png)
## Preview
@@ -41,6 +38,20 @@ Login to Ollama instance | Chatting with models | Managing
2. Download the latest flatpak package
3. Open it
## Ollama session tips
### 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
@@ -48,7 +59,9 @@ Login to Ollama instance | Chatting with models | Managing
- [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
- [Nokse](https://github.com/Nokse22) for their contributions to the UI and table rendering
- [Louis Chauvet-Villaret](https://github.com/loulou64490) for their suggestions and help translating the app to French
- [CounterFlow64](https://github.com/CounterFlow64) for their help translating the app to Norwegian
## 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)

View File

@@ -71,6 +71,48 @@
}
]
},
{
"name": "python3-pypdf",
"buildsystem": "simple",
"build-commands": [
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"pypdf\" --no-build-isolation"
],
"sources": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/c9/d1/450b19bbdbb2c802f554312c62ce2a2c0d8744fe14735bc70ad2803578c7/pypdf-4.2.0-py3-none-any.whl",
"sha256": "dc035581664e0ad717e3492acebc1a5fc23dba759e788e3d4a9fc9b1a32e72c1"
}
]
},
{
"name": "python3-pytube",
"buildsystem": "simple",
"build-commands": [
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"pytube\" --no-build-isolation"
],
"sources": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/51/64/bcf8632ed2b7a36bbf84a0544885ffa1d0b4bcf25cc0903dba66ec5fdad9/pytube-15.0.0-py3-none-any.whl",
"sha256": "07b9904749e213485780d7eb606e5e5b8e4341aa4dccf699160876da00e12d78"
}
]
},
{
"name": "python3-html2text",
"buildsystem": "simple",
"build-commands": [
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"html2text\" --no-build-isolation"
],
"sources": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/1a/43/e1d53588561e533212117750ee79ad0ba02a41f52a08c1df3396bd466c05/html2text-2024.2.26.tar.gz",
"sha256": "05f8e367d15aaabc96415376776cdd11afd5127a77fce6e36afc60c563ca2c32"
}
]
},
{
"name": "ollama",
"buildsystem": "simple",
@@ -80,16 +122,16 @@
"sources": [
{
"type": "file",
"url": "https://github.com/ollama/ollama/releases/download/v0.1.38/ollama-linux-amd64",
"sha256": "c3360812503a9756a507ebb9d78667e2b21800a760b45046bc48a8f3b81972f4",
"url": "https://github.com/ollama/ollama/releases/download/v0.3.0/ollama-linux-amd64",
"sha256": "b8817c34882c7ac138565836ac1995a2c61261a79315a13a0aebbfe5435da855",
"only-arches": [
"x86_64"
]
},
{
"type": "file",
"url": "https://github.com/ollama/ollama/releases/download/v0.1.38/ollama-linux-arm64",
"sha256": "f2d091afe665b2d5ba8b68e2473d36cdfaf80c61c7d2844a0a8f533c4e62f547",
"url": "https://github.com/ollama/ollama/releases/download/v0.3.0/ollama-linux-arm64",
"sha256": "64be908749212052146f1008dd3867359c776ac1766e8d86291886f53d294d4d",
"only-arches": [
"aarch64"
]

View File

@@ -5,7 +5,7 @@
<project_license>GPL-3.0-or-later</project_license>
<launchable type="desktop-id">com.jeffser.Alpaca.desktop</launchable>
<name>Alpaca</name>
<summary>Chat with local AI models powered by Ollama</summary>
<summary>Chat with local AI models</summary>
<description>
<p>An Ollama client</p>
<p>Features</p>
@@ -15,7 +15,11 @@
<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>
<li>Append YouTube transcripts to the prompt</li>
<li>Append text from a website to the prompt</li>
<li>PDF recognition</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>
@@ -47,22 +51,269 @@
<screenshots>
<screenshot type="default">
<image>https://jeffser.com/images/alpaca/screenie1.png</image>
<caption>A conversation showing code highlight</caption>
<caption>A normal conversation with an AI Model</caption>
</screenshot>
<screenshot>
<image>https://jeffser.com/images/alpaca/screenie2.png</image>
<caption>A conversation involving multiple models</caption>
<caption>A conversation involving image recognition</caption>
</screenshot>
<screenshot>
<image>https://jeffser.com/images/alpaca/screenie3.png</image>
<caption>Managing models</caption>
<caption>A conversation showing code highlighting</caption>
</screenshot>
<screenshot>
<image>https://jeffser.com/images/alpaca/screenie4.png</image>
<caption>A conversation involving a YouTube video transcript</caption>
</screenshot>
<screenshot>
<image>https://jeffser.com/images/alpaca/screenie5.png</image>
<caption>Multiple models being downloaded</caption>
</screenshot>
</screenshots>
<content_rating type="oars-1.1" />
<content_rating type="oars-1.1">
<content_attribute id="money-purchasing">mild</content_attribute>
</content_rating>
<url type="bugtracker">https://github.com/Jeffser/Alpaca/issues</url>
<url type="homepage">https://github.com/Jeffser/Alpaca</url>
<url type="homepage">https://jeffser.com/alpaca/</url>
<url type="donation">https://github.com/sponsors/Jeffser</url>
<url type="translate">https://github.com/Jeffser/Alpaca/discussions/153</url>
<url type="contribute">https://github.com/Jeffser/Alpaca/discussions/154</url>
<url type="vcs-browser">https://github.com/Jeffser/Alpaca</url>
<releases>
<release version="1.0.4" date="2024-08-01">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/1.0.4</url>
<description>
<p>New</p>
<ul>
<li>Added table rendering (Thanks Nokse)</li>
</ul>
<p>Fixes</p>
<ul>
<li>Made support dialog more common</li>
<li>Dialog title on tag chooser when downloading models didn't display properly</li>
<li>Prevent chat generation from generating a title with multiple lines</li>
</ul>
</description>
</release>
<release version="1.0.3" date="2024-08-01">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/1.0.3</url>
<description>
<p>New</p>
<ul>
<li>Bearer Token entry on connection error dialog</li>
<li>Small appearance changes</li>
<li>Compatibility with code blocks without explicit language</li>
<li>Rare, optional and dismissible support dialog</li>
</ul>
<p>Fixes</p>
<ul>
<li>Date format for Simplified Chinese translation</li>
<li>Bug with unsupported localizations</li>
<li>Min height being too large to be used on mobile</li>
<li>Remote connection checker bug</li>
</ul>
</description>
</release>
<release version="1.0.2" date="2024-07-29">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/1.0.2</url>
<description>
<p>Fixes</p>
<ul>
<li>Models with capital letters on their tag don't work</li>
<li>Ollama fails to launch on some systems</li>
<li>YouTube transcripts are not being saved in the right TMP directory</li>
</ul>
<p>New</p>
<ul>
<li>Debug messages are now shown on the 'About Alpaca' dialog</li>
<li>Updated Ollama to v0.3.0 (new models)</li>
</ul>
</description>
</release>
<release version="1.0.1" date="2024-07-23">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/1.0.1</url>
<description>
<p>Fixes</p>
<ul>
<li>Models with '-' in their names didn't work properly, this is now fixed</li>
<li>Better connection check for Ollama</li>
</ul>
</description>
</release>
<release version="1.0.0" date="2024-07-22">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/1.0.0</url>
<description>
<p>Stable Release</p>
<p>The new icon was made by Tobias Bernard over the Gnome Gitlab, thanks for the great icon!</p>
<p>Features and fixes</p>
<ul>
<li>Updated Ollama instance to 0.2.8</li>
<li>Better model selector</li>
<li>Model manager redesign</li>
<li>Better tag selector when pulling a model</li>
<li>Model search</li>
<li>Added support for bearer tokens on remote instances</li>
<li>Preferences dialog redesign</li>
<li>Added context menus to interact with a chat</li>
<li>Redesigned primary and secondary menus</li>
<li>YouTube integration: Paste the URL of a video with a transcript and it will be added to the prompt</li>
<li>Website integration (Experimental): Extract the text from the body of a website by adding it's URL to the prompt</li>
<li>Chat title generation</li>
<li>Auto resizing of message entry</li>
<li>Chat notifications</li>
<li>Added indicator when an image is missing</li>
<li>Auto rearrange the order of chats when a message is received</li>
<li>Redesigned file preview dialog</li>
<li>Credited new contributors</li>
<li>Better stability and optimization</li>
<li>Edit messages to change the context of a conversation</li>
<li>Added disclaimers when pulling models</li>
<li>Preview files before sending a message</li>
<li>Better format for date and time on messages</li>
<li>Error and debug logging on terminal</li>
<li>Auto-hiding sidebar button</li>
<li>Various UI tweaks</li>
</ul>
<p>New Models</p>
<ul>
<li>Gemma2</li>
<li>GLM4</li>
<li>Codegeex4</li>
<li>InternLM2</li>
<li>Llama3-groq-tool-use</li>
<li>Mathstral</li>
<li>Mistral-nemo</li>
<li>Firefunction-v2</li>
<li>Nuextract</li>
</ul>
<p>Translations</p>
<p>These are all the available translations on 1.0.0, thanks to all the contributors!</p>
<ul>
<li>Russian: Alex K</li>
<li>Spanish: Jeffser</li>
<li>Brazilian Portuguese: Daimar Stein</li>
<li>French: Louis Chauvet-Villaret</li>
<li>Norwegian: CounterFlow64</li>
<li>Bengali: Aritra Saha</li>
<li>Simplified Chinese: Yuehao Sui</li>
</ul>
</description>
</release>
<release version="0.9.6.1" date="2024-06-22">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.9.6.1</url>
<description>
<p>Fix</p>
<p>Removed DOCX compatibility temporally due to error with python-lxml dependency </p>
</description>
</release>
<release version="0.9.6" date="2024-06-21">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.9.6</url>
<description>
<p>Big Update</p>
<ul>
<li>Added compatibility for PDF</li>
<li>Added compatibility for DOCX</li>
<li>Merged 'file attachment' menu into one button</li>
</ul>
</description>
</release>
<release version="0.9.5" date="2024-06-04">
<url type="details">https://github.com/Jeffser/Alpaca/releases/tag/0.9.5</url>
<description>
<p>Quick Fix</p>
<p>There were some errors when transitioning from the old version of chats to the new version. I apologize if this caused any corruption in your chat history. This should be the only time such a transition is needed.</p>
</description>
</release>
<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>

View File

@@ -0,0 +1,677 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="Template.png"
width="192"
height="152"
id="svg11300"
sodipodi:version="0.32"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
sodipodi:docname="com.jeffser.Alpaca.Source.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.0"
style="display:inline;enable-background:new"
viewBox="0 0 192 152"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><title
id="title4162">Adwaita Icon Template</title><defs
id="defs3"><linearGradient
id="linearGradient74"
inkscape:collect="always"><stop
style="stop-color:#b6d1f2;stop-opacity:1"
offset="0"
id="stop73" /><stop
style="stop-color:#e9eef4;stop-opacity:1"
offset="1"
id="stop74" /></linearGradient><inkscape:path-effect
effect="fillet_chamfer"
id="path-effect10"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,1.0001776,0,1 @ F,0,0,1,0,1.9999911,0,1 @ F,0,1,1,0,0,0,1"
radius="4"
unit="px"
method="auto"
mode="F"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" /><inkscape:path-effect
effect="fillet_chamfer"
id="path-effect203"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,1.0001776,0,1 @ F,0,0,1,0,1.9999911,0,1 @ F,0,1,1,0,0,0,1"
radius="4"
unit="px"
method="auto"
mode="F"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient74"
id="linearGradient243"
gradientUnits="userSpaceOnUse"
x1="48"
y1="260"
x2="48"
y2="220" /></defs><sodipodi:namedview
stroke="#ef2929"
fill="#f57900"
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="0.25490196"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.3650602"
inkscape:cx="28.5405"
inkscape:cy="77.376467"
inkscape:current-layer="layer9"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:showpageshadow="false"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="0"
inkscape:window-y="0"
width="400px"
height="300px"
inkscape:snap-nodes="true"
inkscape:snap-bbox="true"
objecttolerance="7"
gridtolerance="12"
guidetolerance="13"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="false"
showguides="false"
inkscape:guide-bbox="true"
inkscape:locked="false"
inkscape:measure-start="0,0"
inkscape:measure-end="0,0"
inkscape:object-nodes="true"
inkscape:bbox-nodes="true"
inkscape:snap-global="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
showborder="true"
inkscape:snap-center="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-midpoints="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-text-baseline="true"
borderlayer="true"
inkscape:deskcolor="#d1d1d1"><inkscape:grid
type="xygrid"
id="grid5883"
spacingx="2"
spacingy="2"
enabled="true"
visible="false"
empspacing="4"
originx="8"
originy="8"
units="px" /><sodipodi:guide
position="72,16"
orientation="0,1"
id="guide1073"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="20,72"
orientation="1,0"
id="guide1075"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="72,112"
orientation="0,1"
id="guide1099"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="72,136"
orientation="0,1"
id="guide993"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="112,72"
orientation="1,0"
id="guide995"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="8.0000001,72"
orientation="1,0"
id="guide867"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="128,72"
orientation="1,0"
id="guide869"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="72,124"
orientation="0,1"
id="guide871"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><inkscape:grid
type="xygrid"
id="grid873"
spacingx="1"
spacingy="1"
empspacing="8"
color="#000000"
opacity="0.49019608"
empcolor="#000000"
empopacity="0.08627451"
dotted="true"
originx="8"
originy="8"
units="px"
visible="false" /><sodipodi:guide
position="32,72"
orientation="1,0"
id="guide877"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="124,72"
orientation="1,0"
id="guide879"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="72,128"
orientation="0,1"
id="guide881"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="72,20"
orientation="0,1"
id="guide883"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="16,72"
orientation="1,0"
id="guide885"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="136,72"
orientation="1,0"
id="guide887"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="72,8"
orientation="0,1"
id="guide897"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="72,32"
orientation="0,1"
id="guide899"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="264,264"
orientation="-0.70710678,0.70710678"
id="guide950"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="72,72"
orientation="0.70710678,0.70710678"
id="guide952"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /></sodipodi:namedview><metadata
id="metadata4"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:creator><cc:Agent><dc:title>GNOME Design Team</dc:title></cc:Agent></dc:creator><dc:source /><cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /><dc:title>Adwaita Icon Template</dc:title><dc:subject><rdf:Bag /></dc:subject><dc:date /><dc:rights><cc:Agent><dc:title /></cc:Agent></dc:rights><dc:publisher><cc:Agent><dc:title /></cc:Agent></dc:publisher><dc:identifier /><dc:relation /><dc:language /><dc:coverage /><dc:description /><dc:contributor><cc:Agent><dc:title /></cc:Agent></dc:contributor></cc:Work><cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><g
id="layer1"
inkscape:label="App Icon"
inkscape:groupmode="layer"
style="display:inline"
transform="translate(8,-156)"><g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="template"
style="display:inline"
sodipodi:insensitive="true"><rect
inkscape:label="0"
y="172"
x="9.2651362e-08"
height="128"
width="128"
id="hicolor"
style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" /><rect
style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate"
id="symbolic"
width="16"
height="16"
x="160"
y="172"
inkscape:label="0" /></g><g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="baseplate"
style="display:none"
sodipodi:insensitive="true"><g
style="display:inline;fill:#000000;enable-background:new"
transform="matrix(7.9911709,0,0,8.0036407,-167.7909,-4846.0776)"
id="g12027"
inkscape:export-xdpi="12"
inkscape:export-ydpi="12" /><rect
style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate"
id="128"
width="128"
height="128"
x="9.2651362e-08"
y="172"
inkscape:label="0" /><g
id="g883"
style="fill:none;fill-opacity:0.25098;stroke:#a579b3;stroke-opacity:1"
transform="translate(-24,24)" /><g
id="g900"
style="fill:none;fill-opacity:0.25098;stroke:#a579b3;stroke-opacity:1"
transform="translate(-24,24)" /><rect
inkscape:label=""
y="172"
x="160"
height="16"
width="16"
id="16"
style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" /><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.332649;enable-background:new"
x="0"
y="167"
id="text863"
inkscape:label="icon-name"><tspan
style="font-size:4px;stroke-width:0.332649"
sodipodi:role="line"
id="tspan861"
x="0"
y="167">Hicolor</tspan></text><text
inkscape:label="icon-name"
id="text867"
y="167"
x="160"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.332649;enable-background:new"
xml:space="preserve"><tspan
y="167"
x="160"
id="tspan865"
sodipodi:role="line"
style="font-size:4px;stroke-width:0.332649">Symbolic</tspan></text></g><g
inkscape:groupmode="layer"
id="layer9"
inkscape:label="icons"
style="display:inline"><path
sodipodi:type="star"
style="display:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.377953;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
id="path7608"
inkscape:flatsided="true"
sodipodi:sides="6"
sodipodi:cx="88"
sodipodi:cy="80"
sodipodi:r1="24"
sodipodi:r2="22.173109"
sodipodi:arg1="-1.5707963"
sodipodi:arg2="-1.0471975"
inkscape:rounded="-3.469447e-18"
inkscape:randomized="0"
d="m 88.000001,56 20.784609,12.000001 0,24 L 87.999999,104 67.21539,91.999999 l 10e-7,-24 z"
transform="matrix(1.0672586,0,0,1.0932338,-15.01003,148.2195)" /><g
id="g157"
transform="matrix(0.37500254,0,0,0.37500254,131.62469,107.4995)"
style="display:inline;fill:#241f31;enable-background:new" /><g
id="g158"
transform="translate(-70)" /><g
id="g162"
style="display:inline;fill:#241f31;fill-opacity:1;stroke:#241f31;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
transform="matrix(0.37500254,0,0,0.37500254,121.49966,106.7495)" /><path
style="color:#000000;fill:#241f31;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;-inkscape-stroke:none"
d="m 172.5,175 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 c 0.28799,0 0.5,0.21201 0.5,0.5 a 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 c 0,-1.36887 -1.13113,-2.5 -2.5,-2.5 z"
id="path178" /><path
style="color:#000000;fill:#241f31;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;-inkscape-stroke:none"
d="m 162,175 a 1,1 0 0 0 -1,1 v 11 a 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 v -11 a 1,1 0 0 0 -1,-1 z m 10,6 a 1,1 0 0 0 -1,1 v 5 a 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 v -5 a 1,1 0 0 0 -1,-1 z"
id="path164" /><path
style="color:#000000;fill:#241f31;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;-inkscape-stroke:none"
d="m 165,172 c -2.19729,0 -4,1.80271 -4,4 a 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 c 0,-0.72279 0.43588,-1.23883 1,-1.58984 V 176 a 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 v -3 a 1.0001,1.0001 0 0 0 -1,-1 z"
id="path19-0" /><path
style="color:#000000;fill:#241f31;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;-inkscape-stroke:none"
d="m 170,172 c -2.19729,0 -4,1.80271 -4,4 a 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 c 0,-0.72279 0.43588,-1.23883 1,-1.58984 V 176 a 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 v -3 a 1.0001,1.0001 0 0 0 -1,-1 z"
id="path166" /><path
style="color:#000000;fill:#241f31;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;-inkscape-stroke:none"
d="m 165,175 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 2 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z"
id="path167" /><path
style="color:#000000;fill:#241f31;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;-inkscape-stroke:none"
d="M 170.00586,175 A 1,1 0 0 0 169,175.99414 1,1 0 0 0 169.99414,177 l 2.52539,0.0156 a 1,1 0 0 0 1.00586,-0.99414 1,1 0 0 0 -0.99414,-1.00586 z"
id="path168" /><path
style="color:#000000;fill:#241f31;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;-inkscape-stroke:none"
d="m 174.01953,176.47461 a 1,1 0 0 0 -1.00391,0.99609 L 173,180.99609 A 1,1 0 0 0 173.99609,182 1,1 0 0 0 175,181.00391 l 0.0156,-3.52539 a 1,1 0 0 0 -0.99609,-1.00391 z"
id="path179" /><path
id="path192"
style="display:inline;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
d="m 176,180 v 2 c -3.53529,0.2145 -4.23624,2.44366 -5.64991,3.08535 -0.49735,0.22576 -1.42294,0.16467 -1.97533,0.16465 l -0.37477,-1e-5 A 2.0000622,2.0000622 45.001019 0 1 166,183.24993 V 180"
sodipodi:nodetypes="ccccc"
inkscape:path-effect="#path-effect203"
inkscape:original-d="m 176,180 v 2 c -4.25068,0.2579 -4.40387,3.42834 -6.62506,3.25004 L 166,185.24992 V 180" /><g
id="g10"
transform="translate(50)"><g
id="g2"
transform="translate(-1,2)"><path
style="fill:none;fill-opacity:1;stroke:#241f31;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path2"
sodipodi:type="arc"
sodipodi:cx="173.5"
sodipodi:cy="175.5"
sodipodi:rx="1.4999994"
sodipodi:ry="1.4999994"
sodipodi:start="4.712389"
sodipodi:end="0"
sodipodi:open="true"
sodipodi:arc-type="arc"
d="m 173.5,174 a 1.4999994,1.4999994 0 0 1 1.5,1.5" /></g><path
style="opacity:1;fill:none;fill-opacity:1;stroke:#241f31;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 162,176 v 11 m 10,0 v -5"
id="path3"
sodipodi:nodetypes="cccc" /><path
id="path4"
style="display:inline;fill:none;stroke:#241f31;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;enable-background:new"
d="m 162,176 c 0,-1.65685 1.34315,-3 3,-3 v 3"
sodipodi:nodetypes="ccc" /><path
id="path5"
style="display:inline;fill:none;stroke:#241f31;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;enable-background:new"
d="m 167,176 c 0,-1.65685 1.34315,-3 3,-3 v 3"
sodipodi:nodetypes="ccc" /><path
style="opacity:1;fill:none;fill-opacity:1;stroke:#241f31;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 165,176 h 2"
id="path6"
sodipodi:nodetypes="cc" /><path
style="opacity:1;fill:none;fill-opacity:1;stroke:#241f31;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 170,176 2.52556,0.0158"
id="path7"
sodipodi:nodetypes="cc" /><path
style="opacity:1;fill:none;fill-opacity:1;stroke:#241f31;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 174.0158,177.47444 174,181"
id="path8"
sodipodi:nodetypes="cc" /><path
id="path9"
style="display:inline;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
d="m 176,180 v 2 c -3.53529,0.2145 -4.23624,2.44366 -5.64991,3.08535 -0.49735,0.22576 -1.42294,0.16467 -1.97533,0.16465 l -0.37477,-1e-5 A 2.0000622,2.0000622 45.001019 0 1 166,183.24993 V 180"
sodipodi:nodetypes="ccccc"
inkscape:path-effect="#path-effect10"
inkscape:original-d="m 176,180 v 2 c -4.25068,0.2579 -4.40387,3.42834 -6.62506,3.25004 L 166,185.24992 V 180" /></g><g
id="g243"><g
id="g224"
style="fill:#99c1f1;fill-opacity:1"><g
id="g223"
style="fill:#99c1f1;fill-opacity:1"><rect
style="opacity:1;fill:#99c1f1;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect222"
width="24"
height="12"
x="2.000001"
y="238" /><rect
style="opacity:1;fill:#99c1f1;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect223"
width="24"
height="22"
x="2.000001"
y="228"
rx="10.323593"
ry="10.323593" /></g></g><rect
style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect224"
width="8.0000019"
height="23"
x="82"
y="273" /><rect
style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect225"
width="8.0000019"
height="23"
x="100"
y="273" /><rect
style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect226"
width="7.9999981"
height="23"
x="20.000002"
y="273" /><rect
style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect227"
width="7.999999"
height="23"
x="38"
y="273" /><g
id="g229"
style="fill:#1c71d8"><rect
style="display:inline;fill:#6b9bd2;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12;enable-background:new"
id="rect228"
width="24"
height="38"
x="30"
y="252"
rx="10.323593"
ry="10.323593" /><rect
style="display:inline;fill:#6b9bd2;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12;enable-background:new"
id="rect229"
width="24"
height="38"
x="92"
y="252"
rx="10.323593"
ry="10.323593" /></g><g
id="g231"
style="fill:#3584e4"><rect
style="fill:#82adde;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect230"
width="24"
height="38"
x="30"
y="248"
rx="10.323593"
ry="10.323593" /><rect
style="fill:#82adde;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect231"
width="24"
height="38"
x="92"
y="248"
rx="10.323593"
ry="10.323593" /></g><g
id="g234"
style="fill:#62a0ea;fill-opacity:1"><rect
style="opacity:1;fill:#99c1f1;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect232"
width="24"
height="38"
x="12.000001"
y="252"
rx="10.323593"
ry="10.323593" /><rect
style="fill:#99c1f1;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect233"
width="24"
height="38"
x="74"
y="252"
rx="10.323593"
ry="10.323593" /><rect
style="opacity:1;fill:#99c1f1;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect234"
width="104.00044"
height="50"
x="12.000001"
y="230"
rx="16"
ry="16" /></g><rect
style="fill:#b6d1f2;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect235"
width="24"
height="38"
x="12.000001"
y="248"
rx="10.323593"
ry="10.323593" /><rect
style="fill:#b6d1f2;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect236"
width="24"
height="38"
x="74"
y="248"
rx="10.323593"
ry="10.323593" /><g
id="g237"
transform="translate(11)"
style="fill:#99c1f1;fill-opacity:1"><path
style="opacity:1;fill:#bbd6f6;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="path236"
sodipodi:type="arc"
sodipodi:cx="100.00001"
sodipodi:cy="180.00003"
sodipodi:rx="8"
sodipodi:ry="8"
sodipodi:start="1.5707963"
sodipodi:end="4.712389"
sodipodi:arc-type="arc"
d="m 100.00001,188.00003 a 8,8 0 0 1 -6.928206,-4 8,8 0 0 1 0,-8 8,8 0 0 1 6.928206,-4"
sodipodi:open="true" /><rect
style="opacity:1;fill:#99c1f1;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="rect237"
width="7.9999995"
height="16"
x="92"
y="180" /></g><rect
style="fill:#e9eef4;fill-opacity:1;stroke-width:1.99999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4.00002, 12"
id="rect238"
width="25.999989"
height="14"
x="92.000427"
y="180"
ry="4"
rx="4" /><path
style="fill:#e9eef4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="path238"
sodipodi:type="arc"
sodipodi:cx="100.00001"
sodipodi:cy="180.00003"
sodipodi:rx="8"
sodipodi:ry="8"
sodipodi:start="1.5707963"
sodipodi:end="4.712389"
sodipodi:arc-type="arc"
d="m 100.00001,188.00003 a 8,8 0 0 1 -6.928206,-4 8,8 0 0 1 0,-8 8,8 0 0 1 6.928206,-4"
sodipodi:open="true" /><g
id="g239"
style="fill:#e2eaf3;fill-opacity:1"><path
id="path239"
style="opacity:1;fill:url(#linearGradient243);fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
d="m 92,188 v 16 5.67578 C 92,215.39505 87.395036,220 81.675781,220 H 80 28 c -8.863991,0 -16,7.13601 -16,16 v 24 c 0,8.86399 7.136009,16 16,16 h 72 c 8.86399,0 16,-7.13601 16,-16 V 243.67578 236 188 Z" /><rect
style="fill:#e9eef4;fill-opacity:1;stroke-width:1.99999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4.00002, 12"
id="rect239"
width="12.999992"
height="16"
x="92.000427"
y="180" /></g><path
id="path240"
style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
d="m 104,186 h 21.99978 v 5.99969 C 114.66472,192.68742 114.92314,200.47547 109,200 l -5,-3.1e-4 z"
sodipodi:nodetypes="cccccc" /><g
id="g242"
style="fill:#e9eef4;fill-opacity:1"
transform="translate(0,-2)"><circle
style="opacity:1;fill:#e9eef4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="circle240"
cx="115.50021"
cy="188"
r="2.5002136" /><circle
style="opacity:1;fill:#e9eef4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="circle241"
cx="110.49979"
cy="188"
r="2.5002136" /><circle
style="opacity:1;fill:#e9eef4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.1;stroke-dasharray:4, 12"
id="circle242"
cx="105.50021"
cy="188"
r="2.5002136" /></g></g></g><g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="grid"
style="display:none"
sodipodi:insensitive="true"><circle
cx="64.000031"
cy="236"
r="59.504131"
id="circle2892"
style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99, 0.99;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /><rect
ry="7.9292889"
rx="8.701004"
y="180.49496"
x="20.495007"
height="111.01005"
width="87.009987"
id="rect2894"
style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99, 0.99;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /><rect
ry="7.9238095"
rx="7.9238095"
y="184.49524"
x="12.495266"
height="103.00952"
width="103.00952"
id="rect2896"
style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99, 0.99;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /><rect
ry="8.701005"
rx="7.9292889"
y="200.49496"
x="8.4950066"
height="87.010048"
width="111.01004"
id="rect2898"
style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99, 0.99;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /><path
inkscape:connector-curvature="0"
id="path2900"
d="M 2.6203015e-5,288.99999 H 128.00003"
style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /></g></g></svg>

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<filter id="a" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<linearGradient id="b" gradientUnits="userSpaceOnUse" x1="48" x2="48" y1="88" y2="48">
<stop offset="0" stop-color="#b6d1f2"/>
<stop offset="1" stop-color="#e9eef4"/>
</linearGradient>
<clipPath id="c">
<rect height="128" width="128"/>
</clipPath>
<clipPath id="d">
<rect height="128" width="128"/>
</clipPath>
<mask id="e">
<g filter="url(#a)">
<g clip-path="url(#d)" filter="url(#a)">
<g clip-path="url(#c)">
<path d="m 2 66 h 24 v 12 h -24 z m 0 0" fill="#99c1f1"/>
<path d="m 12.324219 56 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 1.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -1.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#99c1f1"/>
<path d="m 82 101 h 8 v 23 h -8 z m 0 0" fill="#5e5c64"/>
<path d="m 100 101 h 8 v 23 h -8 z m 0 0" fill="#5e5c64"/>
<path d="m 20 101 h 8 v 23 h -8 z m 0 0" fill="#5e5c64"/>
<path d="m 38 101 h 8 v 23 h -8 z m 0 0" fill="#5e5c64"/>
<path d="m 40.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#6b9bd2"/>
<path d="m 102.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#6b9bd2"/>
<path d="m 40.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#82adde"/>
<path d="m 102.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#82adde"/>
<path d="m 22.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#99c1f1"/>
<path d="m 84.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#99c1f1"/>
<path d="m 28 58 h 72 c 8.835938 0 16 7.164062 16 16 v 18 c 0 8.835938 -7.164062 16 -16 16 h -72 c -8.835938 0 -16 -7.164062 -16 -16 v -18 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="#99c1f1"/>
<path d="m 22.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#b6d1f2"/>
<path d="m 84.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#b6d1f2"/>
<path d="m 111 16 c -2.859375 0 -5.5 -1.523438 -6.929688 -4 c -1.425781 -2.476562 -1.425781 -5.523438 0 -8 c 1.429688 -2.476562 4.070313 -4 6.929688 -4" fill="#bbd6f6"/>
<path d="m 103 8 h 8 v 16 h -8 z m 0 0" fill="#99c1f1"/>
<path d="m 96 8 h 18 c 2.210938 0 4 1.789062 4 4 v 6 c 0 2.210938 -1.789062 4 -4 4 h -18 c -2.207031 0 -4 -1.789062 -4 -4 v -6 c 0 -2.210938 1.792969 -4 4 -4 z m 0 0" fill="#e9eef4"/>
<path d="m 100 16 c -2.859375 0 -5.5 -1.523438 -6.929688 -4 c -1.425781 -2.476562 -1.425781 -5.523438 0 -8 c 1.429688 -2.476562 4.070313 -4 6.929688 -4" fill="#e9eef4"/>
<path d="m 92 16 v 21.675781 c 0 5.71875 -4.605469 10.324219 -10.324219 10.324219 h -53.675781 c -8.863281 0 -16 7.136719 -16 16 v 24 c 0 8.863281 7.136719 16 16 16 h 72 c 8.863281 0 16 -7.136719 16 -16 v -72 z m 0 0" fill="url(#b)"/>
<path d="m 92 8 h 13 v 16 h -13 z m 0 0" fill="#e9eef4"/>
<path d="m 104 14 h 22 v 6 c -11.335938 0.6875 -11.078125 8.476562 -17 8 h -5 z m 0 0" fill="#5e5c64"/>
<path d="m 118 14 c 0 1.378906 -1.117188 2.5 -2.5 2.5 c -1.378906 0 -2.5 -1.121094 -2.5 -2.5 s 1.121094 -2.5 2.5 -2.5 c 1.382812 0 2.5 1.121094 2.5 2.5 z m 0 0" fill="#e9eef4"/>
<path d="m 113 14 c 0 1.378906 -1.121094 2.5 -2.5 2.5 c -1.382812 0 -2.5 -1.121094 -2.5 -2.5 s 1.117188 -2.5 2.5 -2.5 c 1.378906 0 2.5 1.121094 2.5 2.5 z m 0 0" fill="#e9eef4"/>
<path d="m 108 14 c 0 1.378906 -1.117188 2.5 -2.5 2.5 c -1.378906 0 -2.5 -1.121094 -2.5 -2.5 s 1.121094 -2.5 2.5 -2.5 c 1.382812 0 2.5 1.121094 2.5 2.5 z m 0 0" fill="#e9eef4"/>
</g>
</g>
</g>
</mask>
<mask id="f">
<g filter="url(#a)">
<rect fill-opacity="0.8" height="184.32" width="184.32" x="-28.16" y="-28.16"/>
</g>
</mask>
<linearGradient id="g" gradientTransform="matrix(0 0.37 -0.98462 0 295.38501 -30.360001)" gradientUnits="userSpaceOnUse" x1="300" x2="428" y1="235" y2="235">
<stop offset="0" stop-color="#f9f06b"/>
<stop offset="1" stop-color="#f5c211"/>
</linearGradient>
<clipPath id="h">
<rect height="128" width="128"/>
</clipPath>
<clipPath id="i">
<rect height="128" width="128"/>
</clipPath>
<path d="m 2 66 h 24 v 12 h -24 z m 0 0" fill="#99c1f1"/>
<path d="m 12.324219 56 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 1.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -1.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#99c1f1"/>
<g fill="#5e5c64">
<path d="m 82 101 h 8 v 23 h -8 z m 0 0"/>
<path d="m 100 101 h 8 v 23 h -8 z m 0 0"/>
<path d="m 20 101 h 8 v 23 h -8 z m 0 0"/>
<path d="m 38 101 h 8 v 23 h -8 z m 0 0"/>
</g>
<path d="m 40.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#6b9bd2"/>
<path d="m 102.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#6b9bd2"/>
<path d="m 40.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#82adde"/>
<path d="m 102.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#82adde"/>
<path d="m 22.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#99c1f1"/>
<path d="m 84.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#99c1f1"/>
<path d="m 28 58 h 72 c 8.835938 0 16 7.164062 16 16 v 18 c 0 8.835938 -7.164062 16 -16 16 h -72 c -8.835938 0 -16 -7.164062 -16 -16 v -18 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0" fill="#99c1f1"/>
<path d="m 22.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#b6d1f2"/>
<path d="m 84.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0" fill="#b6d1f2"/>
<path d="m 111 16 c -2.859375 0 -5.5 -1.523438 -6.929688 -4 c -1.425781 -2.476562 -1.425781 -5.523438 0 -8 c 1.429688 -2.476562 4.070313 -4 6.929688 -4" fill="#bbd6f6"/>
<path d="m 103 8 h 8 v 16 h -8 z m 0 0" fill="#99c1f1"/>
<path d="m 96 8 h 18 c 2.210938 0 4 1.789062 4 4 v 6 c 0 2.210938 -1.789062 4 -4 4 h -18 c -2.207031 0 -4 -1.789062 -4 -4 v -6 c 0 -2.210938 1.792969 -4 4 -4 z m 0 0" fill="#e9eef4"/>
<path d="m 100 16 c -2.859375 0 -5.5 -1.523438 -6.929688 -4 c -1.425781 -2.476562 -1.425781 -5.523438 0 -8 c 1.429688 -2.476562 4.070313 -4 6.929688 -4" fill="#e9eef4"/>
<path d="m 92 16 v 21.675781 c 0 5.71875 -4.605469 10.324219 -10.324219 10.324219 h -53.675781 c -8.863281 0 -16 7.136719 -16 16 v 24 c 0 8.863281 7.136719 16 16 16 h 72 c 8.863281 0 16 -7.136719 16 -16 v -72 z m 0 0" fill="url(#b)"/>
<path d="m 92 8 h 13 v 16 h -13 z m 0 0" fill="#e9eef4"/>
<path d="m 104 14 h 22 v 6 c -11.335938 0.6875 -11.078125 8.476562 -17 8 h -5 z m 0 0" fill="#5e5c64"/>
<path d="m 118 14 c 0 1.378906 -1.117188 2.5 -2.5 2.5 c -1.378906 0 -2.5 -1.121094 -2.5 -2.5 s 1.121094 -2.5 2.5 -2.5 c 1.382812 0 2.5 1.121094 2.5 2.5 z m 0 0" fill="#e9eef4"/>
<path d="m 113 14 c 0 1.378906 -1.121094 2.5 -2.5 2.5 c -1.382812 0 -2.5 -1.121094 -2.5 -2.5 s 1.117188 -2.5 2.5 -2.5 c 1.378906 0 2.5 1.121094 2.5 2.5 z m 0 0" fill="#e9eef4"/>
<path d="m 108 14 c 0 1.378906 -1.117188 2.5 -2.5 2.5 c -1.378906 0 -2.5 -1.121094 -2.5 -2.5 s 1.121094 -2.5 2.5 -2.5 c 1.382812 0 2.5 1.121094 2.5 2.5 z m 0 0" fill="#e9eef4"/>
<g mask="url(#e)">
<g clip-path="url(#i)">
<g mask="url(#f)">
<g clip-path="url(#h)">
<path d="m 128 80.640625 v 47.359375 h -128 v -47.359375 z m 0 0" fill="url(#g)"/>
<path d="m 13.308594 80.640625 l 47.355468 47.359375 h 21.214844 l -47.359375 -47.359375 z m 42.421875 0 l 47.363281 47.359375 h 21.214844 l -47.363282 -47.359375 z m 42.429687 0 l 29.839844 29.839844 v -21.210938 l -8.628906 -8.628906 z m -98.160156 7.90625 v 21.214844 l 18.238281 18.238281 h 21.214844 z m 0 0"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,272 +1,150 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="128"
height="128"
id="svg11300"
version="1.0"
style="display:inline;enable-background:new"
height="128px"
viewBox="0 0 128 128"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="128px"
version="1.1"
id="svg26"
sodipodi:docname="com.jeffser.Alpaca.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<title
id="title4162">Adwaita Icon Template</title>
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3">
<linearGradient
id="linearGradient35">
<stop
style="stop-color:#3d3846;stop-opacity:1;"
offset="0"
id="stop35" />
<stop
style="stop-color:#241f31;stop-opacity:1;"
offset="1"
id="stop36" />
</linearGradient>
<linearGradient
id="linearGradient33">
<stop
style="stop-color:#99c1ff;stop-opacity:1;"
offset="0"
id="stop33" />
<stop
style="stop-color:#62a0ea;stop-opacity:1;"
offset="1"
id="stop34" />
</linearGradient>
<linearGradient
id="linearGradient31">
<stop
style="stop-color:#deddda;stop-opacity:1;"
offset="0"
id="stop31" />
<stop
style="stop-color:#f6f5f4;stop-opacity:1;"
offset="1"
id="stop32" />
</linearGradient>
<linearGradient
id="linearGradient24">
<stop
style="stop-color:#f6f5f4;stop-opacity:1;"
offset="0"
id="stop24" />
<stop
style="stop-color:#deddda;stop-opacity:1;"
offset="1"
id="stop23" />
</linearGradient>
<linearGradient
id="linearGradient12">
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="0"
id="stop12" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop13" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient12"
id="linearGradient13"
x1="40.888428"
y1="205.03607"
x2="40.90649"
y2="212.09515"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient24"
id="linearGradient23"
x1="40.888428"
y1="205.03607"
x2="40.90649"
y2="212.09515"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient24"
id="linearGradient29"
gradientUnits="userSpaceOnUse"
x1="40.888428"
y1="205.03607"
x2="40.90649"
y2="212.09515"
gradientTransform="matrix(-1,0,0,1,127.14843,2.8384866e-4)" />
<linearGradient
xlink:href="#linearGradient12"
id="linearGradient30"
gradientUnits="userSpaceOnUse"
x1="40.888428"
y1="205.03607"
x2="40.90649"
y2="212.09515"
gradientTransform="matrix(-1,0,0,1,127.14843,2.8384866e-4)" />
<linearGradient
xlink:href="#linearGradient31"
id="linearGradient32"
x1="63.552597"
y1="214.19464"
x2="63.552597"
y2="241.24492"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient33"
id="linearGradient34"
x1="64.683159"
y1="267.04626"
x2="64.895935"
y2="278.69958"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.99245101,0,0,1.1818075,0.48386604,-51.63542)" />
<linearGradient
xlink:href="#linearGradient35"
id="linearGradient36"
x1="45.111782"
y1="235.32567"
x2="45.111782"
y2="229.17581"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient35"
id="linearGradient37"
gradientUnits="userSpaceOnUse"
x1="45.111782"
y1="235.32567"
x2="45.111782"
y2="229.17581"
gradientTransform="translate(36.957243,0.15686125)" />
</defs>
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:creator>
<cc:Agent>
<dc:title>GNOME Design Team</dc:title>
</cc:Agent>
</dc:creator>
<dc:source />
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
<dc:title>Adwaita Icon Template</dc:title>
<dc:subject>
<rdf:Bag />
</dc:subject>
<dc:date />
<dc:rights>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:publisher>
<dc:identifier />
<dc:relation />
<dc:language />
<dc:coverage />
<dc:description />
<dc:contributor>
<cc:Agent>
<dc:title />
</cc:Agent>
</dc:contributor>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
id="defs26" />
<sodipodi:namedview
id="namedview26"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="6.65625"
inkscape:cx="64"
inkscape:cy="64"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg26" />
<linearGradient
id="a"
gradientUnits="userSpaceOnUse"
x1="48"
x2="48"
y1="88"
y2="48">
<stop
offset="0"
stop-color="#b6d1f2"
id="stop1" />
<stop
offset="1"
stop-color="#e9eef4"
id="stop2" />
</linearGradient>
<path
d="m 2 66 h 24 v 12 h -24 z m 0 0"
fill="#99c1f1"
id="path2" />
<path
d="m 12.324219 56 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 1.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -1.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0"
fill="#99c1f1"
id="path3" />
<g
id="layer1"
style="display:inline"
transform="translate(0,-172)">
<g
id="layer4"
transform="matrix(1.2477821,0,0,1.2477821,-15.858054,-61.000241)">
<rect
style="display:inline;fill:url(#linearGradient32);fill-opacity:1;stroke:#000000;stroke-width:2.91036;stroke-dasharray:none;stroke-opacity:0;enable-background:new"
id="rect1"
width="81.276649"
height="56.210243"
x="23.361675"
y="213.42638"
ry="13.680508" />
<path
style="display:inline;fill:url(#linearGradient23);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient13);stroke-width:3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:0;enable-background:new"
d="m 32.848631,215.48926 c 0,0 0.309082,-16.43408 7.036621,-19.01123 6.727539,-2.57715 10.409179,18.9375 10.409179,18.9375"
id="path1" />
<path
style="display:inline;fill:url(#linearGradient29);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient30);stroke-width:3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:0;enable-background:new"
d="m 94.2998,215.48954 c 0,0 -0.309082,-16.43408 -7.036621,-19.01123 C 80.53564,193.90116 76.854,215.41581 76.854,215.41581"
id="path1-7" />
<circle
style="display:inline;fill:url(#linearGradient36);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-dasharray:none;enable-background:new"
id="path3"
cx="45.129391"
cy="235.05762"
r="5.8994136" />
<circle
style="display:inline;fill:url(#linearGradient37);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-dasharray:none;enable-background:new"
id="path3-6"
cx="82.086639"
cy="235.21448"
r="5.8994136" />
<path
style="display:inline;fill:none;stroke:#241f31;stroke-width:3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
d="m 32.392577,229.59423 c 0,0 25.649412,1.06983 24.62744,-3.62353"
id="path4" />
<path
style="display:inline;fill:none;stroke:#241f31;stroke-width:2.99972;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
d="m 94.823791,229.75097 c 0,0 -25.649412,1.06983 -24.62744,-3.62353"
id="path4-5" />
<path
style="display:inline;fill:url(#linearGradient34);fill-opacity:1;stroke:none;stroke-width:3.24899;stroke-linecap:round;stroke-dasharray:none;enable-background:new"
d="m 23.60202,258.09454 c 1.243956,12.49842 3.858832,15.67625 12.858734,14.90301 8.999901,-0.77326 9.384671,10.27444 19.65082,5.37353 10.266149,-4.90093 14.08815,-3.56159 14.703102,-3.63198 0.614951,-0.0704 15.397528,10.41294 20.253656,3.89337 4.856129,-6.51955 7.043107,-1.94985 9.232508,-4.41272 2.1894,-2.46288 4.89442,-9.45966 3.87579,-16.22158"
id="path8-0" />
<path
style="display:inline;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:2.99884;stroke-linecap:round;stroke-dasharray:none;enable-background:new"
d="m 23.389225,256.86198 c 1.25195,10.5799 3.883629,13.26993 12.941363,12.61538 9.057733,-0.65456 9.444975,8.6973 19.777093,4.54868 10.332117,-4.14862 14.178679,-3.01487 14.797582,-3.07446 0.618903,-0.0596 15.49647,8.81454 20.383803,3.29574 4.887333,-5.5188 7.088365,-1.65056 9.291844,-3.73537 2.20346,-2.08482 4.92586,-8.00759 3.90069,-13.73155"
id="path8" />
<path
style="display:inline;fill:none;stroke:#241f31;stroke-width:2.99972;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
d="m 63.095594,248.37344 c 0,0 10.15573,26.47309 21.090617,10.976"
id="path2" />
<path
style="display:inline;fill:none;stroke:#241f31;stroke-width:2.99972;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;enable-background:new"
d="m 64.150661,248.40941 c 0,0 -10.15573,26.47309 -21.090617,10.976"
id="path2-6" />
<ellipse
style="display:inline;fill:#000000;stroke:none;stroke-width:1.29382;stroke-linecap:round;stroke-dasharray:none;enable-background:new"
id="path5"
cx="63.564262"
cy="248.16406"
rx="4.5169015"
ry="4.2407222" />
</g>
fill="#5e5c64"
id="g7">
<path
d="m 82 101 h 8 v 23 h -8 z m 0 0"
id="path4" />
<path
d="m 100 101 h 8 v 23 h -8 z m 0 0"
id="path5" />
<path
d="m 20 101 h 8 v 23 h -8 z m 0 0"
id="path6" />
<path
d="m 38 101 h 8 v 23 h -8 z m 0 0"
id="path7" />
</g>
<path
d="m 40.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0"
fill="#6b9bd2"
id="path8" />
<path
d="m 102.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0"
fill="#6b9bd2"
id="path9" />
<path
d="m 40.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0"
fill="#82adde"
id="path10" />
<path
d="m 102.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0"
fill="#82adde"
id="path11" />
<path
d="m 22.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0"
fill="#99c1f1"
id="path12" />
<path
d="m 84.324219 80 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0"
fill="#99c1f1"
id="path13" />
<path
d="m 28 58 h 72 c 8.835938 0 16 7.164062 16 16 v 18 c 0 8.835938 -7.164062 16 -16 16 h -72 c -8.835938 0 -16 -7.164062 -16 -16 v -18 c 0 -8.835938 7.164062 -16 16 -16 z m 0 0"
fill="#99c1f1"
id="path14" />
<path
d="m 22.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0"
fill="#b6d1f2"
id="path15" />
<path
d="m 84.324219 76 h 3.351562 c 5.703125 0 10.324219 4.621094 10.324219 10.324219 v 17.351562 c 0 5.703125 -4.621094 10.324219 -10.324219 10.324219 h -3.351562 c -5.703125 0 -10.324219 -4.621094 -10.324219 -10.324219 v -17.351562 c 0 -5.703125 4.621094 -10.324219 10.324219 -10.324219 z m 0 0"
fill="#b6d1f2"
id="path16" />
<path
d="m 111 16 c -2.859375 0 -5.5 -1.523438 -6.929688 -4 c -1.425781 -2.476562 -1.425781 -5.523438 0 -8 c 1.429688 -2.476562 4.070313 -4 6.929688 -4"
fill="#bbd6f6"
id="path17" />
<path
d="m 103 8 h 8 v 16 h -8 z m 0 0"
fill="#99c1f1"
id="path18" />
<path
d="m 96 8 h 18 c 2.210938 0 4 1.789062 4 4 v 6 c 0 2.210938 -1.789062 4 -4 4 h -18 c -2.207031 0 -4 -1.789062 -4 -4 v -6 c 0 -2.210938 1.792969 -4 4 -4 z m 0 0"
fill="#e9eef4"
id="path19" />
<path
d="m 100 16 c -2.859375 0 -5.5 -1.523438 -6.929688 -4 c -1.425781 -2.476562 -1.425781 -5.523438 0 -8 c 1.429688 -2.476562 4.070313 -4 6.929688 -4"
fill="#e9eef4"
id="path20" />
<path
d="m 92 16 v 21.675781 c 0 5.71875 -4.605469 10.324219 -10.324219 10.324219 h -53.675781 c -8.863281 0 -16 7.136719 -16 16 v 24 c 0 8.863281 7.136719 16 16 16 h 72 c 8.863281 0 16 -7.136719 16 -16 v -72 z m 0 0"
fill="url(#a)"
id="path21" />
<path
d="m 92 8 h 13 v 16 h -13 z m 0 0"
fill="#e9eef4"
id="path22" />
<path
d="m 104 14 h 22 v 6 c -11.335938 0.6875 -11.078125 8.476562 -17 8 h -5 z m 0 0"
fill="#5e5c64"
id="path23" />
<path
d="m 118 14 c 0 1.378906 -1.117188 2.5 -2.5 2.5 c -1.378906 0 -2.5 -1.121094 -2.5 -2.5 s 1.121094 -2.5 2.5 -2.5 c 1.382812 0 2.5 1.121094 2.5 2.5 z m 0 0"
fill="#e9eef4"
id="path24" />
<path
d="m 113 14 c 0 1.378906 -1.121094 2.5 -2.5 2.5 c -1.382812 0 -2.5 -1.121094 -2.5 -2.5 s 1.117188 -2.5 2.5 -2.5 c 1.378906 0 2.5 1.121094 2.5 2.5 z m 0 0"
fill="#e9eef4"
id="path25" />
<path
d="m 108 14 c 0 1.378906 -1.117188 2.5 -2.5 2.5 c -1.378906 0 -2.5 -1.121094 -2.5 -2.5 s 1.121094 -2.5 2.5 -2.5 c 1.382812 0 2.5 1.121094 2.5 2.5 z m 0 0"
fill="#e9eef4"
id="path26" />
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -1,2 +1,13 @@
<?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>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
<g fill="#241f31">
<path d="m 12.5 3 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 c 0.289062 0 0.5 0.210938 0.5 0.5 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 c 0 -1.367188 -1.132812 -2.5 -2.5 -2.5 z m 0 0"/>
<path d="m 2 3 c -0.550781 0 -1 0.449219 -1 1 v 11 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -11 c 0 -0.550781 -0.449219 -1 -1 -1 z m 10 6 c -0.550781 0 -1 0.449219 -1 1 v 5 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -5 c 0 -0.550781 -0.449219 -1 -1 -1 z m 0 0"/>
<path d="m 5 0 c -2.199219 0 -4 1.800781 -4 4 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 c 0 -0.722656 0.4375 -1.238281 1 -1.589844 v 1.589844 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -3 c 0 -0.550781 -0.449219 -1 -1 -1 z m 0 0"/>
<path d="m 10 0 c -2.199219 0 -4 1.800781 -4 4 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 c 0 -0.722656 0.4375 -1.238281 1 -1.589844 v 1.589844 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -3 c 0 -0.550781 -0.449219 -1 -1 -1 z m 0 0"/>
<path d="m 5 3 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 h 2 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m 0 0"/>
<path d="m 10.007812 3 c -0.554687 -0.003906 -1.003906 0.441406 -1.007812 0.992188 c -0.003906 0.554687 0.441406 1.003906 0.992188 1.007812 l 2.527343 0.015625 c 0.550781 0.003906 1.003907 -0.441406 1.003907 -0.996094 c 0.003906 -0.550781 -0.441407 -1 -0.992188 -1.003906 z m 0 0"/>
<path d="m 14.019531 4.476562 c -0.550781 -0.003906 -1 0.441407 -1.003906 0.992188 l -0.015625 3.527344 c -0.003906 0.550781 0.445312 1 0.996094 1.003906 c 0.550781 0.003906 1 -0.445312 1.003906 -0.996094 l 0.015625 -3.523437 c 0.003906 -0.554688 -0.445313 -1.003907 -0.996094 -1.003907 z m 0 0"/>
<path d="m 16 8 v 2 c -3.535156 0.214844 -4.234375 2.445312 -5.648438 3.085938 c -0.5 0.226562 -1.425781 0.164062 -1.976562 0.164062 h -0.375 c -1.105469 0 -2 -0.894531 -2 -2 v -3.25"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 522 B

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -33,4 +33,24 @@ test('Validate schema file',
compile_schemas,
args: ['--strict', '--dry-run', meson.current_source_dir()])
#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')

View File

@@ -1,11 +1,12 @@
project('Alpaca',
version: '0.8.5',
project('Alpaca', 'c',
version: '1.0.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')

View File

@@ -1,3 +1,7 @@
ru
es
pt_BR
fr
nb_NO
bn
zh_CN

View File

@@ -3,4 +3,7 @@ data/com.jeffser.Alpaca.metainfo.xml.in
data/com.jeffser.Alpaca.gschema.xml
src/main.py
src/window.py
src/available_models_descriptions.py
src/connection_handler.py
src/dialogs.py
src/window.ui

File diff suppressed because it is too large Load Diff

2304
po/bn.po Normal file

File diff suppressed because it is too large Load Diff

1697
po/de.po Normal file

File diff suppressed because it is too large Load Diff

2305
po/es.po

File diff suppressed because it is too large Load Diff

906
po/es.po~
View File

@@ -1,906 +0,0 @@
# Spanish translations for PACKAGE package.
# Copyright (C) 2024 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Jeffry Samuel Eduarte Rojas <jeffrysamuer@gmail.com>, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-05-26 00:53-0600\n"
"PO-Revision-Date: 2024-05-19 19:44-0600\n"
"Last-Translator: Jeffry Samuel Eduarte Rojas <jeffrysamuer@gmail.com>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/com.jeffser.Alpaca.desktop.in:3
#: data/com.jeffser.Alpaca.metainfo.xml.in:7
msgid "Alpaca"
msgstr "Alpaca"
#: data/com.jeffser.Alpaca.metainfo.xml.in:8
#, fuzzy
msgid "Chat with local AI models powered by Ollama"
msgstr "Chatea con multiples modelos de IA"
#: data/com.jeffser.Alpaca.metainfo.xml.in:10
msgid "An Ollama client"
msgstr "Un cliente de Ollama"
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
#: data/com.jeffser.Alpaca.metainfo.xml.in:300
msgid "Features"
msgstr "Funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:13
#, fuzzy
msgid "Built in Ollama instance"
msgstr "Un cliente de Ollama"
#: data/com.jeffser.Alpaca.metainfo.xml.in:14
#: data/com.jeffser.Alpaca.metainfo.xml.in:302
msgid "Talk to multiple models in the same conversation"
msgstr "Habla con multiples modelos en la misma conversación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:15
#: data/com.jeffser.Alpaca.metainfo.xml.in:303
msgid "Pull and delete models from the app"
msgstr "Descarga y elimina modelos desde la app"
#: data/com.jeffser.Alpaca.metainfo.xml.in:16
#, fuzzy
msgid "Have multiple conversations"
msgstr "Habla con multiples modelos en la misma conversación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:17
#, fuzzy
msgid "Image recognition (Only available with compatible models)"
msgstr "Añadido reconocimiento de imagenes (modelo llava)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:18
#, fuzzy
msgid "Import and export chats"
msgstr "Añadida la opcion de importar y exportar chats"
#: data/com.jeffser.Alpaca.metainfo.xml.in:20 src/window.ui:440
msgid "Disclaimer"
msgstr "Aviso Legal"
#: 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 ""
"Este proyecto no está afiliado del todo con Ollama, no soy responsable por "
"cualquier daño a tu dispositivo o software causado por correr codigo "
"proveido por cualquier modelo."
#: data/com.jeffser.Alpaca.metainfo.xml.in:24
msgid "Jeffry Samuel Eduarte Rojas"
msgstr "Jeffry Samuel Eduarte Rojas"
#: data/com.jeffser.Alpaca.metainfo.xml.in:50
#, fuzzy
msgid "A conversation showing code highlight"
msgstr "Una conversación incluyendo multiples modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:54
msgid "A conversation involving multiple models"
msgstr "Una conversación incluyendo multiples modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:58
msgid "Managing models"
msgstr "Gestionando modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:69
#: data/com.jeffser.Alpaca.metainfo.xml.in:80
#, fuzzy
msgid "Quick fix"
msgstr "Arreglo rápido"
#: data/com.jeffser.Alpaca.metainfo.xml.in:71
#, fuzzy
msgid "UI tweaks (Thanks Nokse22)"
msgstr "Mejor UI en general (Gracias Nokse22)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:72
#, fuzzy
msgid "General optimizations"
msgstr "Optimización general"
#: data/com.jeffser.Alpaca.metainfo.xml.in:73
msgid "Metadata fixes"
msgstr "Correciones de metadata"
#: data/com.jeffser.Alpaca.metainfo.xml.in:82
#, fuzzy
msgid "Updated Spanish translation"
msgstr "Actualización a la traducción a Español"
#: data/com.jeffser.Alpaca.metainfo.xml.in:83
msgid "Added compatibility for PNG"
msgstr "Añadida compatibilidad para PNG"
#: data/com.jeffser.Alpaca.metainfo.xml.in:90
#, fuzzy
msgid "New Update"
msgstr "Nueva Actualización"
#: data/com.jeffser.Alpaca.metainfo.xml.in:92
msgid "Updated model list"
msgstr "Lista de modelos actualizada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:93
#, fuzzy
msgid "Added image recognition to more models"
msgstr "Añadido reconocimiento de imagenes a más modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:94
msgid "Added Brazilian Portuguese translation (Thanks Daimaar Stein)"
msgstr "Añadida tradución a Portugues Brasileño (Gracias Daimaar Stein)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:95
msgid "Refined the general UI (Thanks Nokse22)"
msgstr "Mejor UI en general (Gracias Nokse22)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:96
msgid "Added 'delete message' feature"
msgstr "Añadida función 'eliminar mensaje'"
#: data/com.jeffser.Alpaca.metainfo.xml.in:97
msgid ""
"Added metadata so that software distributors know that the app is compatible "
"with mobile"
msgstr ""
"Añadida metadata para que distribuidores de software puedan saber que la "
"aplicación es compatible con celulares"
#: data/com.jeffser.Alpaca.metainfo.xml.in:98
msgid ""
"Changed 'send' shortcut to just the return/enter key (to add a new line use "
"shift+return)"
msgstr ""
"Cambiado el atajo para enviar mensaje a solo la tecla enter (para hacer "
"salto de linea usa shift+enter)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:105
#, fuzzy
msgid "Bug Fixes"
msgstr "Arreglo de errores"
#: data/com.jeffser.Alpaca.metainfo.xml.in:107
msgid "Fixed: Minor spelling mistake"
msgstr "Arregalada falta de ortografía"
#: data/com.jeffser.Alpaca.metainfo.xml.in:108
#, fuzzy
msgid "Added 'mobile' as a supported form factor"
msgstr "Añadido soporte para multiples chats!"
#: data/com.jeffser.Alpaca.metainfo.xml.in:109
msgid "Fixed: 'Connection Error' dialog not working properly"
msgstr "Arreglado: Dialogo 'Error de conexión' no funcionando correctamente"
#: data/com.jeffser.Alpaca.metainfo.xml.in:110
msgid "Fixed: App might freeze randomly on startup"
msgstr "Arreglado: Aplicación se congela al azar cuando inicia"
#: data/com.jeffser.Alpaca.metainfo.xml.in:111
msgid "Changed 'chats' label on sidebar for 'Alpaca'"
msgstr "Cambiado label 'chats' en la barra del lado por 'Alpaca'"
#: data/com.jeffser.Alpaca.metainfo.xml.in:118
#, fuzzy
msgid "Cool Update"
msgstr "Actualización Potente"
#: data/com.jeffser.Alpaca.metainfo.xml.in:120
#, fuzzy
msgid "Better design for chat window"
msgstr "Mejor diseño para la ventana de chat"
#: data/com.jeffser.Alpaca.metainfo.xml.in:121
#, fuzzy
msgid "Better design for chat sidebar"
msgstr "Mejor interfaz para la barra de lado de chat"
#: data/com.jeffser.Alpaca.metainfo.xml.in:122
#, fuzzy
msgid "Fixed remote connections"
msgstr "Conexión remota arreglada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:123
msgid "Fixed Ollama restarting in loop"
msgstr "Arreglado, Ollama reiniciandose en bucle"
#: data/com.jeffser.Alpaca.metainfo.xml.in:124
msgid "Other cool backend stuff"
msgstr "Otras cosas geniales en el backend"
#: data/com.jeffser.Alpaca.metainfo.xml.in:131
#, fuzzy
msgid "Huge Update"
msgstr "Gran Actualización"
#: data/com.jeffser.Alpaca.metainfo.xml.in:133
msgid "Added Ollama as part of Alpaca, Ollama will run in a sandbox"
msgstr "Añadido Ollama como parte de Alpaca, Ollama se ejecutara en un sandbox"
#: data/com.jeffser.Alpaca.metainfo.xml.in:134
msgid "Added option to connect to remote instances (how it worked before)"
msgstr ""
"Añadida la opcion de conectarse a instancias remotas (como funcionaba) antes"
#: data/com.jeffser.Alpaca.metainfo.xml.in:135
msgid "Added option to import and export chats"
msgstr "Añadida la opcion de importar y exportar chats"
#: data/com.jeffser.Alpaca.metainfo.xml.in:136
msgid "Added option to run Alpaca with Ollama in the background"
msgstr "Añadida la opcion de ejecutar Alpaca y Ollama en el fondo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:137
#, fuzzy
msgid "Added preferences dialog"
msgstr "Añadido dialogo de preferencias"
#: data/com.jeffser.Alpaca.metainfo.xml.in:138
#, fuzzy
msgid "Changed the welcome dialog"
msgstr "Nuevo dialogo de bienvenida"
#: data/com.jeffser.Alpaca.metainfo.xml.in:140
#: data/com.jeffser.Alpaca.metainfo.xml.in:157
#: data/com.jeffser.Alpaca.metainfo.xml.in:169
#: data/com.jeffser.Alpaca.metainfo.xml.in:188
#: data/com.jeffser.Alpaca.metainfo.xml.in:209
#: data/com.jeffser.Alpaca.metainfo.xml.in:225
#: data/com.jeffser.Alpaca.metainfo.xml.in:241
#: data/com.jeffser.Alpaca.metainfo.xml.in:255
#: data/com.jeffser.Alpaca.metainfo.xml.in:265
#: data/com.jeffser.Alpaca.metainfo.xml.in:283
#: data/com.jeffser.Alpaca.metainfo.xml.in:305
msgid "Please report any errors to the issues page, thank you."
msgstr "Por favor reporta cualquier error a la página de problemas, gracias."
#: data/com.jeffser.Alpaca.metainfo.xml.in:148
#, fuzzy
msgid "Yet Another Daily Update"
msgstr "Otra Actulización Diaria"
#: data/com.jeffser.Alpaca.metainfo.xml.in:150
#, fuzzy
msgid "Added better UI for 'Manage Models' dialog"
msgstr "Añadida mejor interfaz para el dialogo 'gestión de modelos'"
#: data/com.jeffser.Alpaca.metainfo.xml.in:151
msgid "Added better UI for the chat sidebar"
msgstr "Añadida mejor interfaz para la barra de lado de chat"
#: data/com.jeffser.Alpaca.metainfo.xml.in:152
msgid ""
"Replaced model description with a button to open Ollama's website for the "
"model"
msgstr ""
"Remplazada la descripción de modelo por un botón para abrir la página web de "
"Ollama para el modelo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:153
msgid "Added myself to the credits as the spanish translator"
msgstr "Agregue mi nombre en los creditos como el traductor a Español"
#: data/com.jeffser.Alpaca.metainfo.xml.in:154
msgid "Using XDG properly to get config folder"
msgstr "Usando XDG apropiadamente para obtener el folder de configuración"
#: data/com.jeffser.Alpaca.metainfo.xml.in:155
#, fuzzy
msgid "Update for translations"
msgstr "Actualización para traducciones"
#: data/com.jeffser.Alpaca.metainfo.xml.in:165
#, fuzzy
msgid "Quick Fix"
msgstr "Arreglos rápidos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:167
msgid "The last update had some mistakes in the description of the update"
msgstr ""
"La última actualización tenía unos errores en la descripción de la "
"actualización"
#: data/com.jeffser.Alpaca.metainfo.xml.in:177
msgid "Another Daily Update"
msgstr "Otra Actulización Diaria"
#: data/com.jeffser.Alpaca.metainfo.xml.in:179
msgid "Added full Spanish translation"
msgstr "Añadida traducción completa a Español"
#: data/com.jeffser.Alpaca.metainfo.xml.in:180
#, fuzzy
msgid "Added support for background pulling of multiple models"
msgstr "Añadido soporte para descargar multiples modelos en el fondo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:181
msgid "Added interrupt button"
msgstr "Añadido botón de interrupción"
#: data/com.jeffser.Alpaca.metainfo.xml.in:182
#, fuzzy
msgid "Added basic shortcuts"
msgstr "Añadidos atajos de teclado basicos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:183
msgid "Better translation support"
msgstr "Mejor soporte para traducciones"
#: data/com.jeffser.Alpaca.metainfo.xml.in:184
msgid ""
"User can now leave chat name empty when creating a new one, it will add a "
"placeholder name"
msgstr ""
"El usuario ahora puede dejar el nombre del chat vacio durante la creación, "
"la aplicación añadira un placeholder"
#: data/com.jeffser.Alpaca.metainfo.xml.in:185
msgid "Better scalling for different window sizes"
msgstr "Mejor escalado para distintos tamaños de ventana"
#: data/com.jeffser.Alpaca.metainfo.xml.in:186
#, fuzzy
msgid "Fixed: Can't close app if first time setup fails"
msgstr "Arreglado: No se puede cerrar la aplicación en el primer setup"
#: data/com.jeffser.Alpaca.metainfo.xml.in:196
msgid "Really Big Update"
msgstr "Actualización Bastante Grande"
#: data/com.jeffser.Alpaca.metainfo.xml.in:198
msgid "Added multiple chats support!"
msgstr "Añadido soporte para multiples chats!"
#: data/com.jeffser.Alpaca.metainfo.xml.in:199
msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)"
msgstr ""
"Añadido soporte para Pango Markup (negrita, lista, titulo, subtitulo, "
"monoespaciado)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:200
msgid "Added autoscroll if the user is at the bottom of the chat"
msgstr ""
"Añadido autoscroll si el usuario se encuentra en la parte inferior del chat"
#: data/com.jeffser.Alpaca.metainfo.xml.in:201
msgid "Added support for multiple tags on a single model"
msgstr "Añadido soporte para multiples etiquetas con un solo modelo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:202
msgid "Added better model management dialog"
msgstr "Añadido mejor gestión de modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:203
msgid "Added loading spinner when sending message"
msgstr "Añadido spinner de carga cuando se envia un mensaje"
#: data/com.jeffser.Alpaca.metainfo.xml.in:204
msgid "Added notifications if app is not active and a model pull finishes"
msgstr ""
"Añadidas notificaciones si la aplicación no está activa y la descarga de un "
"modelo finaliza"
#: data/com.jeffser.Alpaca.metainfo.xml.in:205
msgid "Added new symbolic icon"
msgstr "Añadido nuevo icono simbolico"
#: data/com.jeffser.Alpaca.metainfo.xml.in:206
msgid "Added frame to message textview widget"
msgstr "Añadido borde al objeto textview del mensaje"
#: data/com.jeffser.Alpaca.metainfo.xml.in:207
msgid "Fixed \"code blocks shouldn't be editable\""
msgstr "Arreglado \"bloques de codigo no deberían de ser editables\""
#: data/com.jeffser.Alpaca.metainfo.xml.in:217
#: data/com.jeffser.Alpaca.metainfo.xml.in:274
msgid "Big Update"
msgstr "Gran Actualización"
#: data/com.jeffser.Alpaca.metainfo.xml.in:219
msgid "Added code highlighting"
msgstr "Añadido resaltado de código"
#: data/com.jeffser.Alpaca.metainfo.xml.in:220
msgid "Added image recognition (llava model)"
msgstr "Añadido reconocimiento de imagenes (modelo llava)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:221
msgid "Added multiline prompt"
msgstr "Añadido caja de texto de multiples lineas"
#: data/com.jeffser.Alpaca.metainfo.xml.in:222
msgid "Fixed some small bugs"
msgstr "Arreglados unos pequeños errores"
#: data/com.jeffser.Alpaca.metainfo.xml.in:223
msgid "General optimization"
msgstr "Optimización general"
#: data/com.jeffser.Alpaca.metainfo.xml.in:233
msgid "Fixes and features"
msgstr "Arreglos y funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:235
msgid "Russian translation (thanks github/alexkdeveloper)"
msgstr "Traducción a Ruso (gracias github/alexkdeveloper)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:236
msgid "Fixed: Cannot close app on first setup"
msgstr "Arreglado: No se puede cerrar la aplicación en el primer setup"
#: data/com.jeffser.Alpaca.metainfo.xml.in:237
msgid "Fixed: Brand colors for Flathub"
msgstr "Arreglado: Colores de marca para Flathub"
#: data/com.jeffser.Alpaca.metainfo.xml.in:238
msgid "Fixed: App description"
msgstr "Arreglado: Descripción de aplicación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:239
msgid "Fixed: Only show 'save changes dialog' when you actually change the url"
msgstr ""
"Arreglado: Solo mostrar el dialogo 'guardar cambios' cuando se cambia el url"
#: data/com.jeffser.Alpaca.metainfo.xml.in:249
msgid "0.2.2 Bug fixes"
msgstr "0.2.2 Arreglo de errores"
#: data/com.jeffser.Alpaca.metainfo.xml.in:251
msgid "Toast messages appearing behind dialogs"
msgstr "Mensajes toast apareciendo detrás de dialogos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:252
msgid "Local model list not updating when changing servers"
msgstr ""
"Lista de modelos locales no es actualizada cuando se cambia el servidor"
#: data/com.jeffser.Alpaca.metainfo.xml.in:253
msgid "Closing the setup dialog closes the whole app"
msgstr "Cerrar el dialogo de setup cierra toda la aplicación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:263
msgid "0.2.1 Data saving fix"
msgstr "0.2.1 Arreglo en el guardado de datos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:264
msgid ""
"The app didn't save the config files and chat history to the right "
"directory, this is now fixed"
msgstr ""
"La aplicación no guardaba los archivos de configuración o los chats en el "
"directorio correcto, esto ahora ha sido arreglado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:273
msgid "0.2.0"
msgstr "0.2.0"
#: data/com.jeffser.Alpaca.metainfo.xml.in:275
msgid "New Features"
msgstr "Nuevas funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:277
msgid "Restore chat after closing the app"
msgstr "Restaurar chat despues de cerrar la aplicación"
#: data/com.jeffser.Alpaca.metainfo.xml.in:278
msgid "A button to clear the chat"
msgstr "Un botón para limpiar el chat"
#: data/com.jeffser.Alpaca.metainfo.xml.in:279
msgid "Fixed multiple bugs involving how messages are shown"
msgstr "Arreglados multiples errores acerca de como los mensajes son mostrados"
#: data/com.jeffser.Alpaca.metainfo.xml.in:280
msgid "Added welcome dialog"
msgstr "Añadido dialogo de bienvenida"
#: data/com.jeffser.Alpaca.metainfo.xml.in:281
msgid "More stability"
msgstr "Más estabilidad"
#: data/com.jeffser.Alpaca.metainfo.xml.in:291
msgid "0.1.2 Quick fixes"
msgstr "0.1.2 Arreglos rápidos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:292
msgid ""
"This release fixes some metadata needed to have a proper Flatpak application"
msgstr ""
"Esta versión arregla metadatos necesarios para tener un aplicación de "
"Flatpak justa"
#: data/com.jeffser.Alpaca.metainfo.xml.in:298
msgid "0.1.1 Stable Release"
msgstr "0.1.1"
#: data/com.jeffser.Alpaca.metainfo.xml.in:299
msgid "This is the first public version of Alpaca"
msgstr "Esta es la primera versión publica de Alpaca"
#: src/window.py:54 src/window.py:624 src/window.py:626
msgid "New Chat"
msgstr "Nuevo Chat"
#: src/window.py:97
msgid "An error occurred"
msgstr "Ocurrio un error"
#: src/window.py:98
msgid "Failed to connect to server"
msgstr "No se pudo conectar al servidor"
#: src/window.py:99
msgid "Could not list local models"
msgstr "No se pudieron listar los modelos locales"
#: src/window.py:100
msgid "Could not delete model"
msgstr "No se pudo eliminar el modelo"
#: src/window.py:101
msgid "Could not pull model"
msgstr "No se pudo descargar el modelo"
#: src/window.py:102
msgid "Cannot open image"
msgstr "No se pudo abrir la imagen"
#: src/window.py:103
msgid "Cannot delete chat because it's the only one left"
msgstr "No se pudo eliminar el chat por que es el único que queda"
#: src/window.py:104
msgid "There was an error with the local Ollama instance, so it has been reset"
msgstr ""
"Ha ocurrido un error con la instancia local de Ollama, ha sido reinicida"
#: src/window.py:107
msgid "Please select a model before chatting"
msgstr "Por favor selecciona un modelo antes de enviar un mensaje"
#: src/window.py:108
msgid "Chat cannot be cleared while receiving a message"
msgstr "El chat no puede ser limpiado mientras se recibe un mensaje"
#: src/window.py:109
#, fuzzy
msgid "That tag is already being pulled"
msgstr "Esa etiqueta ya se está descargando"
#: src/window.py:110
#, fuzzy
msgid "That tag has been pulled already"
msgstr "Esa etiqueta ya ha sido descargada"
#: src/window.py:111
msgid "Code copied to the clipboard"
msgstr "Codigo copiado"
#: src/window.py:114
msgid "Model deleted successfully"
msgstr "Modelo eliminado exitosamente"
#: src/window.py:115
msgid "Model pulled successfully"
msgstr "Modelo descargado exitosamente"
#: src/window.py:116
#, fuzzy
msgid "Chat exported successfully"
msgstr "Chat exportado exitosamente"
#: src/window.py:117
#, fuzzy
msgid "Chat imported successfully"
msgstr "Chat importado exitosamente"
#: src/window.py:129
msgid "Upload image"
msgstr "Subir imagen"
#: src/window.py:133 src/window.ui:231
msgid "Only available on selected models"
msgstr "Solo disponible en modelos especificos"
#: src/window.py:542
msgid "Task Complete"
msgstr "Tarea completada"
#: src/window.py:542
msgid "Model '{}' pulled successfully."
msgstr "El modelo '{}' fue descargado exitosamente"
#: src/window.py:547
msgid "Pull Model Error"
msgstr "Error Descargando Modelo"
#: src/window.py:547
msgid "Failed to pull model '{}' due to network error."
msgstr "No se pudo descargar el modelo '{}' debido a un error de red"
#: src/window.ui:38
msgid "New chat"
msgstr "Nuevo chat"
#: src/window.ui:47
msgid "Import chat"
msgstr "Importar chat"
#: src/window.ui:56
msgid "Export chat"
msgstr "Exportar chat"
#: src/window.ui:89
msgid "Toggle Sidebar"
msgstr "Alternar barra de lado"
#: src/window.ui:112 src/window.ui:308
msgid "Manage models"
msgstr "Gestionar modelos"
#: src/window.ui:126
msgid "Menu"
msgstr "Menu"
#: src/window.ui:221
msgid "Send"
msgstr "Enviar"
#: src/window.ui:234
msgid "Image"
msgstr "Imagen"
#: src/window.ui:258 src/window.ui:458 src/window.ui:516
msgid "Preferences"
msgstr "Preferencias"
#: src/window.ui:261 src/window.ui:500
msgid "General"
msgstr "General"
#: src/window.ui:265
msgid "Remote Connection"
msgstr "Conexión Remota"
#: src/window.ui:266
msgid "Manage a remote connection to Ollama"
msgstr "Gestiona una conección remota a Ollama"
#: src/window.ui:269
msgid "Use remote connection"
msgstr "Usar conexión remota"
#: src/window.ui:275
msgid "URL of remote instance"
msgstr "URL de la instancia remota"
#: src/window.ui:283
msgid "Behavior"
msgstr "Comportamiento"
#: src/window.ui:284
msgid "Manage Alpaca's Behavior"
msgstr "Gestiona el comportamiento de Alpaca"
#: src/window.ui:287
msgid "Run in background"
msgstr "Ejecutar en el fondo"
#: src/window.ui:377
msgid "Previous"
msgstr "Anterior"
#: src/window.ui:393
msgid "Next"
msgstr "Siguiente"
#: src/window.ui:420
msgid "Welcome to Alpaca"
msgstr "Bienvenido a Alpaca"
#: src/window.ui:421
msgid "Powered by Ollama"
msgstr "Impulsado por Ollama"
#: src/window.ui:424
msgid "Ollama Website"
msgstr "Sitio Web de Ollama"
#: src/window.ui:441
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 y sus desarrolladores no son responsables por cualquier daño a "
"dispositivos o software resultados por la ejecución de codigo generado por "
"un modelo de IA. Por favor sea precavido y revise el codigo cuidadosamente "
"antes de correrlo"
#: src/window.ui:454
msgid "Clear Chat"
msgstr "Limpiar Chat"
#: src/window.ui:462
msgid "Keyboard Shortcuts"
msgstr "Atajos de Teclado"
#: src/window.ui:466
msgid "About Alpaca"
msgstr "Sobre Alpaca"
#: src/window.ui:474
msgid "Remove"
msgstr "Remover"
#: src/window.ui:504
msgid "Close application"
msgstr "Cerrar aplicación"
#: src/window.ui:510
msgid "Clear chat"
msgstr "Limpiar chat"
#: src/window.ui:522
msgid "Show shortcuts window"
msgstr "Mostrar ventana de atajos"
#: src/window.ui:529
msgid "Editor"
msgstr "Editor"
#: src/window.ui:533
msgid "Copy"
msgstr "Copiar"
#: src/window.ui:539
msgid "Paste"
msgstr "Pegar"
#: src/window.ui:545
msgid "Insert new line"
msgstr "Saltar línea"
#: src/window.ui:551
msgid "Send Message"
msgstr "Enviar Mensaje"
#~ msgid "Stop Model"
#~ msgstr "Parar Modelo"
#~ msgid "Are you sure you want to stop pulling '{}'?"
#~ msgstr "¿Estás seguro de que quieres parar la descarga de '{}'?"
#~ msgid "Cancel"
#~ msgstr "Cancelar"
#~ msgid "Stop"
#~ msgstr "Parar"
#~ msgid "Delete Model"
#~ msgstr "Eliminar Modelo"
#~ msgid "Are you sure you want to delete '{}'?"
#~ msgstr "¿Estás seguro de que quieres eliminar '{}'?"
#~ msgid "Delete"
#~ msgstr "Eliminar"
#~ msgid "Pull Model"
#~ msgstr "Descargar Modelo"
#~ msgid "Please select a tag to pull '{}'"
#~ msgstr "Por favor selecciona una etiqueta para descargar '{}'"
#~ msgid "Pull"
#~ msgstr "Descargar"
#~ msgid "Are you sure you want to clear the chat?"
#~ msgstr "¿Estás seguro de que quieres limpiar el chat?"
#~ msgid "Clear"
#~ msgstr "Limpiar"
#~ msgid "Remove Image"
#~ msgstr "Remover Imagen"
#~ msgid "Are you sure you want to remove image?"
#~ msgstr "¿Estás seguro de que quieres eliminar la imagen?"
#~ msgid "Delete Chat"
#~ msgstr "Eliminar Chat"
#~ msgid "Rename Chat"
#~ msgstr "Renombrar Chat"
#~ msgid "Rename"
#~ msgstr "Renombrar"
#~ msgid "The name '{}' is already in use"
#~ msgstr "El nombre '{}' ya está en uso"
#~ msgid "Create Chat"
#~ msgstr "Crear Chat"
#~ msgid "Create"
#~ msgstr "Crear"
#, fuzzy
#~ msgid "Connection Error"
#~ msgstr "Conexión Remota"
#~ msgid "The remote instance has disconnected"
#~ msgstr "La instancia remota se ha desconectado"
#, fuzzy
#~ msgid "Close Alpaca"
#~ msgstr "Bienvenido a Alpaca"
#, fuzzy
#~ msgid "Use local instance"
#~ msgstr "URL de la instancia remota"
#~ msgid "Connect"
#~ msgstr "Conectar"
#~ msgid "Welcome dialog"
#~ msgstr "Dialogo de Bienvenida"
#~ msgid "Chats"
#~ msgstr "Chats"
#~ msgid "Requires model 'llava' to be selected"
#~ msgstr "Requiere que el modelo 'llava' sea seleccionado"
#~ msgid "Save Changes"
#~ msgstr "Guardar Cambios"
#~ msgid "Do you want to save the URL change?"
#~ msgstr "¿Deseas guardar el cambio de URL?"
#~ msgid "Discard"
#~ msgstr "Descartar"
#~ msgid "Save"
#~ msgstr "Guardar"
#~ 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 ""
#~ "Para iniciar, por favor asegurate de tener una instancia de Ollama "
#~ "funcional. Puedes correr Ollama localmente o conectarte a una instancia "
#~ "remota."
#~ msgid "Setup"
#~ msgstr "Setup"
#~ 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 ""
#~ "Si estás corriendo una instancia local de Ollama y no modificaste los "
#~ "puertos por defecto, puedes usar la URL por defecto. De otra forma, por "
#~ "favor ingresa la URL de tu instancia de Ollama"
#~ msgid "Change Server"
#~ msgstr "Cambiar Servidor"
#~ msgid "Change server"
#~ msgstr "Cambiar servidor"

2138
po/fr.po Normal file

File diff suppressed because it is too large Load Diff

2309
po/nb_NO.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,900 +0,0 @@
# Brazilian Portuguese translations for Alpaca.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-05-26 00:53-0600\n"
"PO-Revision-Date: 2024-05-23 23:29-0600\n"
"Last-Translator: Daimar Stein <daimarstein@pm.me>\n"
"Language-Team: \n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/com.jeffser.Alpaca.desktop.in:3
#: data/com.jeffser.Alpaca.metainfo.xml.in:7
msgid "Alpaca"
msgstr "Alpaca"
#: data/com.jeffser.Alpaca.metainfo.xml.in:8
#, fuzzy
msgid "Chat with local AI models powered by Ollama"
msgstr "Converse com modelos de IA locais"
#: data/com.jeffser.Alpaca.metainfo.xml.in:10
msgid "An Ollama client"
msgstr "Um cliente Ollama"
#: data/com.jeffser.Alpaca.metainfo.xml.in:11
#: data/com.jeffser.Alpaca.metainfo.xml.in:300
msgid "Features"
msgstr "Funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:13
#, fuzzy
msgid "Built in Ollama instance"
msgstr "Um cliente Ollama"
#: data/com.jeffser.Alpaca.metainfo.xml.in:14
#: data/com.jeffser.Alpaca.metainfo.xml.in:302
msgid "Talk to multiple models in the same conversation"
msgstr "Fale com múltiplos modelos na mesma conversa"
#: data/com.jeffser.Alpaca.metainfo.xml.in:15
#: data/com.jeffser.Alpaca.metainfo.xml.in:303
msgid "Pull and delete models from the app"
msgstr "Baixe e delete modelos através do app"
#: data/com.jeffser.Alpaca.metainfo.xml.in:16
#, fuzzy
msgid "Have multiple conversations"
msgstr "Tenha múltiplas conversas"
#: data/com.jeffser.Alpaca.metainfo.xml.in:17
#, fuzzy
msgid "Image recognition (Only available with compatible models)"
msgstr "Reconhecimento de imagem (Disponível apenas com o modelo LLaVA)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:18
#, fuzzy
msgid "Import and export chats"
msgstr "Importe e exporte conversas"
#: data/com.jeffser.Alpaca.metainfo.xml.in:20 src/window.ui:440
msgid "Disclaimer"
msgstr "Aviso Legal"
#: 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 ""
"Esse projeto não é afiliado de nenhuma forma com Ollama. Não sou responsável "
"por quaisquer danos ao seu dispositivo ou software causados por código "
"gerado por qualquer um dos modelos disponíveis."
#: data/com.jeffser.Alpaca.metainfo.xml.in:24
msgid "Jeffry Samuel Eduarte Rojas"
msgstr "Jeffry Samuel Eduarte Rojas"
#: data/com.jeffser.Alpaca.metainfo.xml.in:50
#, fuzzy
msgid "A conversation showing code highlight"
msgstr "Uma conversa exibindo highlighting de código"
#: data/com.jeffser.Alpaca.metainfo.xml.in:54
msgid "A conversation involving multiple models"
msgstr "Uma conversa envolvendo múltiplos modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:58
msgid "Managing models"
msgstr "Gerenciando modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:69
#: data/com.jeffser.Alpaca.metainfo.xml.in:80
#, fuzzy
msgid "Quick fix"
msgstr "Consertos Rápidos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:71
#, fuzzy
msgid "UI tweaks (Thanks Nokse22)"
msgstr "A interface de usuário foi refinada (obrigado, Nokse22)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:72
#, fuzzy
msgid "General optimizations"
msgstr "Otimização geral"
#: data/com.jeffser.Alpaca.metainfo.xml.in:73
msgid "Metadata fixes"
msgstr ""
#: data/com.jeffser.Alpaca.metainfo.xml.in:82
#, fuzzy
msgid "Updated Spanish translation"
msgstr "Tradução para o Espanhol atualizada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:83
msgid "Added compatibility for PNG"
msgstr "Compatibilidade com PNG adicionada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:90
#, fuzzy
msgid "New Update"
msgstr "Nova Atualização"
#: data/com.jeffser.Alpaca.metainfo.xml.in:92
msgid "Updated model list"
msgstr "Lista de modelos atualizada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:93
#, fuzzy
msgid "Added image recognition to more models"
msgstr "Reconhecimento de imagem foi adicionado para mais modelos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:94
msgid "Added Brazilian Portuguese translation (Thanks Daimaar Stein)"
msgstr ""
"Tradução para Português do Brasil foi adicionada (obrigado, Daimar Stein)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:95
msgid "Refined the general UI (Thanks Nokse22)"
msgstr "A interface de usuário foi refinada (obrigado, Nokse22)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:96
msgid "Added 'delete message' feature"
msgstr "A funcionalidade de 'deletar mensagem' foi adicionada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:97
msgid ""
"Added metadata so that software distributors know that the app is compatible "
"with mobile"
msgstr ""
"Metadados foram adicionados para que distribuidores saibam que o app é "
"compatível com dispositivos móveis"
#: data/com.jeffser.Alpaca.metainfo.xml.in:98
msgid ""
"Changed 'send' shortcut to just the return/enter key (to add a new line use "
"shift+return)"
msgstr ""
"O atalho de 'enviar mensagem' foi modificado para 'Enter/Return'(para "
"adicionar uma nova linha use 'shift+enter/return)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:105
#, fuzzy
msgid "Bug Fixes"
msgstr "Conserto de Bugs"
#: data/com.jeffser.Alpaca.metainfo.xml.in:107
msgid "Fixed: Minor spelling mistake"
msgstr "Consertado: Pequenos erros de escrita"
#: data/com.jeffser.Alpaca.metainfo.xml.in:108
#, fuzzy
msgid "Added 'mobile' as a supported form factor"
msgstr "Suporte ao formato de dispositivos móveis foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:109
msgid "Fixed: 'Connection Error' dialog not working properly"
msgstr "Consertado: Diálogo de 'Erro de Conexão' não funcionando corretamente"
#: data/com.jeffser.Alpaca.metainfo.xml.in:110
msgid "Fixed: App might freeze randomly on startup"
msgstr "Consertado: O app travava de forma aleatória ao iniciar"
#: data/com.jeffser.Alpaca.metainfo.xml.in:111
msgid "Changed 'chats' label on sidebar for 'Alpaca'"
msgstr "O nome 'chats' na barra lateral foi alterado para 'Alpaca'"
#: data/com.jeffser.Alpaca.metainfo.xml.in:118
#, fuzzy
msgid "Cool Update"
msgstr "Atualização Legal"
#: data/com.jeffser.Alpaca.metainfo.xml.in:120
#, fuzzy
msgid "Better design for chat window"
msgstr "Design da janela da conversa foi melhorado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:121
#, fuzzy
msgid "Better design for chat sidebar"
msgstr "A interface da barra lateral das conversas foi melhorada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:122
#, fuzzy
msgid "Fixed remote connections"
msgstr "Conexões remotas foram consertadas"
#: data/com.jeffser.Alpaca.metainfo.xml.in:123
msgid "Fixed Ollama restarting in loop"
msgstr "Erro que fazia o Ollama reiniciar em loop foi consertado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:124
msgid "Other cool backend stuff"
msgstr "Outras coisas legais de backend"
#: data/com.jeffser.Alpaca.metainfo.xml.in:131
#, fuzzy
msgid "Huge Update"
msgstr "Atualização Enorme"
#: data/com.jeffser.Alpaca.metainfo.xml.in:133
msgid "Added Ollama as part of Alpaca, Ollama will run in a sandbox"
msgstr "Ollama foi adicionado como parte do Alpaca, executado em sandbox"
#: data/com.jeffser.Alpaca.metainfo.xml.in:134
msgid "Added option to connect to remote instances (how it worked before)"
msgstr ""
"A opção de conectar com uma instância remota (como funcionava antes) foi "
"adicionada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:135
msgid "Added option to import and export chats"
msgstr "A opção de importar e exportar conversas foi adicionada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:136
msgid "Added option to run Alpaca with Ollama in the background"
msgstr "A opção de continuar sendo executado em segundo plano foi adicionada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:137
#, fuzzy
msgid "Added preferences dialog"
msgstr "Diálogo de preferências foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:138
#, fuzzy
msgid "Changed the welcome dialog"
msgstr "O diálogo de boas-vindas foi modificado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:140
#: data/com.jeffser.Alpaca.metainfo.xml.in:157
#: data/com.jeffser.Alpaca.metainfo.xml.in:169
#: data/com.jeffser.Alpaca.metainfo.xml.in:188
#: data/com.jeffser.Alpaca.metainfo.xml.in:209
#: data/com.jeffser.Alpaca.metainfo.xml.in:225
#: data/com.jeffser.Alpaca.metainfo.xml.in:241
#: data/com.jeffser.Alpaca.metainfo.xml.in:255
#: data/com.jeffser.Alpaca.metainfo.xml.in:265
#: data/com.jeffser.Alpaca.metainfo.xml.in:283
#: data/com.jeffser.Alpaca.metainfo.xml.in:305
msgid "Please report any errors to the issues page, thank you."
msgstr "Por favor, reportar quaisquer erros na página de issues, obrigado."
#: data/com.jeffser.Alpaca.metainfo.xml.in:148
#, fuzzy
msgid "Yet Another Daily Update"
msgstr "Mais Uma Atualização Diária"
#: data/com.jeffser.Alpaca.metainfo.xml.in:150
#, fuzzy
msgid "Added better UI for 'Manage Models' dialog"
msgstr "Uma melhor interface para 'Gerenciar Modelos' foi adicionada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:151
msgid "Added better UI for the chat sidebar"
msgstr "Uma interface melhor para a barra lateral das conversas foi adicionada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:152
msgid ""
"Replaced model description with a button to open Ollama's website for the "
"model"
msgstr ""
"A descrição dos modelos foi substituída com um botão para abrir o site do "
"Ollama para cada modelo"
#: data/com.jeffser.Alpaca.metainfo.xml.in:153
msgid "Added myself to the credits as the spanish translator"
msgstr "Me adicionei aos créditos como o tradutor para espanhol"
#: data/com.jeffser.Alpaca.metainfo.xml.in:154
msgid "Using XDG properly to get config folder"
msgstr "Agora a spec XDG é usada propriamente para ter uma pasta de config"
#: data/com.jeffser.Alpaca.metainfo.xml.in:155
#, fuzzy
msgid "Update for translations"
msgstr "Melhor suporte a traduções"
#: data/com.jeffser.Alpaca.metainfo.xml.in:165
#, fuzzy
msgid "Quick Fix"
msgstr "Consertos Rápidos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:167
msgid "The last update had some mistakes in the description of the update"
msgstr "A última atualização teve alguns erros na descrição da mesma"
#: data/com.jeffser.Alpaca.metainfo.xml.in:177
msgid "Another Daily Update"
msgstr "Outra Atualização Diária"
#: data/com.jeffser.Alpaca.metainfo.xml.in:179
msgid "Added full Spanish translation"
msgstr "Tradução completa para o Espanhol foi adicionada"
#: data/com.jeffser.Alpaca.metainfo.xml.in:180
#, fuzzy
msgid "Added support for background pulling of multiple models"
msgstr ""
"Suporte para o download de múltiplos modelos em segundo planofoi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:181
msgid "Added interrupt button"
msgstr "Um botão de interromper foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:182
#, fuzzy
msgid "Added basic shortcuts"
msgstr "Atalhos de teclado básicos foram adicionados"
#: data/com.jeffser.Alpaca.metainfo.xml.in:183
msgid "Better translation support"
msgstr "Melhor suporte a traduções"
#: data/com.jeffser.Alpaca.metainfo.xml.in:184
msgid ""
"User can now leave chat name empty when creating a new one, it will add a "
"placeholder name"
msgstr ""
"O usuário agora pode deixar o nome da conversa vazio ao criar uma nova, um "
"nome substituto será gerado em seu lugar"
#: data/com.jeffser.Alpaca.metainfo.xml.in:185
msgid "Better scalling for different window sizes"
msgstr "Melhor escala para diferentes tamanhos de janela"
#: data/com.jeffser.Alpaca.metainfo.xml.in:186
#, fuzzy
msgid "Fixed: Can't close app if first time setup fails"
msgstr ""
"Consertado: Não era possível fechar o app caso a configuração inicial "
"falhasse"
#: data/com.jeffser.Alpaca.metainfo.xml.in:196
msgid "Really Big Update"
msgstr "Uma Atualização Realmente Grande"
#: data/com.jeffser.Alpaca.metainfo.xml.in:198
msgid "Added multiple chats support!"
msgstr "Suporte para múltiplas conversas foi adicionado!"
#: data/com.jeffser.Alpaca.metainfo.xml.in:199
msgid "Added Pango Markup support (bold, list, title, subtitle, monospace)"
msgstr ""
"Suporte para Pango Markup (negrito, lista, título, subtítulo, monospace) foi "
"adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:200
msgid "Added autoscroll if the user is at the bottom of the chat"
msgstr ""
"Rolagem automática caso o usuário esteja na mensagem mais recente da "
"conversa foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:201
msgid "Added support for multiple tags on a single model"
msgstr "Suporte para múltiplas tags em um único modelo foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:202
msgid "Added better model management dialog"
msgstr "Um melhor diálogo de gerenciamento de modelos foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:203
msgid "Added loading spinner when sending message"
msgstr "Um spinner de carregamento ao mandar mensagens foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:204
msgid "Added notifications if app is not active and a model pull finishes"
msgstr ""
"Notificações caso o app não esteja ativo e o download de um modelo for "
"finalizado foram adicionadas"
#: data/com.jeffser.Alpaca.metainfo.xml.in:205
msgid "Added new symbolic icon"
msgstr "Um novo ícone simbólico foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:206
msgid "Added frame to message textview widget"
msgstr "Quadro ao redor do textview do widget de mensagem foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:207
msgid "Fixed \"code blocks shouldn't be editable\""
msgstr "Consertado \"blocos de código não deveriam ser editáveis\""
#: data/com.jeffser.Alpaca.metainfo.xml.in:217
#: data/com.jeffser.Alpaca.metainfo.xml.in:274
msgid "Big Update"
msgstr "Grande Atualização"
#: data/com.jeffser.Alpaca.metainfo.xml.in:219
msgid "Added code highlighting"
msgstr "Highlighting de código foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:220
msgid "Added image recognition (llava model)"
msgstr "Reconhecimento de imagem foi adicionado (modelo llava)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:221
msgid "Added multiline prompt"
msgstr "Prompt de múltiplas linhas foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:222
msgid "Fixed some small bugs"
msgstr "Pequenos erros foram consertados"
#: data/com.jeffser.Alpaca.metainfo.xml.in:223
msgid "General optimization"
msgstr "Otimização geral"
#: data/com.jeffser.Alpaca.metainfo.xml.in:233
msgid "Fixes and features"
msgstr "Consertos e funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:235
msgid "Russian translation (thanks github/alexkdeveloper)"
msgstr "Tradução para Russo (obrigado, github/alexkdeveloper)"
#: data/com.jeffser.Alpaca.metainfo.xml.in:236
msgid "Fixed: Cannot close app on first setup"
msgstr "Consertado: Não era possível fechar o app no setup inicial"
#: data/com.jeffser.Alpaca.metainfo.xml.in:237
msgid "Fixed: Brand colors for Flathub"
msgstr "Consertado: Cores de branding para o Flathub"
#: data/com.jeffser.Alpaca.metainfo.xml.in:238
msgid "Fixed: App description"
msgstr "Consertada: Descrição do app"
#: data/com.jeffser.Alpaca.metainfo.xml.in:239
msgid "Fixed: Only show 'save changes dialog' when you actually change the url"
msgstr ""
"Consertado: Somente exibir 'diálogo de salvamento de mudanças' quando "
"vocêrealmente mudar o URL"
#: data/com.jeffser.Alpaca.metainfo.xml.in:249
msgid "0.2.2 Bug fixes"
msgstr "0.2.2 Conserto de Bugs"
#: data/com.jeffser.Alpaca.metainfo.xml.in:251
msgid "Toast messages appearing behind dialogs"
msgstr "Mensagens toast aparecendo atrás de diálogos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:252
msgid "Local model list not updating when changing servers"
msgstr "Lista de modelos locais não é atualizada ao mudar de servidor"
#: data/com.jeffser.Alpaca.metainfo.xml.in:253
msgid "Closing the setup dialog closes the whole app"
msgstr "Fechar o diálogo de primeira configuração fecha o app"
#: data/com.jeffser.Alpaca.metainfo.xml.in:263
msgid "0.2.1 Data saving fix"
msgstr "0.2.1 Conserto de Salvamento de Dados"
#: data/com.jeffser.Alpaca.metainfo.xml.in:264
msgid ""
"The app didn't save the config files and chat history to the right "
"directory, this is now fixed"
msgstr ""
"O app não salvava os arquivos de config. e o histórico de conversa para a "
"pasta correta, isso foi corrigido."
#: data/com.jeffser.Alpaca.metainfo.xml.in:273
msgid "0.2.0"
msgstr "0.2.0"
#: data/com.jeffser.Alpaca.metainfo.xml.in:275
msgid "New Features"
msgstr "Novas Funcionalidades"
#: data/com.jeffser.Alpaca.metainfo.xml.in:277
msgid "Restore chat after closing the app"
msgstr "Restaura a conversa após fechar o app"
#: data/com.jeffser.Alpaca.metainfo.xml.in:278
msgid "A button to clear the chat"
msgstr "Um botão para limpar a conversa"
#: data/com.jeffser.Alpaca.metainfo.xml.in:279
msgid "Fixed multiple bugs involving how messages are shown"
msgstr ""
"Múltiplos bugs envolvendo como mensagens são exibidas foram consertados"
#: data/com.jeffser.Alpaca.metainfo.xml.in:280
msgid "Added welcome dialog"
msgstr "Um diálogo de boas-vindas foi adicionado"
#: data/com.jeffser.Alpaca.metainfo.xml.in:281
msgid "More stability"
msgstr "Maior estabilidade"
#: data/com.jeffser.Alpaca.metainfo.xml.in:291
msgid "0.1.2 Quick fixes"
msgstr "0.1.2 Consertos Rápidos"
#: data/com.jeffser.Alpaca.metainfo.xml.in:292
msgid ""
"This release fixes some metadata needed to have a proper Flatpak application"
msgstr ""
"Este lançamento conserta parte dos metadados necessários para ter um app em "
"Flatpak corretamente"
#: data/com.jeffser.Alpaca.metainfo.xml.in:298
msgid "0.1.1 Stable Release"
msgstr "0.1.1 Lançamento Estável"
#: data/com.jeffser.Alpaca.metainfo.xml.in:299
msgid "This is the first public version of Alpaca"
msgstr "Essa é a primeira versão pública de Alpaca"
#: src/window.py:54 src/window.py:624 src/window.py:626
msgid "New Chat"
msgstr "Nova Conversa"
#: src/window.py:97
msgid "An error occurred"
msgstr "Ocorreu um erro"
#: src/window.py:98
msgid "Failed to connect to server"
msgstr "Falha ao conectar com o servidor"
#: src/window.py:99
msgid "Could not list local models"
msgstr "Não foi possível listar modelos locais"
#: src/window.py:100
msgid "Could not delete model"
msgstr "Não foi possível excluir o modelo"
#: src/window.py:101
msgid "Could not pull model"
msgstr "Não foi possível baixar o modelo"
#: src/window.py:102
msgid "Cannot open image"
msgstr "Não foi possível abrir a imagem"
#: src/window.py:103
msgid "Cannot delete chat because it's the only one left"
msgstr "Não foi possível excluir a conversa por ser a única restante"
#: src/window.py:104
msgid "There was an error with the local Ollama instance, so it has been reset"
msgstr "Houve um erro com a instância local Ollama, a mesma foi desconfigurada"
#: src/window.py:107
msgid "Please select a model before chatting"
msgstr "Por favor, selecione um modelo antes de conversar"
#: src/window.py:108
msgid "Chat cannot be cleared while receiving a message"
msgstr "A conversa não pode ser limpa enquanto gera uma mensagem"
#: src/window.py:109
#, fuzzy
msgid "That tag is already being pulled"
msgstr "Esta tag já está sendo baixada"
#: src/window.py:110
#, fuzzy
msgid "That tag has been pulled already"
msgstr "Esta tag já foi baixada"
#: src/window.py:111
msgid "Code copied to the clipboard"
msgstr ""
#: src/window.py:114
msgid "Model deleted successfully"
msgstr "Modelo excluído com sucesso"
#: src/window.py:115
msgid "Model pulled successfully"
msgstr "Modelo baixado com sucesso"
#: src/window.py:116
#, fuzzy
msgid "Chat exported successfully"
msgstr "Conversa exportada com sucesso"
#: src/window.py:117
#, fuzzy
msgid "Chat imported successfully"
msgstr "Conversa importada com sucesso"
#: src/window.py:129
msgid "Upload image"
msgstr ""
#: src/window.py:133 src/window.ui:231
msgid "Only available on selected models"
msgstr ""
#: src/window.py:542
msgid "Task Complete"
msgstr "Tarefa Concluída"
#: src/window.py:542
msgid "Model '{}' pulled successfully."
msgstr "O modelo '{}' foi baixado com sucesso"
#: src/window.py:547
msgid "Pull Model Error"
msgstr "Erro ao Baixar Modelo"
#: src/window.py:547
msgid "Failed to pull model '{}' due to network error."
msgstr "Não foi possível baixar o modelo '{}' devido a um erro de rede."
#: src/window.ui:38
msgid "New chat"
msgstr "Nova conversa"
#: src/window.ui:47
msgid "Import chat"
msgstr "Importar conversa"
#: src/window.ui:56
msgid "Export chat"
msgstr "Exportar conversa"
#: src/window.ui:89
msgid "Toggle Sidebar"
msgstr "Alternar barra lateral"
#: src/window.ui:112 src/window.ui:308
msgid "Manage models"
msgstr "Gerenciar modelos"
#: src/window.ui:126
msgid "Menu"
msgstr "Menu"
#: src/window.ui:221
msgid "Send"
msgstr "Enviar"
#: src/window.ui:234
msgid "Image"
msgstr "Imagem"
#: src/window.ui:258 src/window.ui:458 src/window.ui:516
msgid "Preferences"
msgstr "Preferências"
#: src/window.ui:261 src/window.ui:500
msgid "General"
msgstr "Geral"
#: src/window.ui:265
msgid "Remote Connection"
msgstr "Conexão Remota"
#: src/window.ui:266
msgid "Manage a remote connection to Ollama"
msgstr "Gerencia uma conexão remota com Ollama"
#: src/window.ui:269
msgid "Use remote connection"
msgstr "Usar conexão remota"
#: src/window.ui:275
msgid "URL of remote instance"
msgstr "URL da instância remota"
#: src/window.ui:283
msgid "Behavior"
msgstr "Comportamento"
#: src/window.ui:284
msgid "Manage Alpaca's Behavior"
msgstr "Gerencia o Comportamento de Alpaca"
#: src/window.ui:287
msgid "Run in background"
msgstr "Executar em segundo plano"
#: src/window.ui:377
msgid "Previous"
msgstr "Anterior"
#: src/window.ui:393
msgid "Next"
msgstr "Próximo"
#: src/window.ui:420
msgid "Welcome to Alpaca"
msgstr "Bem-vindo(a) a Alpaca"
#: src/window.ui:421
msgid "Powered by Ollama"
msgstr "Com tecnologia Ollama"
#: src/window.ui:424
msgid "Ollama Website"
msgstr "Site do Ollama"
#: src/window.ui:441
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 e seus desenvolvedores não são responsáveis por quaisquer danos "
"causados a dispositivos ou software resultante da execução de código gerado "
"por um modelo de IA. Por favor, tenha cuidado e revise o código com cuidado "
"antes de executá-lo."
#: src/window.ui:454
msgid "Clear Chat"
msgstr "Limpar Conversa"
#: src/window.ui:462
msgid "Keyboard Shortcuts"
msgstr "Atalhos de Teclado"
#: src/window.ui:466
msgid "About Alpaca"
msgstr "Sobre Alpaca"
#: src/window.ui:474
msgid "Remove"
msgstr "Remover"
#: src/window.ui:504
msgid "Close application"
msgstr "Fechar aplicativo"
#: src/window.ui:510
msgid "Clear chat"
msgstr "Limpar chat"
#: src/window.ui:522
msgid "Show shortcuts window"
msgstr "Mostrar janela de atalhos"
#: src/window.ui:529
msgid "Editor"
msgstr "Editor"
#: src/window.ui:533
msgid "Copy"
msgstr "Copiar"
#: src/window.ui:539
msgid "Paste"
msgstr "Colar"
#: src/window.ui:545
msgid "Insert new line"
msgstr ""
#: src/window.ui:551
msgid "Send Message"
msgstr "Enviar Mensagem"
#~ msgid "Stop Model"
#~ msgstr "Parar Modelo"
#~ msgid "Are you sure you want to stop pulling '{}'?"
#~ msgstr "Tem certeza que deseja parar o download de '{}'?"
#~ msgid "Cancel"
#~ msgstr "Cancelar"
#~ msgid "Stop"
#~ msgstr "Parar"
#~ msgid "Delete Model"
#~ msgstr "Excluir Modelo"
#~ msgid "Are you sure you want to delete '{}'?"
#~ msgstr "Tem certeza que deseja excluir '{}'?"
#~ msgid "Delete"
#~ msgstr "Excluir"
#~ msgid "Pull Model"
#~ msgstr "Baixar Modelo"
#~ msgid "Please select a tag to pull '{}'"
#~ msgstr "Por favor, selecione uma tag para baixar '{}'"
#~ msgid "Pull"
#~ msgstr "Baixar"
#~ msgid "Are you sure you want to clear the chat?"
#~ msgstr "Tem certeza de que deseja limpar a conversa?"
#~ msgid "Clear"
#~ msgstr "Limpar"
#~ msgid "Remove Image"
#~ msgstr "Remover Imagem"
#~ msgid "Are you sure you want to remove image?"
#~ msgstr "Tem certeza que quer remover a imagem?"
#~ msgid "Delete Chat"
#~ msgstr "Excluir Conversa"
#~ msgid "Rename Chat"
#~ msgstr "Renomear Conversa"
#~ msgid "Rename"
#~ msgstr "Renomear"
#~ msgid "The name '{}' is already in use"
#~ msgstr "O nome '{}' já está em uso"
#~ msgid "Create Chat"
#~ msgstr "Criar Conversa"
#~ msgid "Create"
#~ msgstr "Criar"
#, fuzzy
#~ msgid "Connection Error"
#~ msgstr "Conexão Remota"
#, fuzzy
#~ msgid "Close Alpaca"
#~ msgstr "Bem-vindo(a) a Alpaca"
#, fuzzy
#~ msgid "Use local instance"
#~ msgstr "URL da instância remota"
#~ msgid "Welcome dialog"
#~ msgstr "Diálogo de Boas-vindas"
#~ msgid "Chats"
#~ msgstr "Conversas"
#~ msgid "Requires model 'llava' to be selected"
#~ msgstr "Requer que um modelo 'llava' esteja selecionado"
#~ msgid "Save Changes"
#~ msgstr "Salvar Mudanças"
#~ msgid "Do you want to save the URL change?"
#~ msgstr "Deseja salvar as mudanças na URL?"
#~ msgid "Discard"
#~ msgstr "Descartar"
#~ msgid "Save"
#~ msgstr "Salvar"
#~ 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 ""
#~ "Para iniciar, por favor assegure-se que você tem uma insância Ollama "
#~ "configurada e funcional. Você pode rodar Ollama localmente em sua máquina "
#~ "ou através de uma instância remota."
#~ msgid "Setup"
#~ msgstr "Setup"
#~ 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 ""
#~ "Caso esteja rodando uma instância Ollama localmente e não modificou as "
#~ "portas padrão, você pode usar a URL padrão. Caso contrário, por favor, "
#~ "insira a URL da sua instância Ollama."
#~ msgid "Change Server"
#~ msgstr "Mudar Servidor"
#~ msgid "Change server"
#~ msgstr "Mudar servidor"

2419
po/ru.po

File diff suppressed because it is too large Load Diff

394
po/ru.po~
View File

@@ -1,394 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-05-22 19:17+0800\n"
"PO-Revision-Date: 2024-05-22 19:33+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.4\n"
"X-Poedit-Basepath: ../src\n"
"X-Poedit-SearchPath-0: .\n"
#: gtk/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Общие"
#: gtk/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Show Shortcuts"
msgstr "Показывать комбинации клавиш"
#: gtk/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Quit"
msgstr "Выйти"
#: window.py:54 window.py:761
msgid "New Chat"
msgstr "Новый Чат"
#: window.py:100
msgid "An error occurred"
msgstr "Произошла ошибка"
#: window.py:101
msgid "Failed to connect to server"
msgstr "Не удалось подключиться к серверу"
#: window.py:102
msgid "Could not list local models"
msgstr "Не удалось перечислить локальные модели"
#: window.py:103
msgid "Could not delete model"
msgstr "Не удалось удалить модель"
#: window.py:104
msgid "Could not pull model"
msgstr "Не удалось извлечь модель"
#: window.py:105
msgid "Cannot open image"
msgstr "Не удается открыть изображение"
#: window.py:106
msgid "Cannot delete chat because it's the only one left"
msgstr "Не удается удалить чат, потому что он единственный оставшийся"
#: window.py:107
msgid "There was an error with the local Ollama instance, so it has been reset"
msgstr ""
"Произошла ошибка с локальным экземпляром Ollama, поэтому он был сброшен"
#: window.py:110
msgid "Please select a model before chatting"
msgstr "Пожалуйста, выберите модель перед началом общения"
#: window.py:111
msgid "Chat cannot be cleared while receiving a message"
msgstr "Чат не может быть удален при получении сообщения"
#: window.py:112
msgid "That tag is already being pulled"
msgstr "Этот тег уже удален"
#: window.py:113
msgid "That tag has been pulled alreay"
msgstr "Этот тег уже был удален"
#: window.py:116
msgid "Model deleted successfully"
msgstr "Модель успешно удалена"
#: window.py:117
msgid "Model pulled successfully"
msgstr "Модель успешно извлечена"
#: window.py:118
msgid "Chat exported successfully"
msgstr "Чат успешно экспортирован"
#: window.py:119
msgid "Chat imported successfully"
msgstr "Чат успешно импортирован"
#: window.py:451
msgid "Task Complete"
msgstr "Задача выполнена"
#: window.py:451
msgid "Model '{}' pulled successfully."
msgstr "Модель '{}' успешно извлечена."
#: window.py:456
msgid "Pull Model Error"
msgstr "Ошибка Извлечения Модели"
#: window.py:456
msgid "Failed to pull model '{}' due to network error."
msgstr "Не удалось извлечь модель '{}' из-за сетевой ошибки."
#: window.py:472
msgid "Stop Model"
msgstr "Остановить Модель"
#: window.py:473
msgid "Are you sure you want to stop pulling '{}'?"
msgstr "Вы уверены, что хотите прекратить извлечение '{}'?"
#: window.py:476 window.py:519 window.py:542 window.py:615 window.py:688
#: window.py:715 window.py:748 window.py:788
msgid "Cancel"
msgstr "Отмена"
#: window.py:477
msgid "Stop"
msgstr "Стоп"
#: window.py:515
msgid "Delete Model"
msgstr "Удалить Модель"
#: window.py:516 window.py:712
msgid "Are you sure you want to delete '{}'?"
msgstr "Вы уверены, что хотите удалить '{}'?"
#: window.py:520 window.py:716
msgid "Delete"
msgstr "Удалить"
#: window.py:537
msgid "Pull Model"
msgstr "Извлечение модели"
#: window.py:538
msgid "Please select a tag to pull '{}'"
msgstr "Пожалуйста, выберите тег для извлечения '{}'"
#: window.py:543
msgid "Pull"
msgstr "Извлечение"
#: window.py:611 window.ui:462
msgid "Clear Chat"
msgstr "Очистить Чат"
#: window.py:612
msgid "Are you sure you want to clear the chat?"
msgstr "Вы уверены, что хотите очистить чат?"
#: window.py:616
msgid "Clear"
msgstr "Очистить"
#: window.py:684
msgid "Remove Image"
msgstr "Удалить Изображение"
#: window.py:685
msgid "Are you sure you want to remove image?"
msgstr "Вы уверены, что хотите удалить изображение?"
#: window.py:689
msgid "Remove"
msgstr "Удалить"
#: window.py:711
msgid "Delete Chat"
msgstr "Удалить Чат"
#: window.py:742
msgid "Rename Chat"
msgstr "Переименовать Чат"
#: window.py:749
msgid "Rename"
msgstr "Переименовать"
#: window.py:769
msgid "The name '{}' is already in use"
msgstr "Имя '{}' уже используется"
#: window.py:782
msgid "Create Chat"
msgstr "Создать Чат"
#: window.py:789
msgid "Create"
msgstr "Создать"
#: window.ui:46
msgid "Chats"
msgstr "Чаты"
#: window.ui:56
msgid "Import chat"
msgstr "Импорт чата"
#: window.ui:69
msgid "Export chat"
msgstr "Экспорт чата"
#: window.ui:82
msgid "New chat"
msgstr "Новый чат"
#: window.ui:118
msgid "Toggle Sidebar"
msgstr "Переключение боковой панели"
#: window.ui:139 window.ui:315
msgid "Manage models"
msgstr "Управление моделями"
#: window.ui:153
msgid "Menu"
msgstr "Меню"
#: window.ui:231
msgid "Send"
msgstr "Отправить"
#: window.ui:240
msgid "Requires model 'llava' to be selected"
msgstr "Требуется выбрать модель \"llava\""
#: window.ui:243
msgid "Image"
msgstr "Изображение"
#: window.ui:266 window.ui:466 window.ui:517
msgid "Preferences"
msgstr "Настройки"
#: window.ui:269 window.ui:501
msgid "General"
msgstr "Общие"
#: window.ui:273
msgid "Remote Connection"
msgstr "Удаленное подключение"
#: window.ui:274
msgid "Manage a remote connection to Ollama"
msgstr "Управление удаленным подключением к Ollama"
#: window.ui:277
msgid "Use remote connection"
msgstr "Использовать удаленное подключение"
#: window.ui:282
msgid "URL of remote instance"
msgstr "URL-адрес удаленного экземпляра"
#: window.ui:290
msgid "Behavior"
msgstr "Поведение"
#: window.ui:291
msgid "Manage Alpaca's Behavior"
msgstr "Управление поведением Alpaca"
#: window.ui:294
msgid "Run in background"
msgstr "Запуск в фоновом режиме"
#: window.ui:385
msgid "Previous"
msgstr "Предыдущий"
#: window.ui:400
msgid "Next"
msgstr "Следующий"
#: window.ui:426
msgid "Welcome to Alpaca"
msgstr "Добро пожаловать в Alpaca"
#: window.ui:427
msgid "Powered by Ollama"
msgstr "При поддержке Ollama"
#: window.ui:430
msgid "Ollama Website"
msgstr "Веб-сайт Ollama"
#: window.ui:446
msgid "Disclaimer"
msgstr "Отказ от ответственности"
#: window.ui:447
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:470
msgid "Keyboard Shortcuts"
msgstr "Комбинации Клавиш"
#: window.ui:474
msgid "About Alpaca"
msgstr "О Программе"
#: window.ui:505
msgid "Close application"
msgstr "Закрыть приложение"
#: window.ui:511
msgid "Clear chat"
msgstr "Очистить чат"
#: window.ui:523
msgid "Show shortcuts window"
msgstr "Показать окно комбинаций клавиш"
#: window.ui:530
msgid "Editor"
msgstr "Редактор"
#: window.ui:534
msgid "Copy"
msgstr "Копировать"
#: window.ui:540
msgid "Paste"
msgstr "Вставить"
#: window.ui:546
msgid "Send Message"
msgstr "Отправить Сообщение"
#, fuzzy
#~ msgid "Added basic shortcuts"
#~ msgstr "Показывать ярлыки"
#~ 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 "Изменить Сервер"

2169
po/zh_CN.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,32 @@
<gresources>
<gresource prefix="/com/jeffser/Alpaca">
<file>style.css</file>
<file>style-dark.css</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-symbolic.svg">icons/open-menu-symbolic.svg</file>
<file alias="icons/scalable/status/settings-symbolic.svg">icons/settings-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 alias="icons/scalable/status/play-symbolic.svg">icons/play-symbolic.svg</file>
<file alias="icons/scalable/status/step-back-symbolic.svg">icons/step-back-symbolic.svg</file>
<file alias="icons/scalable/status/step-over-symbolic.svg">icons/step-over-symbolic.svg</file>
<file alias="icons/scalable/status/share-symbolic.svg">icons/share-symbolic.svg</file>
<file alias="icons/scalable/status/edit-find-symbolic.svg">icons/edit-find-symbolic.svg</file>
<file alias="icons/scalable/status/edit-symbolic.svg">icons/edit-symbolic.svg</file>
<file alias="icons/scalable/status/image-missing-symbolic.svg">icons/image-missing-symbolic.svg</file>
<file preprocess="xml-stripblanks">window.ui</file>
<file preprocess="xml-stripblanks">gtk/help-overlay.ui</file>
</gresource>

20266
src/available_models.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,105 @@
descriptions = {
'llama3.1': _("Llama 3.1 is a new state-of-the-art model from Meta available in 8B, 70B and 405B parameter sizes."),
'gemma2': _("Google Gemma 2 is now available in 2 sizes, 9B and 27B."),
'mistral-nemo': _("A state-of-the-art 12B model with 128k context length, built by Mistral AI in collaboration with NVIDIA."),
'mistral-large': _("Mistral Large 2 is Mistral's new flagship model that is significantly more capable in code generation, mathematics, and reasoning with 128k context window and support for dozens of languages."),
'qwen2': _("Qwen2 is a new series of large language models from Alibaba group"),
'deepseek-coder-v2': _("An open-source Mixture-of-Experts code language model that achieves performance comparable to GPT4-Turbo in code-specific tasks."),
'phi3': _("Phi-3 is a family of lightweight 3B (Mini) and 14B (Medium) state-of-the-art open models by Microsoft."),
'mistral': _("The 7B model released by Mistral AI, updated to version 0.3."),
'mixtral': _("A set of Mixture of Experts (MoE) model with open weights by Mistral AI in 8x7b and 8x22b parameter sizes."),
'codegemma': _("CodeGemma is a collection of powerful, lightweight models that can perform a variety of coding tasks like fill-in-the-middle code completion, code generation, natural language understanding, mathematical reasoning, and instruction following."),
'command-r': _("Command R is a Large Language Model optimized for conversational interaction and long context tasks."),
'command-r-plus': _("Command R+ is a powerful, scalable large language model purpose-built to excel at real-world enterprise use cases."),
'llava': _("🌋 LLaVA is a novel end-to-end trained large multimodal model that combines a vision encoder and Vicuna for general-purpose visual and language understanding. Updated to version 1.6."),
'llama3': _("Meta Llama 3: The most capable openly available LLM to date"),
'gemma': _("Gemma is a family of lightweight, state-of-the-art open models built by Google DeepMind. Updated to version 1.1"),
'qwen': _("Qwen 1.5 is a series of large language models by Alibaba Cloud spanning from 0.5B to 110B parameters"),
'llama2': _("Llama 2 is a collection of foundation language models ranging from 7B to 70B parameters."),
'codellama': _("A large language model that can use text prompts to generate and discuss code."),
'dolphin-mixtral': _("Uncensored, 8x7b and 8x22b fine-tuned models based on the Mixtral mixture of experts models that excels at coding tasks. Created by Eric Hartford."),
'nomic-embed-text': _("A high-performing open embedding model with a large token context window."),
'llama2-uncensored': _("Uncensored Llama 2 model by George Sung and Jarrad Hope."),
'phi': _("Phi-2: a 2.7B language model by Microsoft Research that demonstrates outstanding reasoning and language understanding capabilities."),
'deepseek-coder': _("DeepSeek Coder is a capable coding model trained on two trillion code and natural language tokens."),
'dolphin-mistral': _("The uncensored Dolphin model based on Mistral that excels at coding tasks. Updated to version 2.8."),
'orca-mini': _("A general-purpose model ranging from 3 billion parameters to 70 billion, suitable for entry-level hardware."),
'dolphin-llama3': _("Dolphin 2.9 is a new model with 8B and 70B sizes by Eric Hartford based on Llama 3 that has a variety of instruction, conversational, and coding skills."),
'mxbai-embed-large': _("State-of-the-art large embedding model from mixedbread.ai"),
'starcoder2': _("StarCoder2 is the next generation of transparently trained open code LLMs that comes in three sizes: 3B, 7B and 15B parameters."),
'mistral-openorca': _("Mistral OpenOrca is a 7 billion parameter model, fine-tuned on top of the Mistral 7B model using the OpenOrca dataset."),
'yi': _("Yi 1.5 is a high-performing, bilingual language model."),
'zephyr': _("Zephyr is a series of fine-tuned versions of the Mistral and Mixtral models that are trained to act as helpful assistants."),
'llama2-chinese': _("Llama 2 based model fine tuned to improve Chinese dialogue ability."),
'llava-llama3': _("A LLaVA model fine-tuned from Llama 3 Instruct with better scores in several benchmarks."),
'vicuna': _("General use chat model based on Llama and Llama 2 with 2K to 16K context sizes."),
'nous-hermes2': _("The powerful family of models by Nous Research that excels at scientific discussion and coding tasks."),
'tinyllama': _("The TinyLlama project is an open endeavor to train a compact 1.1B Llama model on 3 trillion tokens."),
'wizard-vicuna-uncensored': _("Wizard Vicuna Uncensored is a 7B, 13B, and 30B parameter model based on Llama 2 uncensored by Eric Hartford."),
'codestral': _("Codestral is Mistral AIs first-ever code model designed for code generation tasks."),
'starcoder': _("StarCoder is a code generation model trained on 80+ programming languages."),
'wizardlm2': _("State of the art large language model from Microsoft AI with improved performance on complex chat, multilingual, reasoning and agent use cases."),
'openchat': _("A family of open-source models trained on a wide variety of data, surpassing ChatGPT on various benchmarks. Updated to version 3.5-0106."),
'aya': _("Aya 23, released by Cohere, is a new family of state-of-the-art, multilingual models that support 23 languages."),
'tinydolphin': _("An experimental 1.1B parameter model trained on the new Dolphin 2.8 dataset by Eric Hartford and based on TinyLlama."),
'openhermes': _("OpenHermes 2.5 is a 7B model fine-tuned by Teknium on Mistral with fully open datasets."),
'wizardcoder': _("State-of-the-art code generation model"),
'stable-code': _("Stable Code 3B is a coding model with instruct and code completion variants on par with models such as Code Llama 7B that are 2.5x larger."),
'codeqwen': _("CodeQwen1.5 is a large language model pretrained on a large amount of code data."),
'wizard-math': _("Model focused on math and logic problems"),
'neural-chat': _("A fine-tuned model based on Mistral with good coverage of domain and language."),
'stablelm2': _("Stable LM 2 is a state-of-the-art 1.6B and 12B parameter language model trained on multilingual data in English, Spanish, German, Italian, French, Portuguese, and Dutch."),
'granite-code': _("A family of open foundation models by IBM for Code Intelligence"),
'all-minilm': _("Embedding models on very large sentence level datasets."),
'phind-codellama': _("Code generation model based on Code Llama."),
'dolphincoder': _("A 7B and 15B uncensored variant of the Dolphin model family that excels at coding, based on StarCoder2."),
'nous-hermes': _("General use models based on Llama and Llama 2 from Nous Research."),
'sqlcoder': _("SQLCoder is a code completion model fined-tuned on StarCoder for SQL generation tasks"),
'llama3-gradient': _("This model extends LLama-3 8B's context length from 8k to over 1m tokens."),
'starling-lm': _("Starling is a large language model trained by reinforcement learning from AI feedback focused on improving chatbot helpfulness."),
'yarn-llama2': _("An extension of Llama 2 that supports a context of up to 128k tokens."),
'xwinlm': _("Conversational model based on Llama 2 that performs competitively on various benchmarks."),
'deepseek-llm': _("An advanced language model crafted with 2 trillion bilingual tokens."),
'llama3-chatqa': _("A model from NVIDIA based on Llama 3 that excels at conversational question answering (QA) and retrieval-augmented generation (RAG)."),
'orca2': _("Orca 2 is built by Microsoft research, and are a fine-tuned version of Meta's Llama 2 models. The model is designed to excel particularly in reasoning."),
'wizardlm': _("General use model based on Llama 2."),
'solar': _("A compact, yet powerful 10.7B large language model designed for single-turn conversation."),
'samantha-mistral': _("A companion assistant trained in philosophy, psychology, and personal relationships. Based on Mistral."),
'dolphin-phi': _("2.7B uncensored Dolphin model by Eric Hartford, based on the Phi language model by Microsoft Research."),
'stable-beluga': _("Llama 2 based model fine tuned on an Orca-style dataset. Originally called Free Willy."),
'moondream': _("moondream2 is a small vision language model designed to run efficiently on edge devices."),
'bakllava': _("BakLLaVA is a multimodal model consisting of the Mistral 7B base model augmented with the LLaVA architecture."),
'wizardlm-uncensored': _("Uncensored version of Wizard LM model"),
'snowflake-arctic-embed': _("A suite of text embedding models by Snowflake, optimized for performance."),
'deepseek-v2': _("A strong, economical, and efficient Mixture-of-Experts language model."),
'medllama2': _("Fine-tuned Llama 2 model to answer medical questions based on an open source medical dataset."),
'yarn-mistral': _("An extension of Mistral to support context windows of 64K or 128K."),
'llama-pro': _("An expansion of Llama 2 that specializes in integrating both general language understanding and domain-specific knowledge, particularly in programming and mathematics."),
'nous-hermes2-mixtral': _("The Nous Hermes 2 model from Nous Research, now trained over Mixtral."),
'meditron': _("Open-source medical large language model adapted from Llama 2 to the medical domain."),
'codeup': _("Great code generation model based on Llama2."),
'nexusraven': _("Nexus Raven is a 13B instruction tuned model for function calling tasks."),
'everythinglm': _("Uncensored Llama2 based model with support for a 16K context window."),
'llava-phi3': _("A new small LLaVA model fine-tuned from Phi 3 Mini."),
'codegeex4': _("A versatile model for AI software development scenarios, including code completion."),
'glm4': _("A strong multi-lingual general language model with competitive performance to Llama 3."),
'magicoder': _("🎩 Magicoder is a family of 7B parameter models trained on 75K synthetic instruction data using OSS-Instruct, a novel approach to enlightening LLMs with open-source code snippets."),
'stablelm-zephyr': _("A lightweight chat model allowing accurate, and responsive output without requiring high-end hardware."),
'codebooga': _("A high-performing code instruct model created by merging two existing code models."),
'mistrallite': _("MistralLite is a fine-tuned model based on Mistral with enhanced capabilities of processing long contexts."),
'wizard-vicuna': _("Wizard Vicuna is a 13B parameter model based on Llama 2 trained by MelodysDreamj."),
'duckdb-nsql': _("7B parameter text-to-SQL model made by MotherDuck and Numbers Station."),
'megadolphin': _("MegaDolphin-2.2-120b is a transformation of Dolphin-2.2-70b created by interleaving the model with itself."),
'goliath': _("A language model created by combining two fine-tuned Llama 2 70B models into one."),
'notux': _("A top-performing mixture of experts model, fine-tuned with high-quality data."),
'open-orca-platypus2': _("Merge of the Open Orca OpenChat model and the Garage-bAInd Platypus 2 model. Designed for chat and code generation."),
'falcon2': _("Falcon2 is an 11B parameters causal decoder-only model built by TII and trained over 5T tokens."),
'notus': _("A 7B chat model fine-tuned with high-quality data and based on Zephyr."),
'dbrx': _("DBRX is an open, general-purpose LLM created by Databricks."),
'internlm2': _("InternLM2.5 is a 7B parameter model tailored for practical scenarios with outstanding reasoning capability."),
'alfred': _("A robust conversational model designed to be used for both chat and instruct use cases."),
'llama3-groq-tool-use': _("A series of models from Groq that represent a significant advancement in open-source AI capabilities for tool use/function calling."),
'mathstral': _("MathΣtral: a 7B model designed for math reasoning and scientific discovery by Mistral AI."),
'firefunction-v2': _("An open weights function calling model based on Llama 3, competitive with GPT-4o function calling capabilities."),
'nuextract': _("A 3.8B model fine-tuned on a private high-quality synthetic dataset for information extraction, based on Phi-3."),
}

View File

@@ -1,41 +1,30 @@
# connectionhandler.py
# connection_handler.py
import json, requests
#OK=200 response.status_code
url = None
bearer_token = None
def get_headers(include_json:bool) -> dict:
headers = {}
if include_json:
headers["Content-Type"] = "application/json"
if bearer_token:
headers["Authorization"] = "Bearer {}".format(bearer_token)
return headers if len(headers.keys()) > 0 else None
def simple_get(connection_url:str) -> dict:
try:
response = requests.get(connection_url)
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}
return requests.get(connection_url, headers=get_headers(False))
def simple_post(connection_url:str, data) -> dict:
return requests.post(connection_url, headers=get_headers(True), data=data, stream=False)
def simple_delete(connection_url:str, data) -> dict:
try:
response = requests.delete(connection_url, json=data)
if response.status_code == 200:
return {"status": "ok", "status_code": response.status_code}
else:
return {"status": "error", "text": "Failed to delete", "status_code": response.status_code}
except Exception as e:
return {"status": "error", "status_code": 0}
return requests.delete(connection_url, headers=get_headers(False), json=data)
def stream_post(connection_url:str, data, callback:callable) -> dict:
try:
headers = {
"Content-Type": "application/json"
}
response = requests.post(connection_url, headers=headers, data=data, stream=True)
if response.status_code == 200:
for line in response.iter_lines():
if line:
callback(json.loads(line.decode("utf-8")))
return {"status": "ok", "status_code": response.status_code}
else:
return {"status": "error", "status_code": response.status_code}
except Exception as e:
return {"status": "error", "status_code": 0}
response = requests.post(connection_url, headers=get_headers(True), data=data, stream=True)
if response.status_code == 200:
for line in response.iter_lines():
if line:
callback(json.loads(line.decode("utf-8")))
return response

View File

@@ -1,7 +1,10 @@
# dialogs.py
from gi.repository import Adw, Gtk, Gdk, GLib, GtkSource, Gio, GdkPixbuf
from .available_models import available_models
import os
from pytube import YouTube
from html2text import html2text
from . import connection_handler
# CLEAR CHAT | WORKS
@@ -11,10 +14,10 @@ def clear_chat_response(self, dialog, task):
def clear_chat(self):
if self.bot_message is not None:
self.show_toast("info", 1, self.main_overlay)
self.show_toast(_("Chat cannot be cleared while receiving a message"), self.main_overlay)
return
dialog = Adw.AlertDialog(
heading=_("Clear Chat"),
heading=_("Clear Chat?"),
body=_("Are you sure you want to clear the chat?"),
close_response="cancel"
)
@@ -35,7 +38,7 @@ def delete_chat_response(self, dialog, task, chat_name):
def delete_chat(self, chat_name):
dialog = Adw.AlertDialog(
heading=_("Delete Chat"),
heading=_("Delete Chat?"),
body=_("Are you sure you want to delete '{}'?").format(chat_name),
close_response="cancel"
)
@@ -57,10 +60,10 @@ def rename_chat_response(self, dialog, task, old_chat_name, entry, label_element
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, chat_name:str, label_element):
def rename_chat(self, chat_name, label_element):
entry = Gtk.Entry()
dialog = Adw.AlertDialog(
heading=_("Rename Chat"),
heading=_("Rename Chat?"),
body=_("Renaming '{}'").format(chat_name),
extra_child=entry,
close_response="cancel"
@@ -75,7 +78,7 @@ def rename_chat(self, chat_name:str, label_element):
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
# 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")
@@ -87,7 +90,7 @@ def new_chat_response(self, dialog, task, entry):
def new_chat(self):
entry = Gtk.Entry()
dialog = Adw.AlertDialog(
heading=_("Create Chat"),
heading=_("Create Chat?"),
body=_("Enter name for new chat"),
extra_child=entry,
close_response="cancel"
@@ -109,9 +112,10 @@ def stop_pull_model_response(self, dialog, task, model_name):
self.stop_pull_model(model_name)
def stop_pull_model(self, model_name):
#self.pulling_model_list_box.unselect_all()
dialog = Adw.AlertDialog(
heading=_("Stop Model"),
body=_("Are you sure you want to stop pulling '{}'?").format(model_name),
heading=_("Stop Download?"),
body=_("Are you sure you want to stop pulling '{} ({})'?").format(model_name.split(":")[0].capitalize(), model_name.split(":")[1]),
close_response="cancel"
)
dialog.add_response("cancel", _("Cancel"))
@@ -131,7 +135,7 @@ def delete_model_response(self, dialog, task, model_name):
def delete_model(self, model_name):
dialog = Adw.AlertDialog(
heading=_("Delete Model"),
heading=_("Delete Model?"),
body=_("Are you sure you want to delete '{}'?").format(model_name),
close_response="cancel"
)
@@ -144,46 +148,17 @@ def delete_model(self, model_name):
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()}"
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(tag)
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_image_response(self, dialog, task):
def remove_attached_file_response(self, dialog, task, name):
if dialog.choose_finish(task) == 'remove':
self.remove_image()
self.file_preview_dialog.close()
self.remove_attached_file(name)
def remove_image(self):
def remove_attached_file(self, name):
dialog = Adw.AlertDialog(
heading=_("Remove Image"),
body=_("Are you sure you want to remove image?"),
heading=_("Remove Attachment?"),
body=_("Are you sure you want to remove attachment?"),
close_response="cancel"
)
dialog.add_response("cancel", _("Cancel"))
@@ -192,31 +167,43 @@ def remove_image(self):
dialog.choose(
parent = self,
cancellable = None,
callback = lambda dialog, task: remove_image_response(self, dialog, task)
callback = lambda dialog, task, name=name: remove_attached_file_response(self, dialog, task, name)
)
# RECONNECT REMOTE |
# RECONNECT REMOTE | WORKS
def reconnect_remote_response(self, dialog, task, entry):
def reconnect_remote_response(self, dialog, task, url_entry, bearer_entry):
response = dialog.choose_finish(task)
if not task or response == "remote":
self.connect_remote(entry.get_text())
self.connect_remote(url_entry.get_text(), bearer_entry.get_text())
elif response == "local":
self.connect_local()
elif response == "close":
self.destroy()
def reconnect_remote(self):
entry = Gtk.Entry(
def reconnect_remote(self, current_url, current_bearer_token):
entry_url = Gtk.Entry(
css_classes = ["error"],
text = self.ollama_url
text = current_url,
placeholder_text = "URL"
)
entry_bearer_token = Gtk.Entry(
css_classes = ["error"] if current_bearer_token else None,
text = current_bearer_token,
placeholder_text = "Bearer Token (Optional)"
)
container = Gtk.Box(
orientation = 1,
spacing = 10
)
container.append(entry_url)
container.append(entry_bearer_token)
dialog = Adw.AlertDialog(
heading=_("Connection Error"),
body=_("The remote instance has disconnected"),
extra_child=entry
extra_child=container
)
entry.connect("activate", lambda entry, dialog: reconnect_remote_response(self, dialog, None, 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"))
@@ -224,5 +211,189 @@ def reconnect_remote(self):
dialog.choose(
parent = self,
cancellable = None,
callback = lambda dialog, task, entry=entry: reconnect_remote_response(self, dialog, task, entry)
callback = lambda dialog, task, url_entry=entry_url, bearer_entry=entry_bearer_token: reconnect_remote_response(self, dialog, task, url_entry, bearer_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:
self.logger.error(e)
return
try:
self.create_model(file.get_path(), True)
except Exception as e:
self.logger.error(e)
self.show_toast(_("An error occurred while creating the model"), self.main_overlay)
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_types = {
"plain_text": ["txt", "md", "html", "css", "js", "py", "java", "json", "xml"],
"image": ["png", "jpeg", "jpg", "webp", "gif"],
"pdf": ["pdf"]
}
try: file = file_dialog.open_finish(result)
except:
self.logger.error(e)
return
extension = file.get_path().split(".")[-1]
file_type = next(key for key, value in file_types.items() if extension in value)
if not file_type: return
if file_type == 'image' and not self.verify_if_image_can_be_used():
self.show_toast(_("Image recognition is only available on specific models"), self.main_overlay)
return
self.attach_file(file.get_path(), file_type)
def attach_file(self, filter):
file_dialog = Gtk.FileDialog(default_filter=filter)
file_dialog.open(self, None, lambda file_dialog, result: attach_file_response(self, file_dialog, result))
# YouTube caption | WORKS
def youtube_caption_response(self, dialog, task, video_url, caption_drop_down):
if dialog.choose_finish(task) == "accept":
buffer = self.message_text_view.get_buffer()
text = buffer.get_text(buffer.get_start_iter(), buffer.get_end_iter(), False).replace(video_url, "")
buffer.delete(buffer.get_start_iter(), buffer.get_end_iter())
buffer.insert(buffer.get_start_iter(), text, len(text))
yt = YouTube(video_url)
text = "{}\n{}\n{}\n\n".format(yt.title, yt.author, yt.watch_url)
selected_caption = caption_drop_down.get_selected_item().get_string()
for event in yt.captions[selected_caption.split(' | ')[1]].json_captions['events']:
text += "{}\n".format(event['segs'][0]['utf8'].replace('\n', '\\n'))
if not os.path.exists(os.path.join(self.cache_dir, 'tmp/youtube')):
os.makedirs(os.path.join(self.cache_dir, 'tmp/youtube'))
file_path = os.path.join(os.path.join(self.cache_dir, 'tmp/youtube'), f'{yt.title} ({selected_caption.split(" | ")[0]})')
with open(file_path, 'w+') as f:
f.write(text)
self.attach_file(file_path, 'youtube')
def youtube_caption(self, video_url):
yt = YouTube(video_url)
video_title = yt.title
captions = yt.captions
if len(captions) == 0:
self.show_toast(_("This video does not have any transcriptions"), self.main_overlay)
return
caption_list = Gtk.StringList()
for caption in captions: caption_list.append("{} | {}".format(caption.name, caption.code))
caption_drop_down = Gtk.DropDown(
enable_search=True,
model=caption_list
)
dialog = Adw.AlertDialog(
heading=_("Attach YouTube Video?"),
body=_("{}\n\nPlease select a transcript to include").format(video_title),
extra_child=caption_drop_down,
close_response="cancel"
)
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, video_url = video_url, caption_drop_down = caption_drop_down: youtube_caption_response(self, dialog, task, video_url, caption_drop_down)
)
# Website extraction |
def attach_website_response(self, dialog, task, url):
if dialog.choose_finish(task) == "accept":
response = connection_handler.simple_get(url)
if response.status_code == 200:
html = response.text
md = html2text(html)
buffer = self.message_text_view.get_buffer()
textview_text = buffer.get_text(buffer.get_start_iter(), buffer.get_end_iter(), False).replace(url, "")
buffer.delete(buffer.get_start_iter(), buffer.get_end_iter())
buffer.insert(buffer.get_start_iter(), textview_text, len(textview_text))
if not os.path.exists('/tmp/alpaca/websites/'):
os.makedirs('/tmp/alpaca/websites/')
md_name = self.generate_numbered_name('website.md', os.listdir('/tmp/alpaca/websites'))
file_path = os.path.join('/tmp/alpaca/websites/', md_name)
with open(file_path, 'w+') as f:
f.write('{}\n\n{}'.format(url, md))
self.attach_file(file_path, 'website')
else:
self.show_toast(_("An error occurred while extracting text from the website"), self.main_overlay)
def attach_website(self, url):
dialog = Adw.AlertDialog(
heading=_("Attach Website? (Experimental)"),
body=_("Are you sure you want to attach\n'{}'?").format(url),
close_response="cancel"
)
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, url=url: attach_website_response(self, dialog, task, url)
)
# Begging for money :3
def support_response(self, dialog, task):
res = dialog.choose_finish(task)
if res == 'later': return
elif res == 'support':
self.show_toast(_("Thank you!"), self.main_overlay)
os.system('xdg-open https://github.com/sponsors/Jeffser')
self.show_support = False
self.save_server_config()
def support(self):
dialog = Adw.AlertDialog(
heading=_("Support"),
body=_("Are you enjoying Alpaca? Consider sponsoring the project!"),
close_response="nope"
)
dialog.add_response("nope", _("Don't show again"))
dialog.set_response_appearance("nope", Adw.ResponseAppearance.DESTRUCTIVE)
dialog.add_response("later", _("Later"))
dialog.add_response("support", _("Support"))
dialog.set_response_appearance("support", Adw.ResponseAppearance.SUGGESTED)
dialog.choose(
parent = self,
cancellable = None,
callback = lambda dialog, task: support_response(self, dialog, task)
)

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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 6.5 0 c -3.578125 0 -6.5 2.921875 -6.5 6.5 s 2.921875 6.5 6.5 6.5 c 1.429688 0 2.753906 -0.46875 3.828125 -1.257812 l 2.945313 2.945312 c 0.957031 0.9375 2.363281 -0.5 1.40625 -1.4375 l -2.929688 -2.929688 c 0.785156 -1.074218 1.25 -2.394531 1.25 -3.820312 c 0 -3.578125 -2.921875 -6.5 -6.5 -6.5 z m 0 2 c 2.496094 0 4.5 2.003906 4.5 4.5 s -2.003906 4.5 -4.5 4.5 s -4.5 -2.003906 -4.5 -4.5 s 2.003906 -4.5 4.5 -4.5 z m 0 0" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 590 B

View 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 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="#222222"/></svg>

After

Width:  |  Height:  |  Size: 568 B

View 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

View 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

View 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 4 1 c -1.644531 0 -3 1.355469 -3 3 v 1 h 1 v -1 c 0 -1.109375 0.890625 -2 2 -2 h 1 v -1 z m 2 0 v 1 h 4 v -1 z m 5 0 v 1 h 1 c 1.109375 0 2 0.890625 2 2 v 1 h 1 v -1 c 0 -1.644531 -1.355469 -3 -3 -3 z m -5 4 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 -5 1 v 4 h 1 v -4 z m 13 0 v 4 h 1 v -4 z m -4.5 2 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 -8.5 3 v 1 c 0 1.644531 1.355469 3 3 3 h 1 v -1 h -1 c -1.109375 0 -2 -0.890625 -2 -2 v -1 z m 13 0 v 1 c 0 1.109375 -0.890625 2 -2 2 h -1 v 1 h 1 c 1.644531 0 3 -1.355469 3 -3 v -1 z m -8 3 v 1 h 4 v -1 z m 0 0" fill="#2e3434" fill-opacity="0.34902"/>
</svg>

After

Width:  |  Height:  |  Size: 850 B

View 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

View 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

View 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

View 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

View 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

View 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 4.003906 4.070312 v 7.859376 c 0 1.070312 0.90625 1.066406 0.90625 1.066406 h 0.09375 c 0.171875 0 0.347656 -0.039063 0.5 -0.125 l 7 -4 c 0.308594 -0.171875 0.46875 -0.523438 0.46875 -0.875 c 0 -0.351563 -0.160156 -0.703125 -0.46875 -0.875 l -7 -4 c -0.152344 -0.085938 -0.328125 -0.125 -0.5 -0.125 h -0.09375 s -0.90625 0 -0.90625 1.074218 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 510 B

View 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 1.019531 c -0.550781 0 -0.996094 0.445313 -0.996094 0.996094 v 0.453125 c -0.472656 0.128906 -0.929687 0.320312 -1.355468 0.566406 l -0.324219 -0.324218 c -0.390625 -0.390626 -1.019531 -0.390626 -1.410157 0 l -0.703124 0.707031 c -0.390626 0.390625 -0.390626 1.019531 0 1.410156 l 0.320312 0.320313 c -0.246094 0.425781 -0.433594 0.882812 -0.5625 1.355468 h -0.453125 c -0.550781 0 -0.996094 0.445313 -0.996094 0.996094 v 1 c 0 0.550781 0.445313 0.996094 0.996094 0.996094 h 0.449219 c 0.132812 0.472656 0.320312 0.929687 0.566406 1.355468 l -0.320312 0.320313 c -0.390626 0.390625 -0.390626 1.019531 0 1.410156 l 0.703124 0.707031 c 0.390626 0.390626 1.019532 0.390626 1.410157 0 l 0.320312 -0.320312 c 0.429688 0.242188 0.882813 0.433594 1.359375 0.558594 v 0.457031 c 0 0.550781 0.445313 0.996094 0.996094 0.996094 h 0.996094 c 0.554687 0 1 -0.445313 1 -0.996094 v -0.453125 c 0.472656 -0.128906 0.929687 -0.320312 1.355468 -0.566406 l 0.320313 0.324218 c 0.390625 0.390626 1.019531 0.390626 1.410156 0 l 0.707031 -0.707031 c 0.390626 -0.390625 0.390626 -1.019531 0 -1.410156 l -0.320312 -0.320313 c 0.242188 -0.425781 0.433594 -0.882812 0.558594 -1.355468 h 0.453125 c 0.554687 0 1 -0.445313 1 -0.996094 v -1 c 0 -0.550781 -0.445313 -0.996094 -1 -0.996094 h -0.449219 c -0.128906 -0.472656 -0.320312 -0.929687 -0.566406 -1.355468 l 0.324218 -0.320313 c 0.390626 -0.390625 0.390626 -1.019531 0 -1.410156 l -0.707031 -0.707031 c -0.390625 -0.390626 -1.019531 -0.390626 -1.410156 0 l -0.320313 0.320312 c -0.425781 -0.242188 -0.882812 -0.429688 -1.355468 -0.558594 v -0.457031 c 0 -0.550781 -0.445313 -0.996094 -1 -0.996094 z m 0.515625 3.976563 c 1.660156 0 3 1.34375 3 3 s -1.339844 3 -3 3 c -1.65625 0 -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 z m 0 0" fill="#222222"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View 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 4 6 h 1 c 0.257812 0 0.527344 -0.128906 0.71875 -0.3125 l 1.28125 -1.28125 v 6.59375 h 2 v -6.59375 l 1.28125 1.28125 c 0.191406 0.183594 0.410156 0.3125 0.71875 0.3125 h 1 v -1 c 0 -0.308594 -0.089844 -0.550781 -0.28125 -0.75 l -3.71875 -3.65625 l -3.71875 3.65625 c -0.191406 0.199219 -0.28125 0.441406 -0.28125 0.75 z m 0 0"/><path d="m 1.007812 11.972656 c 0 1.664063 1.367188 3.035156 3.03125 3.035156 h 7.917969 c 1.664063 0 3.03125 -1.371093 3.03125 -3.035156 v -1.972656 h -2 v 1.972656 c 0 0.589844 -0.441406 1.035156 -1.03125 1.035156 h -7.917969 c -0.589843 0 -1.03125 -0.445312 -1.03125 -1.035156 v -1.972656 h -2 z m 0 0"/><path d="m 4.039062 6.96875 c -1.664062 0 -3.03125 1.367188 -3.03125 3.03125 v 1.976562 h 2 v -1.976562 c 0 -0.589844 0.441407 -1.03125 1.03125 -1.03125 h 0.960938 v -2 z m 6.960938 0 v 2 h 0.957031 c 0.589844 0 1.03125 0.441406 1.03125 1.03125 v 1.976562 h 2 v -1.976562 c 0 -1.664062 -1.367187 -3.03125 -3.03125 -3.03125 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View 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

View 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.933594 c 4.042969 0 5.890625 3.613281 5.890625 3.613281 l -1.785156 0.902344 s -1.246094 -2.515625 -4.105469 -2.515625 c -2.054688 0 -3.097656 1.394531 -3.484375 2.074218 h 0.910156 c 1.332031 0 1.574219 1.253907 1.574219 2.035157 l -6 -0.046875 l -0.046875 -6 c 1.046875 0 2.035156 0.523437 2.035156 1.667968 v 0.929688 l 0.0625 0.0625 c 0.757813 -1.089844 2.3125 -2.722656 4.949219 -2.722656 z m 0 0"/><path d="m 13.617188 8.996094 c 0.683593 0 1.265624 0.582031 1.265624 1.265625 v 3.46875 c 0 0.683593 -0.582031 1.265625 -1.265624 1.265625 h -3.46875 c -0.683594 0 -1.265626 -0.582032 -1.265626 -1.265625 v -3.46875 c 0 -0.683594 0.582032 -1.265625 1.265626 -1.265625 z m -0.734376 2 h -2 v 2 h 2 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 881 B

View 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 7 2.933594 c -4.042969 0 -5.894531 3.613281 -5.894531 3.613281 l 1.785156 0.902344 s 1.25 -2.515625 4.109375 -2.515625 c 2.054688 0 3.097656 1.394531 3.484375 2.074218 h -0.910156 c -1.332031 0 -1.574219 1.253907 -1.574219 2.035157 l 6 -0.046875 l 0.042969 -6 c -1.042969 0 -2.03125 0.523437 -2.03125 1.667968 v 0.929688 l -0.0625 0.0625 c -0.757813 -1.089844 -2.316407 -2.722656 -4.949219 -2.722656 z m 0 0"/><path d="m 2.382812 8.996094 c -0.683593 0 -1.265624 0.582031 -1.265624 1.265625 v 3.46875 c 0 0.683593 0.582031 1.265625 1.265624 1.265625 h 3.46875 c 0.683594 0 1.265626 -0.582032 1.265626 -1.265625 v -3.46875 c 0 -0.683594 -0.582032 -1.265625 -1.265626 -1.265625 z m 0.734376 2 h 2 v 2 h -2 z m 0 0"/></g></svg>

After

Width:  |  Height:  |  Size: 880 B

View 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

View 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

View File

@@ -1,23 +1,42 @@
# local_instance.py
import subprocess, os
import subprocess, os, threading
from time import sleep
from logging import getLogger
logger = getLogger(__name__)
instance = None
port = 11435
data_dir = os.getenv("XDG_DATA_HOME")
overrides = {}
def start(data_dir):
instance = subprocess.Popen(["/app/bin/ollama", "serve"], env={**os.environ, 'OLLAMA_HOST': f"127.0.0.1:{port}", "HOME": data_dir}, stderr=subprocess.PIPE, text=True)
print("Starting Alpaca's Ollama instance...")
def start():
if not os.path.isdir(os.path.join(os.getenv("XDG_CACHE_HOME"), 'tmp/ollama')):
os.mkdir(os.path.join(os.getenv("XDG_CACHE_HOME"), 'tmp/ollama'))
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
params["TMPDIR"] = os.path.join(os.getenv("XDG_CACHE_HOME"), 'tmp/ollama')
instance = subprocess.Popen(["/app/bin/ollama", "serve"], env={**os.environ, **params}, stderr=subprocess.PIPE, text=True)
logger.info("Starting Alpaca's Ollama instance...")
logger.debug(params)
sleep(1)
while True:
err = instance.stderr.readline()
if err == '' and instance.poll() is not None:
break
if 'msg="inference compute"' in err: #Ollama outputs a line with this when it finishes loading, yeah
break
print("Started Alpaca's Ollama instance")
logger.info("Started Alpaca's Ollama instance")
def stop():
if instance: instance.kill()
print("Stopped Alpaca's Ollama instance")
logger.info("Stopping Alpaca's Ollama instance")
global instance
if instance:
instance.terminate()
instance.wait()
instance = None
logger.info("Stopped Alpaca's Ollama instance")
def reset():
logger.info("Resetting Alpaca's Ollama instance")
stop()
sleep(1)
start()

View File

@@ -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
@@ -18,23 +18,30 @@
# SPDX-License-Identifier: GPL-3.0-or-later
import sys
import logging
import gi
import os
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
from gi.repository import Gtk, Gio, Adw
from gi.repository import Gtk, Gio, Adw, GLib
from .window import AlpacaWindow
logger = logging.getLogger(__name__)
class AlpacaApplication(Adw.Application):
"""The main application singleton class."""
def __init__(self):
def __init__(self, version):
super().__init__(application_id='com.jeffser.Alpaca',
flags=Gio.ApplicationFlags.DEFAULT_FLAGS)
self.create_action('quit', lambda *_: self.quit(), ['<primary>q'])
self.create_action('preferences', lambda *_: AlpacaWindow.show_preferences_dialog(self.props.active_window), ['<primary>p'])
self.create_action('about', self.on_about_action)
self.version = version
def do_activate(self):
win = self.props.active_window
@@ -47,12 +54,16 @@ class AlpacaApplication(Adw.Application):
application_name='Alpaca',
application_icon='com.jeffser.Alpaca',
developer_name='Jeffry Samuel Eduarte Rojas',
version='0.8.5',
version=self.version,
support_url="https://github.com/Jeffser/Alpaca/discussions/155",
developers=['Jeffser https://jeffser.com'],
designers=['Jeffser https://jeffser.com'],
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',
designers=['Jeffser https://jeffser.com', 'Tobias Bernard (App Icon) https://tobiasbernard.com/'],
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\nCounterFlow64 (Norwegian) https://github.com/CounterFlow64\nAritra Saha (Bengali) https://github.com/olumolu\nYuehao Sui (Simplified Chinese) https://github.com/8ar10der',
copyright='© 2024 Jeffser\n© 2024 Ollama',
issue_url='https://github.com/Jeffser/Alpaca/issues')
issue_url='https://github.com/Jeffser/Alpaca/issues',
license_type=3,
website="https://jeffser.com/alpaca",
debug_info=open(os.path.join(os.getenv("XDG_DATA_HOME"), 'tmp.log'), 'r').read())
about.present(parent=self.props.active_window)
def create_action(self, name, callback, shortcuts=None):
@@ -64,5 +75,17 @@ class AlpacaApplication(Adw.Application):
def main(version):
app = AlpacaApplication()
if os.path.isfile(os.path.join(os.getenv("XDG_DATA_HOME"), 'tmp.log')):
os.remove(os.path.join(os.getenv("XDG_DATA_HOME"), 'tmp.log'))
if os.path.isdir(os.path.join(os.getenv("XDG_CACHE_HOME"), 'tmp')):
os.system('rm -rf ' + os.path.join(os.getenv("XDG_CACHE_HOME"), "tmp/*"))
else:
os.mkdir(os.path.join(os.getenv("XDG_CACHE_HOME"), 'tmp'))
logging.basicConfig(
format="%(levelname)s\t[%(filename)s | %(funcName)s] %(message)s",
level=logging.INFO,
handlers=[logging.FileHandler(filename=os.path.join(os.getenv("XDG_DATA_HOME"), 'tmp.log')), logging.StreamHandler(stream=sys.stdout)]
)
app = AlpacaApplication(version)
logger.info(f"Alpaca version: {app.version}")
return app.run(sys.argv)

View File

@@ -26,14 +26,25 @@ 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'
'local_instance.py',
'available_models.json',
'available_models_descriptions.py',
'table_widget.py'
]
install_data(alpaca_sources, install_dir: moduledir)

View File

@@ -1,7 +0,0 @@
.message-input {
background-color: #343434;
}
.message-text-view {
background-color: #343434;
}

View File

@@ -1,28 +1,18 @@
.message-input {
background-color: #EBEBEB;
border-radius: 10px;
.message_input_scroll_window > * {
box-shadow: none;
border-width: 0;
}
.message-text-view {
background-color: #EBEBEB;
.message_text_view {
background-color: rgba(0,0,0,0);
}
.chat_row box.header {
font-size: 14px;
.chat_image_button {
padding: 0;
}
.chat_row box {
margin: 0;
.editing_message_textview {
border-radius: 5px;
padding: 5px;
}
.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;
.chat_row:selected {
background: mix(@theme_bg_color, @theme_selected_bg_color, 0.3);
color: mix(@window_fg_color, @theme_selected_bg_color, 0.5);
}

126
src/table_widget.py Normal file
View File

@@ -0,0 +1,126 @@
import gi
from gi.repository import Adw
from gi.repository import Gtk, GObject, Gio
import re
class MarkdownTable:
def __init__(self):
self.headers = []
self.rows = Gio.ListStore()
self.alignments = []
def __repr__(self):
table_repr = 'Headers: {}\n'.format(self.headers)
table_repr += 'Alignments: {}\n'.format(self.alignments)
table_repr += 'Rows:\n'
for row in self.rows:
table_repr += ' | '.join(row) + '\n'
return table_repr
class Row(GObject.GObject):
def __init__(self, _values):
super().__init__()
self.values = _values
def get_column_value(self, index):
return self.values[index]
class TableWidget(Gtk.Frame):
__gtype_name__ = 'TableWidget'
def __init__(self, markdown):
super().__init__()
self.table = MarkdownTable()
self.set_halign(Gtk.Align.START)
self.table_widget = Gtk.ColumnView(
show_column_separators=True,
show_row_separators=True,
reorderable=False,
)
scrolled_window = Gtk.ScrolledWindow(
vscrollbar_policy=Gtk.PolicyType.NEVER,
propagate_natural_width=True
)
self.set_child(scrolled_window)
try:
self.parse_markdown_table(markdown)
self.make_table()
scrolled_window.set_child(self.table_widget)
except:
label = Gtk.Label(
label=markdown.lstrip('\n').rstrip('\n'),
selectable=True,
margin_top=6,
margin_bottom=6,
margin_start=6,
margin_end=6
)
scrolled_window.set_child(label)
def parse_markdown_table(self, markdown_text):
# Define regex patterns for matching the table components
header_pattern = r'^\|(.+?)\|$'
separator_pattern = r'^\|(\s*[:-]+:?\s*\|)+$'
row_pattern = r'^\|(.+?)\|$'
# Split the text into lines
lines = markdown_text.strip().split('\n')
# Extract headers
header_match = re.match(header_pattern, lines[0], re.MULTILINE)
if header_match:
headers = [header.strip() for header in header_match.group(1).replace("*", "").split('|') if header.strip()]
self.table.headers = headers
# Extract alignments
separator_match = re.match(separator_pattern, lines[1], re.MULTILINE)
if separator_match:
alignments = []
separator_columns = lines[1].replace(" ", "").split('|')[1:-1]
for sep in separator_columns:
if ':' in sep:
if sep.startswith('-') and sep.endswith(':'):
alignments.append(1)
elif sep.startswith(':') and sep.endswith('-'):
alignments.append(0)
else:
alignments.append(0.5)
else:
alignments.append(0) # Default alignment is start
self.table.alignments = alignments
# Extract rows
for line in lines[2:]:
row_match = re.match(row_pattern, line, re.MULTILINE)
if row_match:
rows = line.split('|')[1:-1]
row = Row(rows)
self.table.rows.append(row)
def make_table(self):
def _on_factory_setup(_factory, list_item, align):
label = Gtk.Label(xalign=align, ellipsize=3, selectable=True)
list_item.set_child(label)
def _on_factory_bind(_factory, list_item, index):
label_widget = list_item.get_child()
row = list_item.get_item()
label_widget.set_label(row.get_column_value(index))
for index, column_name in enumerate(self.table.headers):
column = Gtk.ColumnViewColumn(title=column_name, expand=True)
factory = Gtk.SignalListItemFactory()
factory.connect("setup", _on_factory_setup, self.table.alignments[index])
factory.connect("bind", _on_factory_bind, index)
column.set_factory(factory)
self.table_widget.append_column(column)
selection = Gtk.NoSelection.new(model=self.table.rows)
self.table_widget.set_model(model=selection)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,9 @@
import json
with open('src/available_models.json', 'r') as f:
data = json.load(f)
results = 'descriptions = {\n'
for key, value in data.items():
results += f" '{key}': _(\"{value['description']}\"),\n"
results += '}'
with open('src/available_models_descriptions.py', 'w+') as f:
f.write(results)

View File

@@ -3,8 +3,16 @@ 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
msgmerge --no-fuzzy-matching -U po/es.po po/alpaca.pot
echo "Updating Russian..."
msgmerge --no-fuzzy-matching -U po/ru.po po/alpaca.pot
echo "Updating French"
msgmerge --no-fuzzy-matching -U po/fr.po po/alpaca.pot
echo "Updating Brazilian Portuguese"
msgmerge -U po/pt_BR.po po/alpaca.pot
msgmerge --no-fuzzy-matching -U po/pt_BR.po po/alpaca.pot
echo "Updating Norwegian"
msgmerge --no-fuzzy-matching -U po/nb_NO.po po/alpaca.pot
echo "Updating Bengali"
msgmerge --no-fuzzy-matching -U po/bn.po po/alpaca.pot
echo "Updating Simplified Chinese"
msgmerge --no-fuzzy-matching -U po/zh_CN.po po/alpaca.pot