Commit Graph

431 Commits

Author SHA1 Message Date
Kazuki Yamada
0aef80b7e3 feat(shared): Support decimal values in size parsing
Allow decimal size values like '2.5mb' or '1.5kb' in parseHumanSizeToBytes.
This enables more flexible size configuration for split output.
2025-12-21 18:53:05 +09:00
Kazuki Yamada
66f0fc0f17 refactor(core): Extract inner functions from generateSplitOutputParts
- Move makeChunkConfig and renderGroups to module level for better readability
- Add GenerateOutputFn type alias using typeof generateOutput
- Add comment explaining O(N²) complexity and why it's acceptable
- Fix test mock property names to match actual GitDiffResult/GitLogResult types
- Update integration tests to use produceOutput instead of individual functions
2025-12-21 18:39:26 +09:00
Kazuki Yamada
1ed382b9bf test(core): Add produceOutput unit tests
Cover both single and split output modes:
- Single output: generate, write, clipboard
- Split output: multiple file writes, no clipboard
- Git diff/log passthrough
- Progress callback invocations
2025-12-21 16:33:21 +09:00
Kazuki Yamada
3d75bfaaa7 refactor(core): Extract output generation logic from packager
Move split/single output generation and writing logic to
packager/produceOutput.ts to keep packager.ts focused
on the high-level orchestration flow.

- Create produceOutput module handling both output modes
- Simplify packager.ts from 227 to 181 lines
- Update related tests to use new dependency structure
2025-12-21 16:20:10 +09:00
Kazuki Yamada
5cb8939b58 test(cli): Add generateSplitOutputParts error case tests
Cover error scenarios:
- Single root entry exceeding maxBytesPerPart
- Invalid maxBytesPerPart values (0, negative)
- Empty files array returning empty result
2025-12-21 14:46:57 +09:00
Kazuki Yamada
282eeffc99 fix(cli): Address additional PR review comments
- Add test for sizeParse overflow case
- Use RepomixProgressCallback type in outputSplit.ts for consistency
- Improve configuration.md description for splitOutput option
2025-12-21 14:25:41 +09:00
Dango233
24b38a203b docs(cli): Document --split-output
Add the new split output flag to README and website docs, including examples and the config option.
2025-12-18 02:54:54 -05:00
Dango233
a34215ef35 feat(cli): Add --split-output option
Adds a size-based output splitter via --split-output (kb/mb) and writes numbered parts without splitting within a top-level folder.

