# A Laravel Zero app to test Pijul

This is a Laravel Zero app to test Pijul, a distributed version control system.

**[laravel-zero.com]https://laravel-zero.com/**

## Pijul credit with messages

Use `./ani pijul:credit-with-messages` to keep `pijul credit` output intact while showing each hash's change message inline.

Example:

```bash
./ani pijul:credit-with-messages README.md
```

## Pijul record with intent tags

Use `./ani pijul:record-with-intent-tags` to reuse intent tags from recent `pijul log` messages while recording a change.

- The command lists known tags as a reminder before prompting.
- The intent-tag prompt uses the same live suggestion UI as the search command.
- In an interactive terminal, the command now shows an explicit multi-select hunk picker before recording, so you can choose exactly which hunks to send through without editing Pijul's temp file by hand.
- Skip the tag prompt or pass `--message` if you want to type a fresh message directly.

Examples:

```bash
./ani pijul:record-with-intent-tags
./ani pijul:record-with-intent-tags --all
./ani pijul:record-with-intent-tags --list-tags
```

To spin up a disposable repo for manually testing that flow, run:

```bash
./scripts/pijul-record-with-intent-tags-test-helper
```

It creates a temporary Pijul repo with pending README and notes changes, drops you into a shell there, and removes the repo automatically when you exit.

## Pijul intent tag listing and search

Use `./ani pijul:list-intent-tags` to print one unique intent tag per line, which makes it easy to pipe into shell tools.

Use `./ani pijul:search-intent-tags` for built-in substring search over those tags.
If you omit the query in an interactive terminal, it opens a live, scrollable filter that starts by showing known tags and narrows on each keypress.

Examples:

```bash
./ani pijul:list-intent-tags
./ani pijul:list-intent-tags --limit=50 | fzf
./ani pijul:search-intent-tags zero --limit=50
./ani pijul:search-intent-tags 'feat(pijul-qol)' --exact
```

## Before-push review against a remote

Pijul does not have a direct equivalent to `git diff origin/main...HEAD`, so the easiest review workflow is to pull the remote channel into a local review channel and diff against that.

Example:

```bash
pijul pull origin --from-channel main --to-channel review-main
pijul channel switch my-work
pijul diff --channel review-main
```

Useful variations:

- `pijul diff --channel review-main --short` for a summary view.
- `pijul log --channel my-work` and `pijul log --channel review-main` to compare recorded changes by channel.
- `pijul change <hash>` to inspect an individual recorded change in detail.
- Plain `pijul diff` still shows only unrecorded working-copy changes.

## Cleanup workflow with channels

If you want to do a bigger cleanup pass with a review step at the end, create a base channel and then do the cleanup work on a second channel:

```bash
pijul channel new cleanup-base
pijul channel new cleanup-pass
pijul channel switch cleanup-pass
```

Suggested flow:

- Keep `cleanup-base` unchanged as the comparison point.
- Record cleanup changes on `cleanup-pass`.
- When you want a review of everything you changed, run `pijul diff --channel cleanup-base`.
- Use `pijul log --channel cleanup-base` and `pijul log --channel cleanup-pass` if you want to compare recorded changes by channel.

This gives you a safer place to do a lot of cleanup before reviewing the full pass together.

## Feature merge/unmerge workflow with a baseline channel

See [Pijul feature channel merge and unmerge workflows]./PIJUL_FEATURE_CHANNEL_WORKFLOWS.md for a simple recipe that uses a cleaner baseline such as `mainer-main`, feature channels such as `feature-login`, and an integration channel such as `staging`.

## Personal first-time setup notes

See [First-Time Setup Notes for Nest and Pijul]./FIRST_TIME_SETUP_NOTES.md.