diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0aabca1..fc58994 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,12 +22,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - with: - submodules: recursive - - # TEMPORARY: Terminal.Gui submodule's nuget.config breaks restore — remove until PR #4234 is merged - - name: Remove submodule NuGet config - run: rm -f src/Terminal.Gui/nuget.config - name: Setup .NET 10 uses: actions/setup-dotnet@v4 @@ -35,7 +29,7 @@ jobs: dotnet-version: '10.0.x' - name: Check formatting - run: dotnet format src/EchoHub.slnx --verify-no-changes --verbosity diagnostic --exclude src/Terminal.Gui/ + run: dotnet format src/EchoHub.slnx --verify-no-changes --verbosity diagnostic build-and-test: name: Build & Test @@ -44,11 +38,6 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - submodules: recursive - - # TEMPORARY: Terminal.Gui submodule's nuget.config breaks restore — remove until PR #4234 is merged - - name: Remove submodule NuGet config - run: rm -f src/Terminal.Gui/nuget.config - name: Check for src/ changes id: changes diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index cbc2dde..5156116 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -16,12 +16,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - with: - submodules: recursive - - # TEMPORARY: Terminal.Gui submodule's nuget.config breaks restore — remove until PR #4234 is merged - - name: Remove submodule NuGet config - run: rm -f src/Terminal.Gui/nuget.config - name: Setup .NET 10 uses: actions/setup-dotnet@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f8c7889..b5e8ab9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,11 +16,6 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - submodules: recursive - - # TEMPORARY: Terminal.Gui submodule's nuget.config breaks restore — remove until PR #4234 is merged - - name: Remove submodule NuGet config - run: rm -f src/Terminal.Gui/nuget.config - name: Check for src/ changes id: changes diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 4803285..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "src/Terminal.Gui"] - path = src/Terminal.Gui - url = https://github.com/HueByte/Terminal.Gui.git diff --git a/docs/changelog/toc.yml b/docs/changelog/toc.yml index 1079748..7f71eca 100644 --- a/docs/changelog/toc.yml +++ b/docs/changelog/toc.yml @@ -1,5 +1,9 @@ - name: Overview href: index.md +- name: v0.2.7 + href: v0.2.7.md +- name: v0.2.6 + href: v0.2.6.md - name: v0.2.5 href: v0.2.5.md - name: v0.2.4 diff --git a/docs/changelog/v0.2.6.md b/docs/changelog/v0.2.6.md index 49a9919..4818c97 100644 --- a/docs/changelog/v0.2.6.md +++ b/docs/changelog/v0.2.6.md @@ -2,18 +2,8 @@ ## Refactoring -- Extracted `ChatMessageManager` from `MainWindow` — message storage, formatting, and mutation logic now in a dedicated class, reducing MainWindow complexity -- Split `ChatRenderer.cs` (8 classes, 548 lines) into 7 individual files: `ChatSegment`, `ChatLine`, `ChatListSource`, `ChannelListSource`, `UserListSource`, `ChatColors`, `ColorHelper`, `RenderHelpers` -- Extracted `ConnectionManager` from `AppOrchestrator` — connection lifecycle, authentication, SignalR event wiring, and channel tracking now in a dedicated service -- Extracted `AvatarHelper` — deduplicated avatar upload logic previously duplicated in `/avatar` command and profile edit dialog -- Consolidated `ProfileEditDialog.ParseHexToTrueColor` into shared `ColorHelper.ParseHexToColor` -- Extracted `UserSession` — session state (`Username`, `Status`, `StatusMessage`) now in a dedicated class instead of scattered fields -- Replaced 21 inline command handler lambdas with named `HandleCmd*` methods for improved readability -- Extracted shared `CleanupConnectionAsync` to deduplicate disconnect/logout cleanup logic -- Reorganized flat `UI/` folder (19 files) into subfolders: `Chat/`, `Dialogs/`, `ListSources/`, `Helpers/` with matching namespaces -- Moved `AsyncRunner` from project root to `Services/` with updated namespace -- Renamed `ColorHelper` → `HexColorHelper` to avoid namespace collision with Terminal.Gui's `ColorHelper` NuGet dependency -- Moved `hue_icon.ico` to `Client/Assets/`, removed duplicate from Server (Server now references shared icon via relative path) +- Add hex color parsing helper and implement custom list sources for channels and users +- Add dialogs for connection, channel creation, profile editing, and status management ## Infrastructure diff --git a/docs/changelog/v0.2.7.md b/docs/changelog/v0.2.7.md new file mode 100644 index 0000000..e88bcfb --- /dev/null +++ b/docs/changelog/v0.2.7.md @@ -0,0 +1,27 @@ +# v0.2.7 + +## Refactoring + +- Extracted `ChatMessageManager` from `MainWindow` — message storage, formatting, and mutation logic now in a dedicated class, reducing MainWindow complexity +- Split `ChatRenderer.cs` (8 classes, 548 lines) into 7 individual files: `ChatSegment`, `ChatLine`, `ChatListSource`, `ChannelListSource`, `UserListSource`, `ChatColors`, `ColorHelper`, `RenderHelpers` +- Extracted `ConnectionManager` from `AppOrchestrator` — connection lifecycle, authentication, SignalR event wiring, and channel tracking now in a dedicated service +- Extracted `AvatarHelper` — deduplicated avatar upload logic previously duplicated in `/avatar` command and profile edit dialog +- Consolidated `ProfileEditDialog.ParseHexToTrueColor` into shared `ColorHelper.ParseHexToColor` +- Extracted `UserSession` — session state (`Username`, `Status`, `StatusMessage`) now in a dedicated class instead of scattered fields +- Replaced 21 inline command handler lambdas with named `HandleCmd*` methods for improved readability +- Extracted shared `CleanupConnectionAsync` to deduplicate disconnect/logout cleanup logic +- Reorganized flat `UI/` folder (19 files) into subfolders: `Chat/`, `Dialogs/`, `ListSources/`, `Helpers/` with matching namespaces +- Moved `AsyncRunner` from project root to `Services/` with updated namespace +- Renamed `ColorHelper` → `HexColorHelper` to avoid namespace collision with Terminal.Gui's `ColorHelper` NuGet dependency +- Moved `hue_icon.ico` to `Client/Assets/`, removed duplicate from Server (Server now references shared icon via relative path) + +## Bug Fixes + +- Fix user list empty on initial connect — `FetchAndUpdateOnlineUsers` was called before `InvokeUI` set the current channel, causing an early return + +## Infrastructure + +- Switch Terminal.Gui from local fork submodule back to NuGet package (`2.0.0-develop.5039`) — transparent color PR merged upstream +- Remove Terminal.Gui submodule, `.gitmodules`, and root `nuget.config` workaround +- Remove `rm -f` submodule nuget.config steps and `submodules: recursive` from all 3 CI workflows (ci, docs, release) +- Remove `--exclude src/Terminal.Gui/` from format check diff --git a/nuget.config b/nuget.config deleted file mode 100644 index 4e800bf..0000000 --- a/nuget.config +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 87650ee..31d2558 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,6 +1,6 @@ - 0.2.6 + 0.2.7 true $(NoWarn);CS1591 diff --git a/src/EchoHub.Client/EchoHub.Client.csproj b/src/EchoHub.Client/EchoHub.Client.csproj index c5279c2..e455ebb 100644 --- a/src/EchoHub.Client/EchoHub.Client.csproj +++ b/src/EchoHub.Client/EchoHub.Client.csproj @@ -12,8 +12,7 @@ - - + diff --git a/src/Terminal.Gui b/src/Terminal.Gui deleted file mode 160000 index 0061d03..0000000 --- a/src/Terminal.Gui +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0061d03558264e0005d8c5ba53845e629ea2f8da