Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 62 of 266 Next →
February 25, 2026
patch Plugins

Add test solution and coverage script

Details
  • PrivStack.Tests.sln: single solution referencing all 14 test projects +

TestUtilities, enabling `dotnet test` in one command

  • tests/run-coverage.sh: runs all tests with coverlet, generates per-plugin

HTML + text summary via reportgenerator

  • .gitignore: exclude coverage-results/ and coverage-report/ output dirs

Usage: ./tests/run-coverage.sh (runs tests + opens HTML report)

./tests/run-coverage.sh --no-open (CI-friendly, no browser)

patch Notes

Move page tree chevron to left-side fixed-width column

Details

Reorders tree item grid columns to Chevron | Icon | Title instead of

Icon | Title | Chevron. Hides the TreeViewItem's default expander container

(PART_ExpandCollapseChevronContainer) since we use a custom toggle. The

fixed 20px chevron column ensures consistent alignment across all tree

depth levels.

patch DataJournal

Add remaining test coverage: IngestionService, EntitySourceMaterializer, SmtpSendService

Details
  • Finance/IngestionServiceTests: format routing, date filtering, dedup logic
  • Data/EntitySourceMaterializerTests: RewriteSql, TempTableName, FormatSqlValue,

EscapeStringValue (extracted private → internal static for testability)

  • Email/SmtpSendServiceTests: BuildMimeMessage with recipients, reply headers,

signatures, quoted text

  • Journal: move SectionToolbar below section editors in new entry form
patch FilesNotes

Extract pure logic tests for WikiSyncService, MediaLibraryWatcher, FileService

Details
  • WikiSyncService: promote DeriveTitleFromFilename and SanitizeFilename from

private to internal static; add 7 tests covering extension stripping, dash-to-

space conversion, space-to-dash conversion, invalid char replacement, and

round-trip consistency.

  • MediaLibraryWatcher: promote ShouldIgnore and ShouldIgnoreDir from private to

internal static; add 11 tests covering hidden files, .DS_Store, temp files,

tilde backups, hidden directory segments, empty/dot paths, and normal files.

  • FileService.DetectMimeType: already internal static; add 20 tests via

TestCase attributes covering images, documents, media, text, unknown

extensions, no extension, and case insensitivity.

  • Add InternalsVisibleTo for PrivStack.Plugin.Files.Tests in Files csproj

(Notes csproj already had it).

patch NotesTasks

Add tests for TaskToNoteService.BuildBlocksFromMarkdown and DocxExportService image helpers

Details

Extract pure logic from infrastructure classes for testing:

  • TaskToNoteService.BuildBlocksFromMarkdown: changed from private to internal static,

added InternalsVisibleTo for Tasks.Tests. 9 tests covering headings (all 3 levels),

paragraphs, multi-line joining, blank line separation, bullet lines as paragraph text,

empty input fallback, mixed content sequencing, and unique block IDs.

  • DocxExportService.GetImageDimensions and ParseJpegDimensions: changed from private to

internal static. 4 tests covering valid PNG dimension parsing, valid JPEG SOF0 parsing,

unrecognized format defaults, and direct ParseJpegDimensions extraction.

← Prev Page 62 of 266 Next →

Get notified about new releases