release: 1.0.5

fix
This commit is contained in:
Per Stark
2026-06-24 22:02:31 +02:00
parent ba3fd6ed46
commit 6fb4b6a39a
119 changed files with 1058 additions and 701 deletions
+3 -3
View File
@@ -1,7 +1,7 @@
use axum::{
Form,
extract::{Path, State},
http::HeaderValue,
Form,
};
use serde::{Deserialize, Serialize};
@@ -18,8 +18,8 @@ use crate::{
middlewares::{
auth_middleware::RequireUser,
response_middleware::{
template_as_response, template_with_headers, ResponseResult, TemplateResponse,
TemplateResult,
ResponseResult, TemplateResponse, TemplateResult, template_as_response,
template_with_headers,
},
},
};
@@ -6,24 +6,24 @@ use async_stream::stream;
use axum::{
extract::{Query, State},
response::{
sse::{Event, KeepAlive, KeepAliveStream},
Sse,
sse::{Event, KeepAlive, KeepAliveStream},
},
};
use futures::{
stream::{self, once},
Stream, StreamExt, TryStreamExt,
stream::{self, once},
};
use json_stream_parser::JsonStreamParser;
use minijinja::Value;
use retrieval_pipeline::answer_retrieval::{
chunks_to_chat_context, create_chat_request, create_user_message_with_history,
LLMResponseFormat,
LLMResponseFormat, chunks_to_chat_context, create_chat_request,
create_user_message_with_history,
};
use serde::{Deserialize, Serialize};
use serde_json::from_str;
use tokio::sync::mpsc::channel;
use tokio::sync::Mutex;
use tokio::sync::mpsc::channel;
use tracing::{debug, error, info};
use common::storage::{
@@ -66,7 +66,7 @@ async fn get_message_and_user(
Ok(None) => {
return Err(sse_with_keep_alive(create_error_stream(
"Message not found: the specified message does not exist",
)))
)));
}
Err(e) => {
error!("Database error retrieving message {}: {:?}", message_id, e);
@@ -233,12 +233,12 @@ pub async fn get_response_stream(
fn build_chat_event_stream(
state: HtmlState,
openai_stream: impl Stream<
Item = Result<
async_openai::types::chat::CreateChatCompletionStreamResponse,
async_openai::error::OpenAIError,
>,
> + Send
+ 'static,
Item = Result<
async_openai::types::chat::CreateChatCompletionStreamResponse,
async_openai::error::OpenAIError,
>,
> + Send
+ 'static,
user_message: &Message,
user_id: String,
allowed_reference_ids: Vec<String>,
@@ -502,17 +502,17 @@ impl StreamParserState {
let json = self.parser.result();
if let Some(obj) = json.as_object() {
if let Some(answer) = obj.get("answer") {
self.in_answer_field = true;
if let Some(obj) = json.as_object()
&& let Some(answer) = obj.get("answer")
{
self.in_answer_field = true;
let current_content = answer.as_str().unwrap_or_default().to_string();
let current_content = answer.as_str().unwrap_or_default().to_string();
if current_content.len() > self.last_answer_content.len() {
let new_content = current_content[self.last_answer_content.len()..].to_string();
self.last_answer_content = current_content;
return new_content;
}
if current_content.len() > self.last_answer_content.len() {
let new_content = current_content[self.last_answer_content.len()..].to_string();
self.last_answer_content = current_content;
return new_content;
}
}
+1 -1
View File
@@ -3,7 +3,7 @@ mod message_response_stream;
mod reference_validation;
mod references;
use axum::{extract::FromRef, routing::get, Router};
use axum::{Router, extract::FromRef, routing::get};
pub use chat_handlers::{
delete_conversation, new_chat_user_message, new_user_message, patch_conversation_title,
reload_sidebar, show_chat_base as show_base, show_conversation_editing_title,
@@ -6,7 +6,7 @@ use common::{
error::AppError,
storage::{
db::SurrealDbClient,
types::{knowledge_entity::KnowledgeEntity, text_chunk::TextChunk, StoredObject},
types::{StoredObject, knowledge_entity::KnowledgeEntity, text_chunk::TextChunk},
},
};
use retrieval_pipeline::RetrievalOutput;
@@ -448,10 +448,12 @@ mod tests {
assert_eq!(result.valid_refs, vec![first.id, second.id]);
assert_eq!(result.invalid_refs.len(), 2);
assert!(result
.invalid_refs
.iter()
.all(|entry| entry.reason == InvalidReferenceReason::Duplicate));
assert!(
result
.invalid_refs
.iter()
.all(|entry| entry.reason == InvalidReferenceReason::Duplicate)
);
}
#[tokio::test]
+1 -1
View File
@@ -17,7 +17,7 @@ use crate::{
},
};
use super::reference_validation::{normalize_reference, ReferenceLookupTarget};
use super::reference_validation::{ReferenceLookupTarget, normalize_reference};
#[derive(Serialize)]
struct ReferenceTooltipData {