From 9029d63e548ba410c4ca59b09302aa4b878ed632 Mon Sep 17 00:00:00 2001
From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com>
Date: Tue, 24 Feb 2026 22:42:07 +0100
Subject: [PATCH 1/7] fix: documentation URLs in echohub.nuspecch
---
packaging/choco/echohub.nuspec | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/packaging/choco/echohub.nuspec b/packaging/choco/echohub.nuspec
index e908659..3f2d1b7 100644
--- a/packaging/choco/echohub.nuspec
+++ b/packaging/choco/echohub.nuspec
@@ -10,14 +10,14 @@
https://github.com/HueByteByte/EchoHub/blob/master/LICENSE
https://github.com/HueByteByte/EchoHub
https://github.com/HueByteByte/EchoHub
- https://HueBytebyte.github.io/EchoHub
+ https://huebyte.github.io/EchoHub
https://github.com/HueByteByte/EchoHub/issues
https://github.com/HueByteByte/EchoHub/tree/master/packaging/choco
https://raw.githubusercontent.com/HueByteByte/EchoHub/master/assets/HueByte_icon.png
EchoHub is a decentralized IRC-style chat application with a terminal user interface (TUI). Connect to any EchoHub server, join channels, and chat — all from your terminal. Features include SignalR real-time messaging, file sharing, custom themes, and IRC gateway compatibility.
Decentralized terminal chat client with IRC gateway support
chat irc decentralized tui terminal signalr echohub
- https://HueBytebyte.github.io/EchoHub/changelog/v__VERSION__.html
+ https://huebyte.github.io/EchoHub/changelog/v__VERSION__.html
Copyright (c) 2026 HueByte
From 92b89fa8a0f701fa6bc9ed84aecad377a819f29e Mon Sep 17 00:00:00 2001
From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com>
Date: Tue, 24 Feb 2026 22:46:35 +0100
Subject: [PATCH 2/7] fix: github repo URLs in echohub.nuspecch
---
packaging/choco/echohub.nuspec | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/packaging/choco/echohub.nuspec b/packaging/choco/echohub.nuspec
index 3f2d1b7..a3137e1 100644
--- a/packaging/choco/echohub.nuspec
+++ b/packaging/choco/echohub.nuspec
@@ -7,13 +7,13 @@
HueByte
HueByte
false
- https://github.com/HueByteByte/EchoHub/blob/master/LICENSE
- https://github.com/HueByteByte/EchoHub
- https://github.com/HueByteByte/EchoHub
+ https://github.com/HueByte/EchoHub/blob/master/LICENSE
+ https://github.com/HueByte/EchoHub
+ https://github.com/HueByte/EchoHub
https://huebyte.github.io/EchoHub
- https://github.com/HueByteByte/EchoHub/issues
- https://github.com/HueByteByte/EchoHub/tree/master/packaging/choco
- https://raw.githubusercontent.com/HueByteByte/EchoHub/master/assets/HueByte_icon.png
+ https://github.com/HueByte/EchoHub/issues
+ https://github.com/HueByte/EchoHub/tree/master/packaging/choco
+ https://raw.githubusercontent.com/HueByte/EchoHub/refs/heads/master/assets/hue_icon.png
EchoHub is a decentralized IRC-style chat application with a terminal user interface (TUI). Connect to any EchoHub server, join channels, and chat — all from your terminal. Features include SignalR real-time messaging, file sharing, custom themes, and IRC gateway compatibility.
Decentralized terminal chat client with IRC gateway support
chat irc decentralized tui terminal signalr echohub
From 8689dc2a0168e5e0b014c7e5ed7a09c66942e67a Mon Sep 17 00:00:00 2001
From: HueByte
Date: Tue, 24 Feb 2026 23:08:32 +0100
Subject: [PATCH 3/7] fix: add TODO for incorrect embed color display
---
docs/todo.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/todo.md b/docs/todo.md
index 07726db..ac32396 100644
--- a/docs/todo.md
+++ b/docs/todo.md
@@ -22,3 +22,4 @@
- [x] Another thing would be stateful userlist – basically fetch once and listen for userlist updates
- [x] Send to EchohubSpace only state changes, currently we send user count periodically, instead of updating it on update
- [x] space between mod|admin "icon" and username
+- [ ] Embeds still incorrectly display colors
From 0aaa371488d5229e5f575167f9c0c4bb9f5205f8 Mon Sep 17 00:00:00 2001
From: HueByte
Date: Wed, 25 Feb 2026 10:08:50 +0100
Subject: [PATCH 4/7] chore: update release process for single-file publish and
enhance installer script
---
.github/workflows/release.yml | 10 +++++-----
docs/changelog/v0.2.9.md | 5 +++++
scripts/install.sh | 13 ++++++++++---
src/Directory.Build.props | 2 +-
4 files changed, 21 insertions(+), 9 deletions(-)
create mode 100644 docs/changelog/v0.2.9.md
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 2ad99d8..dc9c7f9 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -81,23 +81,23 @@ jobs:
- name: Publish Client win-x64
if: steps.changes.outputs.src_changed == 'true' && steps.check_release.outputs.exists == 'false'
- run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r win-x64 --self-contained true -o publish/client-win-x64
+ run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o publish/client-win-x64
- name: Publish Client linux-x64
if: steps.changes.outputs.src_changed == 'true' && steps.check_release.outputs.exists == 'false'
- run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r linux-x64 --self-contained true -o publish/client-linux-x64
+ run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r linux-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o publish/client-linux-x64
- name: Publish Client osx-x64
if: steps.changes.outputs.src_changed == 'true' && steps.check_release.outputs.exists == 'false'
- run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r osx-x64 --self-contained true -o publish/client-osx-x64
+ run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r osx-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o publish/client-osx-x64
- name: Publish Client osx-arm64
if: steps.changes.outputs.src_changed == 'true' && steps.check_release.outputs.exists == 'false'
- run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r osx-arm64 --self-contained true -o publish/client-osx-arm64
+ run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r osx-arm64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o publish/client-osx-arm64
- name: Publish Client linux-arm64
if: steps.changes.outputs.src_changed == 'true' && steps.check_release.outputs.exists == 'false'
- run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r linux-arm64 --self-contained true -o publish/client-linux-arm64
+ run: dotnet publish src/EchoHub.Client/EchoHub.Client.csproj -c Release -r linux-arm64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o publish/client-linux-arm64
- name: Zip artifacts
if: steps.changes.outputs.src_changed == 'true' && steps.check_release.outputs.exists == 'false'
diff --git a/docs/changelog/v0.2.9.md b/docs/changelog/v0.2.9.md
new file mode 100644
index 0000000..3fc6db7
--- /dev/null
+++ b/docs/changelog/v0.2.9.md
@@ -0,0 +1,5 @@
+# v0.2.9
+
+## Bug Fixes
+
+- Fix Linux/macOS client install — enable single-file publish so the install script copies one self-contained binary instead of just the native host (which failed with "does not exist: EchoHub.Client.dll")
diff --git a/scripts/install.sh b/scripts/install.sh
index 576c30e..238604d 100644
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -199,10 +199,17 @@ main() {
fi
fi
- # Install the binary
+ # Install full directory to ~/.local/share/echohub and symlink the binary.
+ # Even single-file publishes may have content files (appsettings, assets)
+ # that the app expects next to the binary via AppContext.BaseDirectory.
+ app_dir="$HOME/.local/share/echohub"
+ rm -rf "$app_dir"
+ mkdir -p "$app_dir"
+ cp -r "$src_dir"/. "$app_dir/"
+ chmod +x "$app_dir/EchoHub.Client"
+
mkdir -p "$install_dir"
- cp "$src_dir/EchoHub.Client" "$install_dir/$BINARY_NAME"
- chmod +x "$install_dir/$BINARY_NAME"
+ ln -sf "$app_dir/EchoHub.Client" "$install_dir/$BINARY_NAME"
echo ""
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 744d01d..24de7d9 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -1,6 +1,6 @@
- 0.2.8
+ 0.2.9
true
$(NoWarn);CS1591
From ee187437213ecaed7664806e21a3d5721349e29a Mon Sep 17 00:00:00 2001
From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com>
Date: Wed, 25 Feb 2026 18:04:13 +0100
Subject: [PATCH 5/7] fix: choco install path by separating directory and file
joins
---
packaging/choco/tools/chocolateyInstall.ps1 | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/packaging/choco/tools/chocolateyInstall.ps1 b/packaging/choco/tools/chocolateyInstall.ps1
index a483c19..af14c59 100644
--- a/packaging/choco/tools/chocolateyInstall.ps1
+++ b/packaging/choco/tools/chocolateyInstall.ps1
@@ -14,5 +14,6 @@ $packageArgs = @{
Install-ChocolateyZipPackage @packageArgs
# Create a shim so 'echohub' is available on PATH
-$exePath = Join-Path $toolsDir 'client-win-x64' 'EchoHub.Client.exe'
+$exeDir = Join-Path $toolsDir 'client-win-x64'
+$exePath = Join-Path $exeDir 'EchoHub.Client.exe'
Install-BinFile -Name 'echohub' -Path $exePath
From 3f2211f42aa43939ff1b84f17eea53cb636b4ae6 Mon Sep 17 00:00:00 2001
From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com>
Date: Wed, 25 Feb 2026 16:00:11 +0100
Subject: [PATCH 6/7] fix: double click on public checkbox creates channel by
setting set CommandsToBubbleUp in dialog
---
src/EchoHub.Client/EchoHub.Client.csproj | 2 +-
src/EchoHub.Client/UI/Dialogs/CreateChannelDialog.cs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/EchoHub.Client/EchoHub.Client.csproj b/src/EchoHub.Client/EchoHub.Client.csproj
index 70753d0..a4ab665 100644
--- a/src/EchoHub.Client/EchoHub.Client.csproj
+++ b/src/EchoHub.Client/EchoHub.Client.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/src/EchoHub.Client/UI/Dialogs/CreateChannelDialog.cs b/src/EchoHub.Client/UI/Dialogs/CreateChannelDialog.cs
index a00dd5b..076b2ad 100644
--- a/src/EchoHub.Client/UI/Dialogs/CreateChannelDialog.cs
+++ b/src/EchoHub.Client/UI/Dialogs/CreateChannelDialog.cs
@@ -12,7 +12,7 @@ public sealed class CreateChannelDialog
{
CreateChannelResult? result = null;
- var dialog = new Dialog { Title = "Create Channel", Width = 50, Height = 14 };
+ var dialog = new Dialog { Title = "Create Channel", Width = 50, Height = 14, CommandsToBubbleUp = [] };
var nameLabel = new Label { Text = "Name:", X = 1, Y = 1 };
var nameField = new TextField { X = 10, Y = 1, Width = Dim.Fill(2) };
From 38d63d844d7894b0fb5520c17933157c4826c3bf Mon Sep 17 00:00:00 2001
From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com>
Date: Wed, 25 Feb 2026 16:01:05 +0100
Subject: [PATCH 7/7] chore: mark checkbox issue in channel creation as
completed in todo list
---
docs/todo.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/todo.md b/docs/todo.md
index ac32396..eb04e7d 100644
--- a/docs/todo.md
+++ b/docs/todo.md
@@ -15,7 +15,7 @@
- [x] unmute timer does not seem to work
- [ ] add IRC network like support
- that means basically multiple servers linked, so users can chat cross-server in this network
-- [ ] when users clicks public -> private -> public checkbox in the channel creation, it ends up creating the channel on 3rd check switch
+- [x] when users clicks public -> private -> public checkbox in the channel creation, it ends up creating the channel on 3rd check switch
- [ ] add keyboard only controls | at least for most important parts and the rest might be accessible with: (down)
- [ ] add search bar / search modal – that will allow users to instantly navigate to room / focus on app element & etc
- [ ] Actually smart data management – cache messages, lazy load messages on scroll (currently hardcoded 100msgs fetched + new ones)