From 9513556ad44d1be24e2ceb6917c015f6553e45dd Mon Sep 17 00:00:00 2001 From: GamerC0der <159653318+GamerC0der@users.noreply.github.com> Date: Wed, 25 Feb 2026 20:47:09 -0800 Subject: [PATCH] 0.9.2 --- CHANGELOG.md | 9 + app/components/AppSidebar.vue | 65 ++++ app/components/BottomSheetModelSelector.vue | 28 +- app/components/ChatPanel.vue | 170 +++++++++- app/components/MessageForm.vue | 63 +++- app/components/SettingsPanel.vue | 96 ++++++ app/components/TopBar.vue | 129 +++++--- app/composables/availableModels.js | 40 +++ app/composables/defaultParameters.js | 4 +- app/composables/message.js | 31 +- app/composables/messagesManager.js | 328 +++++++++++++++++--- app/composables/rateLimiter.js | 42 ++- app/layouts/default.vue | 43 ++- package-lock.json | 4 +- package.json | 2 +- server/api/api_health.js | 1 + 16 files changed, 921 insertions(+), 134 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70d2f61..132ec7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,15 @@ All notable changes to Libre Assistant are documented here. --- +## [0.9.2] - 2026-02-25 + +### Added +- Deepseek R1 0528 Model +- Display The Usage Limits on Sidebar + +### Changed +- Modified the Images Limit to 8 from 12. + ## [0.9.1] - 2026-02-19 ### Added diff --git a/app/components/AppSidebar.vue b/app/components/AppSidebar.vue index 3fb4170..e139fc2 100644 --- a/app/components/AppSidebar.vue +++ b/app/components/AppSidebar.vue @@ -9,6 +9,7 @@ import { DropdownMenuItem, } from "reka-ui"; import { useConversationsList } from "~/composables/useConversationsList"; +import { useRateLimiter } from "~/composables/rateLimiter"; const emit = defineEmits([ "reloadSettings", @@ -38,6 +39,8 @@ const { clearSearch, } = useConversationsList(); +const { usageStats } = useRateLimiter(); + const windowWidth = ref( typeof window !== "undefined" ? window.innerWidth : 1200, ); @@ -208,6 +211,22 @@ function handleNewConversation() { + @@ -346,6 +365,52 @@ function handleNewConversation() { margin-bottom: 12px; } +.sidebar-footer { + flex-shrink: 0; + padding: 12px 16px 16px; + border-top: 1px solid var(--border); + display: flex; + flex-direction: column; + gap: 10px; + background: var(--bg-sidebar); +} + +.usage-row { + display: flex; + align-items: center; + gap: 10px; +} + +.usage-label { + font-size: 0.8em; + font-weight: 600; + color: var(--text-primary); + min-width: 56px; +} + +.usage-bar-track { + flex: 1; + height: 8px; + background: var(--bg-input); + border-radius: 4px; + overflow: hidden; +} + +.usage-bar-fill { + height: 100%; + background: var(--primary); + border-radius: 4px; + transition: width 0.2s ease; +} + +.usage-count { + font-size: 0.8em; + font-weight: 600; + color: var(--text-primary); + min-width: 2.4em; + text-align: right; +} + /* Empty State */ .empty-state { display: flex; diff --git a/app/components/BottomSheetModelSelector.vue b/app/components/BottomSheetModelSelector.vue index d460f3f..23f5a5c 100644 --- a/app/components/BottomSheetModelSelector.vue +++ b/app/components/BottomSheetModelSelector.vue @@ -37,7 +37,7 @@ {{ selectedProvider?.category }} + +
+
+

Daily usage

+

Limits reset at midnight (local time)

+
+
+
+ Messages +
+
+
+ {{ usageStats.general.used }} / {{ usageStats.general.limit }} +
+
+ Images +
+
+
+ {{ usageStats.image.used }} / {{ usageStats.image.limit }} +
+

{{ formatResetTime() }}

+
+
@@ -689,6 +728,63 @@ async function handleClearAllMemory() { color: var(--text-primary); } +.usage-section { + flex-direction: column; + align-items: stretch; +} + +.usage-section .setting-info { + margin-bottom: 0.5rem; +} + +.usage-stats { + width: 100%; + max-width: 400px; +} + +.usage-stat-row { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 8px; +} + +.usage-stat-label { + font-size: 0.875rem; + font-weight: 500; + color: var(--text-primary); + min-width: 72px; +} + +.usage-stats .usage-bar-track { + flex: 1; + height: 8px; + background: var(--bg-input); + border-radius: 4px; + overflow: hidden; +} + +.usage-stats .usage-bar-fill { + height: 100%; + background: var(--primary); + border-radius: 4px; + transition: width 0.2s ease; +} + +.usage-stat-count { + font-size: 0.875rem; + font-weight: 500; + color: var(--text-primary); + min-width: 3em; + text-align: right; +} + +.usage-reset { + margin: 8px 0 0; + font-size: 0.8125rem; + color: var(--text-secondary); +} + .switch-container { flex-shrink: 0; display: flex; diff --git a/app/components/TopBar.vue b/app/components/TopBar.vue index f2c473a..75a3d3f 100644 --- a/app/components/TopBar.vue +++ b/app/components/TopBar.vue @@ -8,28 +8,55 @@
-