-
Notifications
You must be signed in to change notification settings - Fork 0
Comparing changes
Open a pull request
base repository: futuremotiondev/powershell-fmdevtoolbox
base: main
head repository: futuremotiondev/powershell-fmdevtoolbox
compare: dev
- 17 commits
- 647 files changed
- 2 contributors
Commits on Jan 23, 2026
-
Add various font processing scripts and utilities
- Introduced new scripts for font family name retrieval, font renaming, and font format conversion. - Implemented functionality to extract font metadata and save it in JSON format. - Added scripts for converting between font formats (OTF to TTF, TTF to SVG, etc.). - Created utilities for managing open directories and saving window sets. - Enhanced error handling and logging throughout the scripts. - Updated existing scripts to improve performance and usability. - Removed deprecated or redundant scripts to streamline the codebase.
futuremotiondev committedJan 23, 2026 Configuration menu - View commit details
-
Copy full SHA for c2caab1 - Browse repository at this point
Copy the full SHA c2caab1View commit details
Commits on Jan 24, 2026
-
feat(svg): add SVG color conversion and git cloning utilities
- Add Convert-SVGColor function to recolor SVG files with comprehensive color format support including hex, rgb, hsl, named colors, and CSS custom properties - Implement parallel processing for batch SVG conversion with configurable thread limits and automatic output directory management - Add Copy-GitRepository function for parallel git repository cloning with intelligent owner prefix detection - Support multiple git hosting platforms including GitHub, GitLab, Bitbucket, Azure DevOps, Codeberg, and SourceHut - Implement automatic folder naming with owner/organization prefix for cloned repositories - Fix typo in Build.ps1 changing PrivateAliasesNames to PrivateAliasNames for consistency - Update module manifest to export new Convert-SVGColor function - Refactor Remove-AllMacOSJunkFiles to use dynamic thread calculation based on processor count - Add comprehensive validation for path strings, hex colors, and URL parsing in new functions
futuremotiondev committedJan 24, 2026 Configuration menu - View commit details
-
Copy full SHA for 05d51f0 - Browse repository at this point
Copy the full SHA 05d51f0View commit details
Commits on Feb 18, 2026
-
refactor(build): ♻️ rewrite build system to use AST parsing and add m…
…odule - Replace runtime module import with AST-based function/alias discovery in Build.ps1 - Add Get-FunctionInfoFromFile helper that parses PS1 files using System.Management.Automation.Language.Parser - Add Get-ModuleFunctionsAndAliases to collect public/private functions with exclusion pattern support - Add Update-ModuleManifestVersion for semantic version bumping (major, minor, patch, explicit) - Rename Update-FMModule to Update-FMModuleManifest with ShouldProcess support and structured output - Add Build-QuickRefresh.ps1 as a convenience wrapper for manifest updates with parameter passthrough - Introduce FMDevToolbox.Config.psd1 for external tool paths, Python venvs, and runtime defaults - Add typed configuration classes in PSM1 (FMDevToolboxConfig, FMExternalToolsConfig, etc.) - Load configuration from PSD1 at module import and apply computed defaults for script paths - Add FMNodeDependencies class for declaring required npm packages (otf2svg, ttf2svg, svgo) - Add DevelopmentMode flag to control whether Internal- prefixed functions are exported - Add exclusion patterns to prevent Internal-, Private-, and Helper- prefixed functions from export in production - Add SkipParseWarningFiles list to suppress expected parse errors for files with external type dependencies - Update FunctionsToExport in manifest
futuremotiondev committedFeb 18, 2026 Configuration menu - View commit details
-
Copy full SHA for 1611a71 - Browse repository at this point
Copy the full SHA 1611a71View commit details -
✨ [FEATURE] Add font conversion, renaming, and organization utilities
- Add Activate-FoundryToolsCLI function to activate Python virtual environments for stable or new FoundryTools CLI versions - Add Convert-FontToWoff function to convert OTF/TTF fonts to WOFF/WOFF2 formats with parallel processing support via ForEach-Object -Parallel - Add Convert-WoffToFont function to decompress WOFF/WOFF2 files back to OTF/TTF font formats with parallel processing support - Add Get-FoundryToolsFtcli function to locate and activate the FoundryTools CLI executable from configured Python virtual environments - Add Move-FontFamiliesToSubfolders function to organize font files into family-named subdirectories using fontbro Python script for family name detection - Add Rename-Fonts function to rename font files based on metadata using three methods: FamilyNameStyleName, PostScriptName, or FullFontName - Support pipeline input via ValueFromPipeline and ValueFromPipelineByPropertyName across all font functions - Support -Recurse parameter for directory-based batch processing in Convert-FontToWoff, Convert-WoffToFont, and Rename-Fonts - Support configurable -OutputDirectory parameter with automatic creation and validation for conversion functions - Support -NoRecalculateBBoxes and -ReorderTables flags for fine-grained control over font table handling during conversion - Implement configurable -MaxThreads parameter defaulting to 75%
futuremotiondev committedFeb 18, 2026 Configuration menu - View commit details
-
Copy full SHA for 47a6da2 - Browse repository at this point
Copy the full SHA 47a6da2View commit details -
✨ [BUILD] Add Prettier configuration and AI agent instructions
- Add .prettierrc with project-wide formatting rules including 250 char print width, 4-space default tab width, double quotes, trailing commas, and auto line endings - Configure per-file-type tab width overrides: 3 spaces for CSS/SCSS/JS/TS, 2 spaces for HTML/SVG, 4 spaces for JSON/YAML/Markdown - Add parser overrides for SVG (html parser) and .prettierrc/.code-workspace files (jsonc parser) - Add CLAUDE.md with comprehensive AI agent instructions for the FMDevToolbox PowerShell module - Document repository structure including main module folder, public/private functions, scripts, wrappers, and build tooling - Define explicit AI agent rules - Document the wrapper system architecture using SingleInstanceAccumulator.exe for Windows Explorer context menu integration - Specify mandatory wrapper format requirements including $FileList parameter, cleanup, and toast notification conventions - Document key public functions (Show-UWPToast, Invoke-FlattenFolders, Rename-Fonts, font conversion utilities) and important internal helpers - More additions
futuremotiondev committedFeb 18, 2026 Configuration menu - View commit details
-
Copy full SHA for b92978d - Browse repository at this point
Copy the full SHA b92978dView commit details -
✨ [FEATURE] Add Git clone utility functions for single and multi-repo
- Add Invoke-GitCloneMulti function supporting batch cloning of multiple Git repositories with both sequential and parallel execution modes - Add Invoke-GitCloneSingle function for cloning individual repositories with custom directory naming options - Implement Internal-ParseGitUrl helper to extract owner and repo name from URLs across multiple Git hosting providers including GitHub, GitLab, Bitbucket, Azure DevOps, Codeberg, SourceHut, Gitea, and Forgejo - Support automatic owner/org prefix for cloned directory names via -AutoUserPrefix switch to avoid naming collisions - Support custom directory naming in single-clone mode via -CustomDirectory parameter with mutual exclusivity validation against -AutoUserPrefix - Enable parallel cloning with configurable thread limits defaulting to 75% of available CPU cores, capped at 8 threads - Pre-create target directories in parallel mode to prevent race conditions when multiple repos resolve to similar paths - Handle duplicate target paths gracefully by generating unique directory names via Internal-GetUniqueFilenameIfDuplicate - Include --recurse-submodules -j8 flags by default with opt-out via -NoRecurseSubmodules switch - Validate output paths for invalid characters and ensure directories are created automatically when they do not exist - Return structured PSCustomObject results with Path, URL, Success, and ErrorMessage properties for downstream pipeline consumption - Support pipeline input for repository URLs enabling integration with other commands that output URL collections - Parse both HTTPS and SSH
futuremotiondev committedFeb 18, 2026 Configuration menu - View commit details
-
Copy full SHA for bbb9633 - Browse repository at this point
Copy the full SHA bbb9633View commit details -
[CHORE]: Reorganized Many Functions into a new directory structure.
futuremotiondev committedFeb 18, 2026 Configuration menu - View commit details
-
Copy full SHA for e39ba92 - Browse repository at this point
Copy the full SHA e39ba92View commit details -
[CHORE] Major Reorganization of Module Structure
- Removed Obsolete PublicOld folder with old functions - Added several Internal functions
futuremotiondev committedFeb 18, 2026 Configuration menu - View commit details
-
Copy full SHA for 0e65b93 - Browse repository at this point
Copy the full SHA 0e65b93View commit details -
⬆️ [CLEANUP] Refactor Get-YoutubeVideosWithYTDlp
- Rewrite Get-YoutubeVideosWithYTDlp to remove hundreds of lines of redundant validation, dead code, and copy-pasted git clone logic that was never adapted for yt-dlp - Remove -CustomYTDLPPath parameter in favor of reading yt-dlp path from $script:FMConfig.Tools.YtDlp configuration - Add proper YouTube URL validation regex pattern (youtube.com, youtu.be, m.youtube.com) in the process block - Implement proper sequential and parallel download paths with consistent [PSCustomObject] output including URL, Success, OutputPath, and ErrorMessage properties - Add clipboard URL retrieval logic in begin block instead of process block for correct pipeline behavior - Constrain -MaxThreads ValidateRange to [1, 10] to prevent aggressive parallel downloads that could trigger rate limiting - Add proper $LASTEXITCODE checking after each yt-dlp invocation with appropriate warning messages - Refactor Get-FoundryToolsFtcli - Updated CLAUDE.md to reflect current coding standards and module structure
futuremotiondev committedFeb 18, 2026 Configuration menu - View commit details
-
Copy full SHA for 994ce9e - Browse repository at this point
Copy the full SHA 994ce9eView commit details
Commits on Feb 22, 2026
-
feat(config): implement dual-object configuration architecture
Replace the monolithic FMDevToolboxConfig class with a two-object system that cleanly separates user-editable preferences from internal module state. This solves the fundamental constraint that PowerShell .psd1 data files cannot contain dynamic expressions ([Math]::Max, [Environment]::ProcessorCount, scriptblocks) because they are parsed in Constrained Language Mode. --- FMDevToolbox.psm1 — Class Definitions --- $script:FMConfig [FMConfig] — User/developer preferences loaded from .psd1: - [FMToolPaths] Tools: 13 external tool executable paths - ImageMagick, ImageMagickIdentify, Inkscape, RsvgConvert, FontForge, YtDlp, ExifTool, Den4bRenamer, Woff2Compress, Woff2Decompress, jsxer, LockHunter (new), NuGet (new) - [FMPythonPaths] Python: venv root and FoundryTools CLI paths - VenvRoot, FoundryToolsCLI, FoundryToolsCLING - [FMCondaConfig] Conda: conda environment name for Demucs $script:FMInternal [FMInternal] — Internal module state built in code: - [FMThreadPresets] Threads: computed from ProcessorCount at module load - Percent25/33/50/65/75, AllButOne, All - Each preset uses [Math]::Max(1, ...) to guarantee minimum of 1 - [FMModulePaths] Paths: computed from $PSScriptRoot at module load - ModuleRoot, AssemblyRoot, ScriptsRoot, FontScripts, AdminScripts - ConfigFile (points to .psd1), UserConfigFile (~/.fmconfig.psd1) - [FMMinVersions] MinVersions: static class-level defaults - Node 24.13.1, Python 3.13.12, Conda 25.11.1, CondaPython 3.13.9, ImageMagick 7.1.2-13 Q16 HDRI, Svgo 4.0.0 - [FMNodePackages] NodePackages: required npm packages as static defaults - otf2svg, @marmooo/ttf2svg, svgo, boxen-cli - [FMModuleFlags] Flags: module behavior toggles as static defaults - DevelopmentMode (controls Internal-* export), CheckNodeDependencies, CheckToolsMinVersion - [FMCondaRuntime] Conda: auto-discovered binary path + activation hook - Binary (string), InjectHook (scriptblock) --- FMDevToolbox.psm1 — Initialization Flow --- 1. Import-PowerShellDataFile → cast to [FMConfig] → $script:FMConfig 2. [FMInternal]::new() → $script:FMInternal (static defaults from classes) 3. Compute Paths.* from $PSScriptRoot using [Path]::Combine() 4. Compute Threads.* from [Environment]::ProcessorCount 5. Load assemblies, dot-source functions, Export-ModuleMember --- FMDevToolbox.psm1 — Removed --- - FMDevToolboxConfig (old monolithic class) - FMDefaultVersionsConfig, FMExternalToolsConfig, FMPythonVenvsConfig, FMPythonScriptsConfig, FMDefaultsConfig (old sub-classes) - FMNodeDependencies class and $script:NodeDependencies variable (replaced by $script:FMInternal.NodePackages) - Loose $script:ModuleRoot, $script:ModuleAssemblyRoot, $script:ModuleScriptsRoot variables (replaced by FMModulePaths) - Write-Host "Importing assembly/function" debug messages during load --- FMDevToolbox.Config.psd1 --- - Restructured sections: Tools (unchanged paths + 2 new), Python (renamed from PythonVenvs, renamed Root→VenvRoot), Conda (new) - Removed: Versions section (now in FMMinVersions class defaults), PythonScripts section (now in FMModulePaths computed paths), Defaults section (MaxThreads→FMThreadPresets, DevelopmentMode and CheckNodeDependencies→FMModuleFlags class defaults) - Added: LockHunter and NuGet tool paths, Conda.DemucsEnv --- Build.ps1 --- - DevelopmentMode now a static $true constant mirroring [FMModuleFlags] default (was dynamically read from .psd1 Defaults section) - Added FMDevToolboxSchemas.dll to RequiredAssemblies list - Added Build-FMSchemasLib function: builds the Src/FMDevToolboxSchemas C# project and copies the DLL to the module Lib folder, with rename-swap strategy to handle locked files - Added -UpdateFMSchemasLib switch to Update-FMModuleManifest --- Docs/Architecture/configuration-system.md (new) --- - Comprehensive design rationale for the dual-object split - Full class hierarchy diagrams for FMConfig and FMInternal - Initialization flow documentation - Recipes for adding user-editable, internal static, and internal computed config properties - Design decision table covering all architectural trade-offsfuturemotiondev committedFeb 22, 2026 Configuration menu - View commit details
-
Copy full SHA for aedae96 - Browse repository at this point
Copy the full SHA aedae96View commit details -
feat(svg): add folder-level SVG-to-PNG conversion and refactor wrappers
Add Convert-SVGFolderToPNGBySize as a directory-oriented orchestrator that enumerates SVG files from folders and delegates conversion to the existing Convert-SVGToPNGBySize. This completes the two-function architecture (Approach A from design doc) where file-level and folder-level workflows are cleanly separated, matching the two distinct Explorer context menu use cases. Convert-SVGToPNGBySize refactoring: - Wire MaxThreads default to $script:FMInternal.Threads.Percent75 instead of hardcoded [Environment]::ProcessorCount - 4 - Wire rsvg-convert tool path to $script:FMConfig.Tools.RsvgConvert instead of bare Get-Command discovery - Add excess thread count warning with PwshSpectreConsole formatted panel when MaxThreads exceeds processor count - Replace [string[]] accumulator with [List[String]] for O(1) appends - Add using namespace System.Collections.Generic - Use [Path] and [Directory] short names via existing using namespace - Add -ErrorAction Continue + continue to parallel block error handling so one failed conversion does not abort the entire batch - Clone $Using: rsvg-convert path in parallel block to avoid serialization issues Convert-SVGFolderToPNGBySize (new): - Accepts directory paths via -LiteralPath (mandatory, pipeline, Position 0) - Supports -Recurse and -Depth for subdirectory traversal - Without -OutputFolder, creates per-directory "PNG Conversion" subfolder with recursive SVGs flattened into the top-level folder - With -OutputFolder, routes all PNGs to a single destination - Validates -Depth requires -Recurse, emitting Write-Error otherwise - Skips non-directory inputs with Write-Warning guiding user to the file-level function - Uses [List[String]] for directory accumulation, [Path]::Combine for path joining, and splatting for delegation Image-01-ConvertSVGToPNGBySize wrapper (new): - Reads SVG paths from SingleInstanceAccumulator temp file - Supports -OutputSizes and -GetSizesFromDialog (Ookii input dialog) with mutual exclusion validation - OutputFolder path validation with UWP toast error reporting - Cleans up temp file on both success and error paths Image-01-ConvertSVGToPNGBySizeInFolder wrapper (new, replaces broken): - Previous version referenced undefined $Folders variable and nonexistent -Files/-Sizes parameters - Reads folder paths from SingleInstanceAccumulator temp file - Same size-input UX as file wrapper (OutputSizes / GetSizesFromDialog) - Passes -Recurse through to Convert-SVGFolderToPNGBySize - Structured error handling with UWP toast notifications Design rationale documented in: - Docs/Plans/2026-02-22-svg-folder-to-png-design.md - Docs/Plans/2026-02-22-svg-folder-to-png-plan.md
futuremotiondev committedFeb 22, 2026 Configuration menu - View commit details
-
Copy full SHA for 00a407c - Browse repository at this point
Copy the full SHA 00a407cView commit details -
refactor(font): replace legacy venv helpers with Initialize-FoundryTo…
…olsCli Consolidate Activate-FoundryToolsCLI and Get-FoundryToolsFtcli into a single Initialize-FoundryToolsCli function that handles venv activation, deactivation, path validation, and returns a typed [FoundryToolsResult]. - Add Initialize-FoundryToolsCli with -Version (Stable/New), -Activate, -Deactivate switches and comprehensive path validation - Delete Activate-FoundryToolsCLI.ps1 (superseded) - Delete Get-FoundryToolsFtcli.ps1 (superseded) - Update Convert-FontToWoff to use Initialize-FoundryToolsCli for venv lifecycle and $script:FMInternal.Threads.Percent75 for thread defaults - Update Convert-WoffToFont to use Initialize-FoundryToolsCli for venv lifecycle and $script:FMInternal.Threads.Percent75 for thread defaults - Update Rename-Fonts to use Initialize-FoundryToolsCli, wire config threads, add HelpMessage on all parameters - Remove manual deactivate pattern (Get-Command deactivate + & deactivate) from all three dependent functions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 3380c6d - Browse repository at this point
Copy the full SHA 3380c6dView commit details -
refactor(font): rewrite Convert-FontGlyphsToSVGs and Move-FontFamilie…
…sToSubfolders Complete rewrite of both font processing functions with config system wiring, bug fixes, and convention alignment. Convert-FontGlyphsToSVGs: - Move from PublicOld/ to Public/Font/ with full rewrite - Fix undefined $currentItem variable (was referencing wrong scope) - Fix $curFont = $_ overwriting foreach variable with null in parallel - Fix -Include with -LiteralPath (silently fails; use Where-Object) - Fix Initialize-FoundryToolsCli -Deactivate missing mandatory -Version - Wire to $script:FMConfig.Tools.FontForge for FontForge path - Wire to $script:FMInternal.Threads.Percent75 for thread defaults - Add [PSCustomObject] output with SourcePath/OutputPath/Successful pattern - Add case-insensitive HashSet for deduplication, $LASTEXITCODE checks Move-FontFamiliesToSubfolders: - Replace deleted Activate-FoundryToolsCLI with Initialize-FoundryToolsCli - Replace $env:FM_PY_FONT_SCRIPTS with $script:FMInternal.Paths.FontScripts - Fix Internal-GetUniqueFilenameIfDuplicate called inside parallel block (module functions not accessible in parallel runspaces) - Restructure to two-phase: parallel family name lookup, sequential moves - Use $ftResult.VenvPythonBinary instead of hardcoded & python - Wire to $script:FMInternal.Threads.Percent75 for thread defaults - Add [PSCustomObject] output with FamilyName property Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 187d672 - Browse repository at this point
Copy the full SHA 187d672View commit details -
refactor(svg): rewrite all SVG functions with config wiring and bug f…
…ixes Complete rewrite of four SVG functions with dual-object config system wiring, bug fixes, and coding convention alignment. Convert-CropSVGWithInkscape (new): - Wire to $script:FMConfig.Tools.Inkscape for tool path - Fix [List[Object]] to [List[String]] for type safety - Fix double Get-Item calls with [Path]::* static methods - Fix string interpolation paths with [Path]::Combine() - Fix Write-Error + return for mutually exclusive params (use throw) - Add using namespace declarations, [ValidateNotNullOrEmpty()] Convert-SVGColor: - Wire $MaxThreads to $script:FMInternal.Threads.Percent75 - Fix O(n²) array concatenation (+=) with [HashSet[String]] and [List[String]] collections - Fix directories silently dropped without -Recurse (now always expanded) - Add $skipProcessing flag pattern for early-exit from begin block - Rename helper functions from Internal-* to Local-* to avoid confusion Convert-SVGToICO: - Wire tools to $script:FMConfig.Tools.RsvgConvert and .ImageMagick - Wire $MaxThreads to $script:FMInternal.Threads.Percent75 - Fix ContainsKey('OutputInSubfolder') to .IsPresent (ContainsKey returns true even with -Switch:$false) - Replace [string[]] arrays with [List[String]], Join-Path with [Path]::Combine(), New-Item with [Directory]::CreateDirectory() - Remove Get-Item calls inside parallel blocks Optimize-SVGWithSVGO: - Fix dead config: [FMNodeDependencies] $nodeDeps = $script:NodeDependencies replaced with $script:FMInternal.NodePackages.Svgo - Fix Get-Command svgo.cmd re-resolved in each parallel runspace (now resolved once, passed via $Using:) - Wire $MaxThreads to $script:FMInternal.Threads.Percent75 - Fix $svgo variable naming to $cmdSvgo per $cmd* convention - Remove misleading [OutputType([PSCustomObject])] (no objects returned) - Replace Internal-NewLog with Write-Warning - Add $LASTEXITCODE checks after every SVGO call Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>Configuration menu - View commit details
-
Copy full SHA for 98a5c92 - Browse repository at this point
Copy the full SHA 98a5c92View commit details -
fix(internal): fix broken config reference disabling all node depende…
…ncy checks Internal-AssertNodeDependency referenced $script:FMConfig.Defaults.CheckNodeDependencies which does not exist (FMConfig has no Defaults property). This caused the guard to always return early ($null is falsy), silently disabling ALL node dependency validation for every caller (e.g. Optimize-SVGWithSVGO). - Fix config reference to $script:FMInternal.Flags.CheckNodeDependencies - Replace O(n²) array concatenation ($missingPackages += $pkg) with [List[String]] and .Add() - Add [ValidateNotNullOrEmpty()] and HelpMessage to $Package parameter - Extract $cmdNpmSrc from command object for consistent $cmd* naming - Remove ASCII line art from comments per coding conventions - Add using namespace System.Collections.Generic Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 4d5ef17 - Browse repository at this point
Copy the full SHA 4d5ef17View commit details -
chore: update module manifest, CLAUDE.md, and supporting files
- Update CLAUDE.md configuration docs to reflect dual-object architecture ($script:FMConfig + $script:FMInternal) with correct property paths - Update Internal-AssertNodeDependency usage example in CLAUDE.md - Add Architecture Documentation section linking to Docs/Architecture/ - Update FMDevToolbox.psd1 manifest: add Initialize-FoundryToolsCli, Convert-FontGlyphsToSVGs, Convert-SVGFolderToPNGBySize, Reset-WindowsFileAssociation; remove deleted Activate-FoundryToolsCLI and Get-FoundryToolsFtcli - Add FMDevToolboxSchemas.dll to RequiredAssemblies - Migrate Reset-WindowsFileAssociation from PublicOld/ to Public/Windows/ with formatting cleanup Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 6e3ca54 - Browse repository at this point
Copy the full SHA 6e3ca54View commit details
Commits on Mar 9, 2026
-
Here's the breakdown of the commits created from the provided changes, along with explanations for each: Commit 1: feat: add FMDevToolboxSchemas C# project with FoundryTools types Introduces a new .NET 9.0 class library containing typed error codes and a result class for FoundryTools CLI virtual environment initialization. The FoundryToolsError enum covers all validation and activation failure scenarios, while the sealed FoundryToolsResult class provides structured path resolution with an AddError helper for downstream self-healing logic. The built DLL is copied to the module's Lib/ directory and wired into RequiredAssemblies so types are available at module import. This commit creates the entire FMDevToolboxSchemas C# project from scratch. It includes the .csproj file targeting net9.0, the FoundryToolsError enum with 8 error codes (VenvRootMissing, VenvFolderMissing, VenvScriptsDirMissing, ActivationScriptMissing, FtcliExeMissing, PythonBinaryMissing, PipBinaryMissing, ActivationFailed), and the FoundryToolsResult sealed class with properties for all resolved venv paths, success status, error collections, and an AddError helper method. It also includes all build artifacts (bin/Release, obj/ directories with generated assembly info, NuGet restore files, etc.) and the compiled DLL/PDB/XML documentation outputs. This is the foundational type system that the Initialize-FoundryToolsCli PowerShell function will consume. Commit 2: feat: update module manifest with new DLL and exported functions Adds FMDevToolboxSchemas.dll to RequiredAssemblies so the C# types are loaded at module import time. Updates FunctionsToExport to include newly added functions like Initialize-FoundryToolsCli, Convert-CropSVGWithInkscape, Convert-SVGFolderToPNGBySize, Show-AllSystemTrayIcons, and several renamed internal helpers. Also removes functions that were renamed or consolidated. This commit updates the FMDevToolbox.psd1 module manifest in three hunks: (1) updates the generated date, (2) adds FMDevToolboxSchemas.dll to RequiredAssemblies alongside the existing Ookii and UWP notification DLLs with minor whitespace cleanup, and (3) significantly updates FunctionsToExport to reflect all the new and renamed functions. Notable additions include Initialize-FoundryToolsCli, Convert-CropSVGWithInkscape, Convert-SVGFolderToPNGBySize, Show-AllSystemTrayIcons, Local-ExpandHexColor, and Local-ValidatePathString. Some functions were removed from the export list (Get-UniqueSubfolderPath, Internal-ExpandHexColor, Internal-ValidatePathString) as they appear to have been renamed. Commit 3: refactor: rename PlaceInSubfolder to OutputInSubfolder in SVGO function Renames the -PlaceInSubfolder parameter to -OutputInSubfolder for clearer semantics — the parameter controls where output goes, not where files are placed. Also adds enhanced verbose/debug logging to the parallel processing path to aid troubleshooting SVGO execution issues. This commit modifies Optimize-SVGWithSVGO.ps1 across six hunks. The first four hunks (14-18) are a straightforward rename of the -PlaceInSubfolder switch parameter to -OutputInSubfolder throughout the function — in the description, parameter help, parameter declaration, and both usage sites in the folder processing and file grouping logic. The sixth hunk (19) adds significant debugging instrumentation to the parallel processing block: it sets VerbosePreference and DebugPreference to Continue, adds pre-execution logging that lists all folders about to be processed, and within the parallel block adds detailed logging of the SVGO path, parameters, and execution status. It also pipes SVGO output to Out-Host for visibility in parallel contexts. Commit 4: feat: add Show-AllSystemTrayIcons Windows utility Promotes all hidden system tray icons to visible by setting the IsPromoted registry value under NotifyIconSettings. Returns a structured object with counts of promoted and already-visible icons for downstream consumption. This commit adds a new PowerShell function Show-AllSystemTrayIcons.ps1 in the Public/Windows directory. The function reads HKCU:\Control Panel\NotifyIconSettings, iterates all subkeys, checks the IsPromoted DWORD value, and sets it to 1 for any icons not already promoted. It returns a PSCustomObject with TotalEntries, Promoted, and Skipped counts. The function uses proper CmdletBinding, OutputType, verbose logging for each key processed, and graceful handling of the registry path not existing. Commit 5: feat: add wrapper scripts for new module functions Adds context menu wrapper scripts for system tray icon promotion, VS Code workspace file creation, SVG-to-ICO conversion, and SVGO optimization. These follow the SingleInstanceAccumulator pattern with toast notifications for user feedback. This commit adds four new wrapper scripts in FMDevToolbox.Wrappers/: (1) Admin-02-RefreshSystemTray.ps1 which calls Show-AllSystemTrayIcons with commented-out toast notifications, (2) Dev-02-CreateCodeWorkspaceFile.ps1 which copies a .code-workspace template to a destination with unique filename handling, (3) Image-02-ConvertSVGToICO.ps1 which wraps Optimize-SVGWithSVGO with PlaceInSubfolder support and toast notifications (appears to be mislabeled as ICO but actually calls SVGO), and (4) Image-02-OptimizeSVGsWithSVGO.ps1 which is the correctly named SVGO wrapper using the new OutputInSubfolder parameter name. Both SVGO wrappers follow the standard pattern of reading from FileList, executing with error handling, cleaning up the temp file, and showing toast notifications. Commit 6: feat: add working/scratch files for PSStyle testing Adds experimental PSStyle color palette definitions and an empty Show-AsciiBox placeholder for terminal output experimentation. This commit adds two files to the FMDevToolbox/Working/ directory which appears to be a scratch/experimentation area. PSStyleTesting.ps1 defines a comprehensive color palette using $PSStyle.Foreground.FromRgb() with named variables for greens, whites, grays (100-900), reds (4 variants), and blues (5 variants), plus a formatted system info display string. Show-AsciiBox.ps1 is an empty placeholder file (just a BOM). These are development/experimentation files not exported by the module. Commit 7: docs: add design and implementation plans Adds design documents and step-by-step implementation plans for Initialize-FoundryToolsCli (venv path resolution with typed errors) and Convert-SVGFolderToPNGBySize (directory-oriented SVG-to-PNG conversion). Also adds a comprehensive codebase analysis and development roadmap covering module identity, PSGallery readiness, 25+ new function proposals, and architecture recommendations. This commit adds five documentation files: (1) The Initialize-FoundryToolsCli design doc covering decisions on function naming, C# type system, error model, and validation flow. (2) The detailed implementation plan with 9 tasks covering framework targeting, C# types, DLL building, manifest wiring, PowerShell function creation, and Pester tests. (3) The SVG folder-to-PNG design doc explaining the two-function approach decision over unified or helper patterns. (4) The SVG folder-to-PNG implementation plan with 3 tasks covering the orchestrator function, wrapper rewrite, and verification. (5) A comprehensive 788-line codebase analysis and roadmap document covering executive summary, domain analysis of all 50+ functions, external tool ecosystem (13 tools, 5 unused), wrapper system issues, strategic vision, PSGallery readiness roadmap, 20+ new function proposals ranked by priority, architecture recommendations, and competitive landscape analysis. Commit 8: chore: add Claude local settings Configures allowed permissions for the Claude AI assistant, specifically enabling dotnet restore commands for the project. This commit adds the .claude/settings.local.json file which configures local permissions for the Claude AI coding assistant. It allows the Bash command 'dotnet restore' with any arguments, which is needed for building the FMDevToolboxSchemas C# project during development.[TAG]: Description
futuremotiondev committedMar 9, 2026 Configuration menu - View commit details
-
Copy full SHA for ff8efcb - Browse repository at this point
Copy the full SHA ff8efcbView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main...dev