138 Commits
0.1.2 ... 0.1.6

Author SHA1 Message Date
bd177b73fb data: fix release date 2023-05-06 11:27:50 +02:00
d42c0265b5 data: update release in appdata 2023-05-06 11:22:02 +02:00
455370416f data: update appdata for 0.1.6 2023-05-06 11:19:44 +02:00
0ef94b2036 meson: bump 0.1.6 2023-05-06 11:19:34 +02:00
62bba52dd2 src: update thread 2023-05-06 11:19:14 +02:00
6cf10e6f2e fix: app crash randomly when updating the response (#19) 2023-05-06 11:10:53 +02:00
phaerrax
22ca867a65 Translated using Weblate (Italian)
Currently translated at 86.6% (26 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/it/
2023-05-06 00:15:55 +00:00
aa5c6bbfd9 provider(oa): add warning for chunking (#13) 2023-05-06 00:42:49 +02:00
28de905b19 provider(openai): add chunk (#13) and rate limit 2023-05-06 00:41:46 +02:00
b2fd2566ab provider(base): add chunk (#13) 2023-05-06 00:41:22 +02:00
e306d8dd2d provider(bard): add load 2023-05-06 00:27:20 +02:00
f71124df62 provider(oa): add load 2023-05-06 00:27:09 +02:00
f31e9ff99c provider(hf): update authroization 2023-05-06 00:26:47 +02:00
2d33daf998 provider(base): add default save and load 2023-05-06 00:26:23 +02:00
243910c5c0 src: add save/load data 2023-05-06 00:25:57 +02:00
0xMRTT
acf8560f11 fix: save settings when closing (#16)
Reviewed-on: https://codeberg.org/Bavarder/Bavarder/pulls/16
2023-05-05 20:23:33 +00:00
Bytez
fc023a3b4c Saving settings on window closing. 2023-05-05 22:16:17 +02:00
50aee8c31b fix: hugging chat accept modal 2023-05-05 22:14:51 +02:00
Vistaus
4f9e72654b Translated using Weblate (Dutch)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/nl/
2023-05-05 10:18:45 +00:00
Vistaus
5a1aef99be Translated using Weblate (Dutch)
Currently translated at 40.0% (12 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/nl/
2023-05-05 09:41:01 +00:00
Anonymous
d507ef3cbc Translated using Weblate (Dutch)
Currently translated at 40.0% (12 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/nl/
2023-05-05 09:41:01 +00:00
Vistaus
e018ebd8d2 Added translation using Weblate (Dutch) 2023-05-05 09:39:59 +00:00
b5d762b6e6 provider(openai): add ability to customize the row title 2023-05-05 10:03:23 +02:00
1aef1494f6 meta: update bug eport template 2023-05-05 09:59:21 +02:00
17169e979b src: add troubleshooting and url to about (#15 github) 2023-05-05 09:57:03 +02:00
0xMRTT
8fd7cf8c68 doc: update seen
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-04 23:55:39 +00:00
0xMRTT
7957bde4bb doc: add seen 2023-05-04 23:50:38 +00:00
0xMRTT
ad26e0c93c doc: add https://sempreupdate.com.br/como-instalar-o-chat-bavarder-no-linux/ 2023-05-04 23:47:01 +00:00
0xMRTT
e4dc8faba1 doc: add twitter 2023-05-04 23:46:17 +00:00
0xMRTT
843a5191b2 doc: add https://infoidevice.fr/bavarder-application-chatgpt-linux/ 2023-05-04 23:45:05 +00:00
0xMRTT
ecf33ae506 meson: bump to 0.1.4 2023-05-04 23:39:04 +00:00
0xMRTT
8d106ee69e data: add 0.1.4 2023-05-04 23:38:45 +00:00
9beb360bfd flatpak: add latest version of hgchat 2023-05-05 01:37:34 +02:00
2374531f7b data: update gschema key 2023-05-05 01:15:57 +02:00
aca1434491 provider: add json 2023-05-05 01:15:56 +02:00
48547c53a0 provider(bard): add save 2023-05-05 01:15:56 +02:00
d8cca9f7a2 main: add log 2023-05-05 01:15:55 +02:00
7f860e4ac1 ui: add quit 2023-05-05 01:15:54 +02:00
0xMRTT
64e9d63836 doc: explain the name
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-04 22:19:06 +00:00
David Lapshin
2d95d2cd56 Add OMG! Ubuntu fediverse link to SEEN.md 2023-05-05 00:28:38 +03:00
0xMRTT
9ff00cbedc doc: update seen
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-04 21:09:49 +00:00
0xMRTT
4429ea2fdb Add 'SEEN.md'
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-04 20:57:34 +00:00
keyiflerolsun
669a8ebd2d Translated using Weblate (Turkish)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/tr/
2023-05-04 20:56:31 +00:00
keyiflerolsun
3a297e2b50 Translated using Weblate (Turkish)
Currently translated at 33.3% (10 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/tr/
2023-05-04 20:52:49 +00:00
Anonymous
d7ad7f1886 Translated using Weblate (Turkish)
Currently translated at 33.3% (10 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/tr/
2023-05-04 20:52:49 +00:00
artnay
fc60c0456c Translated using Weblate (Finnish)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/fi/
2023-05-04 20:52:04 +00:00
keyiflerolsun
6b7f246195 Added translation using Weblate (Turkish) 2023-05-04 20:52:04 +00:00
daudix-UFO
bd4df4efee fix: Appdata 2023-05-04 23:41:00 +03:00
daudix-UFO
3996d149ee misc: Tweak appdata a bit more 2023-05-04 23:27:34 +03:00
daudix-UFO
1291a29065 misc: Add category tag back 2023-05-04 23:21:58 +03:00
daudix-UFO
386c8ac23a feat: Add more tags to appdata 2023-05-04 23:19:43 +03:00
c4563aa5ca provider: sort providers in alphabetical order (#11 codeberg) 2023-05-04 17:53:43 +02:00
73b6dd33c0 meson: bump to 0.1.2 2023-05-04 14:22:58 +02:00
da8a92acd5 data: uodate appdata 2023-05-04 14:21:41 +02:00
f7442dfe71 fix: add focus on start (#11) 2023-05-04 14:21:15 +02:00
7870cfc843 src: add translators 2023-05-04 14:16:34 +02:00
fc376539f8 ui: remove speak and listen 2023-05-04 14:01:16 +02:00
0xMRTT
a8515fd9a3 doc: add description of imaginer
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-03 21:00:16 +00:00
0xMRTT
cb928759ac Doc: add rec for imaginer
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-03 20:58:42 +00:00
a546588be1 Translated using Weblate (Hungarian)
Currently translated at 23.3% (7 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/hu/
2023-05-03 19:17:13 +00:00
artnay
8921c25fbb Translated using Weblate (Finnish)
Currently translated at 90.0% (27 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/fi/
2023-05-03 19:13:15 +00:00
artnay
874bef8470 Translated using Weblate (Finnish)
Currently translated at 30.0% (9 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/fi/
2023-05-03 18:57:45 +00:00
Anonymous
c5b74d4c97 Translated using Weblate (Finnish)
Currently translated at 30.0% (9 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/fi/
2023-05-03 18:57:45 +00:00
artnay
d978ed9e67 Added translation using Weblate (Finnish) 2023-05-03 18:57:14 +00:00
5c5c0b2430 Translated using Weblate (Spanish)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/es/
2023-05-03 18:52:40 +00:00
thepoladov13
3c4c66dda6 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/az/
2023-05-03 18:51:34 +00:00
deimidis
4cb3e01d37 Translated using Weblate (Spanish)
Currently translated at 96.6% (29 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/es/
2023-05-03 18:51:33 +00:00
thepoladov13
5489976256 Translated using Weblate (Azerbaijani)
Currently translated at 16.6% (5 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/az/
2023-05-03 18:22:58 +00:00
Anonymous
19ec1e642f Translated using Weblate (Azerbaijani)
Currently translated at 16.6% (5 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/az/
2023-05-03 18:22:58 +00:00
Morgan Antonsson
e1162292ab Translated using Weblate (Swedish)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/sv/
2023-05-03 18:22:58 +00:00
rene-coty
196a44c268 Translated using Weblate (French)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/fr/
2023-05-03 18:22:57 +00:00
thepoladov13
763e30f7e2 Added translation using Weblate (Azerbaijani) 2023-05-03 18:22:09 +00:00
Anonymous
26386b3f71 Translated using Weblate (Hungarian)
Currently translated at 23.3% (7 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/hu/
2023-05-03 15:17:16 +00:00
osiixy
64f67b3f58 Translated using Weblate (Hungarian)
Currently translated at 23.3% (7 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/hu/
2023-05-03 15:17:16 +00:00
osiixy
e43e2c58b7 Added translation using Weblate (Hungarian) 2023-05-03 14:46:57 +00:00
0xMRTT
3baeaab7d4 data: migrate to codeberg 2023-05-03 13:48:40 +00:00
a48d59bf95 Translated using Weblate (German)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/de/
2023-05-03 13:47:25 +00:00
5c8a1f9e04 Translated using Weblate (French)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/fr/
2023-05-03 13:44:06 +00:00
galegovski
1d506a67ed Translated using Weblate (Portuguese)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/pt/
2023-05-03 13:42:49 +00:00
Anonymous
484c288202 Translated using Weblate (Portuguese)
Currently translated at 26.6% (8 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/pt/
2023-05-03 12:27:34 +00:00
galegovski
b078c778c5 Translated using Weblate (Portuguese)
Currently translated at 26.6% (8 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/pt/
2023-05-03 12:27:34 +00:00
muznyo
18b66df198 Translated using Weblate (Czech)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/cs/
2023-05-03 12:23:10 +00:00
muznyo
679376336d Translated using Weblate (French)
Currently translated at 96.6% (29 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/fr/
2023-05-03 12:23:10 +00:00
sjdonado
a0a2ff1c6a Translated using Weblate (Spanish)
Currently translated at 83.3% (25 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/es/
2023-05-03 12:23:10 +00:00
galegovski
09affee2e0 Added translation using Weblate (Portuguese) 2023-05-03 12:23:10 +00:00
0xMRTT
fc1852569b doc: add flathub
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-03 08:57:12 +00:00
0xMRTT
f8d9f28044 doc: remove gh actions
Signed-off-by: 0xMRTT <0xmrtt@noreply.codeberg.org>
2023-05-01 22:32:20 +00:00
c215c33777 provider: bard use googlebardpy 2023-05-01 13:20:31 +02:00
fa998584c7 provider: update bardUA 2023-05-01 12:53:56 +02:00
98a8e86737 provider: add google bard 2023-05-01 11:59:47 +02:00
85147ae859 provider: add about to catgpt 2023-05-01 11:22:47 +02:00
11b3e79234 provider: add about to openai 2023-05-01 11:22:43 +02:00
Anonymous
c65f3b4c11 Translated using Weblate (Czech)
Currently translated at 86.6% (26 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/cs/
2023-05-01 08:57:15 +00:00
Anonymous
ee60be4956 Translated using Weblate (Italian)
Currently translated at 23.3% (7 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/it/
2023-05-01 08:57:15 +00:00
Daudix_UFO
6cafd698e1 Translated using Weblate (Russian)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/ru/
2023-05-01 08:57:15 +00:00
Anonymous
ee7bec5ac7 Translated using Weblate (Russian)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/ru/
2023-05-01 08:57:15 +00:00
ed2997f223 Translated using Weblate (French)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/fr/
2023-05-01 08:57:15 +00:00
Anonymous
20f11281bf Translated using Weblate (French)
Currently translated at 100.0% (30 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/fr/
2023-05-01 08:57:15 +00:00
Anonymous
e022bbe822 Translated using Weblate (Spanish)
Currently translated at 23.3% (7 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/es/
2023-05-01 08:57:15 +00:00
Anonymous
0988fd4154 Translated using Weblate (German)
Currently translated at 80.0% (24 of 30 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/de/
2023-05-01 08:57:15 +00:00
112e9384c3 hf: add 403 and !=200 status code support 2023-05-01 02:03:40 +02:00
Codeberg Translate
9271f1976c Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/
2023-04-30 23:51:54 +00:00
muznyo
c0d4a3a951 Translated using Weblate (Czech)
Currently translated at 100.0% (25 of 25 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/cs/
2023-04-30 23:51:53 +00:00
26b45cdd0d po: update pot 2023-05-01 01:51:17 +02:00
65166a967e po: update pot 2023-05-01 01:46:02 +02:00
5a855e3236 format: with ruff and black 2023-05-01 01:45:31 +02:00
f47b690f5b provider: add google flan u12 2023-05-01 01:17:49 +02:00
6ef07107fe provider: add dialogpt 2023-05-01 01:17:40 +02:00
5e5c689743 provider: add google flan t5 xxl 2023-05-01 00:31:29 +02:00
0f7910eb6a provider: add hugging face base 2023-05-01 00:31:18 +02:00
71ec315941 provider: openai add require api key 2023-05-01 00:30:58 +02:00
127350cd95 provider: add alpaca 2023-05-01 00:30:43 +02:00
Daudix_UFO
886b18491c Translated using Weblate (Russian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/ru/
2023-04-30 21:37:33 +00:00
a942965a45 data: disable davinci 2023-04-30 23:17:57 +02:00
fdb908793e data: add openaitextdavinci003 to gschema 2023-04-30 23:09:19 +02:00
67e83a4fb5 src: add provider notify 2023-04-30 21:03:34 +02:00
ab7010a8db flatpak: add openai 2023-04-30 21:02:40 +02:00
9505d22f66 provider: add support for providers 2023-04-30 16:31:54 +02:00
088ee95a52 src: fix glib warning 2023-04-30 16:30:50 +02:00
08152e750d ci: remove aarch 2023-04-30 12:17:38 +02:00
28d6e5b8fc doc: add codeberg mirror 2023-04-29 18:55:36 +02:00
045a325fbf Translated using Weblate (German)
Currently translated at 88.0% (22 of 25 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/de/
2023-04-29 16:26:45 +00:00
349a67da19 ci: fix gh actions 2023-04-29 17:47:21 +02:00
b4d839ab8a src: fix BAIChat 2023-04-29 17:42:45 +02:00
264358a2b2 ci: fix github actions 2023-04-29 17:41:06 +02:00
c3f2210d5a Translated using Weblate (French)
Currently translated at 100.0% (25 of 25 strings)

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/fr/
2023-04-29 15:33:59 +00:00
Codeberg Translate
653fa25836 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: Bavarder/Bavarder
Translate-URL: https://translate.codeberg.org/projects/bavarder/bavarder/
2023-04-29 15:32:39 +00:00
81a793886e doc: change description 2023-04-29 17:32:14 +02:00
bf3facb551 po: update pot 2023-04-29 17:30:39 +02:00
781aed2132 providers: wip add providers 2023-04-29 17:30:07 +02:00
8abbc26560 main: begin add tts 2023-04-29 17:29:45 +02:00
377469256c win: add new ui components 2023-04-29 17:28:58 +02:00
ef35df04b5 flatpak: add hgchat and gtts 2023-04-29 17:28:47 +02:00
9a376e126a ui: fix spinners 2023-04-29 17:28:31 +02:00
4647be9b03 flatpak: use runtime 44 2023-04-29 17:27:51 +02:00
f9fdb42c60 meson: update conf 2023-04-29 11:31:18 +02:00
2f4297c344 doc: update flatpak messages
Signed-off-by: 0xMRTT <0xMRTT@proton.me>
2023-04-29 11:21:47 +02:00
441f510c0b ui: add listen and speak buttons 2023-04-29 11:16:50 +02:00
52 changed files with 2816 additions and 298 deletions

View File

@@ -23,16 +23,15 @@ A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Environement**
Please past the content of About > Troubleshooting > Debugging Information
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
io.github.Bavarder.Bavarder ...
Environment: ...
Gtk: ...
Python: ...
OS: Linux ...
Providers: ['baichat', 'catgpt', 'huggingchat', 'openaigpt35turbo', 'openaigpt4', ...]
**Additional context**
Add any other context about the problem here.

View File

@@ -10,11 +10,11 @@ jobs:
name: Flatpak
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:gnome-nightly
image: bilelmoussaoui/flatpak-github-actions:gnome-44
options: --privileged
strategy:
matrix:
arch: [x86_64, aarch64]
arch: [x86_64]
fail-fast: false
steps:
- name: Checkout
@@ -29,7 +29,7 @@ jobs:
platforms: arm64
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
repository-name: gnome-nightly
repository-name: gnome-44
bundle: bavarder.flatpak
manifest-path: build-aux/flatpak/io.github.Bavarder.Bavarder.json
cache-key: flatpak-builder-${{ github.sha }}

View File

@@ -6,12 +6,12 @@
</h1>
<p align="center">
<strong>Chit-chat with GPT</strong>
<strong>Chit-chat with an AI</strong>
</p>
<p align="center">
<a href="https://flathub.org/apps/details/io.github.Bavarder.Bavarder">
<img width="200" alt="Download on Flathub" src="https://dl.flathub.org/assets/badges/flathub-badge-i-en.svg"/>
<img width="200" alt="Download on Flathub" src="https://dl.flathub.org/assets/badges/flathub-badge-en.svg"/>
</a>
<br>
</p>
@@ -22,9 +22,6 @@
<a href="https://translate.codeberg.org/engage/bavarder/">
<img src="https://translate.codeberg.org/widgets/bavarder/-/svg-badge.svg" alt="Translation status" />
</a>
<a href="https://github.com/Bavarder/Bavarder/actions/workflows/build.yml">
<img alt="Build status" src="https://github.com/GradienceTeam/Gradience/actions/workflows/build.yml/badge.svg"/>
</a>
<a href="https://repology.org/project/bavarder/versions">
<img alt="Packaging status" src="https://repology.org/badge/tiny-repos/bavarder.svg">
</a>
@@ -40,18 +37,32 @@
<img src="./data/screenshots/quantum-computing.png" alt="Preview"/>
</p>
## About the name
Bavarder is a french word, the definiton of Bavarder is "Parler abondamment de choses sans grande portée" (Talking a lot about things that don't matter) (Larousse) which can be translated by Chit-Chat (informal conversation about matters that are not important). For non-french speakers, Bavarder can be hard to speak, it's prounouced as [bavaʀde]. Hear [here](https://youtu.be/9Qoogwxo5YA)
## Installation
### Flatpak
#### Flathub
You can either use your GNOME Software and search for "Bavarder" or you can run
``` shell
flatpak install io.github.Bavarder.Bavarder
```
#### Latest build
You can download the latest Flatpak build from [Github Actions](https://github.com/Bavarder/Bavarder/actions/workflows/build.yml). Click on the latest job and download the artifact.
#### From Source
Clone the repo and run `flatpak-builder`
```
git clone https://github.com/Bavarder/Bavarder
``` shell
git clone https://codeberg.org/Bavarder/Bavarder # or https://github.com/Bavarder/Bavarder
cd Bavarder
flatpak-builder --install --user --force-clean repo/ build-aux/flatpak/io.github.Bavarder.Bavarder.json
```
@@ -67,3 +78,12 @@ The [GNOME Code of Conduct](https://wiki.gnome.org/Foundation/CodeOfConduct) is
</a>
You can translate Bavarder using Codeberg Translate
## See also
### Imaginer : Imagine with AI
A tool for generating pictures with AI (GNOME app)
- https://github.com/ImaginerApp/Imaginer
- https://codeberg.org/Imaginer/Imaginer

30
SEEN.md Normal file
View File

@@ -0,0 +1,30 @@
# Where Bavarder has been saw
## Press
- https://www.omgubuntu.co.uk/2023/05/bavarder-chatgpt-linux-app
- https://gnulinux.ch/bavarder-chatgpt-ohne-account
- https://infoidevice.fr/bavarder-application-chatgpt-linux/
- https://sempreupdate.com.br/como-instalar-o-chat-bavarder-no-linux/
## Youtube
- https://youtu.be/dtAi2ejMwrk
## Fediverse
- https://bassam.social/notice/AVII4g9FPM0sD1bMWW
- https://pleroma.destroyallmachines.net/notice/AVHg9tnvMACshmHJL6
- https://floss.social/@omgubuntu/110304976747139717
## Twitter
- https://twitter.com/omgubuntu/status/1653752319660417024
- https://twitter.com/linuxern00b/status/1653754427373936645
- https://twitter.com/infoidevice/status/1653996236461023232
- https://twitter.com/search?q=bavarder%20linux&src=typed_query&f=top
## Misc
- https://alternativeto.net/software/bavarder/
- https://linuxphoneapps.org/apps/io.github.bavarder.bavarder/

View File

@@ -5,7 +5,7 @@
xmlns="http://usefulinc.com/ns/doap#">
<name xml:lang="en">Bavarder</name>
<shortdesc xml:lang="en">Chit-chat with GPT</shortdesc>
<shortdesc xml:lang="en">Chit-chat with an AI</shortdesc>
<homepage rdf:resource="https://github.com/Bavarder/Bavarder" />
<bug-database rdf:resource="https://github.com/Bavarder/Bavarder/issues"/>
<programming-language>Python</programming-language>

View File

@@ -1,7 +1,7 @@
{
"app-id" : "io.github.Bavarder.Bavarder",
"runtime" : "org.gnome.Platform",
"runtime-version" : "master",
"runtime-version" : "44",
"sdk" : "org.gnome.Sdk",
"command" : "bavarder",
"finish-args" : [

View File

@@ -1,59 +1,272 @@
{
"name": "python3-baichat-py",
"name": "pypi-dependencies",
"buildsystem": "simple",
"build-commands": [
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"baichat-py\" --no-build-isolation"
],
"sources": [
"build-commands": [],
"modules": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/c2/fd/1ff4da09ca29d8933fda3f3514980357e25419ce5e0f689041edb8f17dab/aiohttp-3.8.4.tar.gz",
"sha256": "bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c"
"name": "python3-baichat-py",
"buildsystem": "simple",
"build-commands": [
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"baichat-py\" --no-build-isolation"
],
"sources": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/c2/fd/1ff4da09ca29d8933fda3f3514980357e25419ce5e0f689041edb8f17dab/aiohttp-3.8.4.tar.gz",
"sha256": "bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/76/ac/a7305707cb852b7e16ff80eaf5692309bde30e2b1100a1fcacdc8f731d97/aiosignal-1.3.1-py3-none-any.whl",
"sha256": "f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/d6/c1/8991e7c5385b897b8c020cdaad718c5b087a6626d1d11a23e1ea87e325a7/async_timeout-4.0.2-py3-none-any.whl",
"sha256": "8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/f0/eb/fcb708c7bf5056045e9e98f62b93bd7467eb718b0202e7698eb11d66416c/attrs-23.1.0-py3-none-any.whl",
"sha256": "1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/f5/ba/2b3ff0140b714149b4ee0c3af857f5e9b5fecd0d877370ea89351c21f433/baichat_py-0.2.1-py3-none-any.whl",
"sha256": "af5e83d813b93b249009da35fbb6cfcea8c65ee36fa0102e3ed7340d90804391"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/e9/10/d629476346112b85c912527b9080944fd2c39a816c2225413dbc0bb6fcc0/frozenlist-1.3.3.tar.gz",
"sha256": "58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/4a/15/bd620f7a6eb9aa5112c4ef93e7031bcd071e0611763d8e17706ef8ba65e0/multidict-6.0.4.tar.gz",
"sha256": "3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/5f/3f/04b3c5e57844fb9c034b09c5cb6d2b43de5d64a093c30529fd233e16cf09/yarl-1.9.2.tar.gz",
"sha256": "04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"
}
]
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/76/ac/a7305707cb852b7e16ff80eaf5692309bde30e2b1100a1fcacdc8f731d97/aiosignal-1.3.1-py3-none-any.whl",
"sha256": "f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"
"name": "python3-hgchat",
"buildsystem": "simple",
"build-commands": [
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"hgchat\" --no-build-isolation"
],
"sources": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/a2/d2/8847383637ae526c6b072356bc1c7d9e7e34040b3acf27c0ec529885ac3d/hgchat-0.1.2-py3-none-any.whl",
"sha256": "fb0699dff7ab9ed208e6801c5e558f7c62422c630f5976062bf75e0580c20f83"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/96/80/034ffeca15c0f4e01b7b9c6ad0fb704b44e190cde4e757edbd60be404c41/requests-2.30.0-py3-none-any.whl",
"sha256": "10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl",
"sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/4b/1d/f8383ef593114755429c307449e7717b87044b3bcd5f7860b89b1f759e34/urllib3-2.0.2-py3-none-any.whl",
"sha256": "d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"
}
]
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/d6/c1/8991e7c5385b897b8c020cdaad718c5b087a6626d1d11a23e1ea87e325a7/async_timeout-4.0.2-py3-none-any.whl",
"sha256": "8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"
"name": "python3-gTTS",
"buildsystem": "simple",
"build-commands": [
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"gTTS\" --no-build-isolation"
],
"sources": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/c2/f1/df59e28c642d583f7dacffb1e0965d0e00b218e0186d7858ac5233dce840/click-8.1.3-py3-none-any.whl",
"sha256": "bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/98/da/4b8bb016aca4abebe5b582ce1b17604a1d9bc91499ac2214e1fa250f69b6/gTTS-2.3.2-py3-none-any.whl",
"sha256": "9132e409603f34d5023458e3e10ce2f5df55498d7a2ee781c9adbe616fbd4152"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/96/80/034ffeca15c0f4e01b7b9c6ad0fb704b44e190cde4e757edbd60be404c41/requests-2.30.0-py3-none-any.whl",
"sha256": "10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/4b/1d/f8383ef593114755429c307449e7717b87044b3bcd5f7860b89b1f759e34/urllib3-2.0.2-py3-none-any.whl",
"sha256": "d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"
}
]
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/f0/eb/fcb708c7bf5056045e9e98f62b93bd7467eb718b0202e7698eb11d66416c/attrs-23.1.0-py3-none-any.whl",
"sha256": "1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"
"name": "python3-openai",
"buildsystem": "simple",
"build-commands": [
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"openai\" --no-build-isolation"
],
"sources": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/c2/fd/1ff4da09ca29d8933fda3f3514980357e25419ce5e0f689041edb8f17dab/aiohttp-3.8.4.tar.gz",
"sha256": "bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/76/ac/a7305707cb852b7e16ff80eaf5692309bde30e2b1100a1fcacdc8f731d97/aiosignal-1.3.1-py3-none-any.whl",
"sha256": "f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/d6/c1/8991e7c5385b897b8c020cdaad718c5b087a6626d1d11a23e1ea87e325a7/async_timeout-4.0.2-py3-none-any.whl",
"sha256": "8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/f0/eb/fcb708c7bf5056045e9e98f62b93bd7467eb718b0202e7698eb11d66416c/attrs-23.1.0-py3-none-any.whl",
"sha256": "1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/e9/10/d629476346112b85c912527b9080944fd2c39a816c2225413dbc0bb6fcc0/frozenlist-1.3.3.tar.gz",
"sha256": "58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/4a/15/bd620f7a6eb9aa5112c4ef93e7031bcd071e0611763d8e17706ef8ba65e0/multidict-6.0.4.tar.gz",
"sha256": "3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/9f/87/838149e472c58a141fa81e2eb4cc8828cb134054b59d67637031985ca770/openai-0.27.6-py3-none-any.whl",
"sha256": "1f07ed06f1cfc6c25126107193726fe4cf476edcc4e1485cd9eb708f068f2606"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/96/80/034ffeca15c0f4e01b7b9c6ad0fb704b44e190cde4e757edbd60be404c41/requests-2.30.0-py3-none-any.whl",
"sha256": "10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/e6/02/a2cff6306177ae6bc73bc0665065de51dfb3b9db7373e122e2735faf0d97/tqdm-4.65.0-py3-none-any.whl",
"sha256": "c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/4b/1d/f8383ef593114755429c307449e7717b87044b3bcd5f7860b89b1f759e34/urllib3-2.0.2-py3-none-any.whl",
"sha256": "d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/5f/3f/04b3c5e57844fb9c034b09c5cb6d2b43de5d64a093c30529fd233e16cf09/yarl-1.9.2.tar.gz",
"sha256": "04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"
}
]
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/f5/ba/2b3ff0140b714149b4ee0c3af857f5e9b5fecd0d877370ea89351c21f433/baichat_py-0.2.1-py3-none-any.whl",
"sha256": "af5e83d813b93b249009da35fbb6cfcea8c65ee36fa0102e3ed7340d90804391"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/e9/10/d629476346112b85c912527b9080944fd2c39a816c2225413dbc0bb6fcc0/frozenlist-1.3.3.tar.gz",
"sha256": "58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/4a/15/bd620f7a6eb9aa5112c4ef93e7031bcd071e0611763d8e17706ef8ba65e0/multidict-6.0.4.tar.gz",
"sha256": "3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/5f/3f/04b3c5e57844fb9c034b09c5cb6d2b43de5d64a093c30529fd233e16cf09/yarl-1.9.2.tar.gz",
"sha256": "04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"
"name": "python3-googlebardpy",
"buildsystem": "simple",
"build-commands": [
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"googlebardpy\" --no-build-isolation"
],
"sources": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/a8/40/30a6440d5ceec49fc268710705b89e654fc854d9b8754850228deaf64892/googlebardpy-0.1.0-py3-none-any.whl",
"sha256": "12e65fdfe99392cbb5e8f93572340b757cd9d7aa83391316eaea3a1527995ef2"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/96/80/034ffeca15c0f4e01b7b9c6ad0fb704b44e190cde4e757edbd60be404c41/requests-2.30.0-py3-none-any.whl",
"sha256": "10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/4b/1d/f8383ef593114755429c307449e7717b87044b3bcd5f7860b89b1f759e34/urllib3-2.0.2-py3-none-any.whl",
"sha256": "d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"
}
]
}
]
}

View File

@@ -1,44 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<id>io.github.Bavarder.Bavarder.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0-or-later</project_license>
<id>io.github.Bavarder.Bavarder</id>
<name>Bavarder</name>
<summary>Chit-chat with GPT</summary>
<summary>Chit-chat with an AI</summary>
<developer_name>0xMRTT</developer_name>
<content_rating type="oars-1.1"/>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0-or-later</project_license>
<launchable type="desktop-id">io.github.Bavarder.Bavarder.desktop</launchable>
<content_rating type="oars-1.1"/>
<description>
<p>Chit-chat with GPT</p>
<p>Chit-chat with an AI</p>
</description>
<screenshots>
<screenshot width="472" height="622">
<caption>Screenshot of Main UI</caption>
<image type="source">https://raw.githubusercontent.com/Bavarder/Bavarder/main/data/screenshots/quantum-computing.png</image>
</screenshot>
</screenshots>
<url type="bugtracker">https://github.com/Bavarder/Bavarder/issues</url>
<url type="bugtracker">https://codeberg.org/Bavarder/Bavarder/issues</url>
<url type="translate">https://translate.codeberg.org/engage/bavarder/</url>
<url type="help">https://github.com/Bavarder/Bavarder/issues</url>
<url type="homepage">https://github.com/Bavarder/Bavarder</url>
<url type="help">https://codeberg.org/Bavarder/Bavarder/issues</url>
<url type="homepage">https://codeberg.org/Bavarder/Bavarder</url>
<kudos>
<kudo>HiDpiIcon</kudo>
<kudo>ModernToolkit</kudo>
</kudos>
<kudos>
<kudo>HiDpiIcon</kudo>
<kudo>ModernToolkit</kudo>
</kudos>
<requires>
<display_length compare="ge">360</display_length>
</requires>
<custom>
<value key="Purism::form_factor">workstation</value>
<value key="Purism::form_factor">mobile</value>
</custom>
<categories>
<category>Utility</category>
</categories>
<requires>
<display_length compare="ge">360</display_length>
</requires>
<recommends>
<control>keyboard</control>
<control>pointing</control>
<control>touch</control>
</recommends>
<categories>
<category>Utility</category>
</categories>
<recommends>
<control>keyboard</control>
<control>pointing</control>
<control>touch</control>
</recommends>
<keywords>
<keyword>Bavarder</keyword>
@@ -50,6 +59,31 @@
</keywords>
<releases>
<release version="0.1.6" date="2023-5-6" type="stable">
<description>
<p>Fix an issue which caused the app to crash randomly</p>
<p>Add save/load of settings</p>
</description>
</release>
<release version="0.1.5" date="2023-5-4" type="stable">
<description>
<p>Fix HuggingChat (again)</p>
</description>
</release>
<release version="0.1.4" date="2023-5-4" type="stable">
<description>
<p>Fix HuggingChat</p>
</description>
</release>
<release version="0.1.3" date="2023-5-4" type="stable">
<description>
<p>Add multiple providers support</p>
<p>Make HuggingChat the default provider</p>
<p>Fix some bugs</p>
<p>Focus on the response entry</p>
<p>Update translations</p>
</description>
</release>
<release version="0.1.2" date="2023-4-27" type="stable">
<description>
<p>Fix appdata not having release tags</p>

View File

@@ -16,5 +16,14 @@
<key name="clear-after-send" type="b">
<default>false</default>
</key>
<key name="enabled-providers" type="as">
<default>["baichat", "catgpt", "huggingchat", "openaigpt35turbo", "openaigpt4"]</default>
</key>
<key name="latest-provider" type="s">
<default>'huggingchat'</default>
</key>
<key name="providers-data" type="a{ss}">
<default>{}</default>
</key>
</schema>
</schemalist>

View File

@@ -20,5 +20,9 @@ template Preferences : Adw.PreferencesWindow {
}
}
}
Adw.PreferencesGroup provider_group {
title: _("Providers");
}
}
}

View File

@@ -26,6 +26,9 @@ template BavarderWindow : Adw.ApplicationWindow {
icon-name: "open-menu-symbolic";
tooltip-text: _("Main Menu");
}
DropDown provider_selector {
styles ["flat"]
}
styles ["flat"]
}
@@ -81,6 +84,23 @@ template BavarderWindow : Adw.ApplicationWindow {
tooltip-text: _("Copy to Clipboard");
action-name: "app.copy_prompt";
}
// Button listen {
// action-name: "app.listen";
// tooltip-text: _("Listen");
// icon-name: "audio-input-microphone-symbolic";
// }
// Button listen_wait {
// visible: false;
// sensitive: false;
// tooltip-text: _("Listening");
// Spinner listen_spinner {
// margin-top: 8;
// margin-bottom: 8;
// margin-start: 8;
// margin-end: 8;
// }
// }
Button ask_button {
visible: true;
sensitive: false;
@@ -154,7 +174,25 @@ template BavarderWindow : Adw.ApplicationWindow {
styles ["toolbar"]
Button {
// Button speak {
// action-name: "app.speak";
// tooltip-text: _("Speak");
// icon-name: "audio-speakers-symbolic";
// }
// Button speak_wait {
// visible: false;
// sensitive: false;
// tooltip-text: _("Speaking");
// Spinner speak_spinner {
// margin-top: 8;
// margin-bottom: 8;
// margin-start: 8;
// margin-end: 8;
// }
// }
Button copy_bot {
sensitive: false;
icon-name: "edit-copy-symbolic";
tooltip-text: _("Copy to Clipboard");
@@ -183,6 +221,11 @@ menu main-menu {
action: "win.show-help-overlay";
}
item {
label: _("Quit");
action: "app.quit";
}
item {
label: _("About Bavarder");
action: "app.about";

View File

@@ -1,5 +1,5 @@
project('bavarder',
version: '0.1.2',
version: '0.1.6',
meson_version: '>= 0.62.0',
default_options: [ 'warning_level=2', 'werror=false', ],
)
@@ -10,6 +10,9 @@ python = import('python')
# Constants
PROJECT_RDNN_NAME = 'io.github.Bavarder.Bavarder'
BUGTRACKER_URL = 'https://github.com/Bavarder/Bavarder/issues'
HELP_URL = 'https://github.com/Bavarder/Bavarder/issues'
TRANSLATE_URL = 'https://translate.codeberg.org/engage/bavarder/'
PROJECT_URL = 'https://github.com/Bavarder'
@@ -55,6 +58,11 @@ conf.set('BUILD_TYPE', get_option('buildtype'))
conf.set('SCHEMAS_DIR', PKGDATA_DIR)
conf.set('SOURCE_DIR', meson.current_source_dir())
conf.set('BUILD_DIR', meson.current_build_dir())
conf.set('BUGTRACKER_URL', BUGTRACKER_URL)
conf.set('HELP_URL', HELP_URL)
conf.set('TRANSLATE_URL', TRANSLATE_URL)
conf.set('RELEASE_VER', meson.project_version())
conf.set('PROJECT_URL', PROJECT_URL)
subdir('data')
subdir('src')

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,7 +24,7 @@ msgstr ""
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with GPT"
msgid "Chit-chat with an AI"
msgstr ""
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
@@ -55,7 +55,7 @@ msgctxt "shortcut window"
msgid "Quit"
msgstr ""
#: data/ui/preferences.blp:5 data/ui/window.blp:177
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr ""
@@ -71,38 +71,74 @@ msgstr ""
msgid "The prompt will be cleared after send"
msgstr ""
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr ""
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr ""
#: data/ui/window.blp:33
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr ""
#: data/ui/window.blp:48
#: data/ui/window.blp:51
msgid "Message"
msgstr ""
#: data/ui/window.blp:81 data/ui/window.blp:160
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr ""
#: data/ui/window.blp:88
#: data/ui/window.blp:89
msgid "Listen"
msgstr ""
#: data/ui/window.blp:96
msgid "Listening"
msgstr ""
#: data/ui/window.blp:108
msgid "Ask"
msgstr ""
#: data/ui/window.blp:97
#: data/ui/window.blp:117
msgid "Wait"
msgstr ""
#: data/ui/window.blp:112
#: data/ui/window.blp:132
msgid "Response"
msgstr ""
#: data/ui/window.blp:182
#: data/ui/window.blp:179
msgid "Speak"
msgstr ""
#: data/ui/window.blp:186
msgid "Speaking"
msgstr ""
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr ""
#: data/ui/window.blp:187
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr ""
#: src/main.py:156
msgid "Special thanks to"
msgstr ""
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr ""
#: src/provider/base.py:38
msgid "Open settings"
msgstr ""
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr ""

View File

@@ -6,3 +6,9 @@ sv
it
de
cs
pt
hu
az
fi
tr
nl

View File

@@ -7,3 +7,5 @@ data/ui/window.blp
src/main.py
src/preferences.py
src/window.py
src/provider/base.py
src/provider/catgpt.py

147
po/az.po Normal file
View File

@@ -0,0 +1,147 @@
# Bavarder POT file
# Copyright (C) 2023 Bavarder
# This file is distributed under the GNU GPLv3 license.
# Bavarder, 2023.
#
# thepoladov13 <thepoladov@protonmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-03 18:51+0000\n"
"Last-Translator: thepoladov13 <thepoladov@protonmail.com>\n"
"Language-Team: Azerbaijani <https://translate.codeberg.org/projects/bavarder/"
"bavarder/az/>\n"
"Language: az\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"
"X-Generator: Weblate 4.17\n"
#: data/io.github.Bavarder.Bavarder.desktop.in:3
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
msgid "Bavarder"
msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with an AI"
msgstr "Chit AI ilə söhbət edin"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
msgid "0xMRTT"
msgstr "0xMRTT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
msgid "Screenshot of Main UI"
msgstr "Əsas UI ekran görüntüsü"
#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Ümumi"
#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Show Shortcuts"
msgstr "Qısayolları göstərin"
#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Ask"
msgstr "Soruş"
#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Quit"
msgstr "Çıx"
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Üstünlüklər"
#: data/ui/preferences.blp:12
msgid "Prompt"
msgstr "Sorğu"
#: data/ui/preferences.blp:15
msgid "Clear prompt after send"
msgstr "Göndərdikdən sonra sorğunu silin"
#: data/ui/preferences.blp:16
msgid "The prompt will be cleared after send"
msgstr "Sorğu göndərildikdən sonra silinəcək"
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Provayderlər"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr "Əsas menyu"
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Şəbəkə bağlantısı yoxdur"
#: data/ui/window.blp:51
msgid "Message"
msgstr "Mesaj"
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Buferə kopyalayın"
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Dinləmək"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "Dinləyirəm"
#: data/ui/window.blp:108
msgid "Ask"
msgstr "Soruş"
#: data/ui/window.blp:117
msgid "Wait"
msgstr "Gözləyin"
#: data/ui/window.blp:132
msgid "Response"
msgstr "Cavab"
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Danış"
#: data/ui/window.blp:186
msgid "Speaking"
msgstr "Danışıram"
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr "Klaviatura Qısayolları"
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr "Bavarder haqqında"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Xüsusi təşəkkürlər"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr "API açarı təqdim edilməyib, siz onu ayarlarda təmin edə bilərsiniz"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Parametrləri açın"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Cat GPT"

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
"PO-Revision-Date: 2023-04-27 19:52+0000\n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-03 12:23+0000\n"
"Last-Translator: muznyo <codeberg.vqtek@simplelogin.com>\n"
"Language-Team: Czech <https://translate.codeberg.org/projects/bavarder/"
"bavarder/cs/>\n"
@@ -27,8 +27,8 @@ msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with GPT"
msgstr "Chatovat s GPT"
msgid "Chit-chat with an AI"
msgstr "Chatovat s umělou inteligencí"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
msgid "0xMRTT"
@@ -58,7 +58,7 @@ msgctxt "shortcut window"
msgid "Quit"
msgstr "Ukončit"
#: data/ui/preferences.blp:5 data/ui/window.blp:177
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Nastavení"
@@ -74,41 +74,77 @@ msgstr "Vymazat dotaz po odeslání"
msgid "The prompt will be cleared after send"
msgstr "Dotaz bude vymazán po odeslání"
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Poskytovatelé"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr "Hlavní menu"
#: data/ui/window.blp:33
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Žádné připojení k síti"
#: data/ui/window.blp:48
#: data/ui/window.blp:51
msgid "Message"
msgstr "Zpráva"
#: data/ui/window.blp:81 data/ui/window.blp:160
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Kopírovat do schránky"
#: data/ui/window.blp:88
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Poslech"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "Poslouchání"
#: data/ui/window.blp:108
msgid "Ask"
msgstr "Zeptat se"
#: data/ui/window.blp:97
#: data/ui/window.blp:117
msgid "Wait"
msgstr "Čekejte"
#: data/ui/window.blp:112
#: data/ui/window.blp:132
msgid "Response"
msgstr "Odpověď"
#: data/ui/window.blp:182
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Mluvit"
#: data/ui/window.blp:186
msgid "Speaking"
msgstr "Mluvení"
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr "Klávesové zkratky"
#: data/ui/window.blp:187
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr "O Bavarder"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Zvláštní poděkování patří"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr "API klíč nebyl přidán, můžete jej přidat v nastavení"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Otevřít nastavení"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Cat GPT"
#~ msgid "Ready"
#~ msgstr "Připraveno"

View File

@@ -4,13 +4,14 @@
# Bavarder, 2023.
#
# 0xMRTT <0xmrtt@tuta.io>, 2023.
# 0xMRTT <0xmrtt@proton.me>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-03 13:47+0000\n"
"Last-Translator: 0xMRTT <0xmrtt@proton.me>\n"
"Language-Team: German <https://translate.codeberg.org/projects/bavarder/"
"bavarder/de/>\n"
"Language: de\n"
@@ -27,7 +28,7 @@ msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with GPT"
msgid "Chit-chat with an AI"
msgstr "Plaudern Sie mit GPT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
@@ -58,7 +59,7 @@ msgctxt "shortcut window"
msgid "Quit"
msgstr "Aufhören"
#: data/ui/preferences.blp:5 data/ui/window.blp:177
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Einstellungen"
@@ -74,42 +75,79 @@ msgstr "Eingabeaufforderung nach dem Senden löschen"
msgid "The prompt will be cleared after send"
msgstr "Die Eingabeaufforderung wird nach dem Senden gelöscht"
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Anbieter"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr "Hauptmenü"
#: data/ui/window.blp:33
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Keine Netzwerkverbindung"
#: data/ui/window.blp:48
#: data/ui/window.blp:51
msgid "Message"
msgstr "Meldung"
#: data/ui/window.blp:81 data/ui/window.blp:160
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "In die Zwischenablage kopieren"
#: data/ui/window.blp:88
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Hören"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "Hören"
#: data/ui/window.blp:108
msgid "Ask"
msgstr "Fragen"
#: data/ui/window.blp:97
#: data/ui/window.blp:117
msgid "Wait"
msgstr "Warten"
#: data/ui/window.blp:112
#: data/ui/window.blp:132
msgid "Response"
msgstr "Antwort"
#: data/ui/window.blp:182
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Sprechen"
#: data/ui/window.blp:186
msgid "Speaking"
msgstr "Reden"
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr "Tastatürkürzel"
#: data/ui/window.blp:187
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr "Über Bavarder"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Besonderer Dank an"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr ""
"Kein API-Schlüssel angegeben, Sie können einen in den Einstellungen angeben"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Einstellungen öffnen"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Katze GPT"
#~ msgid "Ready"
#~ msgstr "Bereit"

View File

@@ -4,13 +4,16 @@
# Bavarder, 2023.
#
# 0xMRTT <0xmrtt@tuta.io>, 2023.
# sjdonado <jsrd98@gmail.com>, 2023.
# deimidis <gmovia@pm.me>, 2023.
# 0xMRTT <0xmrtt@proton.me>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-03 18:52+0000\n"
"Last-Translator: 0xMRTT <0xmrtt@proton.me>\n"
"Language-Team: Spanish <https://translate.codeberg.org/projects/bavarder/"
"bavarder/es/>\n"
"Language: es\n"
@@ -23,20 +26,20 @@ msgstr ""
#: data/io.github.Bavarder.Bavarder.desktop.in:3
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
msgid "Bavarder"
msgstr ""
msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with GPT"
msgstr ""
msgid "Chit-chat with an AI"
msgstr "Conversa con una IA"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
msgid "0xMRTT"
msgstr ""
msgstr "0xMRTT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
msgid "Screenshot of Main UI"
msgstr ""
msgstr "Captura de Pantalla de la Interfaz de Usuario Principal"
#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
@@ -46,69 +49,106 @@ msgstr "General"
#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Show Shortcuts"
msgstr ""
msgstr "Mostrar Atajos de Teclado"
#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Ask"
msgstr ""
msgstr "Preguntar"
#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Quit"
msgstr "Salida"
#: data/ui/preferences.blp:5 data/ui/window.blp:177
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Preferencias"
#: data/ui/preferences.blp:12
msgid "Prompt"
msgstr ""
msgstr "Entrada"
#: data/ui/preferences.blp:15
msgid "Clear prompt after send"
msgstr ""
msgstr "Limpiar entrada después de enviar"
#: data/ui/preferences.blp:16
msgid "The prompt will be cleared after send"
msgstr ""
msgstr "La entrada será borrada después de enviar"
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Proveedores"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr ""
msgstr "Menú Principal"
#: data/ui/window.blp:33
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "No hay conexión de red"
#: data/ui/window.blp:48
#: data/ui/window.blp:51
msgid "Message"
msgstr "Mensaje"
#: data/ui/window.blp:81 data/ui/window.blp:160
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Copiar al portapapeles"
#: data/ui/window.blp:88
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Escuchar"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "Escuchando"
#: data/ui/window.blp:108
msgid "Ask"
msgstr ""
msgstr "Preguntar"
#: data/ui/window.blp:97
#: data/ui/window.blp:117
msgid "Wait"
msgstr ""
msgstr "Espera"
#: data/ui/window.blp:112
#: data/ui/window.blp:132
msgid "Response"
msgstr ""
msgstr "Respuesta"
#: data/ui/window.blp:182
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Hablar"
#: data/ui/window.blp:186
msgid "Speaking"
msgstr "Hablando"
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr ""
msgstr "Atajos de Teclado"
#: data/ui/window.blp:187
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr "Sobre Bavarder"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Agradecimientos especiales a"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr ""
"No se ha ingresado una API Key valida, puede ingresar una en Configuraciones"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Abrir configuraciones"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Charla GPT"
#~ msgid "Ready"
#~ msgstr "Leer"

147
po/fi.po Normal file
View File

@@ -0,0 +1,147 @@
# Bavarder POT file
# Copyright (C) 2023 Bavarder
# This file is distributed under the GNU GPLv3 license.
# Bavarder, 2023.
#
# artnay <jiri.gronroos@iki.fi>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-04 20:52+0000\n"
"Last-Translator: artnay <jiri.gronroos@iki.fi>\n"
"Language-Team: Finnish <https://translate.codeberg.org/projects/bavarder/"
"bavarder/fi/>\n"
"Language: fi\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"
"X-Generator: Weblate 4.17\n"
#: data/io.github.Bavarder.Bavarder.desktop.in:3
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
msgid "Bavarder"
msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with an AI"
msgstr "Keskustele tekoälyn kanssa"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
msgid "0xMRTT"
msgstr "0xMRTT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
msgid "Screenshot of Main UI"
msgstr "Kuvakaappaus käyttöliittymästä"
#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Yleiset"
#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Show Shortcuts"
msgstr "Näytä pikanäppäimet"
#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Ask"
msgstr "Kysy"
#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Quit"
msgstr "Lopeta"
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Asetukset"
#: data/ui/preferences.blp:12
msgid "Prompt"
msgstr "Kehote"
#: data/ui/preferences.blp:15
msgid "Clear prompt after send"
msgstr "Tyhjennä kehote lähetyksen jälkeen"
#: data/ui/preferences.blp:16
msgid "The prompt will be cleared after send"
msgstr "Kehote tyhjennetään lähetyksen jälkeen"
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Palveluntarjoajat"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr "Päävalikko"
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Ei verkkoyhteyttä"
#: data/ui/window.blp:51
msgid "Message"
msgstr "Viesti"
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Kopioi leikepöydälle"
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Kuuntele"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "Kuunnellaan"
#: data/ui/window.blp:108
msgid "Ask"
msgstr "Kysy"
#: data/ui/window.blp:117
msgid "Wait"
msgstr "Odota"
#: data/ui/window.blp:132
msgid "Response"
msgstr "Vastaus"
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Puhu"
#: data/ui/window.blp:186
msgid "Speaking"
msgstr "Puhutaan"
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr "Pikanäppäimet"
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr "Tietoja - Bavarder"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Erityiskiitokset"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr "API-avainta ei asetettu, aseta avain asetuksissa"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Avaa asetukset"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Cat GPT"

View File

@@ -4,13 +4,16 @@
# Bavarder, 2023.
#
# 0xMRTT <0xmrtt@tuta.io>, 2023.
# 0xMRTT <0xmrtt@proton.me>, 2023.
# muznyo <codeberg.vqtek@simplelogin.com>, 2023.
# rene-coty <irenee.thirion@e.email>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-03 18:22+0000\n"
"Last-Translator: rene-coty <irenee.thirion@e.email>\n"
"Language-Team: French <https://translate.codeberg.org/projects/bavarder/"
"bavarder/fr/>\n"
"Language: fr\n"
@@ -27,7 +30,7 @@ msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with GPT"
msgid "Chit-chat with an AI"
msgstr "Bavarder avec GPT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
@@ -36,7 +39,7 @@ msgstr "0xMRTT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
msgid "Screenshot of Main UI"
msgstr "Capture d'écran de l'interface utilisateur principale"
msgstr "Capture décran de linterface principale"
#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
@@ -46,69 +49,106 @@ msgstr "Général"
#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Show Shortcuts"
msgstr "Afficher les Raccourcis"
msgstr "Afficher les raccourcis"
#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Ask"
msgstr "Demandez"
msgstr "Demander"
#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Quit"
msgstr "Quitter"
#: data/ui/preferences.blp:5 data/ui/window.blp:177
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Préférences"
#: data/ui/preferences.blp:12
msgid "Prompt"
msgstr "Invite"
msgstr "Requête"
#: data/ui/preferences.blp:15
msgid "Clear prompt after send"
msgstr "Effacer l'invite après l'envoi"
msgstr "Effacer la requête après envoi"
#: data/ui/preferences.blp:16
msgid "The prompt will be cleared after send"
msgstr "L'invite sera effacée après l'envoi"
msgstr "La requête sera effacée après envoi"
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Fournisseurs"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr "Menu Principal"
#: data/ui/window.blp:33
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Pas de connexion réseau"
#: data/ui/window.blp:48
#: data/ui/window.blp:51
msgid "Message"
msgstr "Message"
#: data/ui/window.blp:81 data/ui/window.blp:160
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Copier dans le presse papier"
msgstr "Copier dans le presse-papiers"
#: data/ui/window.blp:88
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Écouter"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "En écoute"
#: data/ui/window.blp:108
msgid "Ask"
msgstr "Demandez"
msgstr "Demander"
#: data/ui/window.blp:97
#: data/ui/window.blp:117
msgid "Wait"
msgstr "Attendez"
#: data/ui/window.blp:112
#: data/ui/window.blp:132
msgid "Response"
msgstr "Réponse"
#: data/ui/window.blp:182
msgid "Keyboard Shortcuts"
msgstr "Raccourcis Clavier"
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Parler"
#: data/ui/window.blp:187
#: data/ui/window.blp:186
msgid "Speaking"
msgstr "En train de parler"
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr "Raccourcis clavier"
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr "A propos de Bavarder"
msgstr "À propos de Bavarder"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Remerciements spéciaux à"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr ""
"Pas de clé dAPI fournie, vous pouvez en ajouter une dans les paramètres"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Ouvrir les paramètres"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Chat GPT"
#~ msgid "Ready"
#~ msgstr "Prêt"

148
po/hu.po Normal file
View File

@@ -0,0 +1,148 @@
# Bavarder POT file
# Copyright (C) 2023 Bavarder
# This file is distributed under the GNU GPLv3 license.
# Bavarder, 2023.
#
# osiixy <osiixy@gmail.com>, 2023.
# 0xMRTT <0xmrtt@proton.me>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-03 19:17+0000\n"
"Last-Translator: 0xMRTT <0xmrtt@proton.me>\n"
"Language-Team: Hungarian <https://translate.codeberg.org/projects/bavarder/"
"bavarder/hu/>\n"
"Language: hu\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"
"X-Generator: Weblate 4.17\n"
#: data/io.github.Bavarder.Bavarder.desktop.in:3
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
msgid "Bavarder"
msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with an AI"
msgstr ""
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
msgid "0xMRTT"
msgstr ""
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
msgid "Screenshot of Main UI"
msgstr ""
#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Általános"
#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Show Shortcuts"
msgstr ""
#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Ask"
msgstr ""
#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Quit"
msgstr "Kilépés"
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Beállítások"
#: data/ui/preferences.blp:12
msgid "Prompt"
msgstr ""
#: data/ui/preferences.blp:15
msgid "Clear prompt after send"
msgstr ""
#: data/ui/preferences.blp:16
msgid "The prompt will be cleared after send"
msgstr ""
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr ""
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr ""
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Nincs hálózati kapcsolat"
#: data/ui/window.blp:51
msgid "Message"
msgstr "Üzenet"
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Másolás a vágólapra"
#: data/ui/window.blp:89
msgid "Listen"
msgstr ""
#: data/ui/window.blp:96
msgid "Listening"
msgstr ""
#: data/ui/window.blp:108
msgid "Ask"
msgstr ""
#: data/ui/window.blp:117
msgid "Wait"
msgstr ""
#: data/ui/window.blp:132
msgid "Response"
msgstr ""
#: data/ui/window.blp:179
msgid "Speak"
msgstr ""
#: data/ui/window.blp:186
msgid "Speaking"
msgstr ""
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr ""
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr ""
#: src/main.py:156
msgid "Special thanks to"
msgstr ""
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr ""
#: src/provider/base.py:38
msgid "Open settings"
msgstr ""
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr ""

View File

@@ -4,13 +4,14 @@
# Bavarder, 2023.
#
# 0xMRTT <0xmrtt@tuta.io>, 2023.
# phaerrax <davide.ferracin@protonmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-06 00:15+0000\n"
"Last-Translator: phaerrax <davide.ferracin@protonmail.com>\n"
"Language-Team: Italian <https://translate.codeberg.org/projects/bavarder/"
"bavarder/it/>\n"
"Language: it\n"
@@ -23,20 +24,20 @@ msgstr ""
#: data/io.github.Bavarder.Bavarder.desktop.in:3
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
msgid "Bavarder"
msgstr ""
msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with GPT"
msgstr ""
msgid "Chit-chat with an AI"
msgstr "Chiacchiera con un'IA"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
msgid "0xMRTT"
msgstr ""
msgstr "0xMRTT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
msgid "Screenshot of Main UI"
msgstr ""
msgstr "Schermata dell'interfaccia principale"
#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
@@ -46,19 +47,19 @@ msgstr "Generale"
#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Show Shortcuts"
msgstr ""
msgstr "Mostra scorciatoie"
#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Ask"
msgstr ""
msgstr "Chiedi"
#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Quit"
msgstr "Esci"
#: data/ui/preferences.blp:5 data/ui/window.blp:177
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Preferenze"
@@ -74,41 +75,77 @@ msgstr ""
msgid "The prompt will be cleared after send"
msgstr ""
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Fornitori"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr ""
msgstr "Menù principale"
#: data/ui/window.blp:33
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Nessuna connessione di rete"
#: data/ui/window.blp:48
#: data/ui/window.blp:51
msgid "Message"
msgstr "Messaggio"
#: data/ui/window.blp:81 data/ui/window.blp:160
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Copia negli appunti"
#: data/ui/window.blp:88
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Ascolta"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "In ascolto"
#: data/ui/window.blp:108
msgid "Ask"
msgstr ""
msgstr "Chiedi"
#: data/ui/window.blp:97
#: data/ui/window.blp:117
msgid "Wait"
msgstr ""
msgstr "Attendere"
#: data/ui/window.blp:112
#: data/ui/window.blp:132
msgid "Response"
msgstr "Risposta"
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Parla"
#: data/ui/window.blp:186
msgid "Speaking"
msgstr ""
#: data/ui/window.blp:182
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr ""
msgstr "Scorciatoie da tastiera"
#: data/ui/window.blp:187
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr ""
msgstr "Informazioni su Bavarder"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Un ringraziamento speciale a"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr "Nessuna chiave API fornita; è possibile fornirne una nelle impostazioni"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Apri impostazioni"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Cat GPT"
#~ msgid "Ready"
#~ msgstr "Pronto"

147
po/nl.po Normal file
View File

@@ -0,0 +1,147 @@
# Bavarder POT file
# Copyright (C) 2023 Bavarder
# This file is distributed under the GNU GPLv3 license.
# Bavarder, 2023.
#
# Vistaus <vistausss@fastmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-05 10:18+0000\n"
"Last-Translator: Vistaus <vistausss@fastmail.com>\n"
"Language-Team: Dutch <https://translate.codeberg.org/projects/bavarder/"
"bavarder/nl/>\n"
"Language: nl\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"
"X-Generator: Weblate 4.17\n"
#: data/io.github.Bavarder.Bavarder.desktop.in:3
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
msgid "Bavarder"
msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with an AI"
msgstr "Babbel met een KI"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
msgid "0xMRTT"
msgstr "0xMRTT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
msgid "Screenshot of Main UI"
msgstr "Schermfoto van het hoofdscherm"
#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Algemeen"
#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Show Shortcuts"
msgstr "Sneltoetsen tonen"
#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Ask"
msgstr "Vraag stellen"
#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Quit"
msgstr "Afsluiten"
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Voorkeuren"
#: data/ui/preferences.blp:12
msgid "Prompt"
msgstr "Invoerveld"
#: data/ui/preferences.blp:15
msgid "Clear prompt after send"
msgstr "Invoerveld wissen na versturen"
#: data/ui/preferences.blp:16
msgid "The prompt will be cleared after send"
msgstr "Wis het invoerveld na het stellen van een vraag"
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Diensten"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr "Hoofdmenu"
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Geen netwerkverbinding"
#: data/ui/window.blp:51
msgid "Message"
msgstr "Bericht"
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Kopiëren naar klembord"
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Luisteren"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "Bezig met luisteren…"
#: data/ui/window.blp:108
msgid "Ask"
msgstr "Vraag stellen"
#: data/ui/window.blp:117
msgid "Wait"
msgstr "Even geduld…"
#: data/ui/window.blp:132
msgid "Response"
msgstr "Antwoord"
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Praten"
#: data/ui/window.blp:186
msgid "Speaking"
msgstr "Bezig met praten…"
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr "Sneltoetsen"
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr "Over Bavarder"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Met veel dank aan"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr "Er is geen api-sleutel opgegeven - open de voorkeuren"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Voorkeuren openen"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Cat GPT"

148
po/pt.po Normal file
View File

@@ -0,0 +1,148 @@
# Bavarder POT file
# Copyright (C) 2023 Bavarder
# This file is distributed under the GNU GPLv3 license.
# Bavarder, 2023.
#
# galegovski <galegovski@outlook.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-03 13:42+0000\n"
"Last-Translator: galegovski <galegovski@outlook.com>\n"
"Language-Team: Portuguese <https://translate.codeberg.org/projects/bavarder/"
"bavarder/pt/>\n"
"Language: pt\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"
"X-Generator: Weblate 4.17\n"
#: data/io.github.Bavarder.Bavarder.desktop.in:3
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
msgid "Bavarder"
msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with an AI"
msgstr "Bate-papo com uma IA"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
msgid "0xMRTT"
msgstr "0xMRTT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
msgid "Screenshot of Main UI"
msgstr "Captura da tela principal"
#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Geral"
#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Show Shortcuts"
msgstr "Mostrar Atalhos"
#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Ask"
msgstr "Perguntar"
#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Quit"
msgstr "Sair"
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Preferências"
#: data/ui/preferences.blp:12
msgid "Prompt"
msgstr "Prompt"
#: data/ui/preferences.blp:15
msgid "Clear prompt after send"
msgstr "Limpar prompt após enviar"
#: data/ui/preferences.blp:16
msgid "The prompt will be cleared after send"
msgstr "O prompt será limpo após o envio"
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Provedores"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr "Menu principal"
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Nenhuma conexão de rede"
#: data/ui/window.blp:51
msgid "Message"
msgstr "Mensagem"
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Copiar para área de transferência"
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Ouvir"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "Audição"
#: data/ui/window.blp:108
msgid "Ask"
msgstr "Perguntar"
#: data/ui/window.blp:117
msgid "Wait"
msgstr "Espere"
#: data/ui/window.blp:132
msgid "Response"
msgstr "Resposta"
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Falar"
#: data/ui/window.blp:186
msgid "Speaking"
msgstr "Falando"
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr "Atalhos do teclado"
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr "Sobre Bavarder"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Agradecimentos especiais para"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr ""
"Nenhuma chave de API fornecida, você pode fornecer uma nas configurações"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Abrir configurações"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Cat GPT"

View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-01 08:57+0000\n"
"Last-Translator: Daudix_UFO <ddaudix@gmail.com>\n"
"Language-Team: Russian <https://translate.codeberg.org/projects/bavarder/"
"bavarder/ru/>\n"
@@ -18,8 +18,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.17\n"
#: data/io.github.Bavarder.Bavarder.desktop.in:3
@@ -29,7 +29,7 @@ msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with GPT"
msgid "Chit-chat with an AI"
msgstr "Болтайте с GPT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
@@ -60,7 +60,7 @@ msgctxt "shortcut window"
msgid "Quit"
msgstr "Выйти"
#: data/ui/preferences.blp:5 data/ui/window.blp:177
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Параметры"
@@ -76,42 +76,78 @@ msgstr "Очищать поле ввода после отправки"
msgid "The prompt will be cleared after send"
msgstr "Поле ввода будет очищено после отправки"
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Провайдеры"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr "Главное меню"
#: data/ui/window.blp:33
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Нет подключения к сети"
#: data/ui/window.blp:48
#: data/ui/window.blp:51
msgid "Message"
msgstr "Сообщение"
#: data/ui/window.blp:81 data/ui/window.blp:160
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Скопировать в буфер обмена"
#: data/ui/window.blp:88
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Прослушать"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "Прослушивание"
#: data/ui/window.blp:108
msgid "Ask"
msgstr "Спросить"
#: data/ui/window.blp:97
#: data/ui/window.blp:117
msgid "Wait"
msgstr "Ждите"
#: data/ui/window.blp:112
#: data/ui/window.blp:132
msgid "Response"
msgstr "Ответ"
#: data/ui/window.blp:182
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Произнести"
#: data/ui/window.blp:186
msgid "Speaking"
msgstr "Произношение"
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr "Комбинации клавиш"
#: data/ui/window.blp:187
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr "О Bavarder"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Особое спасибо"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr "Ключ API не предоставлен, вы можете предоставить его в настройках"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Открыть настройки"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Cat GPT"
#~ msgid "Ready"
#~ msgstr "Готов"

View File

@@ -4,13 +4,14 @@
# Bavarder, 2023.
#
# 0xMRTT <0xmrtt@tuta.io>, 2023.
# Morgan Antonsson <morgan.antonsson@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-03 18:22+0000\n"
"Last-Translator: Morgan Antonsson <morgan.antonsson@gmail.com>\n"
"Language-Team: Swedish <https://translate.codeberg.org/projects/bavarder/"
"bavarder/sv/>\n"
"Language: sv\n"
@@ -23,20 +24,20 @@ msgstr ""
#: data/io.github.Bavarder.Bavarder.desktop.in:3
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
msgid "Bavarder"
msgstr ""
msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with GPT"
msgstr ""
msgid "Chit-chat with an AI"
msgstr "Chatta med en AI"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
msgid "0xMRTT"
msgstr ""
msgstr "0xMRTT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
msgid "Screenshot of Main UI"
msgstr ""
msgstr "Skärmdump av huvudgränssnittet"
#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
@@ -46,69 +47,105 @@ msgstr "Generellt"
#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Show Shortcuts"
msgstr ""
msgstr "Visa genvägar"
#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Ask"
msgstr ""
msgstr "Fråga"
#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Quit"
msgstr "Sluta"
msgstr "Avsluta"
#: data/ui/preferences.blp:5 data/ui/window.blp:177
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Inställningar"
#: data/ui/preferences.blp:12
msgid "Prompt"
msgstr ""
msgstr "Prompt"
#: data/ui/preferences.blp:15
msgid "Clear prompt after send"
msgstr ""
msgstr "Töm prompt efter den har skickats"
#: data/ui/preferences.blp:16
msgid "The prompt will be cleared after send"
msgstr ""
msgstr "Prompten kommer att rensas efter att den har skickats"
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Leverantörer"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr ""
msgstr "Huvudmeny"
#: data/ui/window.blp:33
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Ingen kontakt med nätverket"
#: data/ui/window.blp:48
#: data/ui/window.blp:51
msgid "Message"
msgstr "Meddelande"
#: data/ui/window.blp:81 data/ui/window.blp:160
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Kopiera till urklipp"
#: data/ui/window.blp:88
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Lyssna"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "Lyssnar"
#: data/ui/window.blp:108
msgid "Ask"
msgstr ""
msgstr "Fråga"
#: data/ui/window.blp:97
#: data/ui/window.blp:117
msgid "Wait"
msgstr ""
msgstr "Vänta"
#: data/ui/window.blp:112
#: data/ui/window.blp:132
msgid "Response"
msgstr ""
msgstr "Svar"
#: data/ui/window.blp:182
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Tala"
#: data/ui/window.blp:186
msgid "Speaking"
msgstr "Talar"
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr ""
msgstr "Tangentbordsgenvägar"
#: data/ui/window.blp:187
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr ""
msgstr "Om Bavarder"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Särskilt tack till"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr "Ingen API-nyckel har angetts, du kan ange en i inställningarna"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Öppna inställningar"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Cat GPT"
#~ msgid "Ready"
#~ msgstr "läst"

147
po/tr.po Normal file
View File

@@ -0,0 +1,147 @@
# Bavarder POT file
# Copyright (C) 2023 Bavarder
# This file is distributed under the GNU GPLv3 license.
# Bavarder, 2023.
#
# keyiflerolsun <keyiflerolsun@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-05-04 20:56+0000\n"
"Last-Translator: keyiflerolsun <keyiflerolsun@gmail.com>\n"
"Language-Team: Turkish <https://translate.codeberg.org/projects/bavarder/"
"bavarder/tr/>\n"
"Language: tr\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"
"X-Generator: Weblate 4.17\n"
#: data/io.github.Bavarder.Bavarder.desktop.in:3
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:6 data/ui/window.blp:6
msgid "Bavarder"
msgstr "Bavarder"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with an AI"
msgstr "Chit AI ile sohbet edin"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
msgid "0xMRTT"
msgstr "0xMRTT"
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:15
msgid "Screenshot of Main UI"
msgstr "Ana Kullanıcı Arayüzü'nün ekran görüntüsü"
#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Genel"
#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Show Shortcuts"
msgstr "Kısayolları Göster\""
#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Ask"
msgstr "Sor"
#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Quit"
msgstr "Çıkış"
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Tercihler"
#: data/ui/preferences.blp:12
msgid "Prompt"
msgstr "Girdi"
#: data/ui/preferences.blp:15
msgid "Clear prompt after send"
msgstr "Gönderdikten sonra giriş alanını temizle"
#: data/ui/preferences.blp:16
msgid "The prompt will be cleared after send"
msgstr "Gönderimden sonra giriş alanı temizlenecek"
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr "Sağlayıcılar"
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr "Ana Menü"
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Ağ bağlantısı yok"
#: data/ui/window.blp:51
msgid "Message"
msgstr "Mesaj"
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Panoya kopyala"
#: data/ui/window.blp:89
msgid "Listen"
msgstr "Dinle"
#: data/ui/window.blp:96
msgid "Listening"
msgstr "Dinleniyor"
#: data/ui/window.blp:108
msgid "Ask"
msgstr "Sor"
#: data/ui/window.blp:117
msgid "Wait"
msgstr "Bekle"
#: data/ui/window.blp:132
msgid "Response"
msgstr "Yanıt"
#: data/ui/window.blp:179
msgid "Speak"
msgstr "Konuş"
#: data/ui/window.blp:186
msgid "Speaking"
msgstr "Konuşuyor"
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr "Klavye kısayolları"
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr "Bavarder Hakkında"
#: src/main.py:156
msgid "Special thanks to"
msgstr "Özel teşekkürler"
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr "API anahtarı sağlanmadı, ayarlarda bir tane sağlayabilirsiniz"
#: src/provider/base.py:38
msgid "Open settings"
msgstr "Ayarları aç"
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr "Cat GPT"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-27 22:07+0200\n"
"POT-Creation-Date: 2023-05-01 01:51+0200\n"
"PO-Revision-Date: 2023-04-27 17:37+0000\n"
"Last-Translator: 0xMRTT <0xmrtt@tuta.io>\n"
"Language-Team: Ukrainian <https://translate.codeberg.org/projects/bavarder/"
@@ -28,7 +28,7 @@ msgstr ""
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:7
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:11
msgid "Chit-chat with GPT"
msgid "Chit-chat with an AI"
msgstr ""
#: data/io.github.Bavarder.Bavarder.appdata.xml.in:8
@@ -59,7 +59,7 @@ msgctxt "shortcut window"
msgid "Quit"
msgstr "Вийти"
#: data/ui/preferences.blp:5 data/ui/window.blp:177
#: data/ui/preferences.blp:5 data/ui/window.blp:215
msgid "Preferences"
msgstr "Опції"
@@ -75,42 +75,78 @@ msgstr ""
msgid "The prompt will be cleared after send"
msgstr ""
#: data/ui/preferences.blp:25
msgid "Providers"
msgstr ""
#: data/ui/window.blp:27
msgid "Main Menu"
msgstr ""
#: data/ui/window.blp:33
#: data/ui/window.blp:36 src/provider/base.py:43
msgid "No network connection"
msgstr "Відсутнє з'єднання з мережею"
#: data/ui/window.blp:48
#: data/ui/window.blp:51
msgid "Message"
msgstr "Повідомлення"
#: data/ui/window.blp:81 data/ui/window.blp:160
#: data/ui/window.blp:84 data/ui/window.blp:198
msgid "Copy to Clipboard"
msgstr "Копіювати"
#: data/ui/window.blp:88
#: data/ui/window.blp:89
msgid "Listen"
msgstr ""
#: data/ui/window.blp:96
msgid "Listening"
msgstr ""
#: data/ui/window.blp:108
msgid "Ask"
msgstr ""
#: data/ui/window.blp:97
#: data/ui/window.blp:117
msgid "Wait"
msgstr ""
#: data/ui/window.blp:112
#: data/ui/window.blp:132
msgid "Response"
msgstr ""
#: data/ui/window.blp:182
#: data/ui/window.blp:179
msgid "Speak"
msgstr ""
#: data/ui/window.blp:186
msgid "Speaking"
msgstr ""
#: data/ui/window.blp:220
msgid "Keyboard Shortcuts"
msgstr ""
#: data/ui/window.blp:187
#: data/ui/window.blp:225
msgid "About Bavarder"
msgstr ""
#: src/main.py:156
msgid "Special thanks to"
msgstr ""
#: src/provider/base.py:36
msgid "No API key provided, you can provide one in settings"
msgstr ""
#: src/provider/base.py:38
msgid "Open settings"
msgstr ""
#: src/provider/catgpt.py:7 src/provider/catgpt.py:54
msgid "Cat GPT"
msgstr ""
#~ msgid "Ready"
#~ msgstr "Готово"

View File

@@ -2,4 +2,8 @@
# chmod +x flatpak-pip-generator
# ./flatpak-pip-generator --requirements-file=requirements.txt --output pypi-dependencies
baichat-py
baichat-py>=0.1.2
hgchat
gTTS
openai
googlebardpy

View File

@@ -21,20 +21,25 @@ import sys
import gi
import sys
import threading
import socket
import json
gi.require_version("Gtk", "4.0")
gi.require_version("Adw", "1")
gi.require_version("Gdk", "4.0")
gi.require_version("Gst", "1.0")
from gi.repository import Gtk, Gio, Adw, Gdk, GLib
from gi.repository import Gtk, Gio, Adw, Gdk, GLib, Gst
from .window import BavarderWindow
from .preferences import Preferences
from .constants import app_id, version
from baichat_py import BAIChat
from gtts import gTTS
from tempfile import NamedTemporaryFile
from .provider import PROVIDERS
import platform
import os
class BavarderApplication(Adw.Application):
"""The main application singleton class."""
@@ -44,17 +49,51 @@ class BavarderApplication(Adw.Application):
application_id="io.github.Bavarder.Bavarder",
flags=Gio.ApplicationFlags.DEFAULT_FLAGS,
)
self.create_action("quit", lambda *_: self.quit(), ["<primary>q"])
self.create_action("quit", self.on_quit, ["<primary>q"])
self.create_action("about", self.on_about_action)
self.create_action("preferences", self.on_preferences_action)
self.create_action("copy_prompt", self.on_copy_prompt_action)
self.create_action("copy_bot", self.on_copy_bot_action)
self.create_action("ask", self.on_ask_action, ["<primary>Return"])
# self.create_action("speak", self.on_speak_action, ["<primary>S"])
# self.create_action("listen", self.on_listen_action, ["<primary>L"])
self.settings = Gio.Settings(schema_id="io.github.Bavarder.Bavarder")
self.clear_after_send = self.settings.get_boolean("clear-after-send")
self.enabled_providers = sorted(set(self.settings.get_strv("enabled-providers")))
self.latest_provider = self.settings.get_string("latest-provider")
def quitting(self, *args, **kwargs):
"""Called before closing main window."""
self.settings.set_strv("enabled-providers", list(self.enabled_providers))
self.settings.set_string("latest-provider", self.get_provider().slug)
print("Saving providers data...")
self.save_providers()
self.quit()
def on_quit(self, action, param):
"""Called when the user activates the Quit action."""
self.quitting()
def save_providers(self):
r = {}
for k, p in self.providers.items():
r[p.slug] = json.dumps(p.save())
print(r)
data = GLib.Variant(
"a{ss}",
r
)
self.settings.set_value("providers-data", data)
def get_provider(self):
print(self.providers)
return self.providers[self.win.provider_selector.props.selected]
def do_activate(self):
"""Called when the application is activated.
@@ -68,6 +107,51 @@ class BavarderApplication(Adw.Application):
self.win.response_stack.set_visible_child_name("page_response")
self.win.connect("close-request", self.quitting)
self.provider_selector_model = Gtk.StringList()
self.providers = {}
self.providers_data = self.settings.get_value("providers-data")
print(self.providers_data)
print(self.enabled_providers)
for provider, i in zip(
self.enabled_providers, range(len(self.enabled_providers))
):
print("Loading provider", provider)
self.provider_selector_model.append(PROVIDERS[provider].name)
self.providers[i] = PROVIDERS[provider](
self.win, self
)
self.load()
self.win.provider_selector.set_model(self.provider_selector_model)
self.win.provider_selector.connect("notify", self.on_provider_selector_notify)
print(self.latest_provider)
for k, p in self.providers.items():
if p.slug == self.latest_provider:
print("Setting selected provider to", k)
self.win.provider_selector.set_selected(k)
break
self.win.prompt_text_view.grab_focus()
def load(self):
for p in self.providers.values():
print(self.providers_data)
try:
p.load(data=json.loads(self.providers_data[p.slug]))
except KeyError: # provider not in data
pass
def on_provider_selector_notify(self, _unused, pspec):
self.win.banner.set_revealed(False)
def on_about_action(self, widget, _):
"""Callback for the app.about action."""
about = Adw.AboutWindow(
@@ -77,9 +161,24 @@ class BavarderApplication(Adw.Application):
developer_name="0xMRTT",
developers=["0xMRTT https://github.com/0xMRTT"],
designers=["David Lapshin https://github.com/daudix-UFO"],
artists=["David Lapshin https://github.com/daudix-UFO"],
documenters=[],
translator_credits="""0xMRTT <0xmrtt@proton.me>
David Lapshin <ddaudix@gmail.com>
Morgan Antonsson <morgan.antonsson@gmail.com>
thepoladov13 <thepoladov@protonmail.com>
Muznyo <codeberg.vqtek@simplelogin.com>
Deimidis <gmovia@pm.me>
sjdonado <jsrd98@gmail.com>
artnay <jiri.gronroos@iki.fi>
Rene Coty <irenee.thirion@e.email>
galegovski <galegovski@outlook.com>""",
license_type=Gtk.License.GPL_3_0,
version=version,
website="https://bavarder.codeberg.page",
issue_url="https://github.com/Bavarder/Bavarder/issues",
support_url="https://codeberg.org/Bavarder/Bavarder/issues",
copyright="© 2023 0xMRTT",
)
@@ -87,15 +186,22 @@ class BavarderApplication(Adw.Application):
"Special thanks to",
[
"Telegraph https://apps.gnome.org/app/io.github.fkinoshita.Telegraph",
"BAIChat https://chatbot.theb.ai/",
],
)
about.set_debug_info(
f"""{app_id} {version}
Environment: {os.environ.get("XDG_CURRENT_DESKTOP", "Unknown")}
Gtk: {Gtk.MAJOR_VERSION}.{Gtk.MINOR_VERSION}.{Gtk.MICRO_VERSION}
Python: {platform.python_version()}
OS: {platform.system()} {platform.release()} {platform.version()}
Providers: {self.enabled_providers}
"""
)
about.present()
def on_preferences_action(self, widget, _):
def on_preferences_action(self, widget, *args, **kwargs):
"""Callback for the app.preferences action."""
print("app.preferences action activated")
preferences = Preferences(
application=self, transient_for=self.props.active_window
)
@@ -138,19 +244,10 @@ class BavarderApplication(Adw.Application):
self.win.toast_overlay.add_toast(toast)
def ask(self, prompt):
chat = BAIChat(sync=True)
try:
response = chat.sync_ask(self.prompt)
except KeyError:
self.win.banner.set_revealed(False)
return ""
except socket.gaierror:
#self.win.response_stack.set_visible_child_name("page_offline")
self.win.banner.set_revealed(True)
return ""
else:
self.win.banner.set_revealed(False)
return response.text
return self.providers[self.provider].ask(prompt)
def update_response(self, response):
self.win.bot_text_view.get_buffer().set_text(response)
def on_ask_action(self, widget, _):
"""Callback for the app.ask action."""
@@ -160,23 +257,55 @@ class BavarderApplication(Adw.Application):
self.win.wait_button.set_visible(True)
self.prompt = self.win.prompt_text_view.get_buffer().props.text
if self.prompt == "":
return
self.provider = self.win.provider_selector.props.selected
def thread_run():
# call heavy here
response = self.ask(self.prompt)
try:
response = self.ask(self.prompt)
except GLib.Error as e:
response = e.message
GLib.idle_add(cleanup, response)
def cleanup(response):
self.win.spinner.stop()
self.win.ask_button.set_visible(True)
self.win.wait_button.set_visible(False)
t.join()
self.win.bot_text_view.get_buffer().set_text(response)
GLib.idle_add(self.update_response, response)
if self.clear_after_send:
self.win.prompt_text_view.get_buffer().set_text("")
GLib.idle_add(self.update_response, "")
self.t.join()
t = threading.Thread(target=thread_run)
t.start()
self.t = threading.Thread(target=thread_run)
self.t.start()
# def on_speak_action(self, widget, _):
# """Callback for the app.speak action."""
# print("app.speak action activated")
#
# try:
#
# with NamedTemporaryFile() as file_to_play:
#
# tts = gTTS(self.win.bot_text_view.get_buffer().props.text)
# tts.write_to_fp(file_to_play)
# file_to_play.seek(0)
# self._play_audio(file_to_play.name)
# except Exception as exc:
# print(exc)
#
# def _play_audio(self, path):
# uri = "file://" + path
# self.player.set_property("uri", uri)
# self.pipeline.add(self.player)
# self.pipeline.set_state(Gst.State.PLAYING)
# self.player.set_state(Gst.State.PLAYING)
#
# def on_listen_action(self, widget, _):
# """Callback for the app.listen action."""
# print("app.listen action activated")
def create_action(self, name, callback, shortcuts=None):
"""Add an application action.

View File

@@ -16,16 +16,7 @@ configure_file(
configure_file(
input: 'constants.py.in',
output: 'constants.py',
configuration: configuration_data({
'APP_ID': APPLICATION_ID,
'RELEASE_VER': meson.project_version(),
'VERSION': meson.project_version() + VERSION_SUFFIX,
'BUILD_TYPE': get_option('buildtype'),
'PROJECT_URL': PROJECT_URL,
'DATA_DIR': conf.get('DATA_DIR'),
'PKGDATA_DIR': PKGDATA_DIR,
'LOCALE_DIR': conf.get('LOCALE_DIR'),
}),
configuration: conf,
install: true,
install_dir: moduledir
)
@@ -38,3 +29,5 @@ bavarder_sources = [
]
PY_INSTALLDIR.install_sources(bavarder_sources, subdir: moduledir)
subdir('provider')

View File

@@ -6,6 +6,7 @@ class Preferences(Adw.PreferencesWindow):
__gtype_name__ = "Preferences"
clear_after_send_switch = Gtk.Template.Child()
provider_group = Gtk.Template.Child()
def __init__(self, application, **kwargs):
super().__init__(**kwargs)
@@ -19,6 +20,8 @@ class Preferences(Adw.PreferencesWindow):
"state-set", self.on_clear_after_send_switch_toggled
)
self.setup_providers()
def on_clear_after_send_switch_toggled(self, *args):
"""Callback for the clear_after_send_switch toggled event."""
state = self.clear_after_send_switch.props.state
@@ -27,3 +30,10 @@ class Preferences(Adw.PreferencesWindow):
self.settings.set_boolean("clear-after-send", True)
else:
self.settings.set_boolean("clear-after-send", False)
def setup_providers(self):
for provider in self.app.providers.values():
try:
self.provider_group.add(provider.preferences(self))
except TypeError: # no prefs
pass

29
src/provider/__init__.py Normal file
View File

@@ -0,0 +1,29 @@
from .huggingchat import HuggingChatProvider
from .baichat import BAIChatProvider
from .openaigpt35turbo import OpenAIGPT35TurboProvider
from .openaigpt4 import OpenAIGPT4Provider
from .catgpt import CatGPTProvider
from .openaitextdavinci003 import OpenAITextDavinci003
from .alpacalora import AlpacaLoRAProvider
from .hfgoogleflant5xxl import HuggingFaceGoogleFlanT5XXLProvider
from .hfgoogleflanu12 import HuggingFaceGoogleFlanU12Provider
from .hfopenassistantsft1pythia12b import HuggingFaceOpenAssistantSFT1PythiaProvider
from .hfgpt2 import HuggingFaceGPT2Provider
from .hfdialogpt import HuggingFaceDialoGPTLargeProvider
from .bard import BardProvider
PROVIDERS = {
"alpacalora": AlpacaLoRAProvider,
"baichat": BAIChatProvider,
"bard": BardProvider,
"catgpt": CatGPTProvider,
"hfdialogpt": HuggingFaceDialoGPTLargeProvider,
"hfgoogleflant5xxl": HuggingFaceGoogleFlanT5XXLProvider,
"hfgoogleflanu12": HuggingFaceGoogleFlanU12Provider,
"hfgpt2": HuggingFaceGPT2Provider,
"hfopenassistantsft1pythia12b": HuggingFaceOpenAssistantSFT1PythiaProvider,
"huggingchat": HuggingChatProvider,
"openaigpt35turbo": OpenAIGPT35TurboProvider,
"openaigpt4": OpenAIGPT4Provider,
"openaitextdavinci003": OpenAITextDavinci003,
}

View File

@@ -0,0 +1,63 @@
from .base import BavarderProvider
import socket
import requests
from gi.repository import Gtk, Adw, GLib
class AlpacaLoRAProvider(BavarderProvider):
name = "Alpaca-LoRA"
slug = "alpacalora"
def __init__(self, win, app, *args, **kwargs):
super().__init__(win, app, *args, **kwargs)
def ask(self, prompt):
try:
response = requests.post(
"https://tloen-alpaca-lora.hf.space/run/predict",
json={
"data": [
prompt,
prompt,
0.1,
0.75,
40,
4,
128,
]
},
).json()
except socket.gaierror:
self.no_connection()
return ""
else:
self.win.banner.set_revealed(False)
r = response["data"][0]
GLib.idle_add(self.update_response, r)
return r
@property
def require_api_key(self):
return False
def preferences(self):
self.no_preferences()
def about(self):
about = Adw.AboutWindow(
transient_for=self.props.active_window,
application_name="Alpaca-LoRA",
developer_name="Stanford Alpaca",
developers=["0xMRTT https://github.com/0xMRTT"],
license_type=Gtk.License.GPL_3_0,
version=version,
copyright="© 2023 0xMRTT",
)
def save(self):
return {}
def load(self, data):
pass

52
src/provider/baichat.py Normal file
View File

@@ -0,0 +1,52 @@
from .base import BavarderProvider
from baichat_py import BAIChat
import socket
from gi.repository import Gtk, Adw, GLib
class BAIChatProvider(BavarderProvider):
name = "BAI Chat"
slug = "baichat"
def __init__(self, win, app, *args, **kwargs):
super().__init__(win, app, *args, **kwargs)
self.chat = BAIChat(sync=True)
def ask(self, prompt):
try:
response = self.chat.sync_ask(prompt)
except KeyError:
self.win.banner.set_revealed(False)
return ""
except socket.gaierror:
self.no_connection()
return ""
else:
self.win.banner.set_revealed(False)
GLib.idle_add(self.update_response, response.text)
return response.text
@property
def require_api_key(self):
return False
def preferences(self):
self.no_preferences()
def about(self):
about = Adw.AboutWindow(
transient_for=self.props.active_window,
application_name="BAI Chat",
developer_name="Theb.ai",
developers=["0xMRTT https://github.com/0xMRTT"],
license_type=Gtk.License.GPL_3_0,
version=version,
copyright="© 2023 0xMRTT",
)
def save(self):
return {}
def load(self, data):
pass

93
src/provider/bard.py Normal file
View File

@@ -0,0 +1,93 @@
from .base import BavarderProvider
import socket
from googlebardpy import BardChat
from gi.repository import Gtk, Adw, GLib
class BardProvider(BavarderProvider):
name = "Bard"
slug = "bard"
version = "0.1.0"
def __init__(self, win, app, *args, **kwargs):
super().__init__(win, app, *args, **kwargs)
self.pref_win = None
def ask(self, prompt):
try:
response = self.chat.ask(prompt)
response = response["content"]
except AttributeError:
self.no_api_key()
return ""
except socket.gaierror:
self.no_connection()
return ""
else:
self.hide_banner()
GLib.idle_add(self.update_response, response)
return response
@property
def require_api_key(self):
return True
def preferences(self, win):
self.pref_win = win
self.expander = Adw.ExpanderRow()
self.expander.props.title = self.name
about_button = Gtk.Button()
about_button.set_label("About")
about_button.connect("clicked", self.about)
about_button.set_valign(Gtk.Align.CENTER)
self.expander.add_action(about_button) # TODO: in Adw 1.4, use add_suffix
self.api_row = Adw.PasswordEntryRow()
self.api_row.connect("apply", self.on_apply)
self.api_row.props.title = "__Secure-1PSID cookie"
self.api_row.set_show_apply_button(True)
self.expander.add_row(self.api_row)
return self.expander
def on_apply(self, widget):
self.hide_banner()
api_key = self.api_row.get_text()
self.api_key = api_key
try:
self.chat = BardChat(api_key)
except AttributeError:
self.banner.props.title = "Invalid API key"
self.banner.props.button_label = ""
self.banner.set_revealed(True)
def about(self, *args):
about = Adw.AboutWindow(
transient_for=self.pref_win,
application_name="Bard",
developer_name="Google",
developers=["0xMRTT https://github.com/0xMRTT"],
license_type=Gtk.License.GPL_3_0,
version=self.version,
copyright="© 2023 0xMRTT",
)
about.present()
def save(self):
try:
return {"api_key": self.api_key}
except AttributeError: # no api key
return {}
def load(self, data):
try:
self.chat = BardChat(data['api_key'])
self.api_key = data['api_key']
except AttributeError:
self.chat = None
self.api_key = None

80
src/provider/base.py Normal file
View File

@@ -0,0 +1,80 @@
from gettext import gettext as _
from gi.repository import Gtk, Adw
import json
class BavarderProvider:
name = None
slug = None
def __init__(self, win, app, *args, **kwargs):
self.win = win
self.banner = win.banner
self.bot_text_view = win.bot_text_view
self.app = app
self.chat = None
self.update_response = app.update_response
def ask(self, prompt):
raise NotImplementedError()
@property
def require_api_key(self):
raise NotImplementedError()
def preferences(self):
raise NotImplementedError()
def no_api_key(self, title=None):
if title:
self.win.banner.props.title = title
else:
self.win.banner.props.title = (
_("No API key provided, you can provide one in settings")
)
self.win.banner.props.button_label = _("Open settings")
self.win.banner.connect("button-clicked", self.app.on_preferences_action)
self.win.banner.set_revealed(True)
def no_connection(self):
self.win.banner.props.title = _("No network connection")
self.win.banner.props.button_label = ""
self.win.banner.set_revealed(True)
def hide_banner(self):
self.win.banner.set_revealed(False)
def about(self, *args):
raise NotImplementedError()
def no_preferences(self, win):
self.pref_win = win
self.expander = Adw.ExpanderRow()
self.expander.props.title = self.name
about_button = Gtk.Button()
about_button.set_label("About")
about_button.connect("clicked", self.about)
about_button.set_valign(Gtk.Align.CENTER)
self.expander.add_action(about_button) # TODO: in Adw 1.4, use add_suffix
self.no_pref_row = Adw.ActionRow()
self.no_pref_row.props.title = "No preferences available"
self.expander.add_row(self.no_pref_row)
return self.expander
def save(self):
return {}
def load(self, data):
raise NotImplementedError()
def chunk(self, prompt, n=4000):
if len(prompt) > n:
print("Chuncking prompt")
prompt = [(prompt[i:i+n]) for i in range(0, len(prompt), n)]
return prompt

69
src/provider/catgpt.py Normal file
View File

@@ -0,0 +1,69 @@
from .base import BavarderProvider
from random import choice, randint
from gi.repository import Gtk, Adw, GLib
class CatGPTProvider(BavarderProvider):
name = _("Cat GPT")
slug = "catgpt"
version = "0.1.0"
def __init__(self, win, app, *args, **kwargs):
super().__init__(win, app, *args, **kwargs)
self.chat = None
def ask(self, prompt):
return " ".join([self.pick_generator()() for i in range(randint(1, 12))])
def pick_generator(self):
if randint(1, 15) == 1:
return choice(
[
lambda: "ня" * randint(1, 4),
lambda: "ニャン" * randint(1, 4),
lambda: "" * randint(1, 4),
lambda: "ña" * randint(1, 4),
lambda: "ڽا" * randint(1, 4),
lambda: "ম্যাও" * randint(1, 4),
]
)
return choice(
[
lambda: "meow" * randint(1, 3),
lambda: "mew" * randint(1, 3),
lambda: "miau" * randint(1, 3),
lambda: "miaou" * randint(1, 3),
lambda: "miao" * randint(1, 3),
lambda: "nya" * randint(1, 3),
lambda: "m" + "r" * randint(1, 6) + "p",
lambda: "pur" + "r" * randint(1, 6),
lambda: "nya" * randint(1, 3) + "ny" + "a" * randint(1, 10),
]
)
@property
def require_api_key(self):
return False
def preferences(self, win):
return self.no_preferences(win)
def about(self, *args):
about = Adw.AboutWindow(
transient_for=self.pref_win,
application_name=_("Cat GPT"),
developer_name="0xMRTT",
developers=["0xMRTT https://github.com/0xMRTT"],
license_type=Gtk.License.GPL_3_0,
version=self.version,
copyright="© 2023 0xMRTT",
)
about.present()
def save(self):
return {}
def load(self, data):
pass

View File

@@ -0,0 +1,50 @@
from .huggingface import BaseHFProvider
import json
import socket
import requests
from gi.repository import Gtk, Adw, GLib
class HuggingFaceDialoGPTLargeProvider(BaseHFProvider):
name = "DialoGPT"
slug = "dialogpt"
model = "microsoft/DialoGPT-large"
@property
def require_api_key(self):
return False
def ask(self, prompt):
try:
payload = json.dumps(
{
"inputs": {
# "past_user_inputs": ["Which movie is the best ?"],
# "generated_responses": ["It's Die Hard for sure."],
"text": prompt
},
}
)
headers = {"Content-Type": "application/json"}
if self.authorization:
headers["Authorization"] = f"Bearer {self.api_key}"
url = f"https://api-inference.huggingface.co/models/{self.model}"
print(url)
response = requests.request("POST", url, headers=headers, data=payload)
print(response.json())
response = response.json()["generated_text"]
# except NoApikey:
# self.no_api_key()
# return ""
except KeyError:
pass
except socket.gaierror:
self.no_connection()
return ""
else:
self.hide_banner()
print(response)
GLib.idle_add(self.update_response, response)
return response

View File

@@ -0,0 +1,11 @@
from .huggingface import BaseHFProvider
class HuggingFaceGoogleFlanT5XXLProvider(BaseHFProvider):
name = "Google Flan T5 XXL"
slug = "hfgoogleflant5xxl"
model = "google/flan-t5-xxl"
@property
def require_api_key(self):
return False

View File

@@ -0,0 +1,11 @@
from .huggingface import BaseHFProvider
class HuggingFaceGoogleFlanU12Provider(BaseHFProvider):
name = "Google Flan U12"
slug = "hfgoogleflanu12"
model = "google/flan-ul2"
@property
def require_api_key(self):
return False

11
src/provider/hfgpt2.py Normal file
View File

@@ -0,0 +1,11 @@
from .huggingface import BaseHFProvider
class HuggingFaceGPT2Provider(BaseHFProvider):
name = "GPT 2"
slug = "gpt2"
model = "gpt2"
@property
def require_api_key(self):
return False

View File

@@ -0,0 +1,11 @@
from .huggingface import BaseHFProvider
class HuggingFaceOpenAssistantSFT1PythiaProvider(BaseHFProvider):
name = "Open-Assistant SFT-1 12B Model "
slug = "hfopenassistantsft1pythia12b"
model = "OpenAssistant/oasst-sft-1-pythia-12b"
@property
def require_api_key(self):
return False

View File

@@ -0,0 +1,58 @@
from .base import BavarderProvider
from hgchat import HGChat
import socket
from gi.repository import Gtk, Adw, GLib
class HuggingChatProvider(BavarderProvider):
name = "Hugging Chat"
slug = "huggingchat"
def __init__(self, win, app, *args, **kwargs):
super().__init__(win, app, *args, **kwargs)
self.chat = HGChat()
def ask(self, prompt):
try:
response = self.chat.ask(prompt)
except socket.gaierror:
self.no_connection()
return ""
else:
self.win.banner.set_revealed(False)
r = ""
for i in response:
char = i["token"]["text"]
if char == "</s>":
r += "\n"
else:
r += char
GLib.idle_add(self.update_response, r)
return r
@property
def require_api_key(self):
return False
def preferences(self):
self.no_preferences()
def about(self):
about = Adw.AboutWindow(
transient_for=self.props.active_window,
application_name="Hugging Chat",
developer_name="Hugging Face",
developers=["0xMRTT https://github.com/0xMRTT"],
license_type=Gtk.License.GPL_3_0,
version=version,
copyright="© 2023 0xMRTT",
)
def save(self):
return {}
def load(self, data):
pass

View File

@@ -0,0 +1,97 @@
import requests
import json
from .base import BavarderProvider
import socket
from gi.repository import Gtk, Adw, GLib
class BaseHFProvider(BavarderProvider):
name = None
slug = None
model = None
authorization = True
def __init__(self, win, app, *args, **kwargs):
super().__init__(win, app, *args, **kwargs)
self.api_key = None
def ask(self, prompt):
try:
payload = json.dumps({"inputs": prompt})
headers = {"Content-Type": "application/json"}
if self.authorization:
headers["Authorization"] = f"Bearer {self.api_key}"
url = f"https://api-inference.huggingface.co/models/{self.model}"
print(url)
response = requests.request("POST", url, headers=headers, data=payload)
if response.status_code == 403:
self.no_api_key()
return ""
elif response.status_code != 200:
self.win.banner.props.title = response.json()["error"]
self.win.banner.props.button_label = ""
self.win.banner.set_revealed(True)
return ""
print(response)
response = response.json()[0]["generated_text"]
# except NoApikey:
# self.no_api_key()
# return ""
except KeyError:
pass
except socket.gaierror:
self.no_connection()
return ""
else:
self.hide_banner()
print(response)
GLib.idle_add(self.update_response, response)
return response
@property
def require_api_key(self):
return False
def preferences(self):
if self.require_api_key:
self.expander = Adw.ExpanderRow()
self.expander.props.title = self.name
self.api_row = Adw.PasswordEntryRow()
self.api_row.connect("apply", self.on_apply)
self.api_row.props.title = "API Key"
self.api_row.props.text = self.api_key or ""
self.api_row.set_show_apply_button(True)
self.expander.add_row(self.api_row)
return self.expander
pass
def on_apply(self, widget):
self.hide_banner()
self.api_key = self.api_row.get_text()
print(self.api_key)
def about(self):
about = Adw.AboutWindow(
transient_for=self.props.active_window,
application_name=self.name,
developer_name="HuggingFace",
developers=["0xMRTT https://github.com/0xMRTT"],
license_type=Gtk.License.GPL_3_0,
version=version,
copyright="© 2023 0xMRTT",
)
def save(self):
if self.require_api_key:
return {"api_key": self.api_key}
return {}
def load(self, data):
if self.require_api_key:
self.api_key = data["api_key"]

24
src/provider/meson.build Normal file
View File

@@ -0,0 +1,24 @@
providers_dir = join_paths(moduledir, 'provider')
providers_sources = [
'__init__.py',
'alpacalora.py',
'baichat.py',
'bard.py',
'base.py',
'catgpt.py',
'hfdialogpt.py',
'hfgoogleflant5xxl.py',
'hfgoogleflanu12.py',
'hfgpt2.py',
'hfopenassistantsft1pythia12b.py',
'huggingchat.py',
'huggingface.py',
'openai.py',
'openaigpt4.py',
'openaigpt35turbo.py',
'openaitextdavinci003.py',
]
PY_INSTALLDIR.install_sources(providers_sources, subdir: providers_dir)

106
src/provider/openai.py Normal file
View File

@@ -0,0 +1,106 @@
from .base import BavarderProvider
import openai
import socket
from gi.repository import Gtk, Adw, GLib
class BaseOpenAIProvider(BavarderProvider):
name = None
slug = None
model = None
version = "0.1.0"
api_key_title = "API Key"
def __init__(self, win, app, *args, **kwargs):
super().__init__(win, app, *args, **kwargs)
self.chat = openai.ChatCompletion
self.pref_win = None
def ask(self, prompt):
prompt = self.chunk(prompt)
try:
if isinstance(prompt, list):
self.win.banner.props.title = "Prompt too long, splitting into chunks."
self.win.banner.props.button_label = ""
self.win.banner.set_revealed(True)
response = ""
for chunk in prompt:
response += self.chat.create(
model=self.model, messages=[{"role": "user", "content": chunk}]
).choices[0].message.content
else:
response = self.chat.create(
model=self.model, messages=[{"role": "user", "content": prompt}]
)
response = response.choices[0].message.content
except openai.error.AuthenticationError:
self.no_api_key()
return ""
except openai.error.InvalidRequestError:
self.win.banner.props.title = "You don't have access to this model"
self.win.banner.props.button_label = ""
self.win.banner.set_revealed(True)
return ""
except openai.error.RateLimitError:
self.win.banner.props.title = "You exceeded your current quota, please check your plan and billing details."
self.win.banner.props.button_label = ""
self.win.banner.set_revealed(True)
return ""
except socket.gaierror:
self.no_connection()
return ""
else:
self.hide_banner()
GLib.idle_add(self.update_response, response)
return response
@property
def require_api_key(self):
return True
def preferences(self, win):
self.pref_win = win
self.expander = Adw.ExpanderRow()
self.expander.props.title = self.name
about_button = Gtk.Button()
about_button.set_label("About")
about_button.connect("clicked", self.about)
about_button.set_valign(Gtk.Align.CENTER)
self.expander.add_action(about_button) # TODO: in Adw 1.4, use add_suffix
self.api_row = Adw.PasswordEntryRow()
self.api_row.connect("apply", self.on_apply)
self.api_row.props.text = openai.api_key or ""
self.api_row.props.title = self.api_key_title
self.api_row.set_show_apply_button(True)
self.expander.add_row(self.api_row)
return self.expander
def on_apply(self, widget):
self.hide_banner()
api_key = self.api_row.get_text()
openai.api_key = api_key
def about(self, *args):
about = Adw.AboutWindow(
transient_for=self.pref_win,
application_name=self.name,
developer_name="OpenAI",
developers=["0xMRTT https://github.com/0xMRTT"],
license_type=Gtk.License.GPL_3_0,
version=self.version,
copyright="© 2023 0xMRTT",
)
about.present()
def save(self):
return {"api_key": openai.api_key}
def load(self, data):
if data["api_key"]:
openai.api_key = data["api_key"]

View File

@@ -0,0 +1,7 @@
from .openai import BaseOpenAIProvider
class OpenAIGPT35TurboProvider(BaseOpenAIProvider):
name = "OpenAI GPT 3.5 Turbo"
slug = "openaigpt35turbo"
model = "gpt-3.5-turbo"

View File

@@ -0,0 +1,8 @@
from .openai import BaseOpenAIProvider
class OpenAIGPT4Provider(BaseOpenAIProvider):
name = "OpenAI GPT 4"
slug = "openaigpt4"
model = "gpt-4"
api_key_title = "API Key (Require a plan with access to the GPT-4 model)"

View File

@@ -0,0 +1,7 @@
from .openai import BaseOpenAIProvider
class OpenAITextDavinci003(BaseOpenAIProvider):
name = "OpenAI Text Davinci 003"
slug = "openaitextdavinci003"
model = "text-davinci-003"

View File

@@ -33,6 +33,13 @@ class BavarderWindow(Adw.ApplicationWindow):
wait_button = Gtk.Template.Child()
response_stack = Gtk.Template.Child()
banner = Gtk.Template.Child()
# listen = Gtk.Template.Child()
# listen_wait = Gtk.Template.Child()
# listen_spinner = Gtk.Template.Child()
# speak = Gtk.Template.Child()
# speak_wait = Gtk.Template.Child()
# speak_spinner = Gtk.Template.Child()
provider_selector = Gtk.Template.Child()
def __init__(self, **kwargs):
super().__init__(**kwargs)