diff --git a/.vs/AuthorBuddy.Web.slnx/FileContentIndex/88076e03-43c9-4b87-b10b-3e737269d881.vsidx b/.vs/AuthorBuddy.Web.slnx/FileContentIndex/88076e03-43c9-4b87-b10b-3e737269d881.vsidx deleted file mode 100644 index d93df29..0000000 Binary files a/.vs/AuthorBuddy.Web.slnx/FileContentIndex/88076e03-43c9-4b87-b10b-3e737269d881.vsidx and /dev/null differ diff --git a/.vs/AuthorBuddy.Web.slnx/v18/DocumentLayout.backup.json b/.vs/AuthorBuddy.Web.slnx/v18/DocumentLayout.backup.json index 1569913..5e773fc 100644 --- a/.vs/AuthorBuddy.Web.slnx/v18/DocumentLayout.backup.json +++ b/.vs/AuthorBuddy.Web.slnx/v18/DocumentLayout.backup.json @@ -2,6 +2,42 @@ "Version": 1, "WorkspaceRootPath": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\", "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\install.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:install.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\editor.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\editor.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\projectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\projectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\ollamaassistant.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\ollamaassistant.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\iollamasetupservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\iollamasetupservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\layout\\mainlayout.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\layout\\mainlayout.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\settings.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\settings.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\data\\userentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:data\\userentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\settingsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\settingsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -18,21 +54,9 @@ "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\iragservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\iragservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\data\\userentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:data\\userentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\HP\\Desktop\\Website\\A7405018.jpg||{58961B49-13E0-48C0-9258-13CBC4D40279}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\ollamaassistant.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\ollamaassistant.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\layout\\mainlayout.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\layout\\mainlayout.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\themeservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\themeservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -45,14 +69,6 @@ "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\redirecttologin.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\redirecttologin.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\ollamaservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\ollamaservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\login.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\login.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" @@ -61,22 +77,10 @@ "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\totphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\totphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\settings.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\settings.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\models\\ollamasettings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:models\\ollamasettings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\iollamaservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\iollamaservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\projectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\projectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\filescannerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\filescannerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -89,10 +93,6 @@ "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\ragservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\ragservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\editor.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\editor.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\layout\\navmenu.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\layout\\navmenu.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" @@ -153,7 +153,7 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 3, + "SelectedChildIndex": 1, "Children": [ { "$type": "Bookmark", @@ -161,19 +161,36 @@ }, { "$type": "Document", - "DocumentIndex": 4, - "Title": "UserEntity.cs", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Data\\UserEntity.cs", - "RelativeDocumentMoniker": "Data\\UserEntity.cs", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Data\\UserEntity.cs", - "RelativeToolTip": "Data\\UserEntity.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAqwAIAAAAMAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-24T04:52:42.227Z" + "DocumentIndex": 0, + "Title": "INSTALL.md", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\INSTALL.md", + "RelativeDocumentMoniker": "INSTALL.md", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\INSTALL.md", + "RelativeToolTip": "INSTALL.md", + "ViewState": "AgIAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001818|", + "WhenOpened": "2026-05-31T17:07:33.423Z", + "EditorCaption": "" + }, + { + "$type": "Bookmark", + "Name": "RST:0:0:{b3f9f954-0ca5-0091-76b4-34a47f44c954}" }, { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 4, + "Title": "IOllamaSetupService.cs", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IOllamaSetupService.cs", + "RelativeDocumentMoniker": "Services\\IOllamaSetupService.cs", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IOllamaSetupService.cs", + "RelativeToolTip": "Services\\IOllamaSetupService.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-05-30T08:35:51.087Z" + }, + { + "$type": "Document", + "DocumentIndex": 13, "Title": "A7405018.jpg", "DocumentMoniker": "C:\\Users\\HP\\Desktop\\Website\\A7405018.jpg", "ToolTip": "C:\\Users\\HP\\Desktop\\Website\\A7405018.jpg", @@ -182,20 +199,104 @@ }, { "$type": "Document", - "DocumentIndex": 0, + "DocumentIndex": 9, "Title": "SettingsService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\SettingsService.cs", "RelativeDocumentMoniker": "Services\\SettingsService.cs", "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\SettingsService.cs", "RelativeToolTip": "Services\\SettingsService.cs", - "ViewState": "AgIAAAMBAAAAAAAAAAAAABsBAAApAAAAAAAAAA==", + "ViewState": "AgIAAE0BAAAAAAAAAAAAAC0BAAAMAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-21T17:37:24.777Z", - "EditorCaption": "" + "WhenOpened": "2026-05-21T17:37:24.777Z" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "Settings.razor", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Settings.razor", + "RelativeDocumentMoniker": "Components\\Pages\\Settings.razor", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Settings.razor", + "RelativeToolTip": "Components\\Pages\\Settings.razor", + "ViewState": "AgIAAJsAAAAAAAAAAAAAAKwAAAAWAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", + "WhenOpened": "2026-05-15T16:43:26.6Z" }, { "$type": "Document", "DocumentIndex": 1, + "Title": "Editor.razor", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Editor.razor", + "RelativeDocumentMoniker": "Components\\Pages\\Editor.razor", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Editor.razor", + "RelativeToolTip": "Components\\Pages\\Editor.razor", + "ViewState": "AgIAAFsCAAAAAAAAAAAiwEgDAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", + "WhenOpened": "2026-05-16T13:01:59.743Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "ProjectService.cs", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ProjectService.cs", + "RelativeDocumentMoniker": "Services\\ProjectService.cs", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ProjectService.cs", + "RelativeToolTip": "Services\\ProjectService.cs", + "ViewState": "AgIAAN0AAAAAAAAAAAApwO0AAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-05-15T15:56:55.229Z" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "OllamaAssistant.razor", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\OllamaAssistant.razor", + "RelativeDocumentMoniker": "Components\\Pages\\OllamaAssistant.razor", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\OllamaAssistant.razor", + "RelativeToolTip": "Components\\Pages\\OllamaAssistant.razor", + "ViewState": "AgIAANoAAAAAAAAAAAAiwPIAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", + "WhenOpened": "2026-05-20T05:14:39.037Z" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "MainLayout.razor", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Layout\\MainLayout.razor", + "RelativeDocumentMoniker": "Components\\Layout\\MainLayout.razor", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Layout\\MainLayout.razor", + "RelativeToolTip": "Components\\Layout\\MainLayout.razor", + "ViewState": "AgIAACABAAAAAAAAAAApwDQBAAARAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", + "WhenOpened": "2026-05-15T16:04:36.444Z" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "UserEntity.cs", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Data\\UserEntity.cs", + "RelativeDocumentMoniker": "Data\\UserEntity.cs", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Data\\UserEntity.cs", + "RelativeToolTip": "Data\\UserEntity.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-05-24T04:52:42.227Z" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "Program.cs", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Program.cs", + "RelativeDocumentMoniker": "Program.cs", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Program.cs", + "RelativeToolTip": "Program.cs", + "ViewState": "AgIAACwAAAAAAAAAAAAQwD8AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-05-20T04:07:21.54Z" + }, + { + "$type": "Document", + "DocumentIndex": 10, "Title": "IThemeService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IThemeService.cs", "RelativeDocumentMoniker": "Services\\IThemeService.cs", @@ -203,12 +304,11 @@ "RelativeToolTip": "Services\\IThemeService.cs", "ViewState": "AgIAAAAAAAAAAAAAAAAqwAgAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-21T17:32:01.784Z", - "EditorCaption": "" + "WhenOpened": "2026-05-21T17:32:01.784Z" }, { "$type": "Document", - "DocumentIndex": 10, + "DocumentIndex": 16, "Title": "RedirectToLogin.razor", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\RedirectToLogin.razor", "RelativeDocumentMoniker": "Components\\RedirectToLogin.razor", @@ -220,31 +320,7 @@ }, { "$type": "Document", - "DocumentIndex": 6, - "Title": "OllamaAssistant.razor", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\OllamaAssistant.razor", - "RelativeDocumentMoniker": "Components\\Pages\\OllamaAssistant.razor", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\OllamaAssistant.razor", - "RelativeToolTip": "Components\\Pages\\OllamaAssistant.razor", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAGgAAAAMAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2026-05-20T05:14:39.037Z" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "MainLayout.razor", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Layout\\MainLayout.razor", - "RelativeDocumentMoniker": "Components\\Layout\\MainLayout.razor", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Layout\\MainLayout.razor", - "RelativeToolTip": "Components\\Layout\\MainLayout.razor", - "ViewState": "AgIAAB4BAAAAAAAAAAApwDQBAAApAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2026-05-15T16:04:36.444Z" - }, - { - "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 11, "Title": "ISettingsService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ISettingsService.cs", "RelativeDocumentMoniker": "Services\\ISettingsService.cs", @@ -256,7 +332,7 @@ }, { "$type": "Document", - "DocumentIndex": 3, + "DocumentIndex": 12, "Title": "IRagService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IRagService.cs", "RelativeDocumentMoniker": "Services\\IRagService.cs", @@ -268,7 +344,7 @@ }, { "$type": "Document", - "DocumentIndex": 13, + "DocumentIndex": 17, "Title": "Login.razor", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Login.razor", "RelativeDocumentMoniker": "Components\\Pages\\Login.razor", @@ -280,7 +356,7 @@ }, { "$type": "Document", - "DocumentIndex": 8, + "DocumentIndex": 14, "Title": "ThemeService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ThemeService.cs", "RelativeDocumentMoniker": "Services\\ThemeService.cs", @@ -292,31 +368,7 @@ }, { "$type": "Document", - "DocumentIndex": 11, - "Title": "Program.cs", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Program.cs", - "RelativeDocumentMoniker": "Program.cs", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Program.cs", - "RelativeToolTip": "Program.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAAABIAAAAsAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-20T04:07:21.54Z" - }, - { - "$type": "Document", - "DocumentIndex": 12, - "Title": "OllamaService.cs", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\OllamaService.cs", - "RelativeDocumentMoniker": "Services\\OllamaService.cs", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\OllamaService.cs", - "RelativeToolTip": "Services\\OllamaService.cs", - "ViewState": "AgIAAGEAAAAAAAAAAAAcwHsAAAAVAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-16T06:43:46.404Z" - }, - { - "$type": "Document", - "DocumentIndex": 9, + "DocumentIndex": 15, "Title": "logo.jpg", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Assets\\logo.jpg", "RelativeDocumentMoniker": "Assets\\logo.jpg", @@ -327,7 +379,7 @@ }, { "$type": "Document", - "DocumentIndex": 16, + "DocumentIndex": 19, "Title": "OllamaSettings.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Models\\OllamaSettings.cs", "RelativeDocumentMoniker": "Models\\OllamaSettings.cs", @@ -350,7 +402,7 @@ }, { "$type": "Document", - "DocumentIndex": 19, + "DocumentIndex": 20, "Title": "FileScannerService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\FileScannerService.cs", "RelativeDocumentMoniker": "Services\\FileScannerService.cs", @@ -362,19 +414,7 @@ }, { "$type": "Document", - "DocumentIndex": 17, - "Title": "IOllamaService.cs", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IOllamaService.cs", - "RelativeDocumentMoniker": "Services\\IOllamaService.cs", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IOllamaService.cs", - "RelativeToolTip": "Services\\IOllamaService.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAqwAkAAAAPAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-16T07:20:19.212Z" - }, - { - "$type": "Document", - "DocumentIndex": 14, + "DocumentIndex": 18, "Title": "TotpHelper.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\TotpHelper.cs", "RelativeDocumentMoniker": "Services\\TotpHelper.cs", @@ -386,7 +426,7 @@ }, { "$type": "Document", - "DocumentIndex": 20, + "DocumentIndex": 21, "Title": "Project.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Models\\Project.cs", "RelativeDocumentMoniker": "Models\\Project.cs", @@ -398,19 +438,7 @@ }, { "$type": "Document", - "DocumentIndex": 15, - "Title": "Settings.razor", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Settings.razor", - "RelativeDocumentMoniker": "Components\\Pages\\Settings.razor", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Settings.razor", - "RelativeToolTip": "Components\\Pages\\Settings.razor", - "ViewState": "AgIAAAwAAAAAAAAAAAAAAIYAAAAlAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2026-05-15T16:43:26.6Z" - }, - { - "$type": "Document", - "DocumentIndex": 21, + "DocumentIndex": 22, "Title": "RagService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\RagService.cs", "RelativeDocumentMoniker": "Services\\RagService.cs", @@ -420,18 +448,6 @@ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2026-05-18T15:40:05.413Z" }, - { - "$type": "Document", - "DocumentIndex": 18, - "Title": "ProjectService.cs", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ProjectService.cs", - "RelativeDocumentMoniker": "Services\\ProjectService.cs", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ProjectService.cs", - "RelativeToolTip": "Services\\ProjectService.cs", - "ViewState": "AgIAADQAAAAAAAAAAAAqwEYAAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-15T15:56:55.229Z" - }, { "$type": "Document", "DocumentIndex": 23, @@ -444,18 +460,6 @@ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", "WhenOpened": "2026-05-15T16:04:37.739Z" }, - { - "$type": "Document", - "DocumentIndex": 22, - "Title": "Editor.razor", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Editor.razor", - "RelativeDocumentMoniker": "Components\\Pages\\Editor.razor", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Editor.razor", - "RelativeToolTip": "Components\\Pages\\Editor.razor", - "ViewState": "AgIAAAoAAACA6NuCpTYvwKAAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2026-05-16T13:01:59.743Z" - }, { "$type": "Document", "DocumentIndex": 25, @@ -587,10 +591,6 @@ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", "WhenOpened": "2026-05-14T10:14:25.605Z" - }, - { - "$type": "Bookmark", - "Name": "RST:0:0:{b3f9f954-0ca5-0091-76b4-34a47f44c954}" } ] } diff --git a/.vs/AuthorBuddy.Web.slnx/v18/DocumentLayout.json b/.vs/AuthorBuddy.Web.slnx/v18/DocumentLayout.json index c509723..88ed6e3 100644 --- a/.vs/AuthorBuddy.Web.slnx/v18/DocumentLayout.json +++ b/.vs/AuthorBuddy.Web.slnx/v18/DocumentLayout.json @@ -2,6 +2,42 @@ "Version": 1, "WorkspaceRootPath": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\", "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\install.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:install.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\editor.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\editor.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\projectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\projectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\ollamaassistant.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\ollamaassistant.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\iollamasetupservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\iollamasetupservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\layout\\mainlayout.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\layout\\mainlayout.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\settings.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\settings.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" + }, + { + "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\data\\userentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:data\\userentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\settingsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\settingsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -18,21 +54,9 @@ "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\iragservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\iragservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\data\\userentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:data\\userentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\HP\\Desktop\\Website\\A7405018.jpg||{58961B49-13E0-48C0-9258-13CBC4D40279}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\ollamaassistant.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\ollamaassistant.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\layout\\mainlayout.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\layout\\mainlayout.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\themeservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\themeservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -45,14 +69,6 @@ "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\redirecttologin.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\redirecttologin.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\ollamaservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\ollamaservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\login.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\login.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" @@ -61,22 +77,10 @@ "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\totphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\totphelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\settings.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\settings.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\models\\ollamasettings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:models\\ollamasettings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\iollamaservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\iollamaservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\projectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\projectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\filescannerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\filescannerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -89,10 +93,6 @@ "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\services\\ragservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:services\\ragservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\pages\\editor.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", - "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\pages\\editor.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" - }, { "AbsoluteMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|e:\\ollama_net\\ollama\\authorbuddy.web\\components\\layout\\navmenu.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}", "RelativeMoniker": "D:0:0:{4F4697EF-EFFA-26AC-C8A1-C9859805D247}|AuthorBuddy.Web.csproj|solutionrelative:components\\layout\\navmenu.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}" @@ -153,27 +153,44 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 3, + "SelectedChildIndex": 2, "Children": [ { "$type": "Bookmark", "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" }, { - "$type": "Document", - "DocumentIndex": 4, - "Title": "UserEntity.cs", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Data\\UserEntity.cs", - "RelativeDocumentMoniker": "Data\\UserEntity.cs", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Data\\UserEntity.cs", - "RelativeToolTip": "Data\\UserEntity.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAqwAIAAAAMAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-24T04:52:42.227Z" + "$type": "Bookmark", + "Name": "RST:0:0:{b3f9f954-0ca5-0091-76b4-34a47f44c954}" }, { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 0, + "Title": "INSTALL.md", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\INSTALL.md", + "RelativeDocumentMoniker": "INSTALL.md", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\INSTALL.md", + "RelativeToolTip": "INSTALL.md", + "ViewState": "AgIAAFQAAAAAAAAAAAAAAGwAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001818|", + "WhenOpened": "2026-05-31T17:07:33.423Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "IOllamaSetupService.cs", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IOllamaSetupService.cs", + "RelativeDocumentMoniker": "Services\\IOllamaSetupService.cs", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IOllamaSetupService.cs", + "RelativeToolTip": "Services\\IOllamaSetupService.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-05-30T08:35:51.087Z" + }, + { + "$type": "Document", + "DocumentIndex": 13, "Title": "A7405018.jpg", "DocumentMoniker": "C:\\Users\\HP\\Desktop\\Website\\A7405018.jpg", "ToolTip": "C:\\Users\\HP\\Desktop\\Website\\A7405018.jpg", @@ -182,20 +199,104 @@ }, { "$type": "Document", - "DocumentIndex": 0, + "DocumentIndex": 9, "Title": "SettingsService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\SettingsService.cs", "RelativeDocumentMoniker": "Services\\SettingsService.cs", "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\SettingsService.cs", "RelativeToolTip": "Services\\SettingsService.cs", - "ViewState": "AgIAAO4AAAAAAAAAAAAqwBsBAAApAAAAAAAAAA==", + "ViewState": "AgIAAE0BAAAAAAAAAAAAAC0BAAAMAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-21T17:37:24.777Z", - "EditorCaption": "" + "WhenOpened": "2026-05-21T17:37:24.777Z" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "Settings.razor", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Settings.razor", + "RelativeDocumentMoniker": "Components\\Pages\\Settings.razor", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Settings.razor", + "RelativeToolTip": "Components\\Pages\\Settings.razor", + "ViewState": "AgIAAJsAAAAAAAAAAAAAAKwAAAAWAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", + "WhenOpened": "2026-05-15T16:43:26.6Z" }, { "$type": "Document", "DocumentIndex": 1, + "Title": "Editor.razor", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Editor.razor", + "RelativeDocumentMoniker": "Components\\Pages\\Editor.razor", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Editor.razor", + "RelativeToolTip": "Components\\Pages\\Editor.razor", + "ViewState": "AgIAAFsCAAAAAAAAAAAiwEgDAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", + "WhenOpened": "2026-05-16T13:01:59.743Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "ProjectService.cs", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ProjectService.cs", + "RelativeDocumentMoniker": "Services\\ProjectService.cs", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ProjectService.cs", + "RelativeToolTip": "Services\\ProjectService.cs", + "ViewState": "AgIAAN0AAAAAAAAAAAApwO0AAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-05-15T15:56:55.229Z" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "OllamaAssistant.razor", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\OllamaAssistant.razor", + "RelativeDocumentMoniker": "Components\\Pages\\OllamaAssistant.razor", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\OllamaAssistant.razor", + "RelativeToolTip": "Components\\Pages\\OllamaAssistant.razor", + "ViewState": "AgIAANoAAAAAAAAAAAAiwPIAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", + "WhenOpened": "2026-05-20T05:14:39.037Z" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "MainLayout.razor", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Layout\\MainLayout.razor", + "RelativeDocumentMoniker": "Components\\Layout\\MainLayout.razor", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Layout\\MainLayout.razor", + "RelativeToolTip": "Components\\Layout\\MainLayout.razor", + "ViewState": "AgIAACABAAAAAAAAAAApwDQBAAARAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", + "WhenOpened": "2026-05-15T16:04:36.444Z" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "UserEntity.cs", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Data\\UserEntity.cs", + "RelativeDocumentMoniker": "Data\\UserEntity.cs", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Data\\UserEntity.cs", + "RelativeToolTip": "Data\\UserEntity.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-05-24T04:52:42.227Z" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "Program.cs", + "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Program.cs", + "RelativeDocumentMoniker": "Program.cs", + "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Program.cs", + "RelativeToolTip": "Program.cs", + "ViewState": "AgIAACwAAAAAAAAAAAAQwD8AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-05-20T04:07:21.54Z" + }, + { + "$type": "Document", + "DocumentIndex": 10, "Title": "IThemeService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IThemeService.cs", "RelativeDocumentMoniker": "Services\\IThemeService.cs", @@ -203,12 +304,11 @@ "RelativeToolTip": "Services\\IThemeService.cs", "ViewState": "AgIAAAAAAAAAAAAAAAAqwAgAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-21T17:32:01.784Z", - "EditorCaption": "" + "WhenOpened": "2026-05-21T17:32:01.784Z" }, { "$type": "Document", - "DocumentIndex": 10, + "DocumentIndex": 16, "Title": "RedirectToLogin.razor", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\RedirectToLogin.razor", "RelativeDocumentMoniker": "Components\\RedirectToLogin.razor", @@ -220,31 +320,7 @@ }, { "$type": "Document", - "DocumentIndex": 6, - "Title": "OllamaAssistant.razor", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\OllamaAssistant.razor", - "RelativeDocumentMoniker": "Components\\Pages\\OllamaAssistant.razor", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\OllamaAssistant.razor", - "RelativeToolTip": "Components\\Pages\\OllamaAssistant.razor", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAGgAAAAMAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2026-05-20T05:14:39.037Z" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "MainLayout.razor", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Layout\\MainLayout.razor", - "RelativeDocumentMoniker": "Components\\Layout\\MainLayout.razor", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Layout\\MainLayout.razor", - "RelativeToolTip": "Components\\Layout\\MainLayout.razor", - "ViewState": "AgIAAB4BAAAAAAAAAAApwDQBAAApAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2026-05-15T16:04:36.444Z" - }, - { - "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 11, "Title": "ISettingsService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ISettingsService.cs", "RelativeDocumentMoniker": "Services\\ISettingsService.cs", @@ -256,7 +332,7 @@ }, { "$type": "Document", - "DocumentIndex": 3, + "DocumentIndex": 12, "Title": "IRagService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IRagService.cs", "RelativeDocumentMoniker": "Services\\IRagService.cs", @@ -268,7 +344,7 @@ }, { "$type": "Document", - "DocumentIndex": 13, + "DocumentIndex": 17, "Title": "Login.razor", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Login.razor", "RelativeDocumentMoniker": "Components\\Pages\\Login.razor", @@ -280,7 +356,7 @@ }, { "$type": "Document", - "DocumentIndex": 8, + "DocumentIndex": 14, "Title": "ThemeService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ThemeService.cs", "RelativeDocumentMoniker": "Services\\ThemeService.cs", @@ -292,31 +368,7 @@ }, { "$type": "Document", - "DocumentIndex": 11, - "Title": "Program.cs", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Program.cs", - "RelativeDocumentMoniker": "Program.cs", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Program.cs", - "RelativeToolTip": "Program.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAAABIAAAAsAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-20T04:07:21.54Z" - }, - { - "$type": "Document", - "DocumentIndex": 12, - "Title": "OllamaService.cs", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\OllamaService.cs", - "RelativeDocumentMoniker": "Services\\OllamaService.cs", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\OllamaService.cs", - "RelativeToolTip": "Services\\OllamaService.cs", - "ViewState": "AgIAAGEAAAAAAAAAAAAcwHsAAAAVAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-16T06:43:46.404Z" - }, - { - "$type": "Document", - "DocumentIndex": 9, + "DocumentIndex": 15, "Title": "logo.jpg", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Assets\\logo.jpg", "RelativeDocumentMoniker": "Assets\\logo.jpg", @@ -327,7 +379,7 @@ }, { "$type": "Document", - "DocumentIndex": 16, + "DocumentIndex": 19, "Title": "OllamaSettings.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Models\\OllamaSettings.cs", "RelativeDocumentMoniker": "Models\\OllamaSettings.cs", @@ -350,7 +402,7 @@ }, { "$type": "Document", - "DocumentIndex": 19, + "DocumentIndex": 20, "Title": "FileScannerService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\FileScannerService.cs", "RelativeDocumentMoniker": "Services\\FileScannerService.cs", @@ -362,19 +414,7 @@ }, { "$type": "Document", - "DocumentIndex": 17, - "Title": "IOllamaService.cs", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IOllamaService.cs", - "RelativeDocumentMoniker": "Services\\IOllamaService.cs", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\IOllamaService.cs", - "RelativeToolTip": "Services\\IOllamaService.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAqwAkAAAAPAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-16T07:20:19.212Z" - }, - { - "$type": "Document", - "DocumentIndex": 14, + "DocumentIndex": 18, "Title": "TotpHelper.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\TotpHelper.cs", "RelativeDocumentMoniker": "Services\\TotpHelper.cs", @@ -386,7 +426,7 @@ }, { "$type": "Document", - "DocumentIndex": 20, + "DocumentIndex": 21, "Title": "Project.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Models\\Project.cs", "RelativeDocumentMoniker": "Models\\Project.cs", @@ -398,19 +438,7 @@ }, { "$type": "Document", - "DocumentIndex": 15, - "Title": "Settings.razor", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Settings.razor", - "RelativeDocumentMoniker": "Components\\Pages\\Settings.razor", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Settings.razor", - "RelativeToolTip": "Components\\Pages\\Settings.razor", - "ViewState": "AgIAAAwAAAAAAAAAAAAAAIYAAAAlAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2026-05-15T16:43:26.6Z" - }, - { - "$type": "Document", - "DocumentIndex": 21, + "DocumentIndex": 22, "Title": "RagService.cs", "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\RagService.cs", "RelativeDocumentMoniker": "Services\\RagService.cs", @@ -420,18 +448,6 @@ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2026-05-18T15:40:05.413Z" }, - { - "$type": "Document", - "DocumentIndex": 18, - "Title": "ProjectService.cs", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ProjectService.cs", - "RelativeDocumentMoniker": "Services\\ProjectService.cs", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Services\\ProjectService.cs", - "RelativeToolTip": "Services\\ProjectService.cs", - "ViewState": "AgIAADQAAAAAAAAAAAAqwEYAAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-05-15T15:56:55.229Z" - }, { "$type": "Document", "DocumentIndex": 23, @@ -444,18 +460,6 @@ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", "WhenOpened": "2026-05-15T16:04:37.739Z" }, - { - "$type": "Document", - "DocumentIndex": 22, - "Title": "Editor.razor", - "DocumentMoniker": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Editor.razor", - "RelativeDocumentMoniker": "Components\\Pages\\Editor.razor", - "ToolTip": "E:\\ollama_net\\ollama\\AuthorBuddy.Web\\Components\\Pages\\Editor.razor", - "RelativeToolTip": "Components\\Pages\\Editor.razor", - "ViewState": "AgIAAAoAAACA6NuCpTYvwKAAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|", - "WhenOpened": "2026-05-16T13:01:59.743Z" - }, { "$type": "Document", "DocumentIndex": 25, @@ -587,10 +591,6 @@ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", "WhenOpened": "2026-05-14T10:14:25.605Z" - }, - { - "$type": "Bookmark", - "Name": "RST:0:0:{b3f9f954-0ca5-0091-76b4-34a47f44c954}" } ] } diff --git a/Assets/Unbenannte Tabelle - Google Sheets.pdf b/Assets/Unbenannte Tabelle - Google Sheets.pdf new file mode 100644 index 0000000..8fe4142 Binary files /dev/null and b/Assets/Unbenannte Tabelle - Google Sheets.pdf differ diff --git a/AuthorBuddy.Web.csproj b/AuthorBuddy.Web.csproj index e815d63..046c7d0 100644 --- a/AuthorBuddy.Web.csproj +++ b/AuthorBuddy.Web.csproj @@ -9,7 +9,9 @@ + + diff --git a/Components/App.razor b/Components/App.razor index 54f7f2c..b85aee7 100644 --- a/Components/App.razor +++ b/Components/App.razor @@ -20,6 +20,8 @@ + + diff --git a/Components/CategorySelector.razor b/Components/CategorySelector.razor new file mode 100644 index 0000000..12bfd46 --- /dev/null +++ b/Components/CategorySelector.razor @@ -0,0 +1,118 @@ +@using AuthorBuddy.Web.Models +@inject IProjectService ProjectService + +
+ @foreach (var cat in _allCategories) + { + var isActive = (Current & cat) == cat; + var disabled = _disabledCategories.Contains(cat); + + } +
+ + + +@code { + private static readonly FileCategory[] _allCategories = new[] + { + FileCategory.Character, + FileCategory.Exposee, + FileCategory.Fact, + FileCategory.Document + }; + + private HashSet _disabledCategories = new(); + + [Parameter] public FileCategory Current { get; set; } + [Parameter] public int ProjectId { get; set; } + [Parameter] public string FilePath { get; set; } = string.Empty; + [Parameter] public EventCallback OnCategoryChanged { get; set; } + + protected override void OnParametersSet() + { + UpdateDisabled(); + } + + private void UpdateDisabled() + { + _disabledCategories.Clear(); + foreach (var cat in _allCategories) + { + if (cat == Current) continue; + var combined = Current | cat; + if (!FileCategoryHelper.IsValid(combined)) + _disabledCategories.Add(cat); + } + } + + private async Task ToggleCategory(FileCategory cat) + { + if (_disabledCategories.Contains(cat)) return; + + var newCategory = Current.HasFlag(cat) ? Current & ~cat : Current | cat; + + if (!FileCategoryHelper.IsValid(newCategory)) return; + + await ProjectService.SetFileCategoryAsync(ProjectId, FilePath, newCategory); + await OnCategoryChanged.InvokeAsync(newCategory); + } + + private static string CategoryName(FileCategory cat) => cat switch + { + FileCategory.Character => "Charakter", + FileCategory.Exposee => "Exposé", + FileCategory.Fact => "Fakt", + FileCategory.Document => "Dokument", + _ => "" + }; + + private static string CategoryIcon(FileCategory cat) => cat switch + { + FileCategory.Character => "👤", + FileCategory.Exposee => "📋", + FileCategory.Fact => "📌", + FileCategory.Document => "📄", + _ => "" + }; +} diff --git a/Components/CopyCreateToolbar.razor b/Components/CopyCreateToolbar.razor new file mode 100644 index 0000000..aaa2f33 --- /dev/null +++ b/Components/CopyCreateToolbar.razor @@ -0,0 +1,149 @@ +@inject IJSRuntime JS +@inject ISettingsService SettingsService +@inject IProjectService ProjectService + +
+ + +
+ +@if (showCreateDialog) +{ + +} + + + +@code { + [Parameter] public string Text { get; set; } = string.Empty; + [Parameter] public string? DefaultFileName { get; set; } + [Parameter] public EventCallback OnFileCreated { get; set; } + + private bool showCreateDialog; + private string newFileName = string.Empty; + private int? _projectId; + private string? _projectPath; + private bool _isCopyDisabled; + + protected override async Task OnInitializedAsync() + { + _projectId = SettingsService.CurrentProjectId; + if (_projectId.HasValue && _projectId > 0) + { + var project = await ProjectService.GetProjectAsync(_projectId.Value); + _projectPath = project?.RootPath; + } + + if (!string.IsNullOrEmpty(DefaultFileName)) + newFileName = DefaultFileName; + } + + private async Task CopyToClipboard() + { + if (string.IsNullOrEmpty(Text) || _isCopyDisabled) return; + _isCopyDisabled = true; + try + { + await JS.InvokeVoidAsync("navigator.clipboard.writeText", Text); + } + catch + { + // Fallback for older browsers + try + { + var textArea = System.Text.Encodings.Web.JavaScriptEncoder.Default.Encode(Text); + await JS.InvokeVoidAsync("eval", $"navigator.clipboard.writeText('{textArea}')"); + } + catch { } + } + finally + { + _isCopyDisabled = false; + } + } + + private void ShowCreateDialog() + { + newFileName = DefaultFileName ?? string.Empty; + showCreateDialog = true; + } + + private void CancelCreate() + { + showCreateDialog = false; + newFileName = string.Empty; + } + + private async Task CreateFile() + { + if (string.IsNullOrWhiteSpace(newFileName) || string.IsNullOrEmpty(Text)) return; + + try + { + var fileName = newFileName.Trim(); + if (!fileName.EndsWith(".md", StringComparison.OrdinalIgnoreCase)) + fileName += ".md"; + + string savePath; + if (!string.IsNullOrEmpty(_projectPath) && Directory.Exists(_projectPath)) + { + savePath = Path.Combine(_projectPath, fileName); + } + else + { + savePath = Path.Combine(Directory.GetCurrentDirectory(), fileName); + } + + if (File.Exists(savePath)) + { + var dir = Path.GetDirectoryName(savePath)!; + var name = Path.GetFileNameWithoutExtension(savePath); + var ext = Path.GetExtension(savePath); + var counter = 1; + do + { + savePath = Path.Combine(dir, $"{name}_{counter}{ext}"); + counter++; + } while (File.Exists(savePath)); + } + + await File.WriteAllTextAsync(savePath, Text); + showCreateDialog = false; + await OnFileCreated.InvokeAsync(Path.GetFileName(savePath)); + } + catch { } + } +} diff --git a/Components/Layout/MainLayout.razor b/Components/Layout/MainLayout.razor index 449cea5..86886dc 100644 --- a/Components/Layout/MainLayout.razor +++ b/Components/Layout/MainLayout.razor @@ -3,10 +3,13 @@ @inject IProjectService ProjectService @inject ISettingsService SettingsService @inject IThemeService ThemeService +@inject IOllamaSetupService SetupService @inject OllamaSettings OllamaSettings @inject IAuthService AuthService @inject CustomAuthStateProvider AuthStateProvider @inject ILocalizationService Loc +@inject OperationState OpState +@using AuthorBuddy.Web.Models @if (_isLoading) { @@ -54,12 +57,18 @@ else { } @@ -111,38 +120,110 @@ else @Loc["nav.projects.files"] + @if (_selectedFiles.Count > 0) + { + + } } +@if (_showExportDialog) +{ + +} + @if (showRenameDialog) {
- @statusText - @if (isBusy) + @OpState.StatusText + @if (OpState.IsBusy) { - + + } + @if (!string.IsNullOrEmpty(OpState.ThoughtText)) + { + @OpState.ThoughtText }
} + + @if (_showInfoOverlay) {
@@ -269,10 +404,11 @@ else private List? projects; private List? fileTree; private int currentProjectId; + private string? currentProjectName; private string? currentFilePath; - private string statusText = "Bereit"; - private bool isBusy; - private double operationProgress; + private string copyProjectName = string.Empty; + private string copyProjectPath = string.Empty; + private Project? copyProjectSource; private bool showRenameDialog; private string renameNewName = string.Empty; private FileTreeItem? renameTarget; @@ -280,19 +416,40 @@ else private string newFileName = string.Empty; private FileTreeItem? newFileParentDir; private bool showCopyProjectDialog; - private string copyProjectName = string.Empty; - private string copyProjectPath = string.Empty; - private Project? copyProjectSource; + private Action? _opStateHandler; + private string? _editingCategoryPath; + private HashSet _selectedFiles = new(); + private bool _showExportDialog; + private string exportFileName = string.Empty; + private string exportFormat = "Html"; [Inject] private NavigationManager Navigation { get; set; } = default!; + [Inject] + private IJSRuntime JS { get; set; } = default!; + + [Inject] + private IExportService ExportService { get; set; } = default!; + protected override async Task OnInitializedAsync() { + _opStateHandler = () => InvokeAsync(StateHasChanged); + OpState.OnChange += _opStateHandler; await SettingsService.InitializeAsync(); await Loc.InitAsync(); - statusText = Loc["common.status.ready"]; + OpState.SetStatus(Loc["common.status.ready"]); Navigation.LocationChanged += OnLocationChanged; + + // Startup Setup Check + _ = Task.Run(async () => + { + var result = await SetupService.AnalyzeSettingsAsync(); + if (!result.IsCorrect) + { + OpState.SetStatus("Ollama-Einstellungen suboptimal. Setup-Assistent empfohlen.", false); + } + }); } private async Task LoadCurrentUser() @@ -332,7 +489,7 @@ else if (!_isAuthenticated && Program.DebugAutoLogin) { var users = await SettingsService.GetUsersAsync(); - var first = users.FirstOrDefault(); + var first = users.FirstOrDefault(u => u.Role == UserRole.Administrator); if (first != null) { await AuthService.AdminBypassLoginAsync(first.Id); @@ -355,6 +512,8 @@ else public void Dispose() { + if (_opStateHandler != null) + OpState.OnChange -= _opStateHandler; Navigation.LocationChanged -= OnLocationChanged; } @@ -376,10 +535,13 @@ else if (currentProjectId > 0) { + var project = await ProjectService.GetProjectAsync(currentProjectId); + currentProjectName = project?.Name; await LoadFileTree(); } else { + currentProjectName = null; fileTree = null; } } @@ -396,11 +558,27 @@ else } } + private void ToggleCategoryEditor(FileTreeItem item) + { + if (_editingCategoryPath == item.FullPath) + _editingCategoryPath = null; + else + _editingCategoryPath = item.FullPath; + } + + private void OnCategoryChanged(FileTreeItem item, FileCategory newCategory) + { + item.Category = newCategory; + _editingCategoryPath = null; + } + private async Task LoadProjects() { try { - projects = await ProjectService.GetAllProjectsAsync(); + var currentUser = AuthService.CurrentUser; + int? filterUserId = currentUser?.Role == UserRole.Administrator ? null : currentUser?.Id; + projects = await ProjectService.GetAllProjectsAsync(filterUserId); } catch { @@ -428,8 +606,8 @@ else private void BeginCopyProject(Project project) { copyProjectSource = project; - copyProjectName = $"{project.Name} (Kopie)"; - copyProjectPath = project.RootPath + "_Kopie"; + copyProjectName = project.Name + " (Kopie)"; + copyProjectPath = ProjectPathHelper.SuggestPath(project.Name + "_Kopie"); showCopyProjectDialog = true; } @@ -446,13 +624,19 @@ else if (copyProjectSource == null || string.IsNullOrWhiteSpace(copyProjectName) || string.IsNullOrWhiteSpace(copyProjectPath)) return; + if (!ProjectPathHelper.IsPathAllowed(copyProjectPath)) + { + OpState.SetStatus($"⚠ Pfad nicht erlaubt. Verwende: {ProjectPathHelper.AllowedBasePath}", true); + showCopyProjectDialog = false; + return; + } + try { var userId = (await AuthService.GetCurrentUserAsync())?.Id; if (userId == null) return; - statusText = $"{Loc["nav.status.project_copied"]} {copyProjectName}..."; - isBusy = true; + OpState.SetStatus($"{Loc["nav.status.project_copied"]} {copyProjectName}...", true); StateHasChanged(); var newId = await ProjectService.CopyProjectAsync(copyProjectSource.Id, copyProjectName, copyProjectPath, userId.Value); @@ -464,15 +648,15 @@ else await SelectProject(newProject); } - statusText = $"{Loc["nav.status.project_copied"]} {copyProjectName}"; + OpState.SetStatus($"{Loc["nav.status.project_copied"]} {copyProjectName}", true); } catch (Exception ex) { - statusText = $"{Loc["common.error"]} {ex.Message}"; + OpState.SetStatus($"{Loc["common.error"]} {ex.Message}", true); } finally { - isBusy = false; + OpState.SetStatus(OpState.StatusText, false); showCopyProjectDialog = false; copyProjectSource = null; copyProjectName = string.Empty; @@ -523,6 +707,7 @@ else activeSection = "files"; SettingsService.CurrentProjectId = project.Id; currentProjectId = project.Id; + currentProjectName = project.Name; SettingsService.CurrentFilePath = null; await SettingsService.SaveLastProjectIdAsync(project.Id); await SettingsService.LoadProjectSettingsAsync(); @@ -560,7 +745,7 @@ else var newPath = Path.Combine(dir, renameNewName); if (File.Exists(newPath)) { - statusText = Loc["nav.error.file_exists"]; + OpState.SetStatus(Loc["nav.error.file_exists"]); return; } File.Move(renameTarget.FullPath, newPath); @@ -568,11 +753,11 @@ else if (currentFilePath == renameTarget.FullPath) SettingsService.CurrentFilePath = newPath; - statusText = $"{Loc["nav.status.renamed_to"]} {renameNewName}"; + OpState.SetStatus($"{Loc["nav.status.renamed_to"]} {renameNewName}"); } catch (Exception ex) { - statusText = $"{Loc["common.error"]} {ex.Message}"; + OpState.SetStatus($"{Loc["common.error"]} {ex.Message}"); } finally { @@ -609,15 +794,15 @@ else path += ".md"; if (File.Exists(path)) { - statusText = Loc["nav.error.file_exists"]; + OpState.SetStatus(Loc["nav.error.file_exists"]); return; } File.WriteAllText(path, $"# {Path.GetFileNameWithoutExtension(path)}\n\n"); - statusText = $"{Loc["nav.status.created"]} {Path.GetFileName(path)}"; + OpState.SetStatus($"{Loc["nav.status.created"]} {Path.GetFileName(path)}"); } catch (Exception ex) { - statusText = $"{Loc["common.error"]} {ex.Message}"; + OpState.SetStatus($"{Loc["common.error"]} {ex.Message}"); } finally { @@ -637,11 +822,54 @@ else Navigation.NavigateTo($"/editor/file/{currentProjectId}?t={DateTime.Now.Ticks}"); } - public void SetStatus(string text, bool busy = false, double progress = 0) + private void ToggleFileSelection(string path) { - statusText = text; - isBusy = busy; - operationProgress = progress; - StateHasChanged(); + if (!_selectedFiles.Remove(path)) + _selectedFiles.Add(path); } + + private async Task DoExport() + { + var format = exportFormat switch + { + "Html" => ExportFormat.Html, + "Markdown" => ExportFormat.Markdown, + "Zip" => ExportFormat.Zip, + "Docx" => ExportFormat.Docx, + "Pdf" => ExportFormat.Pdf, + _ => ExportFormat.Html + }; + + var ext = format switch + { + ExportFormat.Html => ".html", + ExportFormat.Markdown => ".md", + ExportFormat.Zip => ".zip", + ExportFormat.Docx => ".docx", + ExportFormat.Pdf => ".pdf", + _ => ".html" + }; + + var name = string.IsNullOrWhiteSpace(exportFileName) + ? $"Export_{DateTime.Now:yyyyMMdd_HHmmss}" + : exportFileName; + + var data = await ExportService.ExportAsync(currentProjectId, _selectedFiles.ToList(), format); + + var mime = format switch + { + ExportFormat.Html => "text/html", + ExportFormat.Markdown => "text/markdown", + ExportFormat.Zip => "application/zip", + ExportFormat.Docx => "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + ExportFormat.Pdf => "application/pdf", + _ => "text/html" + }; + + await JS.InvokeVoidAsync("downloadFile", $"{name}{ext}", Convert.ToBase64String(data), mime); + + _showExportDialog = false; + _selectedFiles.Clear(); + } + } diff --git a/Components/Layout/MainLayout.razor.css b/Components/Layout/MainLayout.razor.css index ea76f1f..02769b8 100644 --- a/Components/Layout/MainLayout.razor.css +++ b/Components/Layout/MainLayout.razor.css @@ -9,6 +9,19 @@ main { flex: 1; } +.main-header { + padding: 12px 24px; + border-bottom: 1px solid var(--border-color); + background: var(--card-bg); +} + +.main-header h2 { + margin: 0; + font-size: 1.25rem; + font-weight: 600; + color: var(--text-color); +} + #blazor-error-ui { color-scheme: light only; background: lightyellow; diff --git a/Components/Pages/DbAdmin.razor b/Components/Pages/DbAdmin.razor new file mode 100644 index 0000000..d93a4d2 --- /dev/null +++ b/Components/Pages/DbAdmin.razor @@ -0,0 +1,195 @@ +@page "/db-admin" +@attribute [Authorize] +@inject IDbAdminService DbAdminSvc +@inject ILocalizationService Loc +@inject NavigationManager Navigation +@inject IAuthService AuthService + +Datenbank Administration - Author Buddy + +
+

Datenbank Administration

+ +
+ + + @records.Count Einträge in "@selectedCollection" + +
+ + @if (records.Count == 0) + { +

Leere Sammlung.

+ } + else + { +
+ + + + + @foreach (var key in columnOrder) + { + + } + + + + + @foreach (var record in records) + { + + + @foreach (var key in columnOrder) + { + + } + + + } + +
ID@keyAktionen
@record.Id + @Truncate(record.Fields.GetValueOrDefault(key), 60) + + + +
+
+ } + + @if (!string.IsNullOrEmpty(statusMessage)) + { +
@statusMessage
+ } + + +
+ +@if (editingRecord != null) +{ + +} + +@if (deletingRecord != null) +{ + +} + +@code { + private List collections = new(); + private string selectedCollection = "users"; + private List records = new(); + private List columnOrder = new(); + private string statusMessage = string.Empty; + + private DbRecord? editingRecord; + private Dictionary editValues = new(); + + private DbRecord? deletingRecord; + + protected override void OnInitialized() + { + var user = AuthService.CurrentUser; + if (user?.Role != UserRole.Administrator) + { + Navigation.NavigateTo("/"); + return; + } + + collections = DbAdminSvc.GetCollections(); + if (collections.Count > 0) + selectedCollection = collections[0].Name; + LoadRecords(); + } + + private void LoadRecords() + { + records = DbAdminSvc.GetAll(selectedCollection); + columnOrder = records.Count > 0 + ? records[0].Fields.Keys.ToList() + : new List(); + statusMessage = string.Empty; + } + + private void StartEdit(DbRecord record) + { + editingRecord = record; + editValues = new Dictionary(record.Fields); + } + + private void CancelEdit() + { + editingRecord = null; + editValues.Clear(); + } + + private void SaveEdit() + { + if (editingRecord == null) return; + var ok = DbAdminSvc.Update(selectedCollection, editingRecord.Id, editValues); + statusMessage = ok ? "Gespeichert." : "Fehler beim Speichern."; + editingRecord = null; + editValues.Clear(); + LoadRecords(); + } + + private void ConfirmDelete(DbRecord record) + { + deletingRecord = record; + } + + private void CancelDelete() + { + deletingRecord = null; + } + + private void DeleteRecord() + { + if (deletingRecord == null) return; + var ok = DbAdminSvc.Delete(selectedCollection, deletingRecord.Id); + statusMessage = ok ? "Gelöscht." : "Fehler beim Löschen."; + deletingRecord = null; + LoadRecords(); + } + + private static string? Truncate(string? val, int max) + { + if (val == null) return null; + return val.Length > max ? val[..max] + "..." : val; + } +} diff --git a/Components/Pages/Editor.razor b/Components/Pages/Editor.razor index 8c6b8f1..a4c09c4 100644 --- a/Components/Pages/Editor.razor +++ b/Components/Pages/Editor.razor @@ -9,6 +9,10 @@ @inject IWikipediaService WikipediaService @inject NavigationManager Navigation @inject ILocalizationService Loc +@inject IAuthService AuthService +@inject OllamaSettings OllamaSettings +@inject OperationState OpState +@inject IJSRuntime JS @implements IDisposable @rendermode InteractiveServer @@ -21,6 +25,24 @@ @oninput="OnContentChanged" value="@editorContent" placeholder="@Loc["editor.placeholder.content"]"> +
+ + + + + + + + + + + + + + + +
+
@@ -73,7 +95,8 @@ {
-

@Loc["editor.spellcheck.heading"]

+

@Loc["editor.spellcheck.heading"]

+
@@ -177,7 +200,8 @@ else if (!string.IsNullOrEmpty(analysisResult) && !showVersionBrowser) {
-

@Loc["editor.result.heading"]

+

@Loc["editor.result.heading"]

+
@analysisResult
} @@ -196,6 +220,20 @@
+ Erlaubter Pfad: @ProjectPathHelper.AllowedBasePath +
+
+ +
+ + +