Also updates metrics aggregation for multi-part output and adds unit tests.
2025-12-18 02:15:24 -05:00
Kazuki Yamada
cdae79d115 fix(file): Replace strip-comments with @repomix/strip-comments
Replace the original strip-comments package with @repomix/strip-comments,
which provides enhanced support for:
- Go directives (//go:build, //go:generate, etc.)
- C++ document comments (///)
- Python docstrings (""" and ''') and hash comments

This removes the custom GoManipulator, PythonManipulator, and CppManipulator
implementations in favor of the improved library support.

Note: preserveNewlines option keeps newlines for line number preservation,
so docstrings are replaced with empty lines rather than being fully removed.
2025-12-15 00:15:17 +09:00
Kazuki Yamada
cd2b7de4b9 test(skill,mcp): improve test coverage for writeSkillOutput and fileSystemReadFileTool
Add comprehensive tests to increase code coverage from 89.81% to 90.28%:

writeSkillOutput.ts (63.88% → 100%):
- Add test for techStack file writing
- Add tests for EPERM/EACCES error handling
- Add test for generic error handling
- Add test for non-Error object handling

fileSystemReadFileTool.ts (62.5% → 100%):
- Add test for directory path error
- Add test for successful file reading
- Add test for security check failure
- Add test for general errors during file reading
- Add test for non-Error object handling
2025-12-14 22:10:56 +09:00
Kazuki Yamada
47398ae820 test(file): Add test for legitimate U+FFFD character handling
Verify that files containing intentional U+FFFD characters in the source
are correctly read (not skipped), testing the TextDecoder validation path.
2025-12-14 19:44:47 +09:00
Kazuki Yamada
c4354e7745 fix(file): improve U+FFFD detection for UTF-8 encoding
- Use TextDecoder('utf-8', { fatal: true }) to distinguish actual decode
  errors from legitimate U+FFFD characters in UTF-8 files
- Change test temp directory from tests/fixtures to os.tmpdir() to avoid
  clobbering committed fixtures and reduce parallel-run collisions
- Non-UTF-8 files still use iconv.decode() fallback behavior

Addresses CodeRabbit review comments on PR #1007
2025-12-14 18:56:34 +09:00
Kazuki Yamada
72b27e4c9f fix(file): remove jschardet confidence check for encoding detection
Remove the confidence < 0.2 check that was causing valid UTF-8/ASCII files
to be incorrectly skipped. Files are now only skipped if they contain actual
decode errors (U+FFFD replacement characters).

This fixes issues where:
- Valid Python files were skipped with confidence=0.00 (#869)
- HTML files with Thymeleaf syntax (~{}) were incorrectly detected as binary (#847)

The isbinaryfile library (added in PR #1006) now handles binary detection more
accurately, making the confidence-based heuristic unnecessary.

Fixes #869
2025-12-14 18:44:48 +09:00
Kazuki Yamada
7f0d05d703 feat(core): Replace istextorbinary with is-binary-path and isbinaryfile
Migrate from istextorbinary (last updated 2023-12) to actively maintained packages:
- is-binary-path: Extension-based binary detection (updated 2024-04)
- isbinaryfile: Content-based binary detection with zero dependencies (updated 2025-12)

Improvements:
- Binary extension coverage: 13 → 262 extensions (~20x increase)
- Content detection: Better UTF-16/CJK support, statistical analysis (512 bytes vs 72 bytes)

The two-stage detection logic (extension check → content check) is preserved.
2025-12-14 18:03:43 +09:00
Kazuki Yamada
925d94adf9 refactor(skill): Address PR review feedback
- Fix extractRepoName to handle trailing slashes, query strings, and
  fragments in URLs (e.g., https://github.com/user/repo/ now works)
- Extract toTitleCase helper function to reduce code duplication
- Use projectName instead of sourceUrl for link text in SKILL.md footer
  (displays as "from [Vite](https://...)" instead of full URL twice)
- Add tests for URL edge cases (trailing slash, query, fragment)
2025-12-12 21:49:14 +09:00
Kazuki Yamada
dc694e7372 test(skill): Add tests for copySkillOutputToCurrentDirectory
Add unit tests for the copySkillOutputToCurrentDirectory function:
- Copy .claude/skills directory when it exists
- Skip copy when directory does not exist
- Handle EPERM and EACCES permission errors
- Handle generic errors
2025-12-12 21:02:18 +09:00
Kazuki Yamada
43c2bd81da feat(skill): Improve skill generation for remote repositories
- Fix project name generation to use repository name from URL instead of
  temp directory name (e.g., "Vite" instead of "Repomix HPkbgH")
- Add source URL to SKILL.md footer for remote repositories only
  (local repos don't include URL to avoid exposing personal paths)
- Copy only .claude/skills/ directory to prevent conflicts with
  repository's own .claude config (commands, agents, etc.)

Example SKILL.md footer:
- Remote: "This skill was generated by Repomix from [https://github.com/...]"
- Local: "This skill was generated by Repomix"
2025-12-12 20:54:01 +09:00
Kazuki Yamada
59a42e615a refactor(skill): Improve code quality based on review feedback
- Replace process.exit() with OperationCancelledError in skillPrompts.ts
- Centralize Handlebars helper registration in outputStyleUtils.ts
- Add path normalization validation in generateSkillTool.ts
- Set idempotentHint to true for generate_skill MCP tool
- Add skillGenerate config merge tests in configLoad.test.ts
- Add path normalization test in generateSkillTool.test.ts
2025-12-11 23:56:03 +09:00
Kazuki Yamada
6a397a01ac test(skill): Add tests for skill generation functionality
Add comprehensive tests for:
- packSkill.ts: generateSkillReferences, generateSkillMdFromReferences, packSkill
- skillPrompts.ts: getSkillBaseDir, promptSkillLocation
- generateSkillTool.ts: MCP tool registration, input validation, error handling
2025-12-11 23:30:25 +09:00
Kazuki Yamada
d6d82b6392 fix(security): Add path traversal protection for skill generation
- Add validation in validateSkillName to reject path separators (/, \),
  null bytes, and dot-only names (., .., ...)
- Add absolute path validation in MCP generateSkillTool
- Add directory existence check before skill generation in MCP tool
- Add existing skill directory check to prevent silent overwrites
- Add security tests for path traversal prevention
2025-12-11 23:20:51 +09:00
Kazuki Yamada
0fa885cb79 refactor(skill): Move skill-related code to core/skill/ directory
Reorganize skill generation code for better domain separation:
- Move files from core/output/skill/ to core/skill/ (5 files)
- Move writeSkillOutput.ts from core/packager/ to core/skill/
- Create packSkill.ts to encapsulate skill generation logic
- Simplify packager.ts by delegating skill generation to packSkill()
- Add re-exports in outputGenerate.ts for backward compatibility

This change improves code organization by:
- Separating skill domain from output domain
- Reducing packager.ts complexity
- Centralizing all skill-related code in one location
2025-12-11 00:12:34 +09:00
Kazuki Yamada
54a1391e30 refactor(cli): Use cliOptions directly for skillName and skillDir
Instead of creating separate variables and passing them through the task,
directly update cliOptions.skillName and cliOptions.skillDir. This simplifies
the code flow and removes redundant fields from DefaultActionTask interface.
2025-12-10 00:35:09 +09:00
Kazuki Yamada
1987d1d886 refactor(skill): Remove unused git diffs/logs section generators
Remove generateGitDiffsSection and generateGitLogsSection functions
and their tests as they are no longer used in the skill generation flow.
These became dead code after removing git diffs/logs from skill output.
2025-12-10 00:27:43 +09:00
Kazuki Yamada
84c14cc028 feat(skill): Enhance tech-stack detection and improve skill output
- Show all dependencies without truncation (removed 20/10 limits)
- Add runtime version detection (.node-version, .nvmrc, .tool-versions, etc.)
- Add configuration files section to tech-stack.md
- Move statistics section from SKILL.md to summary.md
- Update summary.md to use multi-file format language
- Increase largest files display from 5 to 10
- Improve generate_skill MCP tool description with skill types and paths
2025-12-10 00:27:43 +09:00
Kazuki Yamada
b4f25a0f2b refactor(skill): Pass skillName directly instead of remoteUrl in config
Remove remoteUrl from config schema and pass pre-computed skillName
through CLI options instead. This provides cleaner separation between
configuration and runtime data.

- Add generateDefaultSkillNameFromUrl() for remote repository names
- Update generateDefaultSkillName() to only handle local directories
- Pass skillName through DefaultActionTask to packager
2025-12-10 00:27:43 +09:00
Kazuki Yamada
2a4209d42c feat(skill): Add tech-stack detection and file statistics to skill output
Add new features to improve skill output for understanding codebases:

- Add tech-stack.md: Auto-detect languages, frameworks, and dependencies
  from package.json, requirements.txt, go.mod, Cargo.toml, etc.
- Add file statistics section to SKILL.md with language breakdown
  and largest files list
- Rename structure.md to project-structure.md for clarity
- Add total lines count to SKILL.md header
2025-12-10 00:27:43 +09:00
Kazuki Yamada
8aa10c5ebc docs(skill): Improve SKILL.md template with overview and use cases
Add Overview, Common Use Cases, and Tips sections to make the template
more actionable and instantly understandable. Remove redundant File Format
section (delegated to summary.md).

Changes:
- Add Overview section explaining when to use this skill
- Add Common Use Cases with concrete scenarios (understand feature, debug, find usages)
- Add Tips section for effective usage
- Remove File Format section to reduce redundancy
2025-12-10 00:27:43 +09:00
Kazuki Yamada
9916cec976 docs(skill): Improve SKILL.md template for better usability
Restructure SKILL.md to be more practical and scannable:
- Add reference files table with descriptions
- Include Quick Reference section with concrete examples
- Show exact grep patterns for finding files
- Display file format examples for understanding structure
- Move statistics inline with header for brevity
2025-12-10 00:27:43 +09:00
Kazuki Yamada
e40c5f3d63 refactor(skill): Remove git diffs and logs from skill output
Skill output is designed for referencing external codebases (e.g., GitHub
repositories) as persistent skills. Git diffs (uncommitted changes) and
git logs (commit history) are not meaningful in this context since:
- Remote repositories have no uncommitted changes
- Commit history is less relevant for reference skills

This simplifies the skill output to include only:
- SKILL.md
- references/summary.md
- references/structure.md
- references/files.md
2025-12-10 00:27:43 +09:00
Kazuki Yamada
c57dd552fc feat(skill): Add line counts to directory structure in skill output
Display the number of lines next to each file in the directory
structure section of skill output. This helps when using grep
to find specific files by line count.

Example:
  src/
    index.ts (42 lines)
    utils.ts (128 lines)
2025-12-10 00:27:43 +09:00
Kazuki Yamada
c5fb07cdbe fix(cli): Show relative path for skill output when under cwd
When the skill directory is under the current working directory,
show a relative path (e.g., .claude/skills/my-skill) instead of
an absolute path for better readability.
2025-12-10 00:27:43 +09:00
Kazuki Yamada
46094b8cd8 fix(cli): Show correct skill output path in summary
When Personal Skills location is selected, the summary was showing
a relative path (.claude/skills/) instead of the actual path
(~/.claude/skills/). Now passes the computed skillDir to reportResults.
2025-12-10 00:27:43 +09:00
Kazuki Yamada
e137b56081 feat(skill): Add interactive skill location selection
Add @clack/prompts-based selection for skill output location:
- Personal Skills (~/.claude/skills/) - default, available across all projects
- Project Skills (.claude/skills/) - shared with team via git

Features:
- Interactive prompt to choose skill location
- Overwrite confirmation when skill directory already exists
- Works with both local and remote repositories
2025-12-10 00:27:43 +09:00
Kazuki Yamada
f854dd4250 refactor(skill): Improve skill output generation and add tests
Refactor and improve the skill generation feature based on code review:

- Split generateSkillOutput into generateSkillReferences and
  generateSkillMdFromReferences to avoid double generation
- Add try-catch error handling to writeSkillOutput with proper
  permission error messages
- Add unit tests for skillSectionGenerators (12 tests)
- Add validation tests for --skill-generate flag combinations
- Update createMockConfig to support skillGenerate and remoteUrl
2025-12-10 00:27:43 +09:00
Kazuki Yamada
df5647c682 feat(skill): Enhance skill output with split files and auto-naming
Improve the Claude Agent Skills generation feature:

- Rename CLI option from --generate-skill to --skill-generate [name]
- Make skill name optional with auto-generation (repomix-reference-<folder>)
- Split skill output into multiple reference files:
  - summary.md: Purpose, format description, and notes
  - structure.md: Directory tree view
  - files.md: Complete file contents
  - git-diffs.md: Uncommitted changes (optional)
  - git-logs.md: Recent commit history (optional)
- Move skill-related code to src/core/output/skill/ folder
- Extract shared language mapping to outputStyleUtils.ts
- Add 100+ language mappings for syntax highlighting
2025-12-10 00:27:43 +09:00
Kazuki Yamada
71515c70ac feat(cli): Add --generate-skill option for Claude Agent Skills output
Implement Claude Agent Skills format output support for Repomix.
This feature was requested in issue #952 to enable seamless integration
with Claude Code's skill system.

New CLI option:
  repomix --generate-skill <name>

Output structure:
  .claude/skills/<name>/
  ├── SKILL.md                # Entry point with YAML frontmatter
  └── references/
      └── codebase.md         # Packed codebase in Markdown format

Features:
- Skill name auto-converts to kebab-case (max 64 chars)
- SKILL.md includes usage guidance for reading the codebase
- Incompatible with --stdout and --copy options
- MCP tool `generate_skill` for programmatic access

New files:
- src/core/output/skillUtils.ts
- src/core/output/outputStyles/skillStyle.ts
- src/core/packager/writeSkillOutput.ts
- src/mcp/tools/generateSkillTool.ts

Closes #952
2025-12-10 00:27:43 +09:00
Kazuki Yamada
8d27a5b427 fix(test): Update MCP tool tests for SDK type changes
The @modelcontextprotocol/sdk package updated CallToolResult.content
to a union type (text | image | audio | ...). Added proper type
assertions to access the text property in packCodebaseTool tests.
2025-11-28 00:11:29 +09:00
Kazuki Yamada
0fd8812b01 refactor(treeSitter): Abstract language-specific parsing logic and unify language configuration
Created BaseParseStrategy abstract class to reduce code duplication:
- Common helper methods (getCaptureTypes, checkAndAddToProcessed, validateLineExists)
- Shared ParseResult type and CommonCaptureTypes constants
- All strategies (Default, TypeScript, Python, Go, CSS, Vue) now extend base class

Unified language configuration in languageConfig.ts:
- Consolidated ext2Lang.ts and lang2Query.ts functionality
- Single source of truth for language settings (extensions, queries, strategies)
- Efficient Map-based lookup system for better performance
- Removed switch statement in createParseStrategy()

Updated all Strategy classes to extend BaseParseStrategy:
- Eliminated ~200 lines of duplicate code
- Improved maintainability and extensibility
- Easier to add new languages (single configuration change)

This refactoring was motivated by the need to reduce code duplication across
language-specific strategies and simplify the process of adding new language
support. The previous implementation had language configurations scattered
across multiple files, making it difficult to maintain and extend.
2025-11-24 23:09:22 +09:00
Kazuki Yamada
ebe6ff2f3a fix(treeSitter): Fix Swift subscript parameter name collision bug
Fixed a critical functional bug where multiple subscripts with the same
parameter name (e.g., 'key') would create identifier collisions in the parsed
output, making them indistinguishable.

The fix changes the subscript capture pattern from capturing the parameter
name to capturing the entire subscript_declaration node with @name.definition.method
tags. This ensures each subscript is uniquely identified by its full signature
(e.g., "subscript(key: String) -> Value?") rather than just the parameter name.

Added comprehensive test cases:
- Swift protocol/class with multiple subscripts to validate the fix
- C# mixed inheritance (base class + multiple interfaces) for better coverage

All 869 tests pass with this change.
2025-11-24 21:37:29 +09:00
Kazuki Yamada
b6cfefdb27 test(treeSitter): Address PR review feedback
Enhanced test coverage and documentation based on code review feedback:

1. C# Multiple Interface Test Enhancement:
   - Added explicit assertions for interface names (IDisposable, IComparable,
     ICloneable) to verify base_list pattern correctly captures all interfaces
   - This validates the query pattern handles comma-separated interfaces

2. Swift Subscript Documentation:
   - Added comments documenting the current subscript parameter naming behavior
   - Notes that parameter names (e.g., "key") are captured rather than subscript
     signatures, which may cause non-unique identifiers
   - Marked as future improvement consideration for semantic accuracy

Note: Static protocol method verification was already present in the test
expectations (line 244), so no changes needed there.

These changes address non-blocking suggestions from PR review to improve
test coverage and code documentation.
2025-11-24 21:26:01 +09:00
Kazuki Yamada
32d668f4f1 test(treeSitter): Add test for multiple interface implementation in C#
Added comprehensive test case to verify that the base_list query pattern
correctly handles comma-separated multiple interface implementations.

The test validates parsing of a class implementing IDisposable, IComparable,
and ICloneable interfaces, ensuring all methods are correctly captured.

This test was suggested in PR review feedback to strengthen test coverage
for the base_list query pattern.
2025-11-24 21:13:51 +09:00
Kazuki Yamada
1ef455100a feat(treeSitter): Add protocol method support to Swift queries
After updating @repomix/tree-sitter-wasms to 0.1.15, we reviewed all
language query files against their official tree-sitter tags.scm files.
This revealed that Swift queries were missing protocol method definitions
(protocol_function_declaration, subscript_declaration, init_declaration
within protocol_body).

This commit adds the missing patterns and comprehensive test coverage
for protocol methods to ensure Swift protocol definitions are properly
parsed and included in the output.
2025-11-24 20:37:08 +09:00
Kazuki Yamada
ef98190151 chore(deps): Update @repomix/tree-sitter-wasms to 0.1.15
Update tree-sitter-wasms package to version 0.1.15 to get latest language
grammar updates. Updated C# query patterns to match the new tree-sitter-c_sharp
grammar structure based on official tags.scm.

Changes:
- Update @repomix/tree-sitter-wasms from 0.1.14 to 0.1.15
- Fix C# query patterns for compatibility with new grammar:
  - Remove field specifiers from base_list patterns
  - Add type_parameter_constraints_clause pattern
  - Add type_parameter_constraint pattern (correct node name)
  - Restore type: field for object_creation_expression and variable_declaration
- Add comprehensive C# test cases for inheritance, interfaces, generics, etc.

All patterns now follow the official tree-sitter-c-sharp tags.scm specification.
2025-11-24 20:02:21 +09:00
Kazuki Yamada
b99d08398f test(core): Add parent directory ignore file tests
Add comprehensive tests for parent directory ignore file handling to address
PR #964 review feedback (Risk: High concern from claude[bot]).

Added three new test cases:

1. Parent directory .ignore file handling
   - Verifies .ignore files in parent directories are respected
   - Tests with useDotIgnore: true configuration
   - Ensures patterns apply to nested subdirectories

2. Parent directory .repomixignore file handling
   - Verifies .repomixignore files in parent directories are respected
   - Tests default configuration (.repomixignore always enabled)
   - Ensures patterns apply to nested subdirectories

3. Git worktree + parent .gitignore interaction
   - Verifies worktree environments handle parent .gitignore correctly
   - Combines worktree detection with parent .gitignore pattern application
   - Tests that .git file (not directory) is properly handled in worktree
   - Ensures gitignore: true option enables parent .gitignore handling

All tests follow the same pattern as existing "should respect parent directory
.gitignore patterns (v16 behavior)" test, providing consistent coverage for
.gitignore, .ignore, and .repomixignore files.

These tests ensure that globby v16's parent directory ignore file handling
works correctly for all supported ignore file types, not just .gitignore.
2025-11-24 19:11:18 +09:00
Kazuki Yamada
dd25beccfd test(core): Add type guards to globby options in tests
Fix TS18048 errors in createBaseGlobbyOptions consistency tests by adding
expect(options).toBeDefined() and if (!options) continue guards. This ensures
type safety and prevents undefined access to globby call options.

All three tests now properly guard against potentially undefined options:
- should use consistent base options across all globby calls
- should respect gitignore config consistently across all functions
- should apply custom ignore patterns consistently across all functions

This addresses the coderabbitai feedback on PR #964.
2025-11-24 17:44:58 +09:00
Kazuki Yamada
f0d8de48ca refactor(core): Address PR feedback for globby v16 update
This commit addresses three suggestions from AI code review bots on PR #964:

1. Remove unnecessary array spreads in createBaseGlobbyOptions
   - Removed defensive copying of ignorePatterns and ignoreFilePatterns
   - Arrays are already created fresh in calling functions, making spreads redundant
   - Minor performance optimization by avoiding unnecessary array allocations

2. Extract prepareIgnoreContext helper function
   - Centralized duplicate ignore pattern preparation logic
   - Eliminated code duplication across searchFiles, listDirectories, and listFiles
   - The new helper handles:
     * Getting ignore patterns and ignore file patterns
     * Normalizing patterns for consistent trailing slash handling
     * Git worktree special case handling
   - Improves maintainability and ensures consistency across all globby calls

3. Add explanatory comment to v16 behavior test
   - Documented why v16's behavior is superior (matches Git's standard behavior)
   - Clarifies that v16 respects parent directory .gitignore files
   - Helps future maintainers understand the intentional breaking change

All 856 tests pass with no regressions.
2025-11-24 17:44:58 +09:00
Kazuki Yamada
c9d296eec6 chore: Fix linting errors
- Add website/server/dist/ to .gitignore for secretlint
- Fix TypeScript type errors in fileSearch.test.ts
- Format imports in fileSearch.ts (biome)
2025-11-24 17:44:58 +09:00
Kazuki Yamada
4b2d8c12d0 test(core): Add regression tests for globby v16 update
- Add test for parent directory .gitignore pattern handling (v16 behavior)
- Add tests for createBaseGlobbyOptions consistency across all functions
- Verify gitignore option is passed correctly to all globby calls
- Ensure no regression from v15 to v16 upgrade

These tests prove that:
1. Parent .gitignore files are respected with globby v16
2. All 4 globby calls (searchFiles files/dirs, listDirectories, listFiles)
   use consistent base options
3. gitignore configuration is applied uniformly across all functions

All 856 tests pass, confirming no regression from the changes.
2025-11-24 17:44:58 +09:00
Kazuki Yamada
3e410ce4dd feat(core): Improve .gitignore handling with globby v16
- Upgrade globby from v15 to v16
- Use gitignore option to respect parent directory .gitignore files
- This matches Git's standard behavior where parent .gitignore patterns apply to subdirectories
- Move .gitignore handling from ignoreFiles to gitignore option
- Update tests to reflect the new behavior

This change improves compatibility with Git and provides more accurate file filtering when running Repomix in subdirectories.
2025-11-24 17:44:58 +09:00
abmahmoud03
9dbd4aad6d fix(config): remove redundant and unreachable code 2025-11-11 00:38:49 -05:00