From cf074d34110f74d861da7364423dd254dbd25906 Mon Sep 17 00:00:00 2001 From: Kayvan Sylvan Date: Mon, 14 Jul 2025 15:12:57 -0700 Subject: [PATCH] feat: enhance changelog generation with incremental caching and improved AI summarization ## CHANGES - Add incremental processing for new Git tags since cache - Implement `WalkHistorySinceTag` method for efficient history traversal - Cache new versions and commits after AI processing - Update AI summarization prompt for better release note formatting - Remove conventional commit prefix stripping from commit messages - Add custom patterns directory support to plugin registry - Generate unique patterns file including custom directory patterns - Improve session string formatting with switch statement --- CHANGELOG.md | 443 +++++++++--------- cmd/generate_changelog/changelog.db | Bin 2322432 -> 2342912 bytes .../internal/changelog/generator.go | 57 ++- .../internal/changelog/summarize.go | 44 +- cmd/generate_changelog/internal/git/walker.go | 92 ++++ internal/core/plugin_registry.go | 13 + internal/plugins/db/fsdb/sessions.go | 5 +- internal/tools/patterns_loader.go | 62 +++ 8 files changed, 463 insertions(+), 253 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index efda4e7a..27a8dca9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,24 @@ # Changelog -## v1.4.246 (2025-07-13) +## Unreleased -### PR [#1603](https://github.com/danielmiessler/Fabric/pull/1611) by [ksylvan](https://github.com/ksylvan): Changelog Generator: AI-Powered Automation for Fabric Project +### Direct commits + +- Update README for GraphQL optimization and AI summary features +- Detail GraphQL API usage for faster PR fetching +- Introduce AI-powered summaries via Fabric integration +- Document support for loading secrets from .env files +- Clarify project license is The MIT License + +## v1.4.246 (2025-07-14) + +### PR [#1611](https://github.com/danielmiessler/Fabric/pull/1611) by [ksylvan](https://github.com/ksylvan): Changelog Generator: AI-Powered Automation for Fabric Project - Add AI-powered changelog generation with high-performance Go tool and comprehensive caching -- Add high-performance Go changelog generator with GraphQL integration -- Implement SQLite-based persistent caching for incremental updates -- Create one-pass git history walking algorithm with concurrent processing -- Add comprehensive CLI with cobra framework and tag-based caching +- Implement SQLite-based persistent caching for incremental updates with one-pass git history walking +- Create comprehensive CLI with cobra framework and tag-based caching optimization +- Integrate AI summarization using Fabric CLI with batch PR fetching via GitHub Search API +- Add extensive documentation, VSCode configuration, and commit-PR mapping for enhanced performance ## v1.4.245 (2025-07-11) @@ -18,7 +28,7 @@ - Add `DirectlyGetModels` function to handle non-standard API responses - Implement fallback to direct model fetching when standard method fails - Enhance error messages in OpenAI compatible models endpoint with response body details -- Add context support to DirectlyGetModels method +- Extract model ID parsing logic into reusable helper function ### PR [#1599](https://github.com/danielmiessler/Fabric/pull/1599) by [ksylvan](https://github.com/ksylvan): Update file paths to reflect new data directory structure @@ -36,10 +46,10 @@ ### PR [#1598](https://github.com/danielmiessler/Fabric/pull/1598) by [jaredmontoya](https://github.com/jaredmontoya): flake: fixes and enhancements -- Updated Nix package to use self reference for better dependency management -- Renamed shell command for improved clarity -- Fixed generation path in update-mod functionality -- Corrected typo in shell configuration +- Nix:pkgs:fabric: use self reference +- Shell: rename command +- Update-mod: fix generation path +- Shell: fix typo ## v1.4.243 (2025-07-09) @@ -70,25 +80,25 @@ ### PR [#1595](https://github.com/danielmiessler/Fabric/pull/1595) by [ksylvan](https://github.com/ksylvan): Restructure project to align with standard Go layout -- Restructured project to follow standard Go layout with `cmd` directory for binaries -- Moved all Go packages into `internal` directory and renamed `restapi` to `server` -- Consolidated patterns/strategies into `data` directory and scripts into `scripts` directory +- Restructured project to standard Go layout with `cmd` directory for binaries +- Moved Go packages to `internal` directory and renamed `restapi` to `server` +- Consolidated patterns/strategies into `data` directory and scripts into `scripts` - Updated all import paths and CI/CD workflows for new structure - Added new patterns for content tagging and cognitive bias analysis ### PR [#1594](https://github.com/danielmiessler/Fabric/pull/1594) by [amancioandre](https://github.com/amancioandre): Adds check Dunning-Kruger Telos self-evaluation pattern -- Added pattern for Dunning-Kruger cognitive bias evaluation +- Added pattern for Dunning-Kruger cognitive bias detection and self-evaluation ## v1.4.240 (2025-07-07) ### PR [#1593](https://github.com/danielmiessler/Fabric/pull/1593) by [ksylvan](https://github.com/ksylvan): Refactor: Generalize OAuth flow for improved token handling -- Replace hardcoded "claude" with configurable `authTokenIdentifier` parameter for better flexibility -- Update `RunOAuthFlow`, `RefreshToken`, and `exchangeToken` functions to accept token identifier parameter -- Add token refresh attempt before full OAuth flow and improve existing token validation -- Create comprehensive OAuth testing suite with 434 lines coverage including mock token server -- Implement PKCE generation, token expiration logic, and performance benchmark tests +- Replace hardcoded "claude" with configurable `authTokenIdentifier` parameter across OAuth functions +- Update `RunOAuthFlow`, `RefreshToken`, and `exchangeToken` to accept token identifier parameter +- Add token refresh attempt before full OAuth flow with existing token validation +- Add comprehensive OAuth testing suite with 434 lines coverage including mock server and PKCE tests +- Implement performance benchmarks and error path testing scenarios ## v1.4.239 (2025-07-07) @@ -96,8 +106,8 @@ - Improve error handling in streaming chat functionality with dedicated error channel - Add proper goroutine synchronization using `done` channel for completion tracking -- Rename variables (`channel` to `responseChan`, `doneChan` to `done`) for better clarity -- Implement comprehensive testing with mock vendor for error propagation validation +- Rename channels (`channel` to `responseChan`, `doneChan` to `done`) for better clarity +- Implement comprehensive testing with mockVendor for error propagation validation - Streamline response aggregation and ensure proper resource cleanup in streaming operations ## v1.4.238 (2025-07-07) @@ -181,7 +191,7 @@ - Implement automatic OAuth token refresh and persistent storage for seamless authentication - Support both API key and OAuth authentication methods with fallback re-authentication - Extract OAuth functionality to separate module for cleaner code organization -- Standardize all API calls to use v2 endpoint and simplify base URL configuration +- Standardize all API calls to use v2 endpoint and simplify client configuration ## v1.4.230 (2025-07-05) @@ -201,7 +211,7 @@ - Add model field to `BuildChatOptions` method for proper CLI flag mapping - Extract supported models list to shared constant `ImageGenerationSupportedModels` for reusability - Implement validation in `sendResponses` to ensure model supports image generation -- Add comprehensive tests for model validation logic in `TestModelValidationLogic` +- Add comprehensive tests for model validation logic and consolidate duplicate validation code ## v1.4.228 (2025-07-05) @@ -239,19 +249,19 @@ - Add web search tool support for OpenAI models with citation formatting - Enable web search tool for OpenAI models with location parameter support -- Extract and format citations from search responses with deduplication -- Implement comprehensive test coverage for search functionality -- Update CLI flag description and README with new web search feature details +- Extract and format citations from search responses as markdown links +- Implement citation deduplication to avoid duplicates +- Add comprehensive test coverage for search functionality ## v1.4.225 (2025-07-04) ### PR [#1568](https://github.com/danielmiessler/Fabric/pull/1568) by [ksylvan](https://github.com/ksylvan): Runtime Web Search Control via Command-Line Flag - Add web search tool support for Anthropic models with --search flag -- Add --search-location for timezone-based results through ChatOptions struct +- Add --search-location for timezone-based results via ChatOptions struct - Implement web search tool in Anthropic client with formatted citations - Add comprehensive tests and remove plugin-level web search configuration -- Extract web search tool constants and optimize string building with sources header +- Extract web search tool constants and optimize string building with sources ### Direct commits @@ -264,11 +274,11 @@ ### PR [#1564](https://github.com/danielmiessler/Fabric/pull/1564) by [ksylvan](https://github.com/ksylvan): Add code_review pattern and updates in Pattern_Descriptions -- Add comprehensive code review pattern with systematic analysis framework and principal engineer reviewer role -- Add new patterns: `review_code`, `extract_alpha`, and `extract_mcp_servers` for enhanced functionality -- Refactor pattern extraction script with improved error handling and docstrings for better clarity -- Add JSONDecodeError handling in `load_existing_file` with graceful fallback to empty list -- Fix typo in `analyze_bill_short` pattern description and improve formatting in pattern management README +- Add comprehensive code review pattern with systematic analysis framework +- Add new patterns: `review_code`, `extract_alpha`, and `extract_mcp_servers` +- Define principal engineer reviewer role with markdown output format +- Include security, performance, and readability coverage with error handling guidelines +- Improve pattern extraction script with docstrings and JSONDecodeError handling ## v1.4.223 (2025-07-01) @@ -282,17 +292,16 @@ ### PR [#1559](https://github.com/danielmiessler/Fabric/pull/1559) by [ksylvan](https://github.com/ksylvan): OpenAI Plugin Migrates to New Responses API -- Migrate OpenAI plugin to use new responses API instead of chat completions -- Add chat completions API fallback for non-Responses API providers -- Implement `sendChatCompletions` and `sendStreamChatCompletions` methods -- Add `ImplementsResponses` flag to track provider API capabilities -- Extract common message conversion logic to reduce duplication +- Migrate OpenAI plugin from chat completions to new responses API with fallback support +- Add multi-content message support for text and image URLs in user messages +- Implement streaming event handling and remove deprecated frequency/presence penalty parameters +- Extract common message conversion logic to reduce code duplication between APIs +- Improve error handling with deferred channel closing to prevent potential leaks ### Direct commits -- Updated alpha post -- Updated extract alpha -- Added extract_alpha as kind of an experiment +- Updated alpha post and extract alpha functionality +- Added extract_alpha as experimental feature ## v1.4.221 (2025-06-28) @@ -359,10 +368,10 @@ Co-Authored-By: Claude ### PR [#1545](https://github.com/danielmiessler/Fabric/pull/1545) by [ksylvan](https://github.com/ksylvan): Update Message Handling for Attachments and Multi-Modal content - Allow combining user messages and attachments with patterns -- Refactor chat request builder for improved clarity and enhanced dryrun client to display multi-content user messages -- Handle multi-content messages for user role and display image URLs from user messages in output -- Fix duplicate user message issue when applying patterns and ensure multi-part content is always included in session -- Extract message and option formatting logic into reusable methods to reduce code duplication and improve maintainability +- Refactor chat request builder for improved clarity and multi-content support +- Enhance dryrun client to display multi-content user messages and image URLs +- Fix duplicate user message issue when applying patterns +- Extract message and option formatting logic into reusable methods for better maintainability ## v1.4.215 (2025-06-25) @@ -379,9 +388,9 @@ Co-Authored-By: Claude - Refactor ProviderMap for dynamic URL template handling with environment variables - Add new patterns: `analyze_terraform_plan`, `write_essay_by_author`, `summarize_board_meeting`, `create_mnemonic_phrases` -- Rename `write_essay` to `write_essay_pg` for Paul Graham style specificity -- Update pattern metadata files with tags and descriptions for new analytical patterns -- Sort pattern explanations alphabetically and clean up duplicate entries +- Rename `write_essay` to `write_essay_pg` for Paul Graham style and `write_essay_by_author` to `write_essay` +- Update pattern metadata files with tags and descriptions for new creative/analytical patterns +- Sort pattern explanations alphabetically and fix duplicate entries ## v1.4.213 (2025-06-23) @@ -390,8 +399,8 @@ Co-Authored-By: Claude - Updated hasAWSCredentials to check for AWS_DEFAULT_REGION when access keys are configured - Fixed bedrock region handling with correct pointer reference and region value setting - Refactored Bedrock client with improved error handling and ai.Vendor interface compliance -- Added AWS region validation logic and enhanced resource cleanup in SendStream -- Improved code documentation and added user agent constants with proper context usage +- Enhanced AWS region validation logic and resource cleanup in SendStream +- Added nil checks for response parsing and updated context usage to Background() ## v1.4.212 (2025-06-23) @@ -401,14 +410,14 @@ Co-Authored-By: Claude - Add `os` and `strings` packages to imports for template processing - Implement dynamic URL handling using environment variables or default values - Reorder providers for consistent key order in ProviderMap -- Extract and parse template variables from BaseURL +- Extract and parse template variables from BaseURL configurations ### Direct commits - Refactor Bedrock client with improved error handling and interface compliance - Add AWS region validation logic and fix resource cleanup in SendStream - Enhanced code documentation and user agent constants -- Fixed Bedrock region handling with proper pointer reference resolution +- Fixed Bedrock region handling with proper pointer references - Updated paper analyzer functionality ## v1.4.211 (2025-06-19) @@ -416,10 +425,10 @@ Co-Authored-By: Claude ### PR [#1533](https://github.com/danielmiessler/Fabric/pull/1533) by [ksylvan](https://github.com/ksylvan): REST API and Web UI Now Support Dynamic Pattern Variables - Add pattern variables support to REST API chat endpoint with Variables field in PromptRequest struct -- Add pattern variables UI in web interface with JSON textarea for variable input -- Add `ApplyPattern` route for applying patterns with variables via POST /patterns/:name/apply -- Refactor ChatService to clean up message stream and pattern output methods -- Remove unnecessary raycast scripts directory from patterns/ folder +- Add pattern variables UI in web interface with JSON textarea for variable input and dedicated store +- Create `ApplyPattern` route for POST /patterns/:name/apply with `PatternApplyRequest` struct +- Refactor pattern operations to use `StorageHandler` and merge query parameters with request body variables +- Clean up message stream processing and pattern output methods for improved readability ### Direct commits @@ -496,7 +505,7 @@ Co-Authored-By: Claude ### Direct commits - Updated markdown sanitizer -- Updated markdown cleaner +- Updated markdown cleaner (multiple updates) ## v1.4.204 (2025-06-15) @@ -515,7 +524,7 @@ Co-Authored-By: Claude ### PR [#1513](https://github.com/danielmiessler/Fabric/pull/1513) by [marcas756](https://github.com/marcas756): feat: create mnemonic phrase pattern -- Create mnemonic phrase pattern for generating phrases from diceware words +- Create new pattern for generating mnemonic phrases from diceware words - Add markdown files with user guide and system implementation details ### PR [#1516](https://github.com/danielmiessler/Fabric/pull/1516) by [ksylvan](https://github.com/ksylvan): Fix REST API pattern creation @@ -529,7 +538,7 @@ Co-Authored-By: Claude ### PR [#1510](https://github.com/danielmiessler/Fabric/pull/1510) by [ksylvan](https://github.com/ksylvan): Cross-Platform fix for Youtube Transcript extraction - Replace hardcoded `/tmp` with `os.TempDir()` for cross-platform compatibility -- Use `filepath.Join()` instead of string concatenation for proper path handling +- Use `filepath.Join()` instead of string concatenation for path handling - Remove Unix `find` command dependency completely - Add new `findVTTFiles()` method using `filepath.Walk()` for Windows support - Improve error handling for file operations while maintaining backward compatibility @@ -539,7 +548,7 @@ Co-Authored-By: Claude ### PR [#1503](https://github.com/danielmiessler/Fabric/pull/1503) by [dependabot[bot]](https://github.com/apps/dependabot): chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /web in the npm_and_yarn group across 1 directory - Updated brace-expansion dependency from 1.1.11 to 1.1.12 in /web directory -- Indirect dependency update in npm_and_yarn group +- Automated dependency update in npm_and_yarn group ### PR [#1508](https://github.com/danielmiessler/Fabric/pull/1508) by [ksylvan](https://github.com/ksylvan): feat: cleanup after `yt-dlp` addition @@ -553,9 +562,9 @@ Co-Authored-By: Claude - Replace web scraping with yt-dlp for YouTube transcript extraction - Remove unreliable YouTube API scraping methods -- Add yt-dlp integration for transcript extraction -- Implement VTT subtitle parsing functionality -- Add timestamp preservation for transcripts +- Add VTT subtitle parsing functionality +- Implement timestamp preservation for transcripts +- Support multiple subtitle format fallbacks ## v1.4.199 (2025-06-11) @@ -570,7 +579,8 @@ Co-Authored-By: Claude - Added configurable HTTP timeout for Ollama client - Introduced new setup question to configure timeout duration for Ollama requests - Set default timeout value to 20 minutes -- Improved request handling reliability for Ollama integration +- Improved client reliability for long-running requests +- Enhanced user control over connection timeout settings ## v1.4.197 (2025-06-11) @@ -581,17 +591,17 @@ Co-Authored-By: Claude ### PR [#1499](https://github.com/danielmiessler/Fabric/pull/1499) by [noamsiegel](https://github.com/noamsiegel): feat: Enhance the PRD Generator's identity and purpose -- Enhanced PRD Generator identity and purpose for better clarity -- Added structured output format with Markdown, sections, and bullet points -- Defined key PRD sections: Overview, Objectives, Features, User Stories, Requirements -- Improved instructions for highlighting priorities and MVP features +- Enhanced PRD Generator identity and purpose definition +- Added structured sections: Overview, Objectives, Target Audience, Features, User Stories +- Improved output format with Markdown, labeled sections, bullet points, tables +- Added priority highlighting and MVP feature identification ### PR [#1497](https://github.com/danielmiessler/Fabric/pull/1497) by [ksylvan](https://github.com/ksylvan): feat: add Terraform plan analyzer pattern for infrastructure changes - Added Terraform plan analyzer pattern for infrastructure change assessment - Included security, cost, and compliance focus areas -- Created structured output with summaries, critical changes, and key takeaways -- Required numbered lists and specific word limits for sections +- Added three output sections with specific formatting requirements +- Specified 20-word summary and 10 critical changes with word limits ### Direct commits @@ -606,7 +616,7 @@ Co-Authored-By: Claude - Set AIML base URL to api.aimlapi.com/v1 - Expand supported OpenAI compatible providers list - Enable AIML API integration support -- Added simpler paper analyzer with updated output +- Added simpler paper analyzer ## v1.4.195 (2025-05-24) @@ -634,9 +644,9 @@ Co-Authored-By: Claude - Reorganize web documentation and add installation scripts - Update all package dependencies to latest versions -- Add PDF-to-Markdown installation steps to README -- Move legacy documentation files to web/legacy/ - Add convenience scripts for npm and pnpm installation +- Move legacy documentation files to web/legacy/ +- Add PDF-to-Markdown installation steps to README ### PR [#1481](https://github.com/danielmiessler/Fabric/pull/1481) by [skibum1869](https://github.com/skibum1869): Add board meeting summary pattern template @@ -647,20 +657,18 @@ Co-Authored-By: Claude ### Direct commits - Add centralized environment configuration for Fabric base URL -- Create getFabricBaseUrl() function with server/client support +- Create environment config module with getFabricBaseUrl() function - Configure Vite to inject FABRIC_BASE_URL client-side -- Support FABRIC_BASE_URL env var with fallback -- Add TypeScript definitions for window config ## v1.4.192 (2025-05-23) ### PR [#1480](https://github.com/danielmiessler/Fabric/pull/1480) by [ksylvan](https://github.com/ksylvan): Automatic setting of "raw mode" for some models - Add NeedsRawMode method to AI vendor interface for automatic raw mode detection -- Implement NeedsRawMode in all AI clients with model-specific detection logic +- Implement NeedsRawMode in all AI clients with model-specific logic - Enable automatic raw mode for Ollama llama2/llama3 models and OpenAI o1/o3/o4 models -- Auto-enable raw mode when vendor requires it based on model configuration -- Import strings package for prefix matching functionality +- Auto-enable raw mode when vendor requires it based on model detection +- Support future raw mode requirements through vendor interface extension ## v1.4.191 (2025-05-22) @@ -676,11 +684,11 @@ Co-Authored-By: Claude ### PR [#1475](https://github.com/danielmiessler/Fabric/pull/1475) by [ksylvan](https://github.com/ksylvan): refactor: improve raw mode handling in BuildSession -- Improved raw mode handling in BuildSession with better system message processing -- Fixed duplicate inputs when using patterns in raw mode -- Added conditional logic to distinguish between pattern and non-pattern scenarios -- Simplified message construction with clearer variable names -- Enhanced code comments for better readability +- Improved raw mode handling in BuildSession for better pattern processing +- Fixed system message handling with patterns in raw mode to prevent conflicts +- Prevented duplicate inputs when using patterns through conditional logic +- Added clearer variable names and improved code comments for better readability +- Simplified message construction with enhanced pattern vs non-pattern scenario handling ## v1.4.189 (2025-05-19) @@ -712,7 +720,7 @@ Co-Authored-By: Claude - Consolidated repetitive sentences and enhanced text coherence - Adjusted bullet points and numbering for consistency - Enhanced visual distinction of key concepts -- Ensured clear articulation of important information +- Ensured clearer articulation of main ideas ### Direct commits @@ -739,7 +747,7 @@ Co-Authored-By: Claude ### PR [#1453](https://github.com/danielmiessler/Fabric/pull/1453) by [ksylvan](https://github.com/ksylvan): Fix for default model setting - Introduce `getSortedGroupsItems` for consistent sorting logic -- Add centralized sorting method for groups and items (alphabetical, case-insensitive) +- Add centralized sorting method for groups and items alphabetically, case-insensitive - Replace inline sorting in `Print` with new method - Update `GetGroupAndItemByItemNumber` to use sorted data - Ensure original `GroupsItems` remains unmodified @@ -748,7 +756,7 @@ Co-Authored-By: Claude ### PR [#1447](https://github.com/danielmiessler/Fabric/pull/1447) by [ksylvan](https://github.com/ksylvan): More shell completion scripts: Zsh, Bash, and Fish -- Add shell completion scripts for Zsh, Bash, and Fish +- Add shell completion scripts for Zsh, Bash, and Fish shells - Create standardized completion scripts in completions/ directory - Add --shell-complete-list flag for machine-readable output - Update Print() methods to support plain output format @@ -830,7 +838,7 @@ Co-Authored-By: Claude - Imported `sort` and `strings` packages for sorting functionality - Implemented case-insensitive sorting for both groups and items - Created stable copies of groups and items before sorting -- Enhanced display iteration to use sorted collections +- Enhanced display iteration to use sorted groups and items ## v1.4.176 (2025-04-21) @@ -839,7 +847,7 @@ Co-Authored-By: Claude - Add `Prompt` field to `StrategyMeta` struct for storing JSON prompt data - Implement dynamic strategy naming using filename with `strings.TrimSuffix` - Add alphabetical sorting to groups and items in Print method with case-insensitive ordering -- Introduce `--listvendors` command to display all AI vendors with consistent output +- Introduce `--listvendors` command to display all AI vendors with sorting - Refactor OpenAI-compatible providers into unified configuration, removing individual vendor packages ## v1.4.175 (2025-04-19) @@ -847,10 +855,10 @@ Co-Authored-By: Claude ### PR [#1418](https://github.com/danielmiessler/Fabric/pull/1418) by [dependabot[bot]](https://github.com/apps/dependabot): chore(deps): bump golang.org/x/net from 0.36.0 to 0.38.0 in the go_modules group across 1 directory - Updated golang.org/x/net dependency from version 0.36.0 to 0.38.0 -- Dependency update applied to go_modules group in root directory -- Indirect dependency type update managed by dependabot -- Security and performance improvements included in newer version -- Automated dependency maintenance to keep project current +- Dependency type: indirect +- Dependency group: go_modules +- Automated dependency update via dependabot +- Security and bug fixes included in the version bump ## v1.4.174 (2025-04-19) @@ -918,9 +926,9 @@ Co-Authored-By: Claude - Integrated strategy flag enhancement from fabric CLI into web UI - Updated strategies.json configuration -- Added new excalidraw pattern for visual documentation -- Implemented bill analyzer functionality with shorter version -- Enhanced analyze bill pattern for improved processing +- Added new excalidraw pattern for diagram creation +- Implemented bill analyzer with shorter version for analyze bill functionality +- Updated ed component with improvements ## v1.4.168 (2025-04-02) @@ -954,16 +962,11 @@ Co-Authored-By: Claude ### PR [#1389](https://github.com/danielmiessler/Fabric/pull/1389) by [ksylvan](https://github.com/ksylvan): Create Coding Feature -- Add `code_helper` tool (renamed from `fabric_code`) for AI-driven codebase modifications -- Implement `create_coding_feature` pattern with file management API for code changes -- Add secure file parsing and validation system with JSON escape sequence handling -- Update README with installation instructions and usage examples -- Replace deprecated io/ioutil with modern alternatives and improve error handling - -### Direct commits - -- Improve README link -- Fix broken what-and-why link reference +- Add `code_helper` tool (renamed from `fabric_code`) and `create_coding_feature` pattern for AI-driven codebase modifications +- Implement file management system with JSON representation, parsing, and secure application of code changes +- Replace deprecated io/ioutil with modern alternatives and improve JSON parsing with escape sequence handling +- Add file change validation system with FileChangesMarker constant and comprehensive error handling +- Update documentation and README with installation instructions, usage examples, and new marker syntax ## v1.4.164 (2025-03-22) @@ -980,7 +983,7 @@ Co-Authored-By: Claude - Improve README formatting and add clipboard support section - Fix broken installation link reference and environment variables link -- Replace code tags with backticks and improve code block formatting +- Improve code block formatting with indentation ### PR [#1376](https://github.com/danielmiessler/Fabric/pull/1376) by [vaygr](https://github.com/vaygr): Add installation instructions for OS package managers @@ -989,23 +992,24 @@ Co-Authored-By: Claude ### Direct commits - Added find_female_life_partner pattern -- Updated find prompt multiple times ## v1.4.163 (2025-03-19) ### PR [#1362](https://github.com/danielmiessler/Fabric/pull/1362) by [dependabot[bot]](https://github.com/apps/dependabot): Bump golang.org/x/net from 0.35.0 to 0.36.0 in the go_modules group across 1 directory - Updated golang.org/x/net dependency from version 0.35.0 to 0.36.0 +- Automated dependency update in go_modules group ### PR [#1372](https://github.com/danielmiessler/Fabric/pull/1372) by [rube-de](https://github.com/rube-de): fix: set percentEncoded to false - Fixed YouTube link encoding issue by setting percentEncoded to false -- Prevents URL encoding errors when using YouTube links like youtu.be/sHIlFKKaq0A +- Prevents URL encoding errors when processing YouTube links ### PR [#1373](https://github.com/danielmiessler/Fabric/pull/1373) by [ksylvan](https://github.com/ksylvan): Remove unnecessary `system.md` file at top level -- Removed redundant system.md file from top-level directory -- File was an RPG session summarization prompt superseded by create_rpg_summary and summarize_rpg_session patterns +- Removed redundant system.md file from repository root +- File was duplicate RPG session summarization prompt +- Two other RPG summary patterns already exist: create_rpg_summary and summarize_rpg_session ## v1.4.162 (2025-03-19) @@ -1019,9 +1023,7 @@ Co-Authored-By: Claude ### Direct commits - Remove redundant file system.md at top level -- Set percentEncoded to false for YouTube links to prevent encoding errors -- Removed RPG session summarization prompt (system.md) - replaced by create_rpg_summary and summarize_rpg_session patterns -- Fix YouTube link processing to avoid URL encoding issues that caused fabric errors +- Fix YouTube link encoding issue by setting percentEncoded to false ## v1.4.161 (2025-03-17) @@ -1033,13 +1035,13 @@ Co-Authored-By: Claude ### PR [#1368](https://github.com/danielmiessler/Fabric/pull/1368) by [vaygr](https://github.com/vaygr): Standardize sections for no repeat guidelines -- Standardize sections for no repeat guidelines +- Standardized sections for no repeat guidelines ### Direct commits - Moved system file to proper directory - Added activity extractor -- Merge branch 'main' of github.com:danielmiessler/fabric +- Merged main branch updates ## v1.4.159 (2025-03-16) @@ -1135,9 +1137,9 @@ Co-Authored-By: Claude - Update YouTube regex to support live URLs and timestamped transcripts - Add argument validation and -t flag for transcript with timestamps -- Refactor PowerShell yt function with parameter switch - Introduce youtube_summary pattern with documentation -- Update README to dynamically select transcript option +- Refactor PowerShell yt function with parameter switch +- Update README with dynamic transcript option selection ### PR [#1338](https://github.com/danielmiessler/Fabric/pull/1338) by [jmd1010](https://github.com/jmd1010): Update Web V2 Install Guide layout @@ -1146,6 +1148,7 @@ Co-Authored-By: Claude ### PR [#1330](https://github.com/danielmiessler/Fabric/pull/1330) by [jmd1010](https://github.com/jmd1010): Fixed ALL CAP DIR as requested and processed minor updates to documentation - Reorganize documentation with consistent directory naming +- Update Web V2 Install Guide with improved instructions ### PR [#1333](https://github.com/danielmiessler/Fabric/pull/1333) by [asasidh](https://github.com/asasidh): Update QUOTES section to include speaker names for clarity @@ -1174,8 +1177,8 @@ Co-Authored-By: Claude - Continue fetching models even if some vendors fail - Remove cancellation of remaining goroutines when vendor collection fails - Ensure other vendor collections continue even if one fails -- Fix model listing via `fabric -L` when localhost models are down -- Fix using non-default models via `fabric -m custom_model` +- Fix `fabric -L` model listing when localhost models are down +- Fix `fabric -m custom_model` usage when Ollama/LM Studio are shut down ### PR [#1329](https://github.com/danielmiessler/Fabric/pull/1329) by [jmd1010](https://github.com/jmd1010): Svelte Web V2 Installation Guide @@ -1232,9 +1235,9 @@ Co-Authored-By: Claude ### PR [#1313](https://github.com/danielmiessler/Fabric/pull/1313) by [cx-ken-swain](https://github.com/cx-ken-swain): Updated ollama.go to fix a couple of potential DoS issues - Fixed security vulnerabilities in ollama.go to prevent potential DoS attacks -- Resolved multiple medium-severity vulnerabilities +- Resolved additional medium-severity vulnerabilities - Updated application version to v..1 -- Removed version.nix and version.go files +- Removed version-related files (version.go, pkgs/fabric/version.nix) - Merged changes from main branch ## v1.4.139 (2025-02-25) @@ -1243,9 +1246,9 @@ Co-Authored-By: Claude - Updated demo video link in PR-1284 documentation - Added complete PDF to Markdown conversion functionality -- Implemented Svelte integration files for PDF processing +- Integrated PDF processing into Svelte web chat interface - Added comprehensive PDF to Markdown documentation -- Enhanced web Svelte chat interface with PDF conversion capabilities +- Updated version and cleaned up version-related files ## v1.4.138 (2025-02-24) @@ -1267,15 +1270,12 @@ Co-Authored-By: Claude ### PR [#1257](https://github.com/danielmiessler/Fabric/pull/1257) by [jessefmoore](https://github.com/jessefmoore): Create analyze_threat_report_cmds -- Create system.md -Create pattern to extract commands from videos and threat reports to obtain commands so pentesters or red teams or Threat hunters can use to either threat hunt or simulate the threat actor. +- Create pattern to extract commands from videos and threat reports for pentesters, red teams, and threat hunters ### PR [#1256](https://github.com/danielmiessler/Fabric/pull/1256) by [JOduMonT](https://github.com/JOduMonT): Update README.md -- Update README.md - -1. Windows Command: Because actually curl does not exist natively on Windows -2. Syntax: Because like this; it makes the "click, cut and paste" easier +- Update Windows Command documentation (curl doesn't exist natively on Windows) +- Improve syntax for easier "click, cut and paste" usage ### PR [#1247](https://github.com/danielmiessler/Fabric/pull/1247) by [kevnk](https://github.com/kevnk): Update suggest_pattern: refine summaries and add recently added patterns @@ -1283,19 +1283,11 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### PR [#1252](https://github.com/danielmiessler/Fabric/pull/1252) by [jeffmcjunkin](https://github.com/jeffmcjunkin): Update README.md: Add PowerShell aliases -- Update README.md: Add PowerShell aliases +- Add PowerShell aliases to README documentation ### PR [#1253](https://github.com/danielmiessler/Fabric/pull/1253) by [abassel](https://github.com/abassel): Fixed few typos that I could find -- Fixed few typos that I could find - -**Key Changes:** - -- Added threat analysis pattern for extracting commands from security reports -- Improved Windows compatibility with PowerShell aliases and curl alternatives -- Enhanced pattern suggestions with updated summaries -- Added markdown callout pattern and prediction generator -- Implemented multi-model support with image attachments +- Fixed various typos throughout the codebase ## v1.4.137 (2025-02-24) @@ -1309,7 +1301,9 @@ Create pattern to extract commands from videos and threat reports to obtain comm ## v1.4.136 (2025-02-24) -### Direct commits +## Summary of Changes + +**Direct commits:** - Update to upload-artifact@v4 because upload-artifact@v3 is deprecated - Merge branch 'danielmiessler:main' into main @@ -1321,36 +1315,35 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### PR [#1309](https://github.com/danielmiessler/Fabric/pull/1309) by [jmd1010](https://github.com/jmd1010): Feature/Web Svelte GUI Enhancements: Pattern Descriptions, Tags, Favorites, Search Bar, Language Integration, PDF file conversion, etc -- Enhanced Web UI with pattern descriptions, tags, favorites, and search functionality -- Improved chat interface and pattern handling capabilities -- Updated dependencies and backup configuration -- Cleaned up sensitive files and improved .gitignore structure +- Enhanced pattern handling and chat interface improvements +- Updated .gitignore to exclude sensitive and generated files +- Setup backup configuration and updated dependencies ### PR [#1312](https://github.com/danielmiessler/Fabric/pull/1312) by [junaid18183](https://github.com/junaid18183): Added Create LOE Document Prompt -- Added create_loe_document prompt for Level of Effort documentation +- Added create_loe_document prompt ### PR [#1302](https://github.com/danielmiessler/Fabric/pull/1302) by [verebes1](https://github.com/verebes1): feat: Add LM Studio compatibility -- Added LM Studio as new plugin with base URL configuration -- Updated plugin registry to include LM Studio integration +- Added LM Studio as a new plugin for Fabric compatibility +- Updated plugin registry and configuration with required base URL ### PR [#1297](https://github.com/danielmiessler/Fabric/pull/1297) by [Perchycs](https://github.com/Perchycs): Create pattern_explanations.md -- Created comprehensive pattern explanations with one-line summaries +- Created pattern_explanations.md with one-line summaries for each prompt ### Direct commits -- Fixed security vulnerabilities in ollama.go and updated version to v1.1 -- Added and updated extract_domains functionality +- Resolved medium security vulnerabilities and updated ollama.go +- Added extract_domains functionality ## v1.4.134 (2025-02-11) ### PR [#1289](https://github.com/danielmiessler/Fabric/pull/1289) by [thevops](https://github.com/thevops): Add the ability to grab YouTube video transcript with timestamps -- Added new `--transcript-with-timestamps` flag for YouTube video processing +- Added `--transcript-with-timestamps` flag for YouTube video transcripts - Timestamps formatted as HH:MM:SS and prepended to each transcript line -- Enables quick navigation to specific video segments in summaries +- Enables quick navigation to specific video sections in summaries - Similar functionality to existing `--transcript` flag but with time markers - Useful for creating timestamped video summaries and references @@ -1359,7 +1352,7 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### PR [#1294](https://github.com/danielmiessler/Fabric/pull/1294) by [TvisharajiK](https://github.com/TvisharajiK): Improved unit-test coverage from 0 to 100 (AI module) using Keploy's agent - Increased unit test coverage from 0 to 100% in the AI module using Keploy's Agent -- Added YouTube video transcript with timestamps feature via `--transcript-with-timestamps` flag +- Added YouTube transcript extraction with timestamps via `--transcript-with-timestamps` flag - Bumped github.com/go-git/go-git/v5 from 5.12.0 to 5.13.0 - Added multiple new TELOS patterns and challenge handling pattern - Added panel topic extractor and intro sentences pattern @@ -1371,8 +1364,8 @@ Create pattern to extract commands from videos and threat reports to obtain comm - Enable custom API base URL configuration for Anthropic integration - Add proper handling of v1 endpoint for UUID-containing URLs - Implement URL formatting logic for consistent endpoint structure -- Clean up commented code and improve configuration flow -- Enhance API flexibility for different deployment environments +- Improve configuration flow and error handling +- Clean up commented code and streamline implementation ## v1.4.131 (2025-01-30) @@ -1397,11 +1390,11 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### PR [#1240](https://github.com/danielmiessler/Fabric/pull/1240) by [johnconnor-sec](https://github.com/johnconnor-sec): Updates: ./web -- Moved pattern loader to ModelConfig and added page fly transitions -- Updated UI components and improved responsive layout for chat interface +- Moved pattern loader to ModelConfig and added page fly transitions with UI component updates +- Improved responsive layout with reordered columns and updated Header buttons - Added NotesDrawer component that saves notes to lib/content/inbox -- Centered chat and NotesDrawer in viewport for better user experience -- Restructured project organization: moved types to lib/interfaces and lib/api +- Centered chat and NotesDrawer in viewport with major styling improvements +- Reorganized file structure: moved types to lib/interfaces and lib/api, renamed stores for consistency ## v1.4.129 (2025-01-03) @@ -1416,25 +1409,25 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### Direct commits -- Chat and NotesDrawer now centered in viewport +- Chat and NoteDrawer now centered in viewport - Enhanced enrich pattern and added enrich_blog_post -- Major file reorganization: moved types to lib/interfaces, components restructured +- Major file restructuring: moved types to lib/interfaces, components reorganized - Updated Post page styling and NotesDrawer saves to lib/content/inbox -- Version updates to v..1 with corresponding .nix and .go files +- Multiple version updates and README improvements ## v1.4.128 (2024-12-26) ### PR [#1227](https://github.com/danielmiessler/Fabric/pull/1227) by [mattjoyce](https://github.com/mattjoyce): Feature/template extensions -- Implemented stdout template extensions with path-based registry storage and hash verification -- Added file-based output handling with proper cleanup of temporary files for local and remote operations +- Implemented stdout template extensions with path-based registry storage +- Added proper hash verification for both configs and executables with clean registry format +- Implemented file-based output handling with temporary file cleanup for local/remote operations - Fixed pattern file usage without stdin by initializing empty message for template processing -- Added extension manager tests, registration, execution validation, and example files with tutorial -- Enhanced extension listing with better error messages when hash verification fails +- Added extension manager tests, registration/execution validation, and example files with tutorial ### Direct commits -- Updated story format to shorter bullets and improved notes drawer with rocket theme +- Updated story formatting to shorter bullets and improved Notes Drawer with rocket theme - Updated POSTS for main 24-12-08 release and fixed import statements ## v1.4.127 (2024-12-23) @@ -1442,10 +1435,10 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### PR [#1218](https://github.com/danielmiessler/Fabric/pull/1218) by [sosacrazy126](https://github.com/sosacrazy126): streamlit ui - Added comprehensive Streamlit application for managing and executing patterns -- Implemented pattern creation, execution, and analysis with advanced UI components -- Enhanced logging configuration with color-coded console and detailed file handlers +- Implemented pattern creation, execution, and analysis with advanced editing options +- Enhanced logging configuration with color-coded console and detailed file logging - Added pattern chain execution functionality for sequential pattern processing -- Integrated output management with starring/favoriting and persistent storage features +- Integrated output management with starring/favoriting and persistent storage capabilities ### PR [#1225](https://github.com/danielmiessler/Fabric/pull/1225) by [wmahfoudh](https://github.com/wmahfoudh): Added Humanize Pattern @@ -1459,7 +1452,7 @@ Create pattern to extract commands from videos and threat reports to obtain comm - Ingested 8 key documents including Plato's Apology, Phaedrus, Symposium, and Republic - Added Xenophon's works: The Economist, Memorabilia, Memorable Thoughts, and Symposium - Enhanced with specific steps for research, analysis, and code reviews -- Version updates and branch merging activities +- Version updates and branch merging completed ## v1.4.125 (2024-12-22) @@ -1493,8 +1486,8 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### Direct commits -- Enhanced pattern management with improved creation, editing, and deletion -- Improved logging configuration and error handling for better debugging +- Delete patternstudio.py +- Refactor pattern management and enhance error handling with improved logging, validation, and UI components ## v1.4.123 (2024-12-20) @@ -1506,9 +1499,9 @@ Create pattern to extract commands from videos and threat reports to obtain comm - Added Streamlit application for pattern management and execution with logging, session state, and UI components - Added Ollama chat endpoints for Open WebUI integration -- Fixed multiple spelling errors across patterns and documentation +- Fixed typos and spelling errors across patterns and documentation - Updated version to v1.1 with significant research and analysis workflow improvements -- Major Socrates pattern rewrite incorporating Plato and Xenophon source materials from Project Gutenberg +- Major Socrates pattern rewrite incorporating Plato and Xenophon texts from Project Gutenberg ## v1.4.122 (2024-12-14) @@ -1542,7 +1535,7 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### PR [#1182](https://github.com/danielmiessler/Fabric/pull/1182) by [jessefmoore](https://github.com/jessefmoore): analyze_risk pattern -- Created analyze_risk pattern for 3rd party vendor risk analysis +- Created analyze_risk pattern for analyzing 3rd party vendor risk ## v1.4.119 (2024-12-07) @@ -1563,10 +1556,11 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### PR [#1174](https://github.com/danielmiessler/Fabric/pull/1174) by [mattjoyce](https://github.com/mattjoyce): Curly brace templates -- Fixed pattern file usage without stdin to prevent segfault by initializing empty message +- Fixed pattern file usage without stdin to prevent segfault +- Added empty message initialization when Message is nil - Removed redundant template processing of message content - Simplified template processing flow for both stdin and non-stdin use cases -- Added proper handling for patterns with variables but no stdin input +- Reverted and re-implemented fix for proper template variable handling ### PR [#1179](https://github.com/danielmiessler/Fabric/pull/1179) by [sluosapher](https://github.com/sluosapher): added a new pattern create_newsletter_entry @@ -1589,10 +1583,10 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### PR [#1168](https://github.com/danielmiessler/Fabric/pull/1168) by [johnconnor-sec](https://github.com/johnconnor-sec): Update README.md - Updated README.md documentation -- Cleaned up code styling -- Enhanced message handling to use custom messages with piped input -- Improved overall project documentation and formatting -- Streamlined user experience with better message processing +- Cleaned up code style formatting +- Improved message handling to use custom message followed by piped input +- Enhanced overall project documentation structure +- Streamlined codebase with style improvements ## v1.4.114 (2024-11-26) @@ -1604,11 +1598,11 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### PR [#1166](https://github.com/danielmiessler/Fabric/pull/1166) by [dependabot[bot]](https://github.com/apps/dependabot): build(deps-dev): bump @sveltejs/kit from 2.6.1 to 2.8.4 in /web in the npm_and_yarn group across 1 directory -- Updated @sveltejs/kit from version 2.6.1 to 2.8.4 in the /web directory -- Dependency update in the npm_and_yarn group for development dependencies -- Automated security and maintenance update by dependabot -- Direct development dependency type update -- Includes release notes and changelog references for the SvelteKit framework +- Updated @sveltejs/kit from version 2.6.1 to 2.8.4 +- Development dependency upgrade in /web directory +- Part of npm_and_yarn dependency group update +- Automated dependency maintenance by dependabot +- Includes release notes and changelog references ## v1.4.112 (2024-11-26) @@ -1644,8 +1638,8 @@ Create pattern to extract commands from videos and threat reports to obtain comm - Process template variables ({{var}}) consistently in both pattern files and raw input messages - Add template variable processing for raw input in BuildSession with explicit messageContent initialization - Remove errantly committed build artifact (fabric binary) -- Fix template.go to handle missing variables in stdin input with proper error messages -- Fix raw mode doubling user input by streamlining context staging +- Fix template.go to handle missing variables in stdin input with proper error messaging +- Fix raw mode doubling user input issue by streamlining context staging ### Direct commits @@ -1658,8 +1652,8 @@ Create pattern to extract commands from videos and threat reports to obtain comm - Introduced template package for variable substitution with {{variable}} syntax - Moved substitution logic from patterns to centralized template system - Updated patterns.go and chatter.go to use new template package -- Added support for special {{input}} handling and nested variables - Implemented core plugin system with utility plugins (datetime, fetch, file, sys, text) +- Added support for nested variables with multiple passes and error reporting for missing variables ## v1.4.107 (2024-11-19) @@ -1689,17 +1683,14 @@ Create pattern to extract commands from videos and threat reports to obtain comm - Add summarize_meeting pattern for creating meeting summaries from audio transcripts - Outputs Key Points, Tasks, Decisions, and Next Steps sections -- Provides structured format for meeting documentation -- Supports audio transcript processing -- Enables organized meeting follow-up workflow +- Designed for processing meeting transcripts effectively ### Direct commits - Introduce template package for variable substitution with {{variable}} syntax - Move substitution logic from patterns to centralized template system -- Support special {{input}} handling for pattern content -- Enable multiple passes to handle nested variables -- Report errors for missing required variables +- Support special {{input}} handling and nested variables +- Enable multiple passes for variable processing with error reporting ## v1.4.104 (2024-11-18) @@ -1709,7 +1700,7 @@ Create pattern to extract commands from videos and threat reports to obtain comm - Supports relative paths (./pattern.txt), home directory expansion (~/patterns/test.txt), and absolute paths - Maintains backwards compatibility with named patterns - Requires explicit path markers to distinguish from pattern names -- Example usage: `fabric --pattern ./draft-pattern.txt` or `fabric --pattern ~/patterns/my-pattern.txt` +- Example usage: `fabric --pattern ./draft-pattern.txt` ### Direct commits @@ -1733,11 +1724,11 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### Direct commits -- Add file-based pattern support for loading patterns directly from files using explicit path prefixes +- Add file-based pattern support for loading patterns directly from files - Support relative paths (./pattern.txt, ../pattern.txt) - Support home directory expansion (~/patterns/test.txt) -- Support absolute paths with backwards compatibility for named patterns -- Require explicit path markers to distinguish from pattern names +- Support absolute paths with explicit path markers +- Maintain backwards compatibility with named patterns ## v1.4.101 (2024-11-15) @@ -1793,12 +1784,12 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### PR [#1123](https://github.com/danielmiessler/Fabric/pull/1123) by [polyglotdev](https://github.com/polyglotdev): :sparkles: Added unaliasing to pattern setup - Added unaliasing step to pattern setup process -- Prevents conflicts between dynamically defined functions and existing aliases +- Prevents conflicts between dynamically defined functions and pre-existing aliases ### PR [#1119](https://github.com/danielmiessler/Fabric/pull/1119) by [verebes1](https://github.com/verebes1): Add auto save functionality - Added auto save functionality to aliases -- Updated README with autogenerating aliases information for Obsidian integration +- Updated README with autogenerating aliases information for Obsidian-like tools - Updated table of contents ### Direct commits @@ -1815,10 +1806,10 @@ Create pattern to extract commands from videos and threat reports to obtain comm ### PR [#1117](https://github.com/danielmiessler/Fabric/pull/1117) by [verebes1](https://github.com/verebes1): Add alias generation information -- Added alias generation documentation to README +- Added alias generation information to README +- Updated documentation with prompt alias generation instructions +- Included YouTube transcript alias examples - Updated table of contents -- Included information about generating aliases for prompts including YouTube transcripts -- Merged branch 'main' into add-aliases-for-patterns ### PR [#1115](https://github.com/danielmiessler/Fabric/pull/1115) by [ignacio-arce](https://github.com/ignacio-arce): Added create_diy @@ -1927,11 +1918,11 @@ Add a pattern that can convert text into an appropriate markdown callout ### PR [#1073](https://github.com/danielmiessler/Fabric/pull/1073) by [mattjoyce](https://github.com/mattjoyce): Five patterns to explore a project, opportunity or brief -- Added five new DSRP patterns for project exploration and strategic analysis -- Enhanced prompts to increase divergent thinking capabilities -- Implemented identify_job_stories pattern for user story identification -- Created S7 Strategy profiling with headwinds and tailwinds analysis -- Added comprehensive metadata and style guide documentation +- Added initial DSRP prompts with improved divergent thinking capabilities +- Implemented identify_job_stories pattern for project analysis +- Created S7 Strategy profiling with headwinds and tailwinds assessment +- Enhanced prompt structure with metadata and styleguide integration +- Fixed system configuration mix-up in pattern implementation ### Direct commits @@ -1973,7 +1964,7 @@ Add a pattern that can convert text into an appropriate markdown callout - Added structure to prompt - Added headwinds and tailwinds - Initial draft of s7 Strategy profiling -- Merge operations from main branch +- Merge operations from main branches ## v1.4.72 (2024-10-25) @@ -2093,14 +2084,14 @@ Add a pattern that can convert text into an appropriate markdown callout ### PR [#1039](https://github.com/danielmiessler/Fabric/pull/1039) by [hallelujah-shih](https://github.com/hallelujah-shih): Feature/set default lang - Support set default output language -- Updated cli/cli.go -- Modified core/fabric.go with formatting changes +- Updated cli/cli.go for language configuration +- Modified core/fabric.go with formatting improvements ### Direct commits - Updated all dsrp prompts to increase divergent thinking -- Fixed mix up with system -- Initial dsrp prompts +- Fixed mix up with system configuration +- Added initial dsrp prompts ## v1.4.55 (2024-10-09) @@ -2112,7 +2103,7 @@ Add a pattern that can convert text into an appropriate markdown callout ### PR [#1021](https://github.com/danielmiessler/Fabric/pull/1021) by [joshuafuller](https://github.com/joshuafuller): Corrected spelling and grammatical errors for consistency and clarity for transcribe_minutes -- Fixed grammatical accuracy: "agreed within" → "agreed upon within" +- Fixed grammatical accuracy: "agreed within" → "agreed upon within the meeting" - Added missing periods for consistency across list items - Corrected spelling: "highliting" → "highlighting" - Fixed spelling: "exxactly" → "exactly" @@ -2132,13 +2123,10 @@ Add a pattern that can convert text into an appropriate markdown callout - Added extract_core_message functionality - Extensive work on Rest API development and implementation - Corrected spelling and grammatical errors for consistency and clarity: -- Fixed "agreed within" to "agreed upon within" -- Added missing periods for consistency -- Corrected "highliting" to "highlighting" -- Fixed "exxactly" to "exactly" -- Updated "Write NEXT STEPS a 2-3 sentences" to "Write NEXT STEPS as 2-3 sentences" - -These changes improve document readability and API functionality. +- Fixed "agreed within" to "agreed upon within the meeting" +- Added missing periods for list consistency +- Corrected "highliting" to "highlighting" and "exxactly" to "exactly" +- Updated phrasing for grammatical correctness in instructions ## v1.4.51 (2024-10-05) @@ -2278,11 +2266,11 @@ These changes improve document readability and API functionality. ### PR [#962](https://github.com/danielmiessler/Fabric/pull/962) by [alucarded](https://github.com/alucarded): Update prompt in agility_story -- Updated agility_story pattern to make topic more logical +- Updated agility_story pattern to ensure topic makes sense ### PR [#994](https://github.com/danielmiessler/Fabric/pull/994) by [OddDuck11](https://github.com/OddDuck11): Add pattern analyze_military_strategy -- Added new pattern for analyzing historic or fictional battle strategies +- Added new pattern for analyzing historic or fictional battle strategy ### PR [#1008](https://github.com/danielmiessler/Fabric/pull/1008) by [MattBash17](https://github.com/MattBash17): Update system.md in transcribe_minutes @@ -2332,7 +2320,6 @@ These changes improve document readability and API functionality. - Add ScrapeURL flag for CLI to scrape website URL to markdown using Jina AI - Add Jina AI integration for web scraping and question search -- Made jina api key optional ### PR [#970](https://github.com/danielmiessler/Fabric/pull/970) by [mark-kazakov](https://github.com/mark-kazakov): add mistral vendor diff --git a/cmd/generate_changelog/changelog.db b/cmd/generate_changelog/changelog.db index 385be0bc0e885bf5b63257f186082f55dbeb6597..72d2a116bebd262cefa67b0f881164b5eca5113f 100644 GIT binary patch delta 202834 zcmd442Ygh;*FSvc?(MsGmkyyM8xRPP!1h9~(wj8tq(Uf32u+$x=p>=8Frc8KU_%f@ z1*D0+fqz( zR+3ed*}g2l#~;qf4!T30 zob-Ul<<80Wgu@|!FzC(KfIINK^9e`I8WuO1m_B9d=z_xh z%qH@Bz*MgO!#vq*hMXA3-Avg4fNGe?1AvEv2DyN-d5eU2NBp^n!b z(;PoLdN@9C^mUXtZaFqO<~hbYb~v7L%yO)AeB^k{vC47DG0Jhsk>&W>(U~i7jBpHw z|Ei--opvLu>)z?^=D7{!dhJFgFgd589P{=y54fS!bX!t#?@DD4?e^!~Ri;2c`6aP; zoqv5Oe{O@a#At(Xa=$w&)Gt>ks#m{X^*g1I9KGU8kL8%_EY}a5ao#z>q;iD=?Ug$# zB$g}ee6Ri;6$3WCR>-Yhp2dTU?wmz#wQ>ca z$DI}OsxpNJIvx5%@}N7FA-76-3SS=oH?3K@T;c4HD*YmN>K>KK6j;yoHTSUb8XH+I zZ%d!ArQ6la<$|%8lb+>DcLn@ezCbYB?aFp%26D2pGJ;`OAUngGm6;9x>A_(7aCgA% z9%)D>*4cT7OvfZRM`|%2J8iNkc~q=(j?>GlH0{ZxzBTWV#8{hLj~;xw{_rXl6NlTM zXDzR!cli2ut|YCz4tD%`=MI~zmMe4{`EL}Ia)p``@7y1!$V?$kr>9Dt!|vEnQh5sf zYgg+Ro#eB|p7}nJg#>k)T+KQ9j!}j3s3!t>KLA&Xx&wY%q`(issHz~IxCg>271aUpSdjp7jRX)+ zP6ha~$Q1$SgQ5oDoj8Zhv(<`H0TYUw(&yF}tR1XjUgl<1_1ZHB-4;UZlRHPS*Cwy_JCuUEg7U(3)aBW`EMUQm$?vDmRdp z*>jZN)Th+nxfPHrElUZ98Ot!FtB_p6#^k)+);f)j`(p z9F4U^+cyrM)=Y6I8EREANk1o^c63nk)rgoXexo||9~`~){kC7ku>PCvZ|g>JiS;SF zLpz~s;@!5!!u$3*Qpny|O|yBWE_w~^3-JNHzKyq^v9;5_SDp|D*zC$~ag42Js+6aV z)SF9N#Yx(AahBfFF;sp}x@;R__gekpX0@djv|p4@E3eos`bT>vpSScS(c_)9NH|P9 zx}_eE(~vvtCC%e35GHAH=J%7PF$P_kG>S2II7se_F^|_nl48sq@{ziwI8-Quoj z`A~@aIF_c@%bki5pNsn_PJ%S~n59+((mE0I3})b4Oz&5aiyE zk+7G0FJ7{smwVU1LfkuX7It%QL$pZQvwQvATd_oZZtl&vqAS3?5oaDR_j;UpecWqt z7I1N|##z|K9f>6gL9fJ#k2_qU7isSHdbmRs6j+cu7}E@fxdVovFt-_tCxLX`!@JqlgiZPg&xrMP*VAfg?3xc;&Zho9W zc11Dfafi5hHcLHHwl;RTA~E9j`R)f2DGPG@LUZFm0q>kR3HfHnh{qkC6(?TTOalqu z7bia746CJ1d9LBUkK{uKpqO^K<6T!nEpk8g6E_&o&%;>|Y@e_ot~ zyps$hJTXS#hiXEcc)a5yu}uBG+?X5)jEl)Z&)Aq8^5w*0!;emOocMiN1`^1O5sxdB z5sM%8q{jl>F83J2^SeBw<3V2ks5tSvM#f1XG$Kwy{^2nKzn#Nk`S@K!>Z||5K zboT<>Qplw_Zw~5Jqf9seW@VAP~p_VZ@K&UK(2zzJs_=BoCMrH0||KJBvftY{E{7Y%&A)ORVPlozS}D#^EeTD4vX=iU{HvYu-_6R@Y2m&E%ns04&(ER z@bbFUb{dc*?zZ)-MD}#}NIFie6`w{H3EG}|A4_xin9qXl>YlBqr6Z(9h0cPAVjWp; zF=^bQouYW@!(A*Xd$xWiy-uoEXcRS(wUPCPlq*!~m6SrC{9MY9r8$3qw5R?TQqOq4 z3uJN6%(GI2L}F{>ox8ER0Py$K*?_lJ4+Z>VbvMB4tHXd_t%lDK+=bQ2fX7!?13b4HVnw(w zR*g z_r{WbfNM)yg3pK&_&&m|FM%53HWc3nc(OPh@I*0uYT>RHdjTJd6tfC>ve*i^YS|2k zR=6w+`fv-2@g~gKrKUzEnlhomY7g?Wi&}s@c@b1QS-A*4ACc%n$e5e7 z5HcoDErdEFPcLMTF>WDCEoUM7y0mm5>utpgX26FeE@J^}f-wt*fY;mwtewU!fb6;S z1$TkGWC6?mzWJa@=FFc0{v+nY7c4SmKI<{V=R@0*3G@9R51a1<96G-y;E?$m;NYUU z5ZbROALKzr@bQZqSkxPQ+7@*LY+aNF{f~r;>Ow$o_SK5GibTMkGr*%eD^$0^0A1NL zq_VD`27Q?9st0~{8*hD)OHx=JkNT=U z&7N;{>Q6dEt&w$st%mlas4noi8R*)1jFgo`@syF~W=INFc@g5W}1R$(`bkxCA(l6Q%H2R`< zhX&3Ru@4iY7j6jA3ic?g>$mJIsPoS2fjB4 zy;&}=FFT_rQ+D|>y_v2|zuOba&P)$wyZnK$*9H4dL5P$Q@OyHy(z7#Mz8*|D-5*Z( z`rW~-kjI^q6Aq_mWM%mM{!rNM%XWoaZapL9@~3BIr+3F9U3Aw<5xb$d!UJMg6vzKj zDMh>+#mc?mLAs#WVSMEju``N$KY|MAgyQT7pCWcd(fy~MB6dKrMFvR`+oL!#P%TAl zhvJdFkXTz3`)k!x#5O3N-42PhM)B$jNURl#I~sx562*~q>!gTb6rVc;DTGjTB|x+w zig^x5EP&$B{SeKM;@&Y3&4*$^TFn&Ei=sUXd_85pTS3>2;_Thf?k*HpZAeNHTcCL4 z1@LW-;);&-Q^YhBkJSc+R1{sEp$yGXoU{jYo1)luFNjUb6!w9bf?~@jA-BdTI;x2& z)f+LAkD zXgvJjamiS+x35FHu}P&N%^$|6O8iH5E7yW{xj>q+QJzFE|3)CO4j?zCJHAdzmB>Jl zYtWq!C8lb8Cy=XP!U<35DVoIeDlxupX5|!(EC5;+gRB3<9*fOMYEjI;}8|9^P9e zanBF;3f1JujvWI_dpfux`Q1TvI#i$BPG8yA+i6^S-q`Gk`D2}3v-7eG)2HSawsdyr zp4KmaMs{I#mb1gOsri%Ar{?D8Idk$0op+~a6y|0+`xWMo&(56M!1-T^Ug@9l>E`>T zI<(2tqLrSirc|P&dgbccl$leeW=~?7(aGORRrOS7PIfvxNp9X)XZpJ4Rcd#gkvnyq zGd*j1dR`_JFf%=K9E7DhyXH>qHZ8;1pQrZX9y~?&w1V;nnlf$D zr1ZkvS?Tn|r*e%UZJmAk4(!s>*{OSrPMwVrF4JecTSm>F(rHQwCud8&VKh$cLTYBCEyCtpRbDvwEY61cBE6c4t=_I>D9Mu^GR7v zn?jcPlL{tgPt9g2vf6ZJ#@YfO(Ua=+d7Y46VQ%&m=ahoax%SDP;mpj3I>^gPo0yxI?VOsQ zKM|e;>U2_m*0hP~h0gRssM4uWqG^TMy5@AIImb*&&&_K-Hh&D1x>t8B(@bYUKGbtr z%ue|kh3U?m!t_bmGx7^3lt=1!PiJ`4G0sNLG52)opmgrth0&IDxmB(kDc7ke-Pqt@o&ShC2z1r#p^Ke$ZIgd$*Zt}Bu6FyyaMYFa%eih!6E{n-7D8!#QaRiwPP|%=>7#v zY36)b)slG&U|C6KFQ^2#bv_$%oxDtE)`A4Uu?u{F=?l^UM=!_$9F9w>Q43j7?pX-> zWZ)v$QX|i>H4quFs2X5@T%h$>1aTvz@1jQF)n^e~1a(^kgPn9;%+_yrFK!ChWifmD z&WqWTcUlbdA?dgnmQJM2Vkj;NEoSu)z!jr=30stM=tCQ*nA1A zwx&y1eKcB<1=w&&0bt~=C3C^4yOb@s>MU&lSbHg}z?w_lfHjuFT8>m*+5xc2QkdCD zrKKzh$5OVS)N$o&U78EBwv^SPx|CJ5xRj+SEMpbUFJnvYUzgbde_ICC&i%QJ6^>iR z9?}c$To0?9a>C1o^`-YB?Z#a#f87T*o{esKh< zmwT_6&H3*XvxW3q#VoVei=nEy!^L9&4;4eZaxWJ{b#Z%&*=qE~VwUml5_mrDxe^)h zi4tgU?pb`jc)A1{f_t>2I^dQPXm9TE66h=3BPGdz50`iWH7%71v!p$mSjY5{OBF-(D1vs;W)%x^O0s22TrBnh^SjwKGpcHy3mtV?S zE3cG2$HdaAfVrj6THJ)vntj7q$Isvmv;jMtnENuihy0kIi$Wm7A_m-vs4k%@B zf%lZMC+?50YW+%CL-#3V&C#nA>L9}PENug%M=5LjyGz>v-p}6QxL=laWItq@V*nr* zbYwezbPRBO;dtM%-|>uNgJY>YxaAJ$jv3vI`2kt4Pj>|O0G?P+$Wy{cW()@n-~ zzdA13)9nL=al$a6m(W&l3H60)f@JyKa>??!qozZ%|7E{w|H}Tc{T=%O`*Zfk>}%~y z?X&H9*4lbMy^|i$o9K0QhtAus+rG1%5vB`|3TuRg(j;lL)L-f(`K88Ef@Bp3i`^n( zOV|uf6f23m@T>5xa9Vg*I3VnhUl3P_^Ta|i%W;?ZrnpypM%-xiSsQD!wLC4|(bnO% zuC&g#PP2})4!8EPb`Yp(yen z@@4s~d>rhsjyhg(>~=(+fT}EYL>z@s!S_0PT9#U7SteRWS^8NzT6~s9mRc4~pP`S} zM_Qk@Zqx>9U2V;5iMGl%!TOu^lJyJgaqDZ=m-tEiXudz+iTCr3ZTHx^*h110+XUNa z=>gje@o#=Dzm%UXZRQ`78}QG`E_t$?B@dB%$Zhy{BK!gVW9^1^Njs~Z)ZWxy)^=!* z@n7+O@mFmR*;d*X$R+aqR=bs#Ysjkfr}UHbrF2SqTiP$}kY-CBsi9O$SO66q-$3yB z4V%6mV5%uhF)=w}qLPWhH>UE9Rv+vR8wq@4iihxV5+)=@V9%V3k$|7OZ6tqJkVx}D zi2JL8HHV$qKjS38-7*rxwlnPR-i((O*zYFxn~B{pvFj!liSJ&+M_t42HDkuzYd`n1 zDdN=_gYUoGPbT)GiCr-_ zu`hMlO(?g209C^lJh1a|)qvZ$As+}BH{^kRVbBb4pT}9yZQP&-X4s$y1{?GhyNPa~ zh8=ofutQ%_G+-Z_*eMhH$izN0v6Cit!o-dPE8k6L*?(XN3~*yxiV632}R31h&0jGLjdK z#R#=e_bmeUZ65*aPFz#t1dCEwh zj1jQIc*02Hd-Y&&!)=LIB(TThEa*3E*27*&*=But`-7!|VYeRGBe94cVDasG#^T%c zjK#O>8H;b%GX~rB6}$DoHkjCYWDzvMguwWQJ&S1Aum@ut!-hSu2V%*C0R=#DA{SRn-&z`9o_UwU`ni4HBv0@WjW@1ZCEWT~ea;Vt0hus`T z{fwlqk@PW= z-bT{PKmt9>2<~S40zHgD-D7p?4RkZeU1PG(cXvz<1-lsJ&IY+tEK%4D?HDJXV22oq zxIKoQdm!y%L2iGrt&y}blGaAj%1BxoN!Un2MiML|IRE&A0b`IqMqqc=XCz)D@x%!1 z+q#X!Wh5<(q`8r#0jaR&afeflLCuV$sgX1>l9V{{x*HowBO_^OBzGA}1H&xkb=Qvv z`TWU7;xv$Ol941DNj)Q}Yb14yq;{M{eBp#R^Mz{}NlhcEVIe$b_9`3Jtg0D# z&+(??h~t1`k7Ju-HN43#am;tjb=>Ee;>dI4!jYjKj-bQiNORP7RCiQzSRIms*#ETu zX8*NB&T(4W#b>Qpb$Bl;|TnqHu1 z>7(^wdRN$s^y@9)(?A2go?cV0tXp-_cH4H-cFlIhcF}ghcE)zfcG$Mhw#~NH_K0nR zEoxhCTVgA+&9+Um4YBpN^@JDecDAt1YfG~=wk6xD+H_k)wh`+s>vii-*6*!f!Tb0p z))VkXe$cwdy34xFy4CuKb%V9Uy2v`iI@vnGI?_7C+TYsA+Qu5Rx~yQZDeKG5FLUegY0d$e8JHf^i+h_+fQ(H3bDZL&5&%hpC~L$v`~Z>_7=LGx;9 zt+mEl0(@!EHCZF-E%l0eQN5s^QBSEKsPCw+sRz|P>Mr<3vsI<)GIh2(Ngb{BS9_{$ z)S&97EekB|BALoaWr)&W>8W&4+QEm4hDwr>pj1_KMOKJ>OTI4uB!4fTkx$7V$nVIn z$p_^<@-F#td6PT?z9dYLv*pq9PxYE$O;+K{^8;3qFwEkzSJy zN_(VT(l%+UM5WbIiL^+XAx)MhNZAqiC^J+VAoZ5IN*yFGd{IbZA7>;{ye-}ouZdU0 zi{b_GjCe}?Kzv7hO*|;>5qF8(#I52Z;s!A)E)pZ+OmT`hNgOMti^Ii1VqdX?=oQn% z#$tkSOSmrlBz!M?C43=#BAgK36W$OG3;TrK!gk?FVS^AABFlv(!c1X`Fi99Iqzl7^ zK|)Y)3(W*wkOgA7C0*28DIukqlB+hAiIyZ+*3asn$f_2WHrZDQy=@8dB6+#(4ckZ| zBCnO7mMUx1c2pmr_i`lJpRhk7UyvKBog9ty?T$YjogA&DE5aip5i5(Tb_R~zjf}uq zx^?;`$0jjJs3TMr8fahHKhu8DZi->+JJ#;DY{wRBraHtrSL~|a&^J4FN^|X%?e(my z^<1Hi&_!P;me?lQb~%2O+sSja8TKFSP1J04ioQx}rWUCyrLcXZx=Foe&-+QVC_MQQ z@dn~`hVzrq+Z$d|}2Af87&hj)w-Mh$d=o=vkT;OMj%+)54cV)RM-X2@JnTW|5aL0^1Bm+(Uq;-AiTp+O zBHKfEK1FKQ+l}OTL^$;V)w~n&Ifl^pX+eV*%oP#3Iq6 z@?;*SVJ8vvyB~2b^RtX1b1=G#%tp5XnT4S<5${94(@{dJRbir3mrTKcLWa@CG_@^y z*CV;8nM=l@JBf@%cNWP(^=!l}^qWmGk!4^KCA9WkNJk(JN0nn_7_y;=_cDwgrL~(P zy$7*BVn4*bl7;Xp>4T&z!pqZiGP%Suw4otacip zSAE1}tfS9}6Il{sBJ&d;BK45fWlU;H>L9C)ER`f6tA)%c**qA$y?f~u_x_R7L z4E+LG0rxqwGl-udeu{V+@e_v8Y7aGyh!GBFEbbTv97Qaft=4ilTXFBAAI??W+nD@j z4reRwO$>Ph{jPDZBYO?;Rm3BRuOJ>qJcNi-6?XvQRp-Uo+D=R3hGOn9=1M%bnJ(N;S_LUmmBX2b!OZ)_(`B1NpO*m&tNc}!88U_G3bveOfF=yls1{k1q|{r@a;S%Phzrgc_Nc1 zV3y;Vn9E=sgRu;97-XYrN)|eIWiqb}OsQ2mlgFUEXEc*XF&N2U1cTui^y4rl4@LQ> zdzn0h$x@TSOdbRfAp@B>fWbWs`ZMUqpf7_y3}BLiNNsvCxhI1j=+Uz~le;nK%HVDW zT^Mv`;X=1gOzy~_1A4sE9-UX)F|W1^+R&uuNWFSNCI?ucILOar9|JG*kQ&l{&ykdY zO_@&4T?Uj&o*6E zdm94OYTvxuzB6Q}uU4`&md2g{{mZodc(6ShyAk9c(Dvxz+H#7Pa~#yUG9#xT7(L}M z-M<)Ldll@f#=_1pxk>xZ1>2^a=Rm$eU-=u%w{k9ke2w=1*pkYR`y+bvu#3-mbNB7T zU5!~@GGzI^IZJZ;A6fos&hmFdme&ng{(@Ob!GxuIF!wLrBizcJJH{I+_Y_ez2 zN78|~b@%_eRe8+vyeL_q4R=W!;vQ2h^xa+34{?tao^Bmq=h3)FCZYW&)HxHgOxMI# z+&$buFv{Q#I!?-~mF~8;99xtbBth6EQk6KSTX)+gkjIq|$!+nPdQsGcL9*=V=BTY5 zwO_Vv5Ee*%E&0|V_Cwk&?GZlBzDlWM&$I{Z3cpPM%-Y1(Mw?8!swL_^evjp*)=A&4 zN30j5yFZn-SvsgA^KB|`$%u~l9->c=7F)&$nPBc@Wd< zr`Am2EiXh{LluDG5ttpeDXE+y3AHiwD#{5c|G1p_*Fd>de+^QvLc77EN==mSu z86%j|pSLQ(GtP+?v!_2BbwX+74H&W_%aI~UkD+`l%?kM)h(3G?sx5_iMbBP=cuz<3 z;9;e@(T!h0z?-O>zt90~_)_!_D4YCd^ciRod2@8|51@CI<`u(3NbjNIk<&?##4pij zp+c42(dR)!{+jlIdgayTbl5WHO3_0leh-xpH7 z{2XSp`kywB#sZwz>wq!n7bv@isVNfw5*of1KL&=nGf-sayQIk)s2r{+YQLPylg0G- zQYabsQuO!*$o>B4f%D+ooTjq!l794W2$e`@Omy-CNhuLBO0&Jm_2UlkmiE#d=`?iv zZMOBc@wV3FZ&Hi@TKq+pw2ty2Fr+EA+0_whbL)BQ^Wr$MrOH_clc~x{WsCN(`mHiu zUd3IKGn8&hZGNeInNJmM!dYRbFkcubGy=<*cP$&W_bqwkZtV|oo#UkVy7Y|HM{4Jk zeenGt#W9^t0ro5Q!}itWI1G5dUFHsu$M}~lRrq0Af&QshO*(D+Rhna62<46ai@y5@ zG(hiY`)gnbdxbq#wDcFS*FAwxxT!ao7E5J6LzUjG3hhavslPx|zZf0%3$*l8Sc}ZS zn{V?dy}F3C{xyvGtQ$I>R2c1c8`Aw1y`FBxyt1QTLjslo(ON&J5iwdDx~$YZ+UGB* z^NZ0rf5A}RjoK~Nt1z1CMo&YC@IqAj8^-#YsPAv+h!aquSx?q!PeoTjh$Sg{2pnNY z^fEZy`DoFvpuRYI{AWo03{6~|2<{irzki1EeT1=(o)uDfvMxI2H|UnzqAQs5aC9e( zBg>ZP+Uvk3M}HolMruco{|=EFVoWG|m;qB~UQ=$WYg~ywQUKiv#5NTKR z5|m6D9IXYVkb@X9>KhsQb=ib>XdTq4d^+0x516fNWx<_UJ3SHI2o0+&pa)o{%9!Zi zzk@R>>V)c421m#J2~Kxfi}iISHTu*IDAE1V=OBCGVNB(niB_1RzAH;{08CeEE0iyk z*dfF2(L@%bd9>FJsGJ4Ro4%p1-$3o}~!g8#b^9vJG#1R-jaeTED zUR)cUbt8@BMDw7G!ne`Xn=rPzMSllo=^kx#D^0Yb@&^NILnT&6`D}Mqpijz%ZA~$S z)Q_IM1&ur}YJ+Ft-;B2W6RPtJ>h>L74>EZ>`pchbH95BGkho0FzS%lc?JNCGW^$SG z3<|e&^tQ~eD(&e}yPB0$sW=!`JV#X6)in=P-2->mtS9t=cD0gel^V_(GNm_LabHiLC@nYlCAWKRK`V`m=NAs1#(DF6!A&CF^Wi=UG| zabiY#<^(XOE-1(^oC@~L9kQ}$hmEyrL@NBy5`Aj+eN)j!J9kq0*lg#ZdwNY_cG%OV zWEVOo!EI#VIRzqjXExT8m{InWsfF24GhjiTJ)Lndw$1_r=&_hcVfLi_>DkV#?1Dl# z;W8BrzH=@X}d<#Rf-be@`B$a3gH`#e<3O>Y;}N)X^N zrqIoaB*~MNos(V24CtAGb6)mDXXZpO)n?|~`C#u|R)T{3smzc&eWDZYbC^Io)K0EJ zi^td3>ZVUD7?%$A)ls?mNYrD{#H?<>eI%w-P;Nt9X1XWyZf z=8qtI_H|4i7(ZsH>B(F#?k6HFQl_hWt-Bm29b3w0>dW?3?8iXmwD+`4T0VU2ucm&> zyLg^_M4lk`ksj6s!VsZ}<(B2BcGL2Ra?*N^)U!;sbh1?EFWRnI8^Z@_YRiQml~y*L zAIb0IOO!3_$3wns?{P>z#Qh|%k~3tVEJ?7mljcf&rDXA%b&&XmNX7ADYtb&87k0Cs z3H?(r*PN^O)svO!+>zKX0}5&M^g(!akiMaZ8^h~_{3VXRKbykQk+NC1`5HEJ-9^7` zLSPgwq|Y=0SI(q;m@96lzchqs;#C%n9kU{X=oLtamtUbRS%}aQ2keEqu=?Xx)0U~= z$30Ls;2&oxduaC*mhrRbH(6kdxzA~(1#BiAK?%!MXir;U?t^F@(Boz)yeK{CbsVzeXi=Rdbd^FM0@E$+8U9lDkz&A#>^F<|K_cXrDCDkdD#Q z?2*WQbPjX*@zlv&p)XzaFcgN{M&D}yDTt3?3T4NtF#jEyiSQdLqTDAWfc!Pe>DAe9 z>jjkAE1pE^qP$`*O#H$Hy6Y}TUVM?hyb6*h$@Cm>$?_@coS#qNH(Exyazl{S4k#ZS z3iYVAr#GN}BvK#!zWBQ)yv&#VT$Cv6M`b5{v!g>NORmt`hrzW>pxwZg#NjO0bzwDy@U#PKAa!2Z<9Oj$ zQXNC*v7afmY+25J!6g2D3_o%JezTPZ(F0fEDND+K)S_Sfni`SEYw$gyJ$D%l`T6EN z+!98%C?6_MDEBEnl)Cbd@+mN8Ei;-3M=P zBh?lviH+mug@wXkvIUkj%`Jae-nTq#DFEx@YW%nSUMTBf#}?D5#wJd01x=hl+eV=_ z)rNFa1E~0VH19#E4&@S7fp$rRPKNI`(clQE`?u&>IQk_i?J+pLb0z4%!%)t@#9r*` z(A0hGJk>ppEtc_g(mA%mT1(v?sCDUE)O&7dRY5G`&Z$Gd_n~xsf3%N?Y>EGzCptYDQU#FM$ zu+muRFlatrc!Mrwu4N&8i8ZG%2s1eQ5*)`Ydu2U-kyZCB+Wuuwlg`mR<_g#8MsOuE z6|vE3@Dtxfzi}(s>+dwW6a0AoNqUyK@}Jap0Cc41 zP^WU6`Y`K%O~-*B&rhLaSaG>|^lmKvPP&fi%56~hrv}iJ@;d5dKU?ww+6P?80-xUC zb$oGi1$tjc)EnKTc1lDY%noDx&3ibRqlqhkeJky;404TIsOs-+{< zkqDLzy!}_OXgFYL8%mG(E=$$ z8YtZ@g`}oZUCAzS;xFRY;>Y6K;>+T*;=|%9alSZJ%n|Pudx&jBm)Jn8A*#ZkFcq#6 zeuSmYN#S+jCE+RIL7`N*UnmeVgn<#^ZXsluFEkbE^3C{qyaQ*+xCIQDsDEi<7s^@O z)9qK|rn7Efano7GHkvdaGO-5@rtzQ}x1D7X*T+>oel>17>vjdyVTLfTI@HAOHL)Qk zHrT`l8BF6nUUi@;aDa*3V`BYHte=VXHL*S>*4xB-0jn^LhwOXC1HC@Ahk<$2b|%&~ z&O9Eql8HGC%&!_ujG+$Kn!+Anto))I2sGFj12fnd16v)B2*z3Oo7j5><|QR2R%~Jh z!(p$Nlo<}AX|x-t!EzYbVpBwe;V^_542OX&FlibLhas%U6gJPqB4rFs6G8R<3ga}m zYVW^iv8*XC8u@WZ6u@WZtmRCb_ zu+W3D83#+47zaz3z+kC3Dgv6uu@WZ6u@WZ6u@WZ6u@WZ6u@WYI4dWjYH4c_AF%Fh6 zVS}ao5DjP=#tJaQSOM1Eq}k2Hx|-PC#_=B}T}*+UO{|lNbu_UKCf44>3Jrl~2giHW6{SYs1wWMU0X>@E{)U}EJ%6vsbgpKJm-V!xZ%ZzdMGVWQVf>{k=JW@5jX*w67c`mdR(mybVpnAxe9-}(68G*gck2u{fu zezAeAGKH-)u*m=3sUSQQ6#3sf6@-U^Vn+jlhB@6GP;MLQ$b90;OANiz?Ing@>Gmie z8{&DCQzrJ2iG7HyZ2p6YCryDTOzgOcePCk8OzfzExs`1O_HPcD;rwSlVfKG=(l(x< zE2Nw@u}=&vNFFa|Z2ofv$z!I#%_jD!f%!>}iDjEumWdf=oqvC15H31&dC53KL@ya@ zU>@?diG5{aUmBR3d~agknb<`W`!>ds;l5MyO^mWT$+w%>voyOeDM&G2#;gh&Uz@wl z+c?WO%P>nXOIwS}QXi~(zFu2NXfxDnZ^RA{=(pkAz}NaG`aAl5FmZSUZX;L#X9dRU zL-n3|8#pD9tXGB80l(S4hf@JZ;Z(pbxHO;Iifwak1-4AvU|V-vYk2dnZ>w%o!2JJ; z^&G9+pEQVkqn(D&afjgLdW%N2Vr{Ngpk=_R{kyf0)>Nyj*)>l6Mg3a+SbbZ4S$+0D zcXfjDfU+1qACABCRRZ#>@(c14@_M;go)eMtHT8 zc{t7@p@6a}PD6h3x{1AJU_QmLvAGK5^l zKg$pdE6>E^0ejlSo-(l~4J@RNj<;7Z7%@Cj@V|MTfa%CM{80wg@S6fG%aFTQ%`~wL zLj!`UVI>P}j6v0-JZ@r!pSz$(G5p*CGyL2Ed&Cg$U+;N{Un~JvD|~8FHT?Mg-@E6* zc(H_GbpGR>2bW^_AQ5yah7S_J3?C$b-D`LVmog;I;EIG-P3#D;it!JDub2W4o7f=} zJ7{7DOl-e_g~;0`X6WgG5P6e@m9O4`zF|-e@-HnCY{3|EfSjm<&4e0kbQwEFyF-T49u%kGqI{BR>ihquu5G|DQ*@4Fw92 z8zyFW!S)A;;RPGmHIwEqCib(5T`gy<{r!I4(8K*cV)!rs%<6`Jfi@&Cyq-DM}bE8brJ$B%T!AHo+> z5=^X?fki?}O#=-nhKUa%8YVtpP%-=<0vm0J7gQ=1RM4IfW>`-F8)4A=$L&p#|4*)O zimkx^<@Tn?c|-gD<1oLW)IP;<7~khL-4}0A^Ca}}`ITm{SPuxgm9fF;Hg1y;|*>Y7*`6N|mrK>vq`hW-J}&_93~x`#KUL=4FU z)iwqeP#T)pT_)DR!2IMwj78Wh!}%Cx?3{_6HL)*D>~j-4V`86~*rz6TI?e)+;U{ql z>|+x<_UW zChOJ^fqp&-tP%K`^oWZYggk}@4eb7JGB{cr%vII;bR!tP@aj0)g_)s95&9Q%#m{Lo zAG5jGK|cU4$={;wK&6Wsn4+%7RM-{Lqy@Erkqa-~pf56YwFmtQqm84L{lJ9*v>kKd zDE1_9CDDh;bof#PqnZu0J2R6Qxw`^9&^sYZQR)y=Uf4pFz{2+ zyTvYe0D(Ri08PH^3U78rx!4~yuezA|{f9IZgkWhF`W5sC^Dr>_c>w%)MWe3PN7?p2YT&~Q7wKYV z@FQNLD=1Vmw}tj%PbWq3kyZ@{ixmC^+Lk@J)P_!Eu41Q&>zJKWGU~kFni&o~NP96q zH3|LR`y8y8$#1lO8_*YCrxE5_7SZj@6`!GJz!l4)Hy_6gp4ZbrTgX;$V)V+BlA&!V z?Yx@V8(pV69!N}$kfECJ0@suKkrNgR_X)0>HEJW*)`-F4aCeowK zqEvZ2Zc|ofQKr4eY|3I5WoNaj)}2~D+-W(`+DN+zw?-^ehdXNXqm*e%S0zF2^aI@c zuu@Kk`yE8-6Zn)g2Tm6_!N}ruuoul0TZwwMKf@PJcV}c|27>_On~kD30(y1#8A z)PwvR{eBE{PtwcGM3Sd;)L7_n5-lAI-h6-hGIPZOx+DW!X%qbpxWt{pI$8>ssq@@E z`U@l_srRE_dq2D0`y-V1jbrxUS5O|Zj@f%B&_~BXI>O8J7;||){gb(trgR?EuOyV9 zZsk9j5mFX)PGUN#v=6##=^St+Qd>Czw~z0bL>f~UE1bHDZpnuLOEZl8oy!IpjluJB zk}?`cNZDoj7+miwIFcZCp_|hos**!nVm16kKVV$=p8f@{B-Se%y%{i6+hepAdCXF- z8m*kkqBWuIn9F@ccTRxXN~4n)RXfp#z?CcyVwAsnf=Lum-yr z9D{-=33Mn_tR$XSzu}5$#o#X=^c54{p*&ELpTcPSpJLW&JLoF#6XdtF4)pv4(o|CG zW2jT90*0oQ?W@3)s$zEOvxyCgei*K{s0^95pr^r)SJK!YQ2-Op9a&I%a*jHgFPyXb zJPRJGD$RpKj=b~-ox{BO&NL?*xR^tqVO*+59{?^1!!hC8u3FIS)lsfwV^)W=%L?=z zSk}ruT%`4KSekV)tltUNR317L{CMs--3U68 zv=zE@Fo5f9U2#iVVV`zKyx=RI0s8fR|Upj`K&oIj!#cJfr4^jD1av;*g-oReZUK1|&u-ZlVKz&ocreD!7>KF7g`YHVb_*DIxeo)_|?*e=5 zt?r3<^eKvf$&ewDGOnsz2MDGuuu)FB(^sw&L)AYvhDZ7qd9d5&gg}Uu8 z_@w=_?FZX8wsW>mZ6Cs??YC@4Z2N65+MbKpp0+)1+XP>^SKCT#i)<0wOxqN=S!Ap& z-8S4d$krFWd3OSPv!KllSI{=JCD{`22An%xfb*X94X{JoXWebxZhg|a+4_)mE!>y8 z3~W~CmS2REZ5?eLY8_zhZS4ww$F`N#Z;iCDHnBFa*0a{MR<>HfRPDBQ6K=%0qFvN3 zfXUjOZpPW5MYZK%!d3*=@=gOI`CKg%OxcEL{k5K27peghV3pQ<0KN7c8~BkF$j#fbWx`n38u+?7Jr)nG!qNR6m7)hTde&R8{F z9j*>i`>Ng5PGvXesLj-dYLc3uR#kOXR*7;;xvu=Ae6M_^e4%^-OO*GNH>LOXMPXwmePFmviMzc_iHJ+h6V}cYzCG z%I@Q7EGI`@YZ4+KN=K!)q$6;7?~BrN($mu8(x%vLJP~Q8GzD%*9xJ6w!=*uR9-uqi zl-x!NN^YrH`K3HnC0&vwBHn^k)=%R1;#cAq;wRz>@jW;-a9G?Y?iRO;Pl}txhs3qw zN^zOEK%6Vi5GTWGEL$8c4vmNdU^k&F+|JWV^ouRTCa|kePpk=7;aEjcxDC4t*Muv= zMOe0-5l+D#!#l!j!a-q=uuIqmdkv4^Z9U83vYsN?bC@RN3%Nq3FcOw`{e_-F7onXH z7Q8~5&{#<3C%|!UJn_9A5${Xk*U|U4kQVX^^jc0+w~~4Zcz*_eKYGnYoP#)<=4~at z$Bsvmi#QH(EMg8KUQ)tmp`3}BjyM`|B;p9f;fTW!ha%pKI0SJp{d+6%M|vaaiP#+x zuOi{`DiZ!~^yz}w8L<;$d&G8#Z4uibwnA))7)A^s1`&OTc-07xSB>y)ygGw-(FdM@ zN@|SZjp(5#NX-b|BEl!57v3YmC!w5(SQoJlA|ANs6Hu;!SPiiXVr9fihz>+6BHk9l z|103s?0|$LcAYwF5*nY`w*uiPD7lESjZ5r_iv#~Ke&1a`zb7_*rUSTJ9lBsMu-g&8z9z4Oh!ziBes!xGL8jOExK|; zQ@kbze%@FI#{{ECHzZWX=O@_t3D3f!ACuWtG_}z4ImGRVhAU`V&}G|6APGBj#SJs4^Iy7AhTRZS zc9jg14420+`p;Wqm|r1-vU_5fG>O3k2LJwI7#5nrUq!Oe5a-RzLX)HixpfHdbNDM><0s~&RU*&2l2RZvTdyYLBjxtdF9$mM+4QCSC zT5noku;yEvYTsy&YQwb}a3r8q?Fy#<2aW%m8p)kyIG2R~_e`8edhvAQ!TO!yuVaWu z1o*>jXRg?r&`O8uS7SbNnUAwO_zVOexD!SU(}{=bw+9JMoa_Wi0cjU#c_}+xN1caJ zO_)SOhs)HO&^cw21r8~L1Q9HoF+%e%;crL2c0QS{+-2~+qzN{`rKC-Q+@$s-kuCaT)eA(B^E*AbdmM|@dCZ<2F)oa zMw7Sy!>b-W3-OH4To*H|{BD&L+P9eK#-KVFls_d2%F*f0<)}@!7n{qG5G~m8k4$UP zV2N3&CY|#SpBnTC_!x7qj=3Km!)oE*r}OgOXdyI_vHEFep2N4-5vbGaYfTetVg{ z?!F?31CsTK_=6#=Lm5{;!UHHr>48IJK*Ay<3lSF}&PObw+F{b7;Y=j=A>&i7$VBpuWRoD9NEq50eID41MA-=`j2re5C$}{Sf;i_Cdtx zLNAmt5dqg-0=|O?_zog;!O+f#oe(=BcG$D{MUq6i;{sp61-^g_e8G<4I-(5`S3Ux+ zd;}GJ6hs+OL=@KTfrWjOJ)|l5p7z-TpNV!e`6xZThcrmQRk;OM<(4;?zU6hq*Qj$Z zY0?na8J4~1wFmJf#1|2FA?~EJ_Cm!xMc40zuk+{jlBNxDQEb7NL(6hhDn%?oEJj>L zTkaz*$UHiJACzzTK3J$s#()CEe8fD&iHM`Zi+#E%hAA$~{?9Uv_R;X0AW6(Wz# z!eg`W*epCY3yf+#sE7|2O-R6taqK@>?sV=EKMC?X))(1_T8s7FOfDgu&KGKd%m3cPR54PCp> zJ^z32xOcq!UXRf=*SFGMInFhw4$)WoVtoXRMOnsz@jSn`4(B>uwB@)C+H9=X8;7%$ z3ik>=;=a7L@b;R89%Sa-L$So3F`=;bT`-m<^aO4=(;!pp>%gMGaHDGAerFR4XwX_{ zrPU0uNOn;1I28KUehY^^&8@L^DgVXb3;wPC**KqJnG36&xV-c8IV|mmrTO$pj!(&V zVD77};~1R^#;_!+jubNrhmqw<4mwO3(pE})J~_31Q;sqrdp0JV%8{N?O$KWIJO zA&Hn!0YYeOS3JQIq*+yIO%)b$-foHe<)JzbW@9B!^In5m(cbUZ7KhF+BlY?LG1u$I zGJ}4l@^koG6KU)m?Dmv66+BTIH*2TGygj`lg185}!Bcz>F^77hY?Zl=W^oyt`{g^^ z2^xX>Qs_0#K`9!IVpY~RG;AKzuc`LyOb^puRDn`CbepTfd`CXfb8HcO!Y}59Gx$=k zt(XgFd?Qtv3UeIlVOl70#nW}6Q|TbGto$!h8_t1$6zybt^GV!t;`ZXUM6qiSUsCj= z4QMfzY9lGVJRB(48>qNhc z&*jvXzpJ{^I4*LtzkKMp2-SLD%&nj0Yp(Is8|}zaqr|R#e@@6?${mleRsuERwECyg zzQy=z48=*B-7Ao06KrI=8*Lb=)yjmV16AF3OqKFQ7DcikZhmB>U!+r{6|}O&M=D0{ ziCE!l;d9}`;a%Zv5GlVbJO|3*o(&HUcMG@E591XJIH_NmXX z0eMF)QnS?y>S;AVbyltM5<3Yp$20G;Mt3q>fi*hOtYQ{7gT_sW89!ls3-RJP#!6$p z@v@O=jKBe9N24hYCTkjHjEJE*7g2-(xGt37rYYu8PYBH zN51gqdsVHUgTVT)?moE=ZV9dpE(yL8d?7d*n(aCTTLl{g8C z6O!$p^sByrFo#DKUO-dLGkNSK0Ar#d{^y#k?z|;}@|A9$I8wTXpbX4?W(24IE#)ho zR3zKk`OqsKlw?PFFB0RE>^$BJD8m7aGG8!?GG8!?GG8z{=!rB@d5SGQQ5hb$1iN}Z z6q^rK%R`xo@$q()yM@&QS&+%eDbRi!)pAVhOhtB3hXFMoDi{>UVAwffK?(*z1+?LPl)_f>8ANn{S z+L8}_ln-srhd#`QHlZ!v;aN-k-_)rTjW0f3`!yf(6eip}g$WcbOw@n6cHYw|{!JfL zG)nZ#pYx$#@}blD&?yi4uN8ek?N{c1R1tPpL)gN6(JaV^=I2B6JSfACpXchju z9y^b}B&~El6rEKQAz-8AT{l*Sm!w7YQ6>Jn4!64=;V(gZG9S9j_m4IKx8eERqHO={ zHZ-5x5D&^s&<1;8f;K208ki3a@Su3xeRLs1byB?T?I!=G!7LgI3U06GL)Sdx9~`gd zbNnkG`ZFK;BOm%bAG(qcMS0~}zpkerVH_Fl9siOw=)l%Kb=RF4YLZtI*7II4(F-Pc zL8cds_X0dbi0aiE8wHse>bWS&P|tb+7QE3wW4z#LFBt6wqr70G7eE1HG`1)20PsvF zW~dQfCn#Wy`Wxm2P{0^<0Yi2a4EBOSUNF!L26#b#26y^@hU({a>gxqhctIa8=p*hw4P@pS{NAbF7^Y)yjuz=0i0+C{>FtOcF9uwdlfx(d+qq&W(=$ z>`3_>=j21LDTq0`oh5d`Y^pw;D%n<-%I@x_*&(tsfw9c zYiqZ)z4kusP3wR*N^7c>@STq=^IwRJ4lIIr>}KH$f#D){v5ClC^yfnI;ycz@SLkWz zkI?7AM?!Oh$6081C>(qtvX77YSYS6xXvI;U&u$is^&H&I835sOc6~b52UPowKJEc( z9t005s4t7^Jprn3q)!J!_?)p*4nt;70fV4^lRgu-E;O?kABP>M-+?Xt74b8x7&s_> zo2gA-gjd~ZEU2Y-5Vzqwz~gE;w2JLig4ku{;!I3S74wMgeAu#^Mi1k(d_u`XnL?If zU%j@ro^JO9F=$V5d{sL@w}dvPUi~WizH)v^mpK907AShoIpYRHF(&VuZtAA`I~ zJvbKUWx9{QWV9dQetgcwY{6UA^lxFaMx>mc}?eSb@BbS({` zwi$G}2y&`gQi-1MrY=g*R%KXT=``_HthXMkg{Tpiqwy^*?2Td#P}!m!>J_qvqAoQF zq@4o;tY^W|&QiOs>gX{0`onO;N2EGa`2n^K=hqJWe z5U;o|&@fOK%$hl>6LX}8b0edj+V*X5SiX6OGyS~E@qet{g60VbG>+W2%%807!3p~T zmq$I^D+a<-wKu}acevH_PTSQ7Y6`^icM>tHdA*nR9YagCcTn07OefRjJ;;N0W;KCRg@(Ti*wVL3n3oEpS?VijExTzmY2hK%u6t^``;Z=M4i#TF zVYIYKCZS{fNxGBc1d+B&)H6 zTKhpo^o2sy`zX9w57C*1oQWrC5DG;Z2dEVnzt)|y+90@9SHdhAh_v|r$X>h^F~3fK zvRA#et71m&7cbpE1tLp`|u&COJxFudt!sR5{^e<@L{I)HwyeL_pPvb0gu z<_Lo5^aXqIy&zs1EdgJ;K9{DUUM=H-*!3-jvw!;sF~7PW5~1z)#Qf|moc-IYNMpbD z!AME)qPIE*>CVO{;@%^MB{{DXbIWi1@VgMDjvEYjl<7H{g+iyXb9Tc$aJ`3iVKlb< zdnH6dNtQQ#PzJ5x-@~i5M(k_9%mdykF)!%L5>h9MdH5iUUgbAjZJ^1^ zBgR}5PPpnOVh*bA*pIJ{84p>fl|p}l^ZfPDATX3if+y`(U>uqpdJ3j0~Rtp76PoxJMr>raOu(8JbRh%6Mo#Nso&Ih>r3^g^au4~>MTF};%8so-Dh79U&MWvGmC!v1iq~pfQ$avNz))+9I?X<-p#$^T_4WL3BOsZ~1hO zI^4{9OYbbus$8t;7vt+o@t`e2yBZ-D)tPpl;{?r;5W6m5wzi6jIi?(6kxikF=kZl5 znF?~XS>IC$B+jzdN>neM$LpGB#ryi}7#XyOXoGkkK*!D_%^`}pz-jJE^@OgZ0ic#K zLPF2KfZMVn^ch=eZl67Nkgo?XiSxKGgRy3DiG1uZ?j%`aj_-%AuDwYIxt00W(GaA| z@?8?QnE~$F(G zFY7FN({Ae%ybM@j&9`P!?r~f*wwtYr(kt*DzZ_|RwD2=6JLmPF zQBBMFL|6aPathn3jFvOSRE4yh=8DZ5Lh21IC(%(6jb69ZN~L$qDd89=w9EkB9kuf1 z`Y@x*YcrnLA&UG0&+Wckp524b^@%IslJH_8B7P+=#s^ z;yk!szh7&1SIjwNDc_OCE}C#IgsDh*RiW$?X+2Xik~8}B?QOr$Wtq~~&87QGYaig2 z{XQN21Ep=d(|d&)e6!urRcB^zmKu1rBbMe)IxV{ff2O-6j~@of`Q~3V?K*1AKY=RV z1T~+f)LUGGi|O6J+5R^=1bfSHdu)6yzLp=FJ!C67&`r9;UR7Bd&Cy!dq47M~oPA>r zO+YPJmb<#S^d1W<8O!tqFOEW zpxAXwK;7A=>2tQzo)Wte>HHe5znIsBF}>Jj#XRIbUJbRNURUAQIxTifm-9H7g4=l1 zy|IgO;ijA*LBku8|0k6~lgYIE1wsRS4{4=+c$FPyJ{VjTKN5_^<*;zV1n$Sy*rS0U z^!r^N80LVv!~c@v=l9xqI!E$p9Le8>@2E3jN7cskNN zQi}Cjg+2?eUTi%^DJYfi0RW((4)u1JWIP-|`8|G!UN9zp_o)3k>;;*PXQ=v<1s zj&4*)eD?UByHRa1&p*LSoW?X9>9G9g#ctLcY&VG3qhu_7jC^nX0W3Tm%HrN)L+vNF z^XL>wtW1r2bOF_flPM!gd?#4{A9NNYGAGIN@!w z+u>Pl+kA~Y*8c;q3|gtjurl|b^QagSRU`f$F3X!;oXVG1HB0>LeBj^WO!3cjIytrM zTmD3Fnl!QBut(D1tn#V6eBR_PpVQ;?>X;-dRprFQQhTQUzo|eKP<<@4MW9XjzJ#g< zP@_GqW_Rs8R5+kywQ`c^CAGmlGaa6C+H$q>dM=PVI!xCb3 zb#MatZc}v*;qM0RJD^s1nqHCVm(-^k7m2$}4L^alrfuw|9e2NM7D6Yo z=o0LdQ=Cdw&}-oUY+_AxabrEy{lMD1Mk6ZW%kH2%{&#diCssmF_zi=ly%Xvq5VM^F zB{NKyQs-wB=wd1zi!a%)i{DZ|U~W)Xp!tSVI0C9CxO@H~Zta&~-KVF~*7EH3DYWDu z|B9YQVl00{_L5!m7-snA#P=fT$o~D0Q^OjdT35mb4>*JBNIXfTfm(jIX|;Zi&!7U-nd4IB zXey|s`Q-acx^nAvXR*b-c;&q>`{jX1%Dy>V7Wz;q-a&rt1o6EmgD0Mc=^B64E=6Od zET)Rv_eXF1#&8paflHWxBA&e2Y$c2Ao6B->A?(PKdUTWRkIobQIRUm8?1 z+}n5S4vV=jaw9_1H)>-krlA^P6apOeN5>52^w=Z#<}qXj(to)I`OG z4Pg&9{y$_w_X`uc)r0Rk13k1)P%KU*z{^ z`Ta?LPs;BJn%7*Fp&iXtA-^yNoBL@GVv5-%&fm!I*L0(~su%N#0O9>Lw^3>fHOaq9 ztX9%{E!5eZH(RPzT8uo*>K{v*T*Qa?jen@NP(?+Xl zp0kpu>Zdz8*I0QJ>s`x}gu~Ylo;8<>3w*6LV-93lcb!sQ?p{jZN&Ld+ z3`Cb+)G13ZSrp2kJSVev)j_e=!v!J{r(q&ilg?!7`XM@*GZJeHbTW)n>p^PL>JQkq zJU#Lr^hw*7-R`@X1bIFnO}27vAzTg2pKRb~h?}3T5g0i$2^4|CT#*9i7Q6&OeC%Mel=m z*>dO7_-wxVNEG{e)p-3nn})y3dC8xs_ zoT-lUhW9yWO{&jSts@OdQ2u9VAh2b)8uqqtf|{rX5>3Hzs4b&7{lVV#Y|7$>gORNr z8keQqHRpsHoT?c#o*SGwfDW;n`HzHeJB%f~{37NCL6nH?YUdmOrd8b#+jT?n1$zN) z%i%A)MVFXb6RGqjRoiqA<;vaQs_aW+*vgVn#~Wa8YT=+|J-+4tQS62ci$SRc#9Ry| zUckKn|JGs4Ak|Hyk-b&_oF+jvNX}i_~&b|*$;C;5K^YsLDIv++8(2depUZcU!V`w z8$w(0&pn^WNbQ@@+n#~y@a*mKy7<^fP;u5XQdwKWIDqpH7xQnu(U`0^sn%I^asBbY zFkfwYs*{Snvxn%~4z~zSTPUeUD{+d^v)q&He<=4+VEYL5IL-K9wB!V@XWRpag7;#C zu-(?SJr*|?`WH|T&8_VzTJ-aV=}& zxKO?B+%ND<7Ml(13U>YfYa_AbT*vOy`(-Ccu)^`AO z=1?OZX`S{GWRJleX*@Ki!%p20yUXnq%3~XqY!CnHX=>IUeZajw7`z5o5Qckb((`+~ zFfmQ2Jm-|$obwR-{+;5O`p#j?#n!Rdb0KEaJt6D9t0*!vo=%D1YBZCJPJfdYJ`BJ5 ztF(o&_6J=DwhTEf%WlvIV-Z)Wq6%RM^zrQy^N{J-*=cRCQH@ZhgBh2HSIm{ed_89D}*Cfs^7Ozxa#P*Bh*-djeO=fp-Thf}9Ip3u6 zXoN~R)P||?B&}kq6CGfRwUC8YWtlHX>nPR@x)!_B1+l6r(KKwpV{9wh!%0(HXf!^r z)O?zXq$zcrayW@5$zF6`7bMaA7d7PUXg|{e&`dj(2dMVim^H%cH||NpEp6u;l?|VT4k;j zbHY8?>R3O~t~XUJx655Fj*W@4kQ)Au(r}&^Uu$ff#5?Y}&59o|lsnJTe7Gy80)11V zJp2`Af7yHA!rZWdR+ll*n`cVUf-#scR8Km88PQoM#cte6-e2{k1ve0dUWEdGg8KFo zbo8OwLw+7(EQcGy-Lf`G7-tu^KX+zoKL$H`?S<@yd@<^>dephj_4NxaFOE<9+-Z67 z2A+y#`k%9aLqNb-2?MQh7fhWNHp<7ps>wZl z8jUE)-e07}OpTvtXbt3DcekCFkKnG)cF%A|yobkScxnD%{)EKU?p|zN zeXmjZo5-ZLi`p>ty+VUZ!;d*j8gHXYn9;EdN59>51O3r>Q_S1e@}n^KY^>X2E{~n! zeeF#QxWmND-h#-pT~w@(mN8<@ZepEz9xFa8L(Fx{@;ULVG`lQ5s9KBN%8#J+Tgw&m z>^{r`Qb3}}$|xI)i{h^&pG(DgXe%VbZY$sr(491~t14cjHS*&NsiS zSe!2`y@o-xi1?Z?kB=NapelbLHno|yR6~s@x7D7I+t&jUvTG`i1@EJ#zwt*e(Rx&_ zGAdJ#tB72SNK|cSXo#vH6_QrjgFZ%!Rleux1S+q9J>mb-+N8sL)n221*=kfylR>Jx zEK@q={Fp6klew}sc}>-kru5)MJ-9K6HL`v#6{V7s|>Lpr*QYJNX6a~U=L7ejMH1GTck&UIXCrSA?lzI%|3flXg(9rSPI;mtog(AeMG zys8Wnx69gobBOnL*|YY5v36}*z7#d&KOr@=Z~?dZ-C}OE5c7q97sbE9?(P_|@{Lll zx@uaR%2q9p*3gVE2Tcs}9FKHCtDSFWItb@hXILW>SSU2ddOHXQM_#*%!RFsxz3ZUo!qU2hK+HS?7K?G-@#|pVhXS3 z&n8fPrs^1u^0*QX;}DVQR(cG{u`G94valsrlum6?j7r}{YRsl>OR!MUrUZf$eXV_Gbzbpn59(irlX=}A?qyWbo(ithuLh6k zL&CY*(%{3Pj9}I9g-El|r~V}MQ|Pt8HCOj_pi$^bWSL%2zb~eIIE(qkV#e|oB<6s- z34zqkv-X?nC3{q)q}^02rr!7WT9Zl=S4jiIDwr=P&Pwx=;<|$v+q8ub|FLbWu)p*VDUvPHi2cWpy~u z2g$02!ZfZ(xilQl=L`MBJnJy`hVLnh-OVauw_qujH%1Q5d)Y2t?3UDE7R3!>zVtIM zl-#z}{tCj|UuL%&%*<97B$iv^tKi4nTLN@#GnSIZWuyeBxB6;vJF$sd_COlVXVdB` z^sB?oSm?%H7b_p_ARVoY<(BbXZ5_&*5rc)bcooirdl(Sc0#l#fk>K{O3K`rww@v^omT2Ed1-pehJ7N-x?L?Z^LzSxz*h@hN# zv>s_tstV;IUrHrHBQ;W@y+@6^ zCEkh4c-xuDcRO^uB=zTbE8te7=l|zX)xd0I0GqE3*H=e0a)W0pDtCT z3vtNvJ-7fs5!f#xC7kp{5Ir16w<{s(xU2b;gZW3IU&K-E%6jZQ{%*VsX|3Y!@Pny1 zyEGNZ(u!n`_iy7(1}5Ww`CqYHgyw|?hZ=+m1W*1O6WEi12mF^HMd}PT7c-o0PCO(@ zeP=JX$N2j|zm;trvRLSMJF6n}SAA~I&9Cl0$_Elvb+7pH&X+UlxIV?b!dkTgbD=Yz z%zq*A#tTw(Ylm`i`lw(h41c~~s3+W%eS&5&HTu!VOwB_y>I=qy;}j6fIG;P}4LHZQ zi*9?48Ho00-lVp$Zybk|+1scD$7o%rMqh#2O=;LysHHV@{$C))X(8LHdbAsJvSqoa zp*_}d49jTjH*oXE(RKFYJ3;F{g&+GX`AWMsJd>`adS7#_^J&}LOtWbs{3v@ieY6dJ z{}0v$mO=8Ju4}oRJN*x9gz}QMj``LK6WU@^W8X(@;AZ)gB)n(+fby(E4{k@chtqr< zC@Hfw-N)45m%iKqYeiQ<%+DoYrz5Bs$Ve%M0OqsOT^kK77#sHh8~;}YBekR>Tpq?q zid5q1b|JX~G_SSuaRCK0{Ddoql8LyO!OVFU-!- zm=&Dlbh`955>`SYnt6Z4Sjc!@f-SEynp3wo;8IlLZ8V*S?&nBb2`Bq`ssrk%ap-f} zR&z4_2N6pzl(a<_j4k&+w#b69MHY;Gg&I7qmuV|^LAG3z*m6x`pXD11Tdsv{xiYck z%EXo{6I(7zY`HA4<$}Z(d4u+033Y%zcv`PVBfe9qez_h&lil_mvOQ{yUWi^EqZilK zQmyY*CI52qzl<6@s9JfidTZ)s2BC?x_xrzKfNNayk#c1yjs%%V}*rdvD3SEYM z3As74<>ttinmCO#*Ug^C7i2K_pH2v&HHa`JFAlS@JteerL+>%kn!T=anB-XRVyv z>-pP=U2FMmCBKqqe+w#mM3sqoK&%?e@BNf|M5Wv-H)Z~Gv68&|CGY+eu}PL+5oPI5 z6mx?7ihLn|9h!DTH7#68tSZWH1^F#cUmsCNXx&j2@4vz}7C6(6sxpP8QCQLttTW

