Commit graph

150 commits

Author SHA1 Message Date
90fb03bf0c Add new tab views for image catalog functionality
- Implement GeneralTabView for source and destination path settings, options, processing parameters, and image library selection.
- Create LogoTabView for logo selection, preview, and positioning options.
- Add PhotoTabView for photo dimensions and JPEG quality settings.
- Introduce RaceUploadTabView for race setup and processed photo upload functionality, including API integration.
- Develop TextTabView for horizontal and vertical text settings, font options, and race time configuration.
- Implement ThumbnailsTabView for thumbnail creation options and settings.
2026-02-28 21:48:05 +01:00
6cf0c029fc feat: Implement Face AI functionality and race upload settings in Avalonia UI 2026-02-28 21:34:45 +01:00
15b1da4371 feat: Add race upload functionality and file transfer endpoints
- Implemented IRaceUploadCommunicationClient with methods for saving races, creating race points, indexing race points, retrieving race details, and uploading files to the receiver.
- Added ReceiveFilePath option to CatalogCommunicationOptions for file transfer configuration.
- Enhanced CatalogCommunicationServiceCollectionExtensions to validate ReceiveFilePath.
- Developed RaceUploadCommunicationClient to handle race-related API interactions, including saving race data and uploading processed images.
- Updated API documentation to reflect new race upload and file transfer endpoints.
- Modified Avalonia UI to support race creation and processed image uploads, including new input fields and buttons.
- Introduced RaceSaveRequest and ReceiveFileUploadRequest models for structured data handling.
2026-02-28 16:54:08 +01:00
4a0973b681 Added avalonia integration and remote proof of concept 2026-02-28 15:30:57 +01:00
775080a178 Removed old projects 2026-02-26 21:19:03 +01:00
73597689ed Cross-platform: remove System.Drawing deps, add #if WINDOWS
Refactored image creation APIs to use byte[] for logo data instead of System.Drawing.Image, enabling cross-platform support. Wrapped all GDI+/Windows-specific code in #if WINDOWS and updated project files to conditionally include Windows-only dependencies. Defaulted to ImageSharp on non-Windows, and updated UI and settings to reflect platform capabilities. Application now builds and runs on Linux/macOS with Avalonia and ImageSharp, while retaining full Windows functionality.
2026-02-26 19:17:23 +01:00
311b3e76f0 Add Avalonia UI frontend alongside WinForms and WPF
Introduce Avalonia as a new cross-platform UI option, including new XAML and code-behind files for the application and main window. Update Program.cs to support a --avalonia launch argument and add corresponding launch profile. Integrate Avalonia NuGet packages and ensure DataModel supports UI-thread invocation for all frontends. All business logic and state are shared via DI, enabling consistent behavior across WinForms, WPF, and Avalonia.
2026-02-26 18:43:07 +01:00
3ae4da3e49 Enhance publish_release job: export version and add release metadata for automated releases 2026-02-22 14:51:44 +01:00
93413b0fe9 Made trimmed false 2026-02-22 11:48:32 +01:00
3a964bbbcf Refactor CI pipeline: replace minversion file generation with single-file publish for downstream jobs 2026-02-22 11:38:15 +01:00
335da52abf Add minversion file generation to build output for downstream jobs 2026-02-22 00:57:23 +01:00
1bb0176c92 Removed tags only from publish job 2026-02-21 20:11:46 +01:00
f8d4687a97 Refactor CI pipeline for GitLab: streamline publish_release job and improve artifact handling 2026-02-21 20:01:31 +01:00
900e8b6bf8 Update CI configuration and assembly information; remove log file and add logo image 2026-02-21 19:03:02 +01:00
d068b4b3e1 Support UI selection via --wpf command-line argument
Refactored Program.cs to accept command-line arguments and select between WinForms (default) and WPF UI based on the presence of --wpf. Removed old commented-out UI selection code. Updated launchSettings.json to provide separate profiles for WinForms and WPF launches. If WPF is requested but unavailable, the app falls back to WinForms.
2026-02-21 17:27:16 +01:00
67f207c05b Refactor UI: reorganize options and improve color picker
- Moved "Create Thumbnails" checkbox to the Thumbnails section.
- Relocated "Add Time" and "Add Race Time" controls to a new "Tempo Gara" section in the text options area.
- Enabled multiline input and wrapping for the Vertical Text box.
- Replaced text color selection with MahApps ColorPicker for better UX.
- Moved "Select Transparent Color" button to the logo options section.
- Made minor UI layout improvements for clarity.
2026-02-21 17:22:46 +01:00
9007a27fb2 Upgrade UI to MahApps.Metro with runtime theming
Modernize WPF UI using MahApps.Metro: switch MainWindow to MetroWindow, add MetroTabControl/MetroTabItem, custom tab styles, and icon-based theme toggle. Move version display to window commands. Integrate MahApps resource dictionaries and ThemeManager for runtime theme switching. Update startup logic for proper theming. WinForms fallback retained.
2026-02-21 16:49:13 +01:00
ec4635a37f Add Material icons to UI and refactor theme resources
Integrated MahApps.Metro.IconPacks for Material icons in tab headers and buttons, enhancing visual clarity and user experience. Refactored resource dictionary to define theme brushes at the top level for easier theme switching. All button content now combines icons and text for a more modern interface. No functional changes; UI/UX improvements only.
2026-02-21 16:04:58 +01:00
c70ab9e5de Renamed image creators 2026-02-21 15:53:52 +01:00
4091fb78c5 Center each text line individually when drawing on image
Updated text rendering logic to center each line horizontally
based on its estimated width, ensuring multi-line text is
visually centered. Previously, all lines were drawn at a fixed
horizontal position. Both shadow and main text now use the
calculated centered position.
2026-02-21 15:46:03 +01:00
7e1ca95a25 Improve text overlay for rotated and multi-line images
- Use vertical text variant (TestoFirmaV) for rotated images to ensure correct orientation of overlays.
- Adjust font sizing logic for multi-line text to better fit within image bounds, accounting for line count and spacing.
- Set rotation flags (FotoRuotaADestra, FotoRuotaASinistra) before drawing text, enabling correct text variant selection.
- Ensure vertical text field is initialized from settings for consistent behavior.
2026-02-21 15:43:26 +01:00
bbda970d57 Remove EXIF orientation tag after image processing
Ensures EXIF orientation is cleared when cloning and after rotation,
preventing incorrect display in EXIF-aware viewers. Failures are
logged as debug messages without interrupting processing.
2026-02-21 14:12:15 +01:00
f4893a39e9 Improve multi-line text, logo, and version display
- Enhance ImageCreatorAlternate to support multi-line text rendering with correct sizing, spacing, and shadow for each line.
- Only draw logos on non-thumbnail images to match GDI behavior.
- Add a status bar to MainWindow showing the app version at runtime.
- Upgrade MinVer to 7.0.0 and adjust versioning to avoid WPF/XAML assembly identity issues.
- Refactor XAML layout to accommodate the new status bar.
2026-02-17 20:51:35 +01:00
8db7ee8075 Support NuGet auth fallback and add feed diagnostics
Enhance private NuGet source setup in build_windows and publish_release jobs to support fallback authentication using NUGET_USERNAME/NUGET_PASSWORD when CI_JOB_TOKEN is unavailable. Update log messages for clarity. Add diagnostic steps in build_windows to verify NuGet feed and package visibility using configured credentials. No changes to core build or publish logic.
2026-02-17 00:07:55 +01:00
4569e001c8 Update NuGet auth to use CI_JOB_TOKEN in CI scripts
Switched private NuGet source authentication in build_windows and publish_release jobs to use CI_JOB_TOKEN instead of NUGET_USERNAME/NUGET_PASSWORD. Updated related log messages and ensured PowerShell variable usage is correct for environment variables. This improves compatibility with GitLab CI best practices.
2026-02-16 23:54:32 +01:00
c8d6258556 Changed nuget credentials to the CI token 2026-02-16 23:26:17 +01:00
e556d74fd1 Update NuGet source config and add packageSourceMapping
Renamed the private NuGet source from 'GitLab' to 'Nuget-GitLab-AIFotoONLUS' in CI scripts for clarity and consistency. Added a repository-level NuGet.Config with packageSourceMapping to ensure only specific private packages are restored from the GitLab feed, preventing 401 errors when restoring public packages from nuget.org.
2026-02-16 23:12:57 +01:00
38cf61ab33 Added variables for nuget 2026-02-16 22:53:48 +01:00
90c50358d1 Install .net sdk 10 on runner 2026-02-16 22:31:13 +01:00
3898c002f2 Fixed shared runner tag 2026-02-16 22:17:43 +01:00
b6455a4bcb Added windows runner 2026-02-16 22:07:50 +01:00
16aff04ccd Updated runner 2026-02-16 22:01:16 +01:00
da9d9875b0 Switch to MinVer, add CI/CD, unify thumbnail options
- Add .gitlab-ci.yml for Windows CI/CD: build, publish, and GitLab Release with artifact upload
- Replace GitVersion.MsBuild with MinVer for versioning; update all versioning logic in .csproj
- Remove GitVersion CLI fallback for Visual Studio builds
- Update post-publish renaming to use MinVer's Version property
- Replace multiple thumbnail text checkboxes with a single ComboBox selector in MainWindow.xaml
- Change default UI startup: prefer WPF MainWindow, fallback to WinForms MainForm
2026-02-16 21:49:46 +01:00
d13ec8abdf Refactor thumbnail options to enum and ComboBox UI
Replaced multiple mutually-exclusive boolean properties for thumbnail text options with a single enum (`ThumbnailOption`) in the data model. Updated WinForms UI to use a ComboBox instead of radio buttons for selecting thumbnail mode. Adjusted designer, mapping profile, settings DTO, and settings service for enum support and backward compatibility. Simplified thumbnail generation logic and improved maintainability by ensuring only one mode can be selected at a time.
2026-02-16 19:55:37 +01:00
214e540170 Mutually exclusive thumbnail mode selection in UI
Implement mutually exclusive logic for thumbnail display modes in DataModel and MainForm. Add ThumbnailMode property for authoritative state. Replace radio button bindings with event handlers. Synchronize UI with model changes. Explicitly map thumbnail flags to PicSettings. Force WinForms startup, disabling WPF branch.
2026-02-16 18:58:15 +01:00
6a5173a20d Add AI/OCR extraction feature with UI and CSV export
Integrates optional AI/OCR (AIFotoONLUS.Core) support to extract numbers from images after processing. Adds new "AI" tab in the UI for enabling extraction, selecting models folder, specifying CSV output, and previewing results. Results can be exported to CSV. Uses reflection for AI library invocation, with fallback simulation if unavailable. Persists new AI settings. Updates related NuGet packages and adds theme resources.
2026-02-16 18:37:05 +01:00
10cc574acb Add WPF UI alongside WinForms; improve cancellation logic
Introduced MainWindow.xaml and code-behind for a modern WPF interface with tabbed settings. Enabled WPF in project file. Refactored startup to launch WPF or WinForms UI based on availability. Registered WPF MainWindow in DI. Improved DataModel cancellation to be synchronous and log exceptions. Minor logging and comment updates. App now supports both WPF and WinForms frontends.
2026-02-15 11:14:19 +01:00
8872080741 Add color-key transparency support for logo overlays
- Allow users to select a transparent color for logo images (watermarks) via UI (checkbox, color picker, preview).
- Apply color-key transparency in both System.Drawing and ImageSharp backends: specified color in logo is made fully transparent.
- Persist transparency settings in PicSettings and SettingsDto; bind to DataModel and UI controls.
- Update logo preview to reflect transparency in real time.
- Add option to select image processing library (System.Drawing or ImageSharp) in UI and settings.
- Fix bug in SettingsService parameter loading for int/double/DateTime.
- Fully integrate color-key transparency into image processing and settings serialization.
2026-02-15 11:13:23 +01:00
63751af18d Add selectable image library option and refactor processing
Introduce UI option to choose between System.Graphics and ImageSharp for image processing. Update DataModel and MainForm for robust binding and synchronization. Rewrite ImageCreatorAlternate to use ImageSharp for core operations and GDI+ for overlays. Remove test buttons, add radio group for library selection. Update project dependencies to support new features and modernize image handling.
2026-02-15 01:03:26 +01:00
e48c0d266b Add IImageCreator abstraction and runtime provider selection
Introduce IImageCreator interface for image creation, and update ImageCreatorSharp to implement it. Add ImageCreatorAlternate (adapter) and ImageCreatorMapper (runtime selector) classes. Extend PicSettings with ImageCreatorProvider to control backend selection. Update DI registrations and refactor ImageCreationStuff to depend on IImageCreator, enabling backend switching via configuration.
2026-02-15 00:14:04 +01:00
a00ab074c4 Prefer GitVersion values for assembly and publish versioning
Enhance versioning by prioritizing GitVersion output for assembly, file, and informational versions. Add fallback MSBuild target to run GitVersion CLI in Visual Studio builds. Update publish rename logic to use FullSemVer and improve version normalization for artifact naming.
2026-02-15 00:03:16 +01:00
69fdf01de3 Modernize versioning and display in app and build output
- Switch to explicit "3.2.0" next-version in GitVersion.yml
- Update NuGet packages and set assembly name to "ImageCatalog"
- Add MSBuild target to rename published exe with year and version
- Add AppVersion property to DataModel, set via IVersionProvider
- Replace static version label with data-bound versionLabel in UI
- Remove manual version label logic from MainForm
- Update DI to inject IVersionProvider into DataModel
- Ensures UI always shows correct version and builds are versioned
2026-02-14 22:18:56 +01:00
509d5357a8 Integrate GitVersion and add version provider abstraction
- Added GitVersion for semantic versioning and build metadata
- Introduced IVersionProvider and VersionProvider for UI-friendly version display
- MainForm now uses IVersionProvider for version label
- Registered VersionProvider in DI container
- Improved logging: filtered out AutoMapper license logs
- General code cleanup in Program.cs
2026-02-14 21:14:06 +01:00
5cb491f1b5 Persist last-used dialog folders in user preferences
Dialogs now remember last-used folders for source, destination, logo, and settings files by storing these paths in a user preferences file under LocalApplicationData. Preferences are saved on form close, reducing unnecessary writes. SettingsService now uses a temporary ParametriSetup for settings files to avoid polluting user preferences. Error handling ensures preference save failures do not disrupt the user. This separation improves user experience and keeps user preferences distinct from project settings.
2026-02-14 20:38:51 +01:00
6ccbec890a Improve speed stats, UI usability, and settings persistence
Enhanced speed counter with smoothing and elapsed time display.
Added folder open buttons to UI and repositioned speed label.
Added UpdateSubdirectories to settings for persistence.
2026-02-14 19:36:58 +01:00
c2fd4bf780 Add image processing benchmarks and UI folder open buttons
- Added MaddoShared.Benchmarks project with BenchmarkDotNet for comprehensive image processing performance tests (parallel, chunk, size, stress).
- Included helper for generating test images and custom configs to ensure InProcess toolchain for .NET Windows compatibility.
- Added cross-platform scripts to run benchmarks easily.
- Updated .gitignore for benchmark artifacts and temp files.
- Exposed GetFilesToProcessPublic in ImageCreationStuff for testability.
- Added file name sanitization in ImageCreatorSharp to prevent IO errors.
- Enhanced WinForms UI: added "Open" buttons for source/destination folders, handled folder opening in Explorer, and improved user messaging and layout.
- Updated solution file to include new benchmark project.
2026-02-14 19:20:25 +01:00
39b0904a72 Update test project SDK, add assessment, bump submodule
- Switched MaddoShared.Tests.csproj to Microsoft.NET.Sdk, added explicit MSTest and test SDK package references, and upgraded Microsoft.Extensions.Logging.Abstractions to 10.0.2.
- Added assessment.csv, assessment.json, and assessment.md with detailed .NET 10.0 compatibility analysis.
- Updated MaddoLibrary submodule reference (now marked as dirty).
2026-02-10 21:30:56 +01:00
68c1106f65 Enhance image processing performance and flexibility by introducing atomic counters, improving file pattern matching, and refining logo positioning logic. 2026-02-10 21:18:46 +01:00
ba965e8266 Fixes and mapping 2026-02-04 23:16:06 +01:00
fc7175c2f7 Fixes to settings 2026-02-04 22:10:16 +01:00