pygpt-net 2.5.2__py3-none-any.whl → 2.5.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.5.4 (2025-02-02)
4
+
5
+ - Added new models: `o3-mini` and `gpt-4o-mini-audio-preview`.
6
+ - Enabled tool calls in Chat with Audio mode.
7
+ - Added a check to verify if Ollama is running and if the model is available.
8
+
9
+ ## 2.5.3 (2025-02-01)
10
+
11
+ - Fix: Snap permission denied bug.
12
+ - Fix: column focus on tab change.
13
+ - Datetime separators in groups moved to right side.
14
+
3
15
  ## 2.5.2 (2025-02-01)
4
16
 
5
17
  - Fix: spinner update after inline image generation.
README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![pygpt](https://snapcraft.io/pygpt/badge.svg)](https://snapcraft.io/pygpt)
4
4
 
5
- Release: **2.5.2** | build: **2025.02.01** | Python: **>=3.10, <3.13**
5
+ Release: **2.5.4** | build: **2025.02.02** | Python: **>=3.10, <3.13**
6
6
 
7
7
  > Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
8
8
  >
@@ -284,6 +284,10 @@ To use microphone in Snap version you must connect the microphone with:
284
284
  sudo snap connect pygpt:audio-record :audio-record
285
285
  ```
286
286
 
287
+ **Access to microphone and audio in Windows version:**
288
+
289
+ If you have a problems with audio or microphone in the non-binary PIP/Python version on Windows, check to see if FFmpeg is installed. If it's not, install it and add it to the PATH. You can find a tutorial on how to do this here: https://phoenixnap.com/kb/ffmpeg-windows. The binary version already includes FFmpeg.
290
+
287
291
  **Windows and VC++ Redistributable**
288
292
 
289
293
  On Windows, the proper functioning requires the installation of the `VC++ Redistributable`, which can be found on the Microsoft website:
@@ -3960,6 +3964,18 @@ may consume additional tokens that are not displayed in the main window.
3960
3964
 
3961
3965
  ## Recent changes:
3962
3966
 
3967
+ **2.5.4 (2025-02-02)**
3968
+
3969
+ - Added new models: `o3-mini` and `gpt-4o-mini-audio-preview`.
3970
+ - Enabled tool calls in Chat with Audio mode.
3971
+ - Added a check to verify if Ollama is running and if the model is available.
3972
+
3973
+ **2.5.3 (2025-02-01)**
3974
+
3975
+ - Fix: Snap permission denied bug.
3976
+ - Fix: column focus on tab change.
3977
+ - Datetime separators in groups moved to right side.
3978
+
3963
3979
  **2.5.2 (2025-02-01)**
3964
3980
 
3965
3981
  - Fix: spinner update after inline image generation.
pygpt_net/CHANGELOG.txt CHANGED
@@ -1,3 +1,15 @@
1
+ 2.5.4 (2025-02-02)
2
+
3
+ - Added new models: o3-mini and gpt-4o-mini-audio-preview.
4
+ - Enabled tool calls in Chat with Audio mode.
5
+ - Added a check to verify if Ollama is running and if the model is available.
6
+
7
+ 2.5.3 (2025-02-01)
8
+
9
+ - Fix: Snap permission denied bug.
10
+ - Fix: column focus on tab change.
11
+ - Datetime separators in groups moved to right side.
12
+
1
13
  2.5.2 (2025-02-01)
2
14
 
3
15
  - Fix: spinner update after inline image generation.
pygpt_net/__init__.py CHANGED
@@ -6,15 +6,15 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.02.01 02:00:00 #
9
+ # Updated Date: 2025.02.02 02:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  __author__ = "Marcin Szczygliński"
13
13
  __copyright__ = "Copyright 2025, Marcin Szczygliński"
14
14
  __credits__ = ["Marcin Szczygliński"]
15
15
  __license__ = "MIT"
16
- __version__ = "2.5.2"
17
- __build__ = "2025.02.01"
16
+ __version__ = "2.5.4"
17
+ __build__ = "2025.02.02"
18
18
  __maintainer__ = "Marcin Szczygliński"
19
19
  __github__ = "https://github.com/szczyglis-dev/py-gpt"
20
20
  __report__ = "https://github.com/szczyglis-dev/py-gpt/issues"
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.02.01 11:00:00 #
9
+ # Updated Date: 2025.02.02 02:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from typing import Optional, Any, Dict
@@ -74,12 +74,22 @@ class Input:
74
74
  self.window.controller.agent.common.display_infinity_loop_confirm()
75
75
  return
76
76
 
77
- # TODO: check ollama status
78
- """
79
- if mode == MODE_LLAMA_INDEX:
80
- status = self.window.core.models.ollama.get_status()
81
- print("Ollama status: {}".format(status))
82
- """
77
+ # check ollama model
78
+ model = self.window.core.config.get('model')
79
+ if mode == MODE_LLAMA_INDEX and model is not None:
80
+ model_data = self.window.core.models.get(model)
81
+ if model_data is not None and model_data.is_ollama():
82
+ model_id = model_data.get_ollama_model()
83
+ status = self.window.core.models.ollama.check_model(model_id)
84
+ is_installed = status.get('is_installed', False)
85
+ is_model = status.get('is_model', False)
86
+ if not is_installed:
87
+ self.window.ui.dialogs.alert(trans("dialog.ollama.not_installed"))
88
+ return
89
+ if not is_model:
90
+ self.window.ui.dialogs.alert(
91
+ trans("dialog.ollama.model_not_found").replace("{model}", model_id))
92
+ return
83
93
 
84
94
  # listen for stop command
85
95
  if self.generating \
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.02.01 11:00:00 #
9
+ # Updated Date: 2025.02.02 02:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from typing import Optional
@@ -161,6 +161,7 @@ class Model:
161
161
  if "provider" in data[k].llama_index and data[k].llama_index["provider"] == "ollama":
162
162
  suffix = " [Ollama]"
163
163
  items[k] = data[k].name + suffix
164
+ items = dict(sorted(items.items(), key=lambda item: item[1])) # sort items by name
164
165
  self.window.ui.nodes["prompt.model"].set_keys(items)
165
166
 
166
167
  def update(self):
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.01.17 13:00:00 #
9
+ # Updated Date: 2025.02.01 16:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from typing import Any, Optional
@@ -307,6 +307,8 @@ class Tabs:
307
307
 
308
308
  :param idx: column index
309
309
  """
310
+ if self.column_idx == idx:
311
+ return
310
312
  self.column_idx = idx
311
313
  self.on_column_changed()
312
314
  self.on_changed()
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.02.01 11:00:00 #
9
+ # Updated Date: 2025.02.02 02:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import copy
@@ -587,7 +587,6 @@ class Command:
587
587
  MODE_LLAMA_INDEX,
588
588
  MODE_LANGCHAIN,
589
589
  MODE_COMPLETION,
590
- MODE_AUDIO,
591
590
  ]
592
591
  mode = self.window.core.config.get('mode')
593
592
  if mode in disabled_modes:
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.02.01 11:00:00 #
9
+ # Updated Date: 2025.02.02 02:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import requests
@@ -19,6 +19,7 @@ class Ollama:
19
19
  :param window: Window instance
20
20
  """
21
21
  self.window = window
22
+ self.available_models = []
22
23
 
23
24
  def get_status(self) -> dict:
24
25
  """
@@ -44,4 +45,39 @@ class Ollama:
44
45
  return {
45
46
  'status': False,
46
47
  'models': []
47
- }
48
+ }
49
+
50
+ def check_model(self, model: str) -> dict:
51
+ """
52
+ Check if model is available
53
+
54
+ :param model: model ID
55
+ :return: dict
56
+ """
57
+ result = {
58
+ 'is_installed': False,
59
+ 'is_model': False,
60
+ }
61
+ if model in self.available_models:
62
+ return {
63
+ 'is_installed': True,
64
+ 'is_model': True,
65
+ }
66
+ status = self.get_status()
67
+ if not status.get('status'):
68
+ return result
69
+ if "models" not in status:
70
+ return result
71
+ for item in status.get('models', []):
72
+ model_id = item.get('name').replace(":latest", "")
73
+ if model_id not in self.available_models:
74
+ self.available_models.append(item.get('name')) #
75
+ if model_id == model:
76
+ return {
77
+ 'is_installed': True,
78
+ 'is_model': True,
79
+ }
80
+ return {
81
+ 'is_installed': True,
82
+ 'is_model': False,
83
+ }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.5.2",
4
- "app.version": "2.5.2",
5
- "updated_at": "2025-02-01T00:00:00"
3
+ "version": "2.5.4",
4
+ "app.version": "2.5.4",
5
+ "updated_at": "2025-02-02T00:00:00"
6
6
  },
7
7
  "access.audio.event.speech": false,
8
8
  "access.audio.event.speech.disabled": [],
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.5.2",
4
- "app.version": "2.5.2",
5
- "updated_at": "2025-02-01T00:00:00"
3
+ "version": "2.5.4",
4
+ "app.version": "2.5.4",
5
+ "updated_at": "2025-02-02T00:00:00"
6
6
  },
7
7
  "items": {
8
8
  "claude-3-5-sonnet-20240620": {
@@ -1708,6 +1708,79 @@
1708
1708
  "default": false,
1709
1709
  "multimodal": []
1710
1710
  },
1711
+ "gpt-4o-mini-audio-preview": {
1712
+ "id": "gpt-4o-mini-audio-preview",
1713
+ "name": "gpt-4o-mini-audio-preview",
1714
+ "mode": [
1715
+ "audio"
1716
+ ],
1717
+ "langchain": {
1718
+ "provider": "openai",
1719
+ "mode": [
1720
+ "chat"
1721
+ ],
1722
+ "args": [
1723
+ {
1724
+ "name": "model_name",
1725
+ "value": "gpt-4o-mini-audio-preview",
1726
+ "type": "str"
1727
+ }
1728
+ ],
1729
+ "env": [
1730
+ {
1731
+ "name": "OPENAI_API_KEY",
1732
+ "value": "{api_key}"
1733
+ },
1734
+ {
1735
+ "name": "OPENAI_API_BASE",
1736
+ "value": "{api_endpoint}"
1737
+ },
1738
+ {
1739
+ "name": "AZURE_OPENAI_ENDPOINT",
1740
+ "value": "{api_azure_endpoint}"
1741
+ },
1742
+ {
1743
+ "name": "OPENAI_API_VERSION",
1744
+ "value": "{api_azure_version}"
1745
+ }
1746
+ ]
1747
+ },
1748
+ "llama_index": {
1749
+ "provider": "openai",
1750
+ "mode": [
1751
+ "chat"
1752
+ ],
1753
+ "args": [
1754
+ {
1755
+ "name": "model",
1756
+ "value": "gpt-4o-mini-audio-preview",
1757
+ "type": "str"
1758
+ }
1759
+ ],
1760
+ "env": [
1761
+ {
1762
+ "name": "OPENAI_API_KEY",
1763
+ "value": "{api_key}"
1764
+ },
1765
+ {
1766
+ "name": "OPENAI_API_BASE",
1767
+ "value": "{api_endpoint}"
1768
+ },
1769
+ {
1770
+ "name": "AZURE_OPENAI_ENDPOINT",
1771
+ "value": "{api_azure_endpoint}"
1772
+ },
1773
+ {
1774
+ "name": "OPENAI_API_VERSION",
1775
+ "value": "{api_azure_version}"
1776
+ }
1777
+ ]
1778
+ },
1779
+ "ctx": 128000,
1780
+ "tokens": 16384,
1781
+ "default": false,
1782
+ "multimodal": []
1783
+ },
1711
1784
  "gpt-4o-2024-11-20": {
1712
1785
  "id": "gpt-4o-2024-11-20",
1713
1786
  "name": "gpt-4o-2024-11-20",
@@ -2426,7 +2499,7 @@
2426
2499
  ]
2427
2500
  },
2428
2501
  "ctx": 128000,
2429
- "tokens": 4096,
2502
+ "tokens": 65536,
2430
2503
  "default": false
2431
2504
  },
2432
2505
  "o1-mini": {
@@ -2500,7 +2573,7 @@
2500
2573
  ]
2501
2574
  },
2502
2575
  "ctx": 128000,
2503
- "tokens": 4096,
2576
+ "tokens": 65536,
2504
2577
  "default": false
2505
2578
  },
2506
2579
  "o1": {
@@ -2575,10 +2648,244 @@
2575
2648
  ]
2576
2649
  },
2577
2650
  "ctx": 128000,
2578
- "tokens": 4096,
2651
+ "tokens": 100000,
2579
2652
  "default": false,
2580
2653
  "multimodal": []
2581
2654
  },
2655
+ "o3-mini-low": {
2656
+ "id": "o3-mini",
2657
+ "name": "o3-mini (low)",
2658
+ "mode": [
2659
+ "chat",
2660
+ "agent",
2661
+ "expert"
2662
+ ],
2663
+ "langchain": {
2664
+ "provider": "openai",
2665
+ "mode": [
2666
+ "chat"
2667
+ ],
2668
+ "args": [
2669
+ {
2670
+ "name": "model_name",
2671
+ "value": "o3-mini",
2672
+ "type": "str"
2673
+ }
2674
+ ],
2675
+ "env": [
2676
+ {
2677
+ "name": "OPENAI_API_KEY",
2678
+ "value": "{api_key}"
2679
+ },
2680
+ {
2681
+ "name": "OPENAI_API_BASE",
2682
+ "value": "{api_endpoint}"
2683
+ },
2684
+ {
2685
+ "name": "AZURE_OPENAI_ENDPOINT",
2686
+ "value": "{api_azure_endpoint}"
2687
+ },
2688
+ {
2689
+ "name": "OPENAI_API_VERSION",
2690
+ "value": "{api_azure_version}"
2691
+ }
2692
+ ]
2693
+ },
2694
+ "llama_index": {
2695
+ "provider": "openai",
2696
+ "mode": [
2697
+ "chat"
2698
+ ],
2699
+ "args": [
2700
+ {
2701
+ "name": "model",
2702
+ "value": "o3-mini",
2703
+ "type": "str"
2704
+ }
2705
+ ],
2706
+ "env": [
2707
+ {
2708
+ "name": "OPENAI_API_KEY",
2709
+ "value": "{api_key}"
2710
+ },
2711
+ {
2712
+ "name": "OPENAI_API_BASE",
2713
+ "value": "{api_endpoint}"
2714
+ },
2715
+ {
2716
+ "name": "AZURE_OPENAI_ENDPOINT",
2717
+ "value": "{api_azure_endpoint}"
2718
+ },
2719
+ {
2720
+ "name": "OPENAI_API_VERSION",
2721
+ "value": "{api_azure_version}"
2722
+ }
2723
+ ]
2724
+ },
2725
+ "ctx": 200000,
2726
+ "tokens": 100000,
2727
+ "default": false,
2728
+ "multimodal": [],
2729
+ "extra": {
2730
+ "reasoning_effort": "low"
2731
+ }
2732
+ },
2733
+ "o3-mini-medium": {
2734
+ "id": "o3-mini",
2735
+ "name": "o3-mini (medium)",
2736
+ "mode": [
2737
+ "chat",
2738
+ "agent",
2739
+ "expert"
2740
+ ],
2741
+ "langchain": {
2742
+ "provider": "openai",
2743
+ "mode": [
2744
+ "chat"
2745
+ ],
2746
+ "args": [
2747
+ {
2748
+ "name": "model_name",
2749
+ "value": "o3-mini",
2750
+ "type": "str"
2751
+ }
2752
+ ],
2753
+ "env": [
2754
+ {
2755
+ "name": "OPENAI_API_KEY",
2756
+ "value": "{api_key}"
2757
+ },
2758
+ {
2759
+ "name": "OPENAI_API_BASE",
2760
+ "value": "{api_endpoint}"
2761
+ },
2762
+ {
2763
+ "name": "AZURE_OPENAI_ENDPOINT",
2764
+ "value": "{api_azure_endpoint}"
2765
+ },
2766
+ {
2767
+ "name": "OPENAI_API_VERSION",
2768
+ "value": "{api_azure_version}"
2769
+ }
2770
+ ]
2771
+ },
2772
+ "llama_index": {
2773
+ "provider": "openai",
2774
+ "mode": [
2775
+ "chat"
2776
+ ],
2777
+ "args": [
2778
+ {
2779
+ "name": "model",
2780
+ "value": "o3-mini",
2781
+ "type": "str"
2782
+ }
2783
+ ],
2784
+ "env": [
2785
+ {
2786
+ "name": "OPENAI_API_KEY",
2787
+ "value": "{api_key}"
2788
+ },
2789
+ {
2790
+ "name": "OPENAI_API_BASE",
2791
+ "value": "{api_endpoint}"
2792
+ },
2793
+ {
2794
+ "name": "AZURE_OPENAI_ENDPOINT",
2795
+ "value": "{api_azure_endpoint}"
2796
+ },
2797
+ {
2798
+ "name": "OPENAI_API_VERSION",
2799
+ "value": "{api_azure_version}"
2800
+ }
2801
+ ]
2802
+ },
2803
+ "ctx": 200000,
2804
+ "tokens": 100000,
2805
+ "default": false,
2806
+ "multimodal": [],
2807
+ "extra": {
2808
+ "reasoning_effort": "medium"
2809
+ }
2810
+ },
2811
+ "o3-mini-high": {
2812
+ "id": "o3-mini",
2813
+ "name": "o3-mini (high)",
2814
+ "mode": [
2815
+ "chat",
2816
+ "agent",
2817
+ "expert"
2818
+ ],
2819
+ "langchain": {
2820
+ "provider": "openai",
2821
+ "mode": [
2822
+ "chat"
2823
+ ],
2824
+ "args": [
2825
+ {
2826
+ "name": "model_name",
2827
+ "value": "o3-mini",
2828
+ "type": "str"
2829
+ }
2830
+ ],
2831
+ "env": [
2832
+ {
2833
+ "name": "OPENAI_API_KEY",
2834
+ "value": "{api_key}"
2835
+ },
2836
+ {
2837
+ "name": "OPENAI_API_BASE",
2838
+ "value": "{api_endpoint}"
2839
+ },
2840
+ {
2841
+ "name": "AZURE_OPENAI_ENDPOINT",
2842
+ "value": "{api_azure_endpoint}"
2843
+ },
2844
+ {
2845
+ "name": "OPENAI_API_VERSION",
2846
+ "value": "{api_azure_version}"
2847
+ }
2848
+ ]
2849
+ },
2850
+ "llama_index": {
2851
+ "provider": "openai",
2852
+ "mode": [
2853
+ "chat"
2854
+ ],
2855
+ "args": [
2856
+ {
2857
+ "name": "model",
2858
+ "value": "o3-mini",
2859
+ "type": "str"
2860
+ }
2861
+ ],
2862
+ "env": [
2863
+ {
2864
+ "name": "OPENAI_API_KEY",
2865
+ "value": "{api_key}"
2866
+ },
2867
+ {
2868
+ "name": "OPENAI_API_BASE",
2869
+ "value": "{api_endpoint}"
2870
+ },
2871
+ {
2872
+ "name": "AZURE_OPENAI_ENDPOINT",
2873
+ "value": "{api_azure_endpoint}"
2874
+ },
2875
+ {
2876
+ "name": "OPENAI_API_VERSION",
2877
+ "value": "{api_azure_version}"
2878
+ }
2879
+ ]
2880
+ },
2881
+ "ctx": 200000,
2882
+ "tokens": 100000,
2883
+ "default": false,
2884
+ "multimodal": [],
2885
+ "extra": {
2886
+ "reasoning_effort": "high"
2887
+ }
2888
+ },
2582
2889
  "bielik-11b-v2.2-instruct:Q4_K_M": {
2583
2890
  "id": "SpeakLeash/bielik-11b-v2.2-instruct:Q4_K_M",
2584
2891
  "name": "bielik-11b-v2.2",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.5.2",
4
- "app.version": "2.5.2",
5
- "updated_at": "2025-02-01T00:00:00"
3
+ "version": "2.5.4",
4
+ "app.version": "2.5.4",
5
+ "updated_at": "2025-02-02T00:00:00"
6
6
  },
7
7
  "items": {
8
8
  "chat": {
@@ -293,6 +293,8 @@ dialog.license.label = Durch die Verwendung dieser Software akzeptieren Sie die
293
293
  dialog.license.title = Lizenz
294
294
  dialog.logger.btn.clear = Löschen
295
295
  dialog.logger.title = Protokollierung
296
+ dialog.ollama.model_not_found = Das angeforderte Modell ({model}) ist in deinem Ollama nicht verfügbar.\nBitte lade das Modell herunter, indem du den Befehl ausführst:\nollama pull {model}
297
+ dialog.ollama.not_installed = Ollama ist nicht installiert oder läuft nicht.\nBitte installiere zuerst Ollama, indem du die folgende Seite besuchst:\nhttps://ollama.com/download
296
298
  dialog.plugin_settings = Plugin-Einstellungen
297
299
  dialog.plugin.settings.btn.defaults.app = Standardwerte laden
298
300
  dialog.plugin.settings.btn.defaults.user = Änderungen rückgängig machen
@@ -778,8 +780,8 @@ settings.audio.input.rate.desc = Abtastrate, Standard: 44100
778
780
  settings.audio.input.stop_interval = Intervall für kontinuierliche automatische Transkription
779
781
  settings.audio.input.stop_interval.desc = Intervall in Sekunden für automatisches Transkribieren eines Audioabschnitts, Standard: 10
780
782
  settings.audio.input.timeout = Aufnahme-Zeitüberschreitung
781
- settings.audio.input.timeout.desc = Zeitüberschreitung (Sekunden) für automatische Stop-Aufzeichnung, 0 zum Deaktivieren, Standard: 120
782
783
  settings.audio.input.timeout.continuous = Zeitüberschreitung im Dauerbetrieb aktivieren
784
+ settings.audio.input.timeout.desc = Zeitüberschreitung (Sekunden) für automatische Stop-Aufzeichnung, 0 zum Deaktivieren, Standard: 120
783
785
  settings.check_updates = Beim Start nach Updates suchen
784
786
  settings.check_updates.bg = Im Hintergrund nach Updates suchen
785
787
  settings.cmd.field.desc = Aktivieren Sie das `{cmd}`-Werkzeug.
@@ -325,6 +325,8 @@ dialog.models.editor.defaults.app.result = Restored to models factory settings.
325
325
  dialog.models.editor.defaults.user.confirm = Undo current changes?
326
326
  dialog.models.editor.defaults.user.result = Restored models user config
327
327
  dialog.models.editor.delete.confirm = Are you sure you want to delete the model?
328
+ dialog.ollama.model_not_found = The requested model ({model}) is not available in your Ollama.\nPlease download the model first by executing the command:\nollama pull {model}
329
+ dialog.ollama.not_installed = Ollama is not installed or not running.\nPlease install Ollama first by visiting:\nhttps://ollama.com/download
328
330
  dialog.plugin_settings = Plugin settings
329
331
  dialog.plugin.settings.btn.defaults.app = Load defaults
330
332
  dialog.plugin.settings.btn.defaults.user = Undo changes
@@ -952,8 +954,8 @@ settings.audio.input.rate.desc = Sampling rate, default: 44100
952
954
  settings.audio.input.stop_interval = Continuous recording auto-transcribe interval
953
955
  settings.audio.input.stop_interval.desc = Interval in seconds for auto-transcribe audio chunk, default: 10
954
956
  settings.audio.input.timeout = Recording timeout
955
- settings.audio.input.timeout.desc = Timeout (seconds) for auto-stop recording, 0 to disable, default: 120
956
957
  settings.audio.input.timeout.continuous = Enable timeout in continuous mode
958
+ settings.audio.input.timeout.desc = Timeout (seconds) for auto-stop recording, 0 to disable, default: 120
957
959
  settings.check_updates = Check for Updates on start
958
960
  settings.check_updates.bg = Check for Updates in the background
959
961
  settings.cmd.config.collapse = JSON params
@@ -1117,10 +1119,10 @@ settings.section.agent.llama = Agents
1117
1119
  settings.section.api_keys = API Keys
1118
1120
  settings.section.api_keys.anthropic = Anthropic
1119
1121
  settings.section.api_keys.azure_openai = Azure OpenAI
1122
+ settings.section.api_keys.deepseek = DeepSeek
1120
1123
  settings.section.api_keys.google = Google
1121
1124
  settings.section.api_keys.huggingface = HuggingFace
1122
1125
  settings.section.api_keys.openai = OpenAI
1123
- settings.section.api_keys.deepseek = DeepSeek
1124
1126
  settings.section.audio = Audio
1125
1127
  settings.section.ctx = Context
1126
1128
  settings.section.developer = Developer