8vOs9ttHbf#-%6!gkDbzA{E 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 BBa#3B delta 178354 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 XX7B0qw{Xh|BaO*{mIatvnV16r81U$k diff --git a/cmd/generate_changelog/internal/changelog/generator.go b/cmd/generate_changelog/internal/changelog/generator.go index 83ef51eb..20e6e32b 100644 --- a/cmd/generate_changelog/internal/changelog/generator.go +++ b/cmd/generate_changelog/internal/changelog/generator.go @@ -82,8 +82,8 @@ func (g *Generator) collectData() error { if cachedTag != "" { // Get the current latest tag from git currentTag, err := g.gitWalker.GetLatestTag() - if err == nil && currentTag == cachedTag { - // Same tag - load cached data and walk commits since tag for "Unreleased" + if err == nil { + // Load cached data - we can use it even if there are new tags cachedVersions, err := g.cache.GetVersions() if err == nil && len(cachedVersions) > 0 { g.versions = cachedVersions @@ -97,7 +97,25 @@ func (g *Generator) collectData() error { } } - // Walk commits since the latest tag to get new unreleased commits + // If we have new tags since cache, process the new versions only + if currentTag != cachedTag { + fmt.Fprintf(os.Stderr, "Processing new versions since %s...\n", cachedTag) + newVersions, err := g.gitWalker.WalkHistorySinceTag(cachedTag) + if err != nil { + fmt.Fprintf(os.Stderr, "Warning: Failed to walk history since tag %s: %v\n", cachedTag, err) + } else { + // Merge new versions into cached versions (only add if not already cached) + for name, version := range newVersions { + if name != "Unreleased" { // Handle Unreleased separately + if _, exists := g.versions[name]; !exists { + g.versions[name] = version + } + } + } + } + } + + // Always update Unreleased section with latest commits unreleasedVersion, err := g.gitWalker.WalkCommitsSinceTag(currentTag) if err != nil { fmt.Fprintf(os.Stderr, "Warning: Failed to walk commits since tag %s: %v\n", currentTag, err) @@ -110,6 +128,29 @@ func (g *Generator) collectData() error { g.versions["Unreleased"] = unreleasedVersion } + // Save any new versions to cache (after potential AI processing) + if currentTag != cachedTag { + for _, version := range g.versions { + // Skip versions that were already cached + if version.Name != "Unreleased" { + if err := g.cache.SaveVersion(version); err != nil { + fmt.Fprintf(os.Stderr, "Warning: Failed to save version to cache: %v\n", err) + } + + for _, commit := range version.Commits { + if err := g.cache.SaveCommit(commit, version.Name); err != nil { + fmt.Fprintf(os.Stderr, "Warning: Failed to save commit to cache: %v\n", err) + } + } + } + } + + // Update the last processed tag + if err := g.cache.SetLastProcessedTag(currentTag); err != nil { + fmt.Fprintf(os.Stderr, "Warning: Failed to update last processed tag: %v\n", err) + } + } + return nil } } @@ -298,6 +339,7 @@ func (g *Generator) formatVersion(version *git.Version) string { } } + // For released versions, if we have cached AI summary, use it! if version.Name != "Unreleased" && version.AISummary != "" { fmt.Fprintf(os.Stderr, "✅ %s already summarized (skipping)\n", version.Name) sb.WriteString(version.AISummary) @@ -529,8 +571,6 @@ func normalizeLineEndings(content string) string { } func (g *Generator) formatCommitMessage(message string) string { - prefixes := []string{"fix:", "feat:", "docs:", "style:", "refactor:", - "test:", "chore:", "perf:", "ci:", "build:", "revert:", "# docs:"} strings_to_remove := []string{ "### CHANGES\n", "## CHANGES\n", "# CHANGES\n", "...\n", "---\n", "## Changes\n", "## Change", @@ -543,13 +583,6 @@ func (g *Generator) formatCommitMessage(message string) string { // No hard tabs message = strings.ReplaceAll(message, "\t", " ") - for _, prefix := range prefixes { - if strings.HasPrefix(strings.ToLower(message), prefix) { - message = strings.TrimSpace(message[len(prefix):]) - break - } - } - if len(message) > 0 { message = strings.ToUpper(message[:1]) + message[1:] } diff --git a/cmd/generate_changelog/internal/changelog/summarize.go b/cmd/generate_changelog/internal/changelog/summarize.go index 93f8558b..0f0528ee 100644 --- a/cmd/generate_changelog/internal/changelog/summarize.go +++ b/cmd/generate_changelog/internal/changelog/summarize.go @@ -10,6 +10,39 @@ import ( const DefaultSummarizeModel = "claude-sonnet-4-20250514" const MinContentLength = 256 // Minimum content length to consider for summarization +const prompt = ` +# ROLE +You are an expert Technical Writer specializing in creating clear, concise, +and professional release notes from raw Git commit logs. + +# TASK +Your goal is to transform a provided block of Git commit logs into a clean, +human-readable changelog summary. You will identify the most important changes, +format them as a bulleted list, and preserve the associated Pull Request (PR) +information. + +# INSTRUCTIONS: +Follow these steps in order: +1. Deeply analyze the input. You will be given a block of text containing PR + information and commit log messages. Carefully read through the logs + to identify individual commits and their descriptions. +2. Identify Key Changes: Focus on commits that represent significant changes, + such as new features ("feat"), bug fixes ("fix"), performance improvements ("perf"), + or breaking changes ("BREAKING CHANGE"). +3. Select the Top 5: From the identified key changes, select a maximum of the five + (5) most impactful ones to include in the summary. + If there are five or fewer total changes, include all of them. +4. Format the Output: + - Where you see a PR header, include the PR header verbatim. NO CHANGES. + **This is a critical rule: Do not modify the PR header, as it contains + important links.** What follow the PR header are the related changes. + - Do not add any additional text or preamble. Begin directly with the output. + - Use bullet points for each key change. Starting each point with a hyphen ("-"). + - Ensure that the summary is concise and focused on the main changes. + - The summary should be in American English (en-US), using proper grammar and punctuation. +5. If the content is too brief or you do not see any PR headers, return the content as is. +` + // getSummarizeModel returns the model to use for AI summarization func getSummarizeModel() string { if model := os.Getenv("FABRIC_CHANGELOG_SUMMARIZE_MODEL"); model != "" { @@ -30,17 +63,6 @@ func SummarizeVersionContent(content string) (string, error) { model := getSummarizeModel() - prompt := `Summarize the changes extracted from Git commit logs in a concise, professional way. -Pay particular attention to the following rules: -- Preserve the PR headers verbatim to your summary. -- I REPEAT: Do not change the PR headers in any way. They contain links to the PRs and Author Profiles. -- Use bullet points for lists and key changes (rendered using "-") -- Focus on the main changes and improvements. -- Avoid unnecessary details or preamble. -- Keep it under 800 characters. -- Be brief. List only the 5 most important changes along with the PR information which should be kept intact. -- If the content is too brief or you do not see any PR headers, return the content as is.` - cmd := exec.Command("fabric", "-m", model, prompt) cmd.Stdin = strings.NewReader(content) diff --git a/cmd/generate_changelog/internal/git/walker.go b/cmd/generate_changelog/internal/git/walker.go index 693753f0..abf9a2fb 100644 --- a/cmd/generate_changelog/internal/git/walker.go +++ b/cmd/generate_changelog/internal/git/walker.go @@ -5,6 +5,7 @@ import ( "regexp" "strconv" "strings" + "time" "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/plumbing" @@ -280,6 +281,97 @@ func parseGitHubURL(url string) (owner, repo string) { return "", "" } +// WalkHistorySinceTag walks git history from HEAD down to (but not including) the specified tag +// and returns any version commits found along the way +func (w *Walker) WalkHistorySinceTag(sinceTag string) (map[string]*Version, error) { + // Get the commit SHA for the sinceTag + tagRef, err := w.repo.Tag(sinceTag) + if err != nil { + return nil, fmt.Errorf("failed to get tag %s: %w", sinceTag, err) + } + + tagCommit, err := w.repo.CommitObject(tagRef.Hash()) + if err != nil { + return nil, fmt.Errorf("failed to get commit for tag %s: %w", sinceTag, err) + } + + // Get HEAD reference + ref, err := w.repo.Head() + if err != nil { + return nil, fmt.Errorf("failed to get HEAD: %w", err) + } + + // Walk from HEAD down to the tag commit (excluding it) + commitIter, err := w.repo.Log(&git.LogOptions{ + From: ref.Hash(), + Order: git.LogOrderCommitterTime, + }) + if err != nil { + return nil, fmt.Errorf("failed to create commit iterator: %w", err) + } + defer commitIter.Close() + + versions := make(map[string]*Version) + currentVersion := "Unreleased" + + err = commitIter.ForEach(func(c *object.Commit) error { + // Stop when we reach the tag commit + if c.Hash == tagCommit.Hash { + return nil + } + + commit := &Commit{ + SHA: c.Hash.String(), + Message: strings.TrimSpace(c.Message), + Author: c.Author.Name, + Email: c.Author.Email, + Date: c.Author.When, + IsMerge: len(c.ParentHashes) > 1, + } + + // Check for version pattern + if matches := versionPattern.FindStringSubmatch(commit.Message); len(matches) > 1 { + commit.IsVersion = true + commit.Version = matches[1] + currentVersion = commit.Version + + if _, exists := versions[currentVersion]; !exists { + versions[currentVersion] = &Version{ + Name: currentVersion, + Date: commit.Date, + CommitSHA: commit.SHA, + Commits: []*Commit{}, + } + } + return nil + } + + // Check for PR merge pattern + if commit.IsMerge { + if matches := prPattern.FindStringSubmatch(commit.Message); len(matches) > 1 { + if prNumber, err := strconv.Atoi(matches[1]); err == nil { + commit.PRNumber = prNumber + } + } + } + + // Add commit to current version + if _, exists := versions[currentVersion]; !exists { + versions[currentVersion] = &Version{ + Name: currentVersion, + Date: time.Time{}, // Zero value, will be set by version commit + CommitSHA: "", + Commits: []*Commit{}, + } + } + + versions[currentVersion].Commits = append(versions[currentVersion].Commits, commit) + return nil + }) + + return versions, err +} + func dedupInts(ints []int) []int { seen := make(map[int]bool) result := []int{} diff --git a/internal/core/plugin_registry.go b/internal/core/plugin_registry.go index c4131cd0..247dcd08 100644 --- a/internal/core/plugin_registry.go +++ b/internal/core/plugin_registry.go @@ -260,6 +260,19 @@ func (o *PluginRegistry) Configure() (err error) { o.ConfigureVendors() _ = o.Defaults.Configure() _ = o.PatternsLoader.Configure() + _ = o.CustomPatterns.Configure() + + // Refresh the database custom patterns directory after custom patterns plugin is configured + customPatternsDir := os.Getenv("CUSTOM_PATTERNS_DIRECTORY") + if customPatternsDir != "" { + // Expand home directory if needed + if strings.HasPrefix(customPatternsDir, "~/") { + if homeDir, err := os.UserHomeDir(); err == nil { + customPatternsDir = filepath.Join(homeDir, customPatternsDir[2:]) + } + } + o.Db.Patterns.CustomPatternsDir = customPatternsDir + } //YouTube and Jina are not mandatory, so ignore not configured error _ = o.YouTube.Configure() diff --git a/internal/plugins/db/fsdb/sessions.go b/internal/plugins/db/fsdb/sessions.go index 8c4dc763..53649742 100644 --- a/internal/plugins/db/fsdb/sessions.go +++ b/internal/plugins/db/fsdb/sessions.go @@ -86,9 +86,10 @@ func (o *Session) String() (ret string) { ret += fmt.Sprintf("\n--- \n[%v]\n%v", message.Role, message.Content) if message.MultiContent != nil { for _, part := range message.MultiContent { - if part.Type == chat.ChatMessagePartTypeImageURL { + switch part.Type { + case chat.ChatMessagePartTypeImageURL: ret += fmt.Sprintf("\n%v: %v", part.Type, *part.ImageURL) - } else if part.Type == chat.ChatMessagePartTypeText { + case chat.ChatMessagePartTypeText: ret += fmt.Sprintf("\n%v: %v", part.Type, part.Text) } } diff --git a/internal/tools/patterns_loader.go b/internal/tools/patterns_loader.go index b9a43841..0c162e20 100644 --- a/internal/tools/patterns_loader.go +++ b/internal/tools/patterns_loader.go @@ -4,6 +4,8 @@ import ( "fmt" "os" "path/filepath" + "sort" + "strings" "github.com/danielmiessler/fabric/internal/plugins" "github.com/danielmiessler/fabric/internal/plugins/db/fsdb" @@ -107,6 +109,12 @@ func (o *PatternsLoader) PopulateDB() (err error) { } fmt.Printf("✅ Successfully downloaded and installed patterns to %s\n", o.Patterns.Dir) + + // Create the unique patterns file after patterns are successfully moved + if err = o.createUniquePatternsFile(); err != nil { + return fmt.Errorf("failed to create unique patterns file: %w", err) + } + return } @@ -301,3 +309,57 @@ func (o *PatternsLoader) countPatternsInDirectory(dir string) (int, error) { return patternCount, nil } + +// createUniquePatternsFile creates the unique_patterns.txt file with all pattern names +func (o *PatternsLoader) createUniquePatternsFile() (err error) { + // Read patterns from the main patterns directory + entries, err := os.ReadDir(o.Patterns.Dir) + if err != nil { + return fmt.Errorf("failed to read patterns directory: %w", err) + } + + patternNamesMap := make(map[string]bool) // Use map to avoid duplicates + + // Add patterns from main directory + for _, entry := range entries { + if entry.IsDir() { + patternNamesMap[entry.Name()] = true + } + } + + // Add patterns from custom patterns directory if it exists + if o.Patterns.CustomPatternsDir != "" { + if customEntries, customErr := os.ReadDir(o.Patterns.CustomPatternsDir); customErr == nil { + for _, entry := range customEntries { + if entry.IsDir() { + patternNamesMap[entry.Name()] = true + } + } + fmt.Printf("📂 Also included patterns from custom directory: %s\n", o.Patterns.CustomPatternsDir) + } else { + fmt.Printf("Warning: Could not read custom patterns directory %s: %v\n", o.Patterns.CustomPatternsDir, customErr) + } + } + + if len(patternNamesMap) == 0 { + return fmt.Errorf("no patterns found in directory %s", o.Patterns.Dir) + } + + // Convert map to sorted slice + var patternNames []string + for name := range patternNamesMap { + patternNames = append(patternNames, name) + } + + // Sort patterns alphabetically for consistent output + sort.Strings(patternNames) + + // Join pattern names with newlines + content := strings.Join(patternNames, "\n") + "\n" + if err = os.WriteFile(o.Patterns.UniquePatternsFilePath, []byte(content), 0644); err != nil { + return fmt.Errorf("failed to write unique patterns file: %w", err) + } + + fmt.Printf("📝 Created unique patterns file with %d patterns\n", len(patternNames)) + return nil +}