commits
The previous replacement logic was broken - it was mangling the string
by splitting on 'S' instead of replacing the literal "SPLIT_COMMIT".
Simplified to a straightforward prefix check and substring replacement.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add suggest_push_url function to derive push URL from dune-project source field
- Support github, gitlab, tangled, and uri sources
- Convert https URLs to SSH push format (git@...)
- Prompt with suggested URL as default, user can press Enter to accept
- Fix pp_fork_result to not truncate non-SHA strings like "(fresh package)"
- Add Tangled variant to Dune_project.source_info for tangled.sh sources
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Prompt for remote push URL if not provided on command line
(skipped with --yes or --dry-run)
- Fix pp_fork_result to only truncate git SHA hashes (40 hex chars),
not descriptive strings like "(fresh package)"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
git-subtree-dir: ocaml-mlxxhash
git-subtree-split: 6e990aefefd3b4eb5ba9ca7645dd2d1c84c5ba42
Fork now performs the complete workflow in one command:
- Creates src/<name>/ with split history or copied files
- Removes mono/<name>/ from git
- Re-adds mono/<name>/ as a proper subtree from src/<name>/
This establishes the subtree relationship automatically so monopam sync
works correctly without manual git rm and rejoin steps.
Added Git.rm function for git rm operations.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
git-subtree-dir: ocaml-brotli
git-subtree-split: b2a87525dd02971a1d939de554c14aeadd72775e
6efbb2e4 Refuse to sync when monorepo has uncommitted changes
git-subtree-dir: monopam
git-subtree-split: 6efbb2e42d0144b64bab58799fdb221d8ab9e90a
Fork/join improvements:
- Add action planning system that analyzes state before execution
- Show discovery details (subtree history, packages found, etc.)
- Prompt for confirmation with --yes flag to skip
- Support fresh package fork (no subtree history) by copying files
- Support join from local directories (not just URLs)
- Add Git.add_all, Git.commit, Git.branch_rename, Git.has_subtree_history
Config unification:
- Merge Verse_config into Config module
- Add configurable paths (mono, src, verse) in [paths] section
- Verse_config is now an alias for backwards compatibility
- Simplify main.ml config loading
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
git-subtree-dir: ocaml-immich
git-subtree-split: bdf1942a5815eeca2a419712f0f52c8da08d5e18
Add dune-project with package definition, dependencies, and maintainer
info. Add public names to libraries and executable for proper packaging.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
d7db8df9 Add multi-user capability support for RPC server
git-subtree-dir: braid
git-subtree-split: d7db8df98245c093c90a5227815e2678187840eb
a9b9b636 Fix sync not picking up external pushes on first run
git-subtree-dir: monopam
git-subtree-split: a9b9b636953e1eb0d43771c9e55debc443a02af5
3bd8725e metadata
git-subtree-dir: ocaml-openapi
git-subtree-split: 3bd8725e9977c850fd82a19d8e35b1fbf82b7409
git-subtree-dir: ocaml-openapi
git-subtree-split: affe4bedbc4a00bed8da9037f8ad5e6a96f1aa94
e3e85066 Expand fuzz testing with emitter tests and additional coverage
2a972904 Fix crash on invalid Unicode escape sequences in double-quoted strings
1c84a01a Add configurable timeout for AFL fuzzing via AFL_TIMEOUT env var
git-subtree-dir: ocaml-yamlrw
git-subtree-split: e3e850664e6786b74e773d8544d016089b605e24
d84e47a1 Expose png_thumbnail_path in Sortal library interface
709cc1e4 Add thumbnail subcommand to expose thumbnail file path
git-subtree-dir: sortal
git-subtree-split: d84e47a1373f4da53278ef60f4d81a8dbcd2012b
Add Monorepo_dirty error that is returned early in the sync function
if the monorepo working tree has uncommitted changes. This prevents
confusion and potential data loss from syncing with a dirty state.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The needs_pull optimization was computed from status before fetching
from remotes. If a repo was "In_sync" but received commits during
fetch, it was incorrectly skipped in the subtree pull phase.
Now repos that receive commits during fetch are always included in
the subtree pull, regardless of their pre-fetch status.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Expose a bundled cmdliner term that allows other programs (like sortal)
to easily use Immich profiles set up via the CLI. The Profile_config
module bundles logging, HTTP config, and profile selection into a single
term that can be combined with with_client for authenticated API access.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
7022bce5 Add fuzz testing infrastructure with Crowbar and AFL support
386bd73d Fix alias depth limit tracking in resolve_aliases
e99e8632 Fix block scalar double newline bug in emitter
git-subtree-dir: ocaml-yamlrw
git-subtree-split: 7022bce569598076c76912a85806a8c52ad6ac8c
- Add styled Fmt printers with ANSI colors for terminal output
- Error messages show red labels, yellow/red status codes, dim correlation IDs
- Auth commands use green for success, cyan for values, magenta for profiles
- Server status shows dynamic disk usage colors (green/yellow/red by threshold)
- Albums and faces use dim UUIDs, cyan names, green counts, yellow markers
- Session pretty-printer uses colored labels and values
- Wrap command actions with Error.wrap for proper error handling
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Openapi.Nestjs module for parsing NestJS/Express error responses
- Add Immich_auth.Error module with convenience wrappers
- Update immich CLI to display friendly error messages with:
- Error type (Forbidden, Not Found, etc.)
- Human-readable message
- HTTP status code
- Correlation ID for debugging
- Return appropriate exit codes (77 for auth errors, 69 for not found)
Example output:
Error: Forbidden: Missing required permission: person.read [403] (correlationId: abc123)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add suggest_push_url function to derive push URL from dune-project source field
- Support github, gitlab, tangled, and uri sources
- Convert https URLs to SSH push format (git@...)
- Prompt with suggested URL as default, user can press Enter to accept
- Fix pp_fork_result to not truncate non-SHA strings like "(fresh package)"
- Add Tangled variant to Dune_project.source_info for tangled.sh sources
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fork now performs the complete workflow in one command:
- Creates src/<name>/ with split history or copied files
- Removes mono/<name>/ from git
- Re-adds mono/<name>/ as a proper subtree from src/<name>/
This establishes the subtree relationship automatically so monopam sync
works correctly without manual git rm and rejoin steps.
Added Git.rm function for git rm operations.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fork/join improvements:
- Add action planning system that analyzes state before execution
- Show discovery details (subtree history, packages found, etc.)
- Prompt for confirmation with --yes flag to skip
- Support fresh package fork (no subtree history) by copying files
- Support join from local directories (not just URLs)
- Add Git.add_all, Git.commit, Git.branch_rename, Git.has_subtree_history
Config unification:
- Merge Verse_config into Config module
- Add configurable paths (mono, src, verse) in [paths] section
- Verse_config is now an alias for backwards compatibility
- Simplify main.ml config loading
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
e3e85066 Expand fuzz testing with emitter tests and additional coverage
2a972904 Fix crash on invalid Unicode escape sequences in double-quoted strings
1c84a01a Add configurable timeout for AFL fuzzing via AFL_TIMEOUT env var
git-subtree-dir: ocaml-yamlrw
git-subtree-split: e3e850664e6786b74e773d8544d016089b605e24
The needs_pull optimization was computed from status before fetching
from remotes. If a repo was "In_sync" but received commits during
fetch, it was incorrectly skipped in the subtree pull phase.
Now repos that receive commits during fetch are always included in
the subtree pull, regardless of their pre-fetch status.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Expose a bundled cmdliner term that allows other programs (like sortal)
to easily use Immich profiles set up via the CLI. The Profile_config
module bundles logging, HTTP config, and profile selection into a single
term that can be combined with with_client for authenticated API access.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add styled Fmt printers with ANSI colors for terminal output
- Error messages show red labels, yellow/red status codes, dim correlation IDs
- Auth commands use green for success, cyan for values, magenta for profiles
- Server status shows dynamic disk usage colors (green/yellow/red by threshold)
- Albums and faces use dim UUIDs, cyan names, green counts, yellow markers
- Session pretty-printer uses colored labels and values
- Wrap command actions with Error.wrap for proper error handling
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Openapi.Nestjs module for parsing NestJS/Express error responses
- Add Immich_auth.Error module with convenience wrappers
- Update immich CLI to display friendly error messages with:
- Error type (Forbidden, Not Found, etc.)
- Human-readable message
- HTTP status code
- Correlation ID for debugging
- Return appropriate exit codes (77 for auth errors, 69 for not found)
Example output:
Error: Forbidden: Missing required permission: person.read [403] (correlationId: abc123)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>