Release v4.3: speak status line (Tolk) + Logging tab with housekeeping

- New screen-reader hotkey "Speak the RemSound status information" (issue #13):
  reads the status line aloud through the active screen reader via Tolk, fires from
  anywhere (system-wide), unset by default. Built behind an IScreenReaderOutput seam
  so a future build can swap Tolk for Prism on Windows 10+ without touching callers.
  Tolk DLLs vendored under tolk/ and shipped next to the exe.
- New Logging tab in Preferences: Enable logs + Write logs now moved there, plus
  opt-in startup "warn if logs folder exceeds N MB" and "delete logs older than N days",
  and a "Delete all logs" button (Yes/No confirm). New LogMaintenance helper + AppConfig
  settings drive it.
- Manual (readme.html + regenerated MANUAL.md), About changelog and RELEASE_NOTES
  updated in plain English; csproj <Version> bumped to 4.3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Ednunp
2026-06-19 13:09:06 +01:00
co-authored by Claude Opus 4.8
parent 034a7de632
commit fd5c31740a
20 changed files with 783 additions and 26 deletions
+22 -1
View File
@@ -14,7 +14,7 @@
tag_name on the latest GitHub release; bump it on every public release. The
AssemblyVersion / FileVersion default to this value, and Assembly.GetName().Version
is what the About dialog and the updater both read. -->
<Version>4.2</Version>
<Version>4.3</Version>
</PropertyGroup>
<ItemGroup>
@@ -79,6 +79,17 @@
<Link>readme.html</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<!-- Tolk screen-reader output DLLs (vendored 2026-06-19). Native libraries P/Invoked by
TolkScreenReaderOutput so RemSound can speak the status line aloud on demand (issue #13) —
needed because a GLOBAL hotkey fires while RemSound isn't focused, where NVDA won't read
anything itself. Tolk.dll loads its two helper DLLs from the same folder, so all three ship
flat next to the exe. Copied on build AND publish; the EnsureTolkDllsPublished target below
makes the publish copy marker-independent (the same belt-and-braces the cue WAVs use). -->
<Content Include="..\..\tolk\Tolk.dll;..\..\tolk\nvdaControllerClient64.dll;..\..\tolk\SAAPI64.dll;..\..\tolk\LICENSE-Tolk.txt">
<Link>%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup>
<!-- Guarantee the cue WAVs land in a PUBLISHED build. The Content items above use
@@ -97,4 +108,14 @@
DestinationFolder="$(PublishDir)default sounds"
SkipUnchangedFiles="false" />
</Target>
<!-- Same marker-independent guarantee for the Tolk DLLs: always copy them into a PUBLISHED build
so a release zip can never ship without the screen-reader libraries the "speak status line"
feature needs. -->
<Target Name="EnsureTolkDllsPublished" AfterTargets="Publish">
<ItemGroup>
<_TolkFiles Include="..\..\tolk\Tolk.dll;..\..\tolk\nvdaControllerClient64.dll;..\..\tolk\SAAPI64.dll;..\..\tolk\LICENSE-Tolk.txt" />
</ItemGroup>
<Copy SourceFiles="@(_TolkFiles)" DestinationFolder="$(PublishDir)" SkipUnchangedFiles="false" />
</Target>
</Project>