Commit Graph

2649 Commits

Author SHA1 Message Date
Kazuki Yamada
58c51f8ee6 feat(output): Improve split output progress display
Show which root entry is being evaluated during split output generation.
The evaluating info is displayed in dimmed color for better readability.
2025-12-21 19:52:23 +09:00
Kazuki Yamada
344502a82a docs(cli): Add decimal size example to --split-output help text
Update help text to show that decimal values like 2.5mb are supported.
2025-12-21 19:39:05 +09:00
Kazuki Yamada
4fc304302b perf(output): Cache compiled Handlebars templates
Add module-level caching for compiled Handlebars templates to avoid
recompilation on every generateOutput call. This improves performance
especially for split output mode where templates are rendered multiple times.
2025-12-21 19:22:59 +09:00
Kazuki Yamada
e4fe69e1dc docs(readme,website): Add decimal size examples for --split-output
Update documentation to reflect support for decimal values like 1.5mb
in size specifications.
2025-12-21 18:55:41 +09:00
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
Kazuki Yamada
03ed9af472 fix(cli): Address PR review comments for --split-output
- Use buildSplitOutputFilePath for consistent file path generation
  in calculateMetrics.ts (fixes repomix-output.xml.part-1 → repomix-output.1.xml)
- Remove duplicate validation in packager.ts (already handled by
  validateConflictingOptions in defaultAction.ts)
- Add overflow check for large size values in sizeParse.ts
2025-12-21 14:09:23 +09:00
Kazuki Yamada
1b569bcc85 chore(gitignore): Add pattern for split output files
Add `repomix-output.*` to ignore numbered output files generated
by --split-output option (e.g., repomix-output.1.xml).
2025-12-21 14:02:31 +09:00
Kazuki Yamada
85a750050f docs(website): Enhance --split-output documentation
Add detailed explanation with:
- Use case (AI Studio's 1MB file size limit)
- File naming convention
- Note about directory-based grouping
2025-12-21 13:49:54 +09:00
Kazuki Yamada
f4442b24ad docs(readme): Add Splitting Output for Large Codebases section
Document --split-output feature with:
- Use case (AI Studio's 1MB file size limit)
- Usage example and file naming convention
- Note about directory-based grouping
2025-12-21 13:46:27 +09:00
Kazuki Yamada
cefab0c92d refactor(cli): Abstract conflicting options validation
Extract conflicting options validation into a dedicated function that
uses a data-driven approach. This makes it easier to add new conflicts
and reduces code duplication.

- Add validateConflictingOptions function with conflict definitions
- Support --split-output, --skill-generate, --stdout, --copy conflicts
- Handle --output "-" as stdout mode
2025-12-19 00:20:03 +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
e89aa974a8 Merge pull request #1011 from yamadashy/fix/claude-action-oidc-auth
fix(ci): Add github_token to fix OIDC auth error in issue workflows
2025-12-16 23:37:41 +09:00
github-actions[bot]
eb25412506 chore(schema): auto generate schema 2025-12-16 14:28:52 +00:00
Kazuki Yamada
35de08ac7d fix(ci): Add github_token to fix OIDC auth error in issue workflows
When external users (without write access) create issues, the OIDC
token exchange fails with "User does not have write access" error.
Adding explicit github_token bypasses this authentication flow.
2025-12-16 23:28:16 +09:00
Kazuki Yamada
2cf0d6a847 docs(releases): Add v1.10.2 release notes 2025-12-16 23:21:29 +09:00
Kazuki Yamada
8e3167c5af 1.10.2 v1.10.2 2025-12-16 22:40:55 +09:00
Kazuki Yamada
d61740e719 Merge pull request #1009 from yamadashy/fix/use-repomix-strip-comments
fix(file): Replace strip-comments with @repomix/strip-comments
2025-12-16 22:12:48 +09:00
Kazuki Yamada
6e19fd8d58 chore(deps): Update @repomix/strip-comments to 2.4.2 2025-12-15 00:45:03 +09: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
b7f960e724 Merge pull request #1008 from yamadashy/test/improve-coverage-for-skill-and-mcp
test(skill,mcp): improve test coverage for writeSkillOutput and fileSystemReadFileTool
2025-12-14 22:22:48 +09:00
Kazuki Yamada
fa68654867 chore(agents): add pr-resolve-addressed command and remove pr-review-request
Add command for resolving addressed PR review comments via GitHub GraphQL API.
Remove unused pr-review-request command.
2025-12-14 22:20:18 +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
20ed7b35d9 docs(releases): Add v1.10.1 release notes
Add release notes for v1.10.1 which includes:
- Bug fixes for skill generation project name and .claude/ directory conflicts
- Improvement for source URL in SKILL.md for remote repositories
2025-12-14 21:09:26 +09:00
Kazuki Yamada
bb7649db83 Merge pull request #1007 from yamadashy/fix/remove-confidence-check
fix(file): remove jschardet confidence check for encoding detection
2025-12-14 19:47:10 +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
0604b7e2e1 fix(deps): downgrade isbinaryfile to v5.0.2 for Node.js 20+ support
isbinaryfile v6.0.0 requires Node.js >= 24.0.0, but repomix supports
Node.js >= 20.0.0. Downgrade to v5.0.2 (requires Node.js >= 18.0.0)
to maintain compatibility with current LTS versions.

Addresses gemini-code-assist review on PR #1006
2025-12-14 19:10:48 +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
a022d89413 Merge pull request #1006 from yamadashy/refactor/replace-istextorbinary
feat(core): Replace istextorbinary with is-binary-path and isbinaryfile
2025-12-14 18:22:26 +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
f06528a3ff Merge pull request #1005 from yamadashy/claude/slack-add-russian-language-016HEBCNsuFTZCxAktG6jRfT
Add Russian Language Support
2025-12-14 00:18:29 +09:00
Claude
d205ced5a2 fix(website): Restore json style option in Russian GitHub Actions docs
The action.yml description was outdated - the style parameter passes
directly to the repomix CLI which does support json. Restored json to
match the English documentation.
2025-12-13 15:15:02 +00:00
Claude
e8ac5ba7ab style(website): Wrap example URLs in backticks in Russian mcp-server docs
Format example URLs with backticks to comply with markdownlint MD034
(no-bare-urls) rule.
2025-12-13 15:01:30 +00:00
Claude
b1ba1a594f style(website): Add language identifiers to Russian docs code blocks
Add `text` language identifier to fenced code blocks in prompt-examples.md
and index.md to fix MD040 markdownlint warnings.
2025-12-13 14:57:18 +00:00
Claude
c94ec85732 fix(website): Remove unsupported json style from GitHub Actions docs
The action.yml only supports xml, markdown, plain styles but the
documentation incorrectly listed json as an option. Updated the Russian
translation to match actual supported options.
2025-12-13 14:48:40 +00:00
Claude
127bff4d0d docs(skill): Update website-maintainer to reflect 14 languages
Add Russian (ru) to the supported languages list.
2025-12-13 14:38:38 +00:00
Claude
b0a95d9c6c docs(website): Add Russian language support
Add Russian (ru) as the 14th language to the Repomix documentation website.

This includes:
- New configRu.ts with navigation, sidebar, and search translations
- Updated config.ts to include Russian locale
- Updated configShard.ts to include Russian search configuration
- Complete Russian translations for all 24 documentation pages

Related to community request for Russian language support based on
the large Russian developer population (~85-110万 IT specialists).

Slack thread: https://yamadashy.slack.com/archives/C08S1M3ESHF/p1765620770607819
2025-12-13 10:29:48 +00:00
Kazuki Yamada
ea6bca904d Merge pull request #1004 from yamadashy/feat/website-improve
docs(website): Add code-group syntax for installation options
2025-12-13 19:10:02 +09:00
Kazuki Yamada
e968a7355d docs(website): Add pnpm to installation guides for consistency
Add pnpm package manager option to 10 language installation guides
that were missing it (en, ja, zh-cn, zh-tw, ko, de, es, fr, it, pt-br).

All 13 languages now consistently show 5 package managers:
npm, yarn, pnpm, bun, and Homebrew.
2025-12-13 18:12:39 +09:00
Kazuki Yamada
2ad858e468 docs(skill): Update website-maintainer to reflect 13 languages
Add Italian (it) to the language list and update the count from 12 to 13.
2025-12-13 17:27:01 +09:00
Kazuki Yamada
4034abd386 docs(website): Use code-group for package manager installation options
Replace individual package manager sections with VitePress code-group
syntax for a cleaner, tabbed interface. Users can now easily switch
between npm, yarn, bun, and Homebrew installation commands.

Applied to all 13 language versions of installation.md.
2025-12-13 17:27:01 +09:00
Kazuki Yamada
93e30229d5 Merge pull request #1002 from yamadashy/renovate/all-minor-patch
fix(deps): update all non-major dependencies
2025-12-13 16:30:20 +09:00
renovate[bot]
805d427e47 fix(deps): update all non-major dependencies 2025-12-13 05:50:40 +00:00
Kazuki Yamada
bd0646eafd docs(releases): Add release notes for v1.10.0 2025-12-13 14:49:31 +09:00