Releases: ghostintheshell-192/sheet-atlas
Releases · ghostintheshell-192/sheet-atlas
v0.6.0
[0.6.0] - 2026-03-07
Added
- DataRegion system — define named data regions within sheets for scoped operations (ADR-009/010/011)
- Core domain model with header/data row boundaries and column bounds
- Service integration and JSON persistence (Phase 2)
- Full UI: SheetGridCanvas with drag selection, TreeView sidebar, dedicated Data Regions tab (Phase 3)
- Cross-file region detection with header-anchored matching (ADR-012)
- Dual-mode sidebar: by-file and by-region-name views
- Inline rename, ⋮ context menus, Clear All actions
- Normalize & Export — in-place normalization that copies original Excel and corrects cell values/formats
- Column-level type correction: re-normalizes anomalous cells to match dominant column type (Step 3 pipeline)
- StyleIndex updated to match normalized type (date ↔ general)
- Region-scoped normalization: only cells within DataRegion bounds are processed
- QuickBar toolbar — contextual toolbar below menu bar with "Normalize & Export" button
- Toggle visibility from View menu
- Context-sensitive enable/disable based on selected file
- Coordinate-preserving sheet storage (ADR-013) — SASheetData preserves original Excel row/column positions
- Merged cell rendering in SheetGridCanvas
- Welcome tab with getting-started guidance
- Reusable UI components: ClosableTabHeader, EmptyStateView
- RegionsSidebarViewModel unit tests (27b1b66)
Changed
- Deliberate tab navigation with ⋮ menu on File Details
- Replace two-phase header toggle with CheckBox + spinner
- Template validation and row comparison scoped to DataRegion bounds
- DataRegion propagated to search filtering and row comparison column slicing
- Window title updated from legacy "Excel Cross Reference Viewer" to "SheetAtlas"
- Migrated .claude/ config to rules/ pattern for self-contained project configuration
Fixed
- Integer serial dates not recognized as dates in normalization (IsInteger check)
- ConvertSerial1900 off-by-one error for serial numbers > 60
- Row/column offset alignment in OpenXML reader and merged cell resolver
- RegionName propagation from search filter to RowComparisonService for correct column scoping
- Inline rename UX: auto-focus TextBox, preserve tree expansion, guard LostFocus
- Git hooks moved to project-level, fixed grep regex bug
Documentation
- DataRegion architecture decisions (ADR-009, 010, 011, 012, 013, 014)
- Auto-generated architecture reference from source comments
- Restructured .development/ folder for spec-driven development
What's Changed
- feat: Normalize & Export with column-level type correction by @ghostintheshell-192 in #5
Full Changelog: v0.5.3...v0.6.0
v0.5.3
[0.5.3] - 2026-01-31
Added
- Column filtering in export with semantic names and grouping support
- CSV format inference service for automatic number format detection:
- Percentages (15% → stored as 0.15 with "0%" format)
- Scientific notation (1.5e-3 → proper Excel scientific format)
- Decimal precision preservation (0.15000 → "0.00000" format)
- IHeaderResolver interface for unified semantic name resolution
Changed
- Consolidated header grouping logic into IHeaderGroupingService
- Introduced Facade pattern (FileReaderContext) for cleaner file reader architecture
- Improved TreeView styling in search results
Fixed
- Semantic mappings correctly included in CSV export
- Windows CI build nullable reference warnings
Full Changelog: v0.5.2...v0.5.3
v0.5.2
[0.5.2] - 2026-01-28
Fixed
- Use source-generated JSON serialization for PublishTrimmed AOT compatibility (settings file was not loading on trimmed builds)
Full Changelog: v0.5.1...v0.5.2
v0.5.1
[0.5.1] - 2026-01-21
Fixed
- Preserve numeric types in comparison export (numbers written as Excel numbers, not text)
- Preserve number formats (currency, percentage) in comparison and normalization export
- Format dates correctly in comparison view (was showing OLE serial numbers)
- Limit decimal precision in comparison view for readability
Added
ExportCellValuewrapper struct to carry both cell value and number format through export pipelineGetTypedCell()andGetTypedCellByHeader()methods inRowComparisonfor typed cell access- Dynamic NumberingFormats support in
ExcelWriterServicefor custom format preservation
Full Changelog: v0.5.0...v0.5.1
v0.5.0
[0.5.0] - 2026-01-18
Added
- Settings tab with user preferences:
- Theme selection (Light/Dark/System)
- Default header row count for file readers
- Default export format (Excel/CSV)
- Normalized file naming pattern
- Output folder configuration
- Column filtering in sidebar with checkbox selection
- Column grouping warning badges for case and type variations
- System theme detection for Linux (GNOME) using PlatformSettings
Fixed
- Theme persistence across application restarts
- System theme detection on Linux now works correctly
- Reset to Defaults now requires Save to persist changes (clearer UX)
- Search results text invisible after theme switch
- Settings properly loaded at startup and applied to export operations
Refactored
- Column grouping now groups by name only (not by type), showing warnings for inconsistencies
- Remove temporary theme toggle from menu (now in Settings tab)
Chore
- Remove 5 unused IValueConverter implementations
- Normalize line endings for cross-platform CI consistency
Full Changelog: v0.4.0...v0.5.0
v0.4.0
[0.4.0] - 2025-12-16
Added
- Dedicated Templates tab with separated library and workspace panels
- Multi-file selection in sidebar (Ctrl+Click, Shift+Click)
- Batch template validation across multiple files
- Column Linking sidebar with visual grouping by source file
- Column highlighting when template is selected (orange border)
- SemanticName persistence in template JSON files
- "Update Template" button to save semantic names to existing templates
- Export to Excel (.xlsx) and CSV with preserved data types
Fixed
- Prevent computed properties from being serialized in template JSON (was causing 3x column duplication)
- Re-apply column highlighting after Refresh, Rename, Merge, Ungroup operations
- Remove 'x' from boolean parsing to avoid text conflicts
Refactored
- Extract Template Management from FileDetails into dedicated tab
- Streamline FileDetails to show only Basic Info, Notifications, and Export
Miscellaneous
- Improve security and clarify release workflow
Full Changelog: v0.3.3...v0.4.0
v0.3.3
[0.3.3] - 2025-11-28
Added
- Add file validation and security protections
- Implement collapsible stack for multiple row comparisons
Documentation
- Cleanup and update documentation structure
Fixed
- Enable macOS download button in website template
- Enable macOS download in downloads page template
- Remove false positive anomalies for empty cells in CSV files
- Replace blocking .Result with async/await in file readers
- Add bounds checking for SharedStringTable lookup
- Correct row index semantics for search and comparison
- Implement IDisposable on FileDetailsViewModel
- Resolve event handler memory leaks in search results hierarchy
Refactored
- Use CollapsibleSection in SearchView for consistency
test for sourceforge sync
Full Changelog: v0.3.2...v0.3.3
v0.3.2
[0.3.2] - 2025-11-14
Added
- Add Foundation Layer infrastructure (Phase 1 - Structure)
- Implement CurrencyDetector with locale-aware separator detection
- Add Excel date system support (1900/1904) with data normalization
- Implement ColumnAnalysisService with context-aware anomaly detection
- Implement MergedCellResolver with merge strategies
- Report invalid merge ranges as warnings to user
- Add macOS DMG installer support
Fixed
- Align XLS and CSV readers with XLSX absolute row indexing
- Centralize exception recovery logic to eliminate duplication
- Remove unnecessary async from MergedCellResolver
- Remove duplicate OpenXmlPackageException handler
- Apply naming conventions to private static readonly fields
- Remove unused parameters from xUnit theory tests
- Apply naming conventions to static readonly fields
- Correct workflow_dispatch input handling and sed delimiter
- Complete workflow_dispatch input handling for Linux .deb
Refactored
- Remove semantic validation from TryParseDate
- Simplify CellReference semantics and fix merged cell processing
- Remove redundant try-catch in ParseCellReference
- Fix blocking async/await in OpenXmlFileReader
- Implement absolute 0-based row indexing and remove auto-detection
- Resolve all compiler warnings (24 → 0)
- Remove commented-out dead code
- Remove boilerplate and section marker comments
- Cleanup comments - translate Italian, remove obvious/historical (228 comments)
- Remove dead code ToastNotificationService
- Apply code analyzer suggestions and modernize C# syntax
Testing
- Correct French locale currency format to use Excel US convention
Full Changelog: v0.3.1...v0.3.2
v0.3.1
[0.3.1] - 2025-11-07
Added
- Implement David Fowl standards for project structure
- Complete UI redesign with professional theme system and Notepad++ style search results
- Add granular selection controls for search results
- Create GitHub Pages website with app-themed design
- Add quality external links to improve SEO
- Add quality external links to improve SEO
- Improve website SEO with advanced meta tags
- Implement centralized exception handling framework
- Add error handling safety nets and activity logging
- Add XlsFileReader for legacy Excel file support
- Add CsvFileReader with auto-delimiter detection
- Update file picker to support all spreadsheet formats
- Add automated changelog generation workflow
- Add automated multi-platform build workflow
- Add prominent download section to GitHub Page
- Reorganize project structure with branch protections and GitHub Actions
- Add GitHub issue and PR templates
- Add Windows installer infrastructure with Inno Setup
- Implement custom SASheetData for memory optimization
- Add final memory optimizations with TrimExcess
- Add responsive hamburger menu for mobile navigation
- Implement honest SEO improvements focused on Windows availability
- Create website template with version placeholders
- Implement unified release workflow
- Unified release pipeline with website automation
- Extract SheetAtlas.Logging as reusable module
- Integrate LogService into error notification flow
- Simplified extension methods for LogService
- Implement native file logging with daily rotation
- Add pre-push hook for automated unit testing
- Add structured JSON file logging system
- Tabular error log view with full history tracking
- Implement collapsible sidebar with vertical toggle bar
- Implement dynamic tab system with progressive disclosure
- Comprehensive UI/UX improvements
- Implement IDisposable pattern on MainWindowViewModel
- Implement parallel file loading with configurable concurrency
- Comprehensive website deployment with automated testing
Docs
- Clean up redundant comments and add XML documentation
Documentation
- Update Git workflow documentation with develop branch strategy
- Reorganize and clean up documentation structure
- Separate business strategy from public documentation
- Add comprehensive README.md
- Add error handling philosophy to CLAUDE.md
- Add Google Search Console verification meta tag
- Update README for v1.0.0 release
- Update website branding from ExcelViewer to SheetAtlas
- Update website downloads - Windows installer ready, Linux/macOS coming soon
- Update CHANGELOG to reflect corrected versioning (0.x for alpha)
- Correct README.md to reflect honest platform availability
- Add release process documentation and update CLAUDE.md
- Major SEO improvements for website discoverability
- Revise privacy messaging in features page
- Update website for release v0.3.0
- Update website for release v0.3.1
- Regenerate complete CHANGELOG for all versions
Fixed
- Resolve comparison view crash and improve styling
- Remove download options from README - project not ready for release
- Add website images to version control
- Synchronize column widths between headers and data cells
- Align row comparison header width with column content
- Use single-line command for PowerShell compatibility
- Remove explicit wizard image files from Inno Setup script
- Reorder Pascal functions to declare before use
- Correct project descriptions and update all references from excel-viewer to sheet-atlas
- Implement memory leak cleanup infrastructure (partial)
- Handle empty Excel sheets correctly in OpenXmlFileReader
- Preserve UI state when removing files via Clean All Data
- RowComparison UI cleanup on close (#8, #9)
- Auto-switch to Search Results tab when search completes
- RowComparison cells now adapt to dark mode theme (#7)
- Menu items cleanup and implementation (#1-6)
- Update website version numbers to v1.1.0
- Update project path from ExcelViewer to SheetAtlas in build-release workflow
- Merge build-release workflow fix from main
- Remove hardcoded version numbers from website, add alpha status notice
- Update website download links to use specific v0.2.0 tag
- Correct error messages for corrupted xlsx files
- Translate all Italian error messages to English
- Catch specific regex exceptions in SearchService instead of all exceptions
- Update test to expect Info level for empty sheets
- Remove redundant .NET project detection in pre-push hook
- Fix tab selection bugs and refactor navigation logic
- Resolve memory leak in UnloadAllFiles by reusing single-file cleanup logic
- Prevent memory leak from inline PropertyChanged subscription
- Eliminate fire-and-forget inconsistency and retry UI flicker
- Correct alpha banner version substitution and platform availability text
- Correct sitemap and alpha banner generation
- Improve website deployment and navbar alignment
- Remove incorrect data from website structured metadata
- Critical fixes for website deployment workflow
- Extract version-specific changelog section for GitHub releases
Miscellaneous
- Remove accidentally committed sample files
- Remove obsolete UI documentation files
- Update CHANGELOG for v1.0.0
- Update CHANGELOG for v1.1.0
- Merge develop for v1.0.0 release
- Update GitHub Page for v1.0.0 release
- Remove legacy ExcelViewer references and directories
- Remove duplicate release workflows
- Remove unused using directives across codebase
- Add website data configuration file
Perf
- Precompute column comparison data to eliminate redundant calculations
- Eliminate duplicate GetCellAsStringByHeader calls
- Implement flat cache for RefreshCellColors to eliminate nested iteration
Performance
- Remove unnecessary ItemArray.ToList() memory copy
- Remove fake async methods from RowComparisonService
- Add string interning for duplicate cell values
- Optimize PropertyChanged notifications in TreeSearchResultsViewModel
- Implement flat cache in SearchHistoryItem to reduce O(n³) to O(n)
Refactor
- Replace toast notifications with inline treeview error display
- Simplify property propagation in OnTabNavigatorPropertyChanged
- Simplify property propagation in OnComparisonCoordinatorPropertyChanged
- Extract SelectedFile setter logic to helper methods
- Unify duplicate switch logic in LoadedFilesManager
- Eliminate message duplication and redundant null checks
- Standardize event delegates and fix memory leak
Refactored
- Reorganize project structure following David Fowl standards
- Restructure Core layer following Clean Architecture principles
- Implement David Fowl architecture with separated Infrastructure layer
- Move website files to docs/ directory for GitHub Pages
- Split large ViewModels and improve code organization
- Extract ICellValueReader to eliminate code duplication
- Remove redundant error handling and apply "Never Throw" philosophy
- Extract OpenXML logic to Strategy Pattern for multi-format support
- Rename project from ExcelViewer to SheetAtlas
- Fix all nullability warnings for cleaner build
- Consolidate severity levels using LogSeverity
- Clean up nomenclature in Logging module
- Migrate all UI layer logging to ILogService
- Migrate Infrastructure layer logging to ILogService
- Migrate Core layer logging to ILogService
- Migrate Services/Commands logging to ILogService
- Standardize error handling pattern across file readers
- Simplify null validation in RowComparisonService
- Implement IDisposable pattern to fix memory leaks
- Consolidate button styles to centralized Buttons.axaml
- Extract menu styles and replace hardcoded colors with theme resources
- Add SecondaryButton style and eliminate last hardcoded colors
- Remove deprecated ShowSearchResultsCommand
- Extract TabNavigationCoordinator from MainWindowViewModel
- Extract FileDetails operations to FileDetailsCoordinator
- Simplify UnloadAllFilesAsync with self-documenting helper methods
- Split MainWindowViewModel into partial classes for better organization
- Remove redundant alpha status message
Test
- Add comprehensive regex tests for SearchService
Testing
- Verify pre-commit hook
- Add integration test infrastructure with real Excel files
- Update test constructors after ExcelReaderService refactoring
- Migrate test mocks from ILogger to ILogService
- Update assertions for English error messages
- Add comprehensive unit tests for structured file logging system
Ci
- Add multi-platform CI workflow with automated testing
- Add workflow_dispatch trigger to build-release workflow
- Integrate Windows installer build into main release workflow
Merge
- Align feature/ui-improvements with develop
- Integrate UI improvements into develop
Release
- Unified release pipeline v1.0
Resolve
- Merge conflict in index.html keeping enhanced meta tags
What's Changed
- Develop - docs: add README and clean up documentation structure by @ghostintheshell-192 in #1
- ci: add multi-platform CI workflow by @ghostintheshell-192 in #2
- Release v1.0.0 - First Public Release by @ghostintheshell-192 in #3
New Contributors
- @ghostintheshell-192 made their first contribution in #1
Full Changelog: https://github.com/ghostintheshell-192/sheet-atlas/commits/v0.3.1
v0.3.0
[0.3.0] - 2025-10-23
Added
- Implement honest SEO improvements focused on Windows availability
- Create website template with version placeholders
- Implement unified release workflow
- Unified release pipeline with website automation
- Extract SheetAtlas.Logging as reusable module
- Integrate LogService into error notification flow
- Simplified extension methods for LogService
- Implement native file logging with daily rotation
- Add pre-push hook for automated unit testing
- Add structured JSON file logging system
- Tabular error log view with full history tracking
- Implement collapsible sidebar with vertical toggle bar
- Implement dynamic tab system with progressive disclosure
- Comprehensive UI/UX improvements
- Implement IDisposable pattern on MainWindowViewModel
- Implement parallel file loading with configurable concurrency
Docs
- Clean up redundant comments and add XML documentation
Documentation
- Update CHANGELOG to reflect corrected versioning (0.x for alpha)
- Correct README.md to reflect honest platform availability
- Add release process documentation and update CLAUDE.md
- Major SEO improvements for website discoverability
- Revise privacy messaging in features page
Fixed
- Merge build-release workflow fix from main
- Remove hardcoded version numbers from website, add alpha status notice
- Update website download links to use specific v0.2.0 tag
- Correct error messages for corrupted xlsx files
- Translate all Italian error messages to English
- Catch specific regex exceptions in SearchService instead of all exceptions
- Update test to expect Info level for empty sheets
- Remove redundant .NET project detection in pre-push hook
- Fix tab selection bugs and refactor navigation logic
- Resolve memory leak in UnloadAllFiles by reusing single-file cleanup logic
- Prevent memory leak from inline PropertyChanged subscription
- Eliminate fire-and-forget inconsistency and retry UI flicker
- Correct alpha banner version substitution and platform availability text
- Correct sitemap and alpha banner generation
- Improve website deployment and navbar alignment
Miscellaneous
- Remove legacy ExcelViewer references and directories
- Remove duplicate release workflows
- Remove unused using directives across codebase
Perf
- Precompute column comparison data to eliminate redundant calculations
- Eliminate duplicate GetCellAsStringByHeader calls
- Implement flat cache for RefreshCellColors to eliminate nested iteration
Performance
- Optimize PropertyChanged notifications in TreeSearchResultsViewModel
- Implement flat cache in SearchHistoryItem to reduce O(n³) to O(n)
Refactor
- Replace toast notifications with inline treeview error display
- Simplify property propagation in OnTabNavigatorPropertyChanged
- Simplify property propagation in OnComparisonCoordinatorPropertyChanged
- Extract SelectedFile setter logic to helper methods
- Unify duplicate switch logic in LoadedFilesManager
- Eliminate message duplication and redundant null checks
- Standardize event delegates and fix memory leak
Refactored
- Consolidate severity levels using LogSeverity
- Clean up nomenclature in Logging module
- Migrate all UI layer logging to ILogService
- Migrate Infrastructure layer logging to ILogService
- Migrate Core layer logging to ILogService
- Migrate Services/Commands logging to ILogService
- Standardize error handling pattern across file readers
- Simplify null validation in RowComparisonService
- Implement IDisposable pattern to fix memory leaks
- Consolidate button styles to centralized Buttons.axaml
- Extract menu styles and replace hardcoded colors with theme resources
- Add SecondaryButton style and eliminate last hardcoded colors
- Remove deprecated ShowSearchResultsCommand
- Extract TabNavigationCoordinator from MainWindowViewModel
- Extract FileDetails operations to FileDetailsCoordinator
- Simplify UnloadAllFilesAsync with self-documenting helper methods
- Split MainWindowViewModel into partial classes for better organization
Test
- Add comprehensive regex tests for SearchService
Testing
- Migrate test mocks from ILogger to ILogService
- Update assertions for English error messages
- Add comprehensive unit tests for structured file logging system
Ci
- Add workflow_dispatch trigger to build-release workflow
- Integrate Windows installer build into main release workflow
Release
- Unified release pipeline v1.0
What's Changed
- Develop - docs: add README and clean up documentation structure by @ghostintheshell-192 in #1
- ci: add multi-platform CI workflow by @ghostintheshell-192 in #2
- Release v1.0.0 - First Public Release by @ghostintheshell-192 in #3
New Contributors
- @ghostintheshell-192 made their first contribution in #1
Full Changelog: https://github.com/ghostintheshell-192/sheet-atlas/commits/v0.3.0
What's Changed
- Develop - docs: add README and clean up documentation structure by @ghostintheshell-192 in #1
- ci: add multi-platform CI workflow by @ghostintheshell-192 in #2
- Release v1.0.0 - First Public Release by @ghostintheshell-192 in #3
New Contributors
- @ghostintheshell-192 made their first contribution in #1
Full Changelog: https://github.com/ghostintheshell-192/sheet-atlas/commits/v0.3.0