diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
index 605d2de83c..f4812b9b75 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.md
+++ b/.github/ISSUE_TEMPLATE/bug-report.md
@@ -1,6 +1,9 @@
---
name: Bug Report
about: Report a bug
+title: ''
+labels: ''
+assignees: ''
---
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000000..dd84ea7824
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,38 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md
new file mode 100644
index 0000000000..48d5f81fa4
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/custom.md
@@ -0,0 +1,10 @@
+---
+name: Custom issue template
+about: Describe this issue template's purpose here.
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+
diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md
index b766cd054a..cccbedb42f 100644
--- a/.github/ISSUE_TEMPLATE/feature-request.md
+++ b/.github/ISSUE_TEMPLATE/feature-request.md
@@ -1,6 +1,9 @@
---
name: Feature Request
about: Request a Feature
+title: ''
+labels: ''
+assignees: ''
---
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000000..bbcbbe7d61
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/HOK b/HOK
new file mode 100644
index 0000000000..667c481bdf
--- /dev/null
+++ b/HOK
@@ -0,0 +1 @@
+محمد غبان ملقب محمد الوصابي تيلجرام @Q7344
diff --git a/WalletWasabi.Fluent.Desktop/packages.lock.json b/WalletWasabi.Fluent.Desktop/packages.lock.json
index 00e9a3138a..e62838cf45 100644
--- a/WalletWasabi.Fluent.Desktop/packages.lock.json
+++ b/WalletWasabi.Fluent.Desktop/packages.lock.json
@@ -159,6 +159,26 @@
"Avalonia": "0.10.19"
}
},
+ "ChatGPT": {
+ "type": "Transitive",
+ "resolved": "1.0.0-preview.5",
+ "contentHash": "sEDWnmtN0E2qYbevlS6VcO8V70QDt6Y1aRdHRFYHKGjF8Z0XK/6Vy+lDoVeQiwspOE5Zkw8rhF34PB74J67g6A=="
+ },
+ "ChatGPT.Core": {
+ "type": "Transitive",
+ "resolved": "1.0.0-preview.5",
+ "contentHash": "HIDaklt0feGfjXnMIauHZkTUk9WGACvvIVhy5AUKpV2giFUNYJCc5CeG+Dls52odV6O9hwfb/hP1y9jVk62hJA==",
+ "dependencies": {
+ "ChatGPT": "1.0.0-preview.5",
+ "CommunityToolkit.Mvvm": "8.1.0",
+ "Microsoft.Extensions.DependencyInjection": "7.0.0"
+ }
+ },
+ "CommunityToolkit.Mvvm": {
+ "type": "Transitive",
+ "resolved": "8.1.0",
+ "contentHash": "xxOt7lu9a5kB5Fs9RfcxzVlKnhuuPe+w7AXHtmCFtS3oldrsUhEMxHfNulluXSscUUoGxZ0jh55Om12ZP6abHA=="
+ },
"DynamicData": {
"type": "Transitive",
"resolved": "7.1.1",
@@ -228,48 +248,46 @@
},
"Microsoft.CodeAnalysis.Analyzers": {
"type": "Transitive",
- "resolved": "2.9.6",
- "contentHash": "Kmms3TxGQMNb95Cu/3K+0bIcMnV4qf/phZBLAB0HUi65rBPxP4JO3aM2LoAcb+DFS600RQJMZ7ZLyYDTbLwJOQ=="
+ "resolved": "3.3.3",
+ "contentHash": "j/rOZtLMVJjrfLRlAMckJLPW/1rze9MT1yfWqSIbUPGRu1m1P0fuo9PmqapwsmePfGB5PJrudQLvmUOAMF0DqQ=="
},
"Microsoft.CodeAnalysis.Common": {
"type": "Transitive",
- "resolved": "3.4.0",
- "contentHash": "3ncA7cV+iXGA1VYwe2UEZXcvWyZSlbexWjM9AvocP7sik5UD93qt9Hq0fMRGk0jFRmvmE4T2g+bGfXiBVZEhLw==",
+ "resolved": "4.5.0",
+ "contentHash": "lwAbIZNdnY0SUNoDmZHkVUwLO8UyNnyyh1t/4XsbFxi4Ounb3xszIYZaWhyj5ZjyfcwqwmtMbE7fUTVCqQEIdQ==",
"dependencies": {
- "Microsoft.CodeAnalysis.Analyzers": "2.9.6",
- "System.Collections.Immutable": "1.5.0",
- "System.Memory": "4.5.3",
- "System.Reflection.Metadata": "1.6.0",
- "System.Runtime.CompilerServices.Unsafe": "4.5.2",
- "System.Text.Encoding.CodePages": "4.5.1",
- "System.Threading.Tasks.Extensions": "4.5.3"
+ "Microsoft.CodeAnalysis.Analyzers": "3.3.3",
+ "System.Collections.Immutable": "6.0.0",
+ "System.Reflection.Metadata": "6.0.1",
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0",
+ "System.Text.Encoding.CodePages": "6.0.0"
}
},
"Microsoft.CodeAnalysis.CSharp": {
"type": "Transitive",
- "resolved": "3.4.0",
- "contentHash": "/LsTtgcMN6Tu1oo7/WYbRAHL4/ubXC/miEakwTpcZKJKtFo7D0AK95Hw0dbGxul6C8WJu60v6NP2435TDYZM+Q==",
+ "resolved": "4.5.0",
+ "contentHash": "cM59oMKAOxvdv76bdmaKPy5hfj+oR+zxikWoueEB7CwTko7mt9sVKZI8Qxlov0C/LuKEG+WQwifepqL3vuTiBQ==",
"dependencies": {
- "Microsoft.CodeAnalysis.Common": "[3.4.0]"
+ "Microsoft.CodeAnalysis.Common": "[4.5.0]"
}
},
"Microsoft.CodeAnalysis.CSharp.Scripting": {
"type": "Transitive",
- "resolved": "3.4.0",
- "contentHash": "tLgqc76qXHmONUhWhxo7z3TcL/LmGFWIUJm1exbQmVJohuQvJnejUMxmVkdxDfMuMZU1fIyJXPZ6Fkp4FEneAg==",
+ "resolved": "4.5.0",
+ "contentHash": "LMapq8Ocdc1hGdvKt2sdvkHOrRO1Ymbl0EJEzRyrzxkxUfZRpUCsbGNCijnokmW1Zy3TBaj6LfV9WqRqE3fd+Q==",
"dependencies": {
- "Microsoft.CSharp": "4.3.0",
- "Microsoft.CodeAnalysis.CSharp": "[3.4.0]",
- "Microsoft.CodeAnalysis.Common": "[3.4.0]",
- "Microsoft.CodeAnalysis.Scripting.Common": "[3.4.0]"
+ "Microsoft.CSharp": "4.7.0",
+ "Microsoft.CodeAnalysis.CSharp": "[4.5.0]",
+ "Microsoft.CodeAnalysis.Common": "[4.5.0]",
+ "Microsoft.CodeAnalysis.Scripting.Common": "[4.5.0]"
}
},
"Microsoft.CodeAnalysis.Scripting.Common": {
"type": "Transitive",
- "resolved": "3.4.0",
- "contentHash": "+b6I3DZL2zvck+B/E/aiOveakj5U2G2BcYODQxcGh2IDbatNU3XXxGT1HumkWB5uIZI2Leu0opBgBpjScmjGMA==",
+ "resolved": "4.5.0",
+ "contentHash": "ruWwzk9H5uJ+BQOMZQh77bjd74Z2KZjJP01y/tpfB6qsRi8s+EjhvzNmG7wDx0uRwmOCksKDS0MeMu3D1uKzZQ==",
"dependencies": {
- "Microsoft.CodeAnalysis.Common": "[3.4.0]"
+ "Microsoft.CodeAnalysis.Common": "[4.5.0]"
}
},
"Microsoft.CSharp": {
@@ -277,6 +295,19 @@
"resolved": "4.7.0",
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
},
+ "Microsoft.Extensions.DependencyInjection": {
+ "type": "Transitive",
+ "resolved": "7.0.0",
+ "contentHash": "elNeOmkeX3eDVG6pYVeV82p29hr+UKDaBhrZyWvWLw/EVZSYEkZlQdkp0V39k/Xehs2Qa0mvoCvkVj3eQxNQ1Q==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions": {
+ "type": "Transitive",
+ "resolved": "7.0.0",
+ "contentHash": "h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw=="
+ },
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
"resolved": "1.0.0",
@@ -295,8 +326,8 @@
},
"Microsoft.NETCore.Platforms": {
"type": "Transitive",
- "resolved": "2.1.2",
- "contentHash": "mOJy3M0UN+LUG21dLGMxaWZEP6xYpQEpLuvuEQBaownaX4YuhH6NmNUlN9si+vNkAS6dwJ//N1O4DmLf2CikVg=="
+ "resolved": "1.1.1",
+ "contentHash": "TMBuzAHpTenGbGgk0SMTwyEkyijY/Eae4ZGsFNYJvAr/LDn1ku3Etp3FPxChmDp5HHF3kzJuoaa08N0xjqAJfQ=="
},
"Microsoft.NETCore.Targets": {
"type": "Transitive",
@@ -412,8 +443,11 @@
},
"System.Collections.Immutable": {
"type": "Transitive",
- "resolved": "1.5.0",
- "contentHash": "EXKiDFsChZW0RjrZ4FYHu9aW6+P4MCgEDCklsVseRfhoO0F+dXeMSsMRAlVXIo06kGJ/zv+2w1a2uc2+kxxSaQ=="
+ "resolved": "6.0.0",
+ "contentHash": "l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
},
"System.ComponentModel.Annotations": {
"type": "Transitive",
@@ -516,8 +550,11 @@
},
"System.Reflection.Metadata": {
"type": "Transitive",
- "resolved": "1.6.0",
- "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ=="
+ "resolved": "6.0.1",
+ "contentHash": "III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==",
+ "dependencies": {
+ "System.Collections.Immutable": "6.0.0"
+ }
},
"System.Reflection.Primitives": {
"type": "Transitive",
@@ -552,8 +589,8 @@
},
"System.Runtime.CompilerServices.Unsafe": {
"type": "Transitive",
- "resolved": "4.6.0",
- "contentHash": "HxozeSlipUK7dAroTYwIcGwKDeOVpQnJlpVaOkBz7CM4TsE5b/tKlQBZecTjh6FzcSbxndYaxxpsBMz+wMJeyw=="
+ "resolved": "6.0.0",
+ "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
},
"System.Runtime.Extensions": {
"type": "Transitive",
@@ -614,11 +651,10 @@
},
"System.Text.Encoding.CodePages": {
"type": "Transitive",
- "resolved": "4.5.1",
- "contentHash": "4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==",
+ "resolved": "6.0.0",
+ "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==",
"dependencies": {
- "Microsoft.NETCore.Platforms": "2.1.2",
- "System.Runtime.CompilerServices.Unsafe": "4.5.2"
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Threading": {
@@ -640,11 +676,6 @@
"System.Runtime": "4.3.0"
}
},
- "System.Threading.Tasks.Extensions": {
- "type": "Transitive",
- "resolved": "4.5.3",
- "contentHash": "+MvhNtcvIbqmhANyKu91jQnvIRVSTiaOiFNfKWwXGHG48YAb4I/TyH8spsySiPYla7gKal5ZnF3teJqZAximyQ=="
- },
"System.ValueTuple": {
"type": "Transitive",
"resolved": "4.5.0",
@@ -685,6 +716,8 @@
"Avalonia.ReactiveUI": "[0.10.19, )",
"Avalonia.Skia": "[0.10.19, )",
"Avalonia.Xaml.Behaviors": "[0.10.19, )",
+ "ChatGPT.Core": "[1.0.0-preview.5, )",
+ "Microsoft.CodeAnalysis.CSharp.Scripting": "[4.5.0, )",
"System.Drawing.Common": "[7.0.0, )",
"System.Runtime": "[4.3.1, )",
"WalletWasabi": "[1.0.0, )"
@@ -1090,11 +1123,10 @@
},
"System.Text.Encoding.CodePages": {
"type": "Transitive",
- "resolved": "4.5.1",
- "contentHash": "4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==",
+ "resolved": "6.0.0",
+ "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==",
"dependencies": {
- "Microsoft.NETCore.Platforms": "2.1.2",
- "System.Runtime.CompilerServices.Unsafe": "4.5.2"
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Threading.Tasks": {
@@ -1508,11 +1540,10 @@
},
"System.Text.Encoding.CodePages": {
"type": "Transitive",
- "resolved": "4.5.1",
- "contentHash": "4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==",
+ "resolved": "6.0.0",
+ "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==",
"dependencies": {
- "Microsoft.NETCore.Platforms": "2.1.2",
- "System.Runtime.CompilerServices.Unsafe": "4.5.2"
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Threading.Tasks": {
@@ -1926,11 +1957,10 @@
},
"System.Text.Encoding.CodePages": {
"type": "Transitive",
- "resolved": "4.5.1",
- "contentHash": "4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==",
+ "resolved": "6.0.0",
+ "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==",
"dependencies": {
- "Microsoft.NETCore.Platforms": "2.1.2",
- "System.Runtime.CompilerServices.Unsafe": "4.5.2"
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Threading.Tasks": {
@@ -2344,11 +2374,10 @@
},
"System.Text.Encoding.CodePages": {
"type": "Transitive",
- "resolved": "4.5.1",
- "contentHash": "4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==",
+ "resolved": "6.0.0",
+ "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==",
"dependencies": {
- "Microsoft.NETCore.Platforms": "2.1.2",
- "System.Runtime.CompilerServices.Unsafe": "4.5.2"
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Threading.Tasks": {
@@ -2678,11 +2707,10 @@
},
"System.Text.Encoding.CodePages": {
"type": "Transitive",
- "resolved": "4.5.1",
- "contentHash": "4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==",
+ "resolved": "6.0.0",
+ "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==",
"dependencies": {
- "Microsoft.NETCore.Platforms": "2.1.2",
- "System.Runtime.CompilerServices.Unsafe": "4.5.2"
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
"System.Threading.Tasks": {
diff --git a/WalletWasabi.Fluent/App.axaml b/WalletWasabi.Fluent/App.axaml
index ca8c0e7e67..59686a6d32 100644
--- a/WalletWasabi.Fluent/App.axaml
+++ b/WalletWasabi.Fluent/App.axaml
@@ -46,12 +46,12 @@
-
+
-
+
diff --git a/WalletWasabi.Fluent/App.axaml.cs b/WalletWasabi.Fluent/App.axaml.cs
index 07980b2758..5daf4474f2 100644
--- a/WalletWasabi.Fluent/App.axaml.cs
+++ b/WalletWasabi.Fluent/App.axaml.cs
@@ -17,7 +17,7 @@ public class App : Application
public App()
{
- Name = "Wasabi Wallet";
+ Name = "Wasabi Wallet GPT";
}
public App(Func backendInitialiseAsync, bool startInBg) : this()
diff --git a/WalletWasabi.Fluent/Config.cs b/WalletWasabi.Fluent/Config.cs
index d06f7ba8dd..efee56ff74 100644
--- a/WalletWasabi.Fluent/Config.cs
+++ b/WalletWasabi.Fluent/Config.cs
@@ -35,7 +35,7 @@ public Config(string filePath) : base(filePath)
[JsonProperty(PropertyName = "Network")]
[JsonConverter(typeof(NetworkJsonConverter))]
- public Network Network { get; internal set; } = Network.Main;
+ public Network Network { get; internal set; } = Network.TestNet;
[DefaultValue("https://api.wasabiwallet.io/")]
[JsonProperty(PropertyName = "MainNetBackendUri", DefaultValueHandling = DefaultValueHandling.Populate)]
@@ -217,6 +217,8 @@ public override void LoadFile(bool createIfMissing = false)
base.LoadFile(createIfMissing);
ServiceConfiguration = new ServiceConfiguration(GetBitcoinP2pEndPoint(), DustThreshold);
+
+ Network = Network.TestNet;
}
public bool MigrateOldDefaultBackendUris()
diff --git a/WalletWasabi.Fluent/CrashReport/CrashReportApp.axaml.cs b/WalletWasabi.Fluent/CrashReport/CrashReportApp.axaml.cs
index 61419e3dcc..947b19f2d1 100644
--- a/WalletWasabi.Fluent/CrashReport/CrashReportApp.axaml.cs
+++ b/WalletWasabi.Fluent/CrashReport/CrashReportApp.axaml.cs
@@ -13,7 +13,7 @@ public class CrashReportApp : Application
public CrashReportApp()
{
- Name = "Wasabi Wallet Crash Report";
+ Name = "Wasabi Wallet GPT Crash Report";
}
public CrashReportApp(SerializableException exception) : this()
diff --git a/WalletWasabi.Fluent/Styles/PathIcon.axaml b/WalletWasabi.Fluent/Styles/PathIcon.axaml
index 0df9eb98dd..0d0e6e9bf4 100644
--- a/WalletWasabi.Fluent/Styles/PathIcon.axaml
+++ b/WalletWasabi.Fluent/Styles/PathIcon.axaml
@@ -11,6 +11,11 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WalletWasabi.Fluent/Views/ChatGPT/ChatAssistant.axaml.cs b/WalletWasabi.Fluent/Views/ChatGPT/ChatAssistant.axaml.cs
new file mode 100644
index 0000000000..8676fd45b6
--- /dev/null
+++ b/WalletWasabi.Fluent/Views/ChatGPT/ChatAssistant.axaml.cs
@@ -0,0 +1,17 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace WalletWasabi.Fluent.Views.ChatGPT;
+
+public class ChatAssistant : UserControl
+{
+ public ChatAssistant()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+}
diff --git a/WalletWasabi.Fluent/Views/ChatGPT/ChatAssistantDropdown.axaml b/WalletWasabi.Fluent/Views/ChatGPT/ChatAssistantDropdown.axaml
new file mode 100644
index 0000000000..0c5683924f
--- /dev/null
+++ b/WalletWasabi.Fluent/Views/ChatGPT/ChatAssistantDropdown.axaml
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+ M6.78 2.72a.75.75 0 0 1 0 1.06L4.56 6h8.69a7.75 7.75 0 1 1-7.75 7.75.75.75 0 0 1 1.5 0 6.25 6.25 0 1 0 6.25-6.25H4.56l2.22 2.22a.75.75 0 1 1-1.06 1.06l-3.5-3.5a.75.75 0 0 1 0-1.06l3.5-3.5a.75.75 0 0 1 1.06 0Z
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WalletWasabi.Fluent/Views/ChatGPT/ChatAssistantDropdown.axaml.cs b/WalletWasabi.Fluent/Views/ChatGPT/ChatAssistantDropdown.axaml.cs
new file mode 100644
index 0000000000..bf5e71407a
--- /dev/null
+++ b/WalletWasabi.Fluent/Views/ChatGPT/ChatAssistantDropdown.axaml.cs
@@ -0,0 +1,43 @@
+using System.Reactive;
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Controls.Primitives;
+using Avalonia.Markup.Xaml;
+
+namespace WalletWasabi.Fluent.Views.ChatGPT;
+
+public partial class ChatAssistantDropdown : UserControl
+{
+ private bool _scrollToEnd;
+
+ public ChatAssistantDropdown()
+ {
+ InitializeComponent();
+
+ var messagesItemsControl = this.FindControl("MessagesItemsControl");
+ var chatScrollViewer = this.FindControl("ChatScrollViewer");
+
+ messagesItemsControl
+ .GetObservable(SelectingItemsControl.SelectedItemProperty)
+ .Subscribe(_ =>
+ {
+ _scrollToEnd = true;
+ });
+
+ chatScrollViewer
+ .GetObservable(ScrollViewer.ExtentProperty)
+ .Subscribe(_ =>
+ {
+ if (_scrollToEnd)
+ {
+ chatScrollViewer.ScrollToEnd();
+ _scrollToEnd = false;
+ }
+ });
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+}
diff --git a/WalletWasabi.Fluent/Views/MainWindow.axaml b/WalletWasabi.Fluent/Views/MainWindow.axaml
index 7461c1c534..c4bbf8400c 100644
--- a/WalletWasabi.Fluent/Views/MainWindow.axaml
+++ b/WalletWasabi.Fluent/Views/MainWindow.axaml
@@ -18,10 +18,11 @@
ExtendClientAreaTitleBarHeightHint="50"
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="Default, PreferSystemChrome, OSXThickTitleBar"
- Title="Wasabi Wallet"
+ Title="Wasabi Wallet GPT"
WindowState="{Binding WindowState, Mode=TwoWay}"
- Focusable="{Binding SearchBar.IsSearchListVisible}"
+ Focusable="{Binding ChatAssistant.IsChatListVisible}"
Icon="/Assets/WasabiLogo.ico">
+