smv 0.4.2

Smart Move - An enhanced mv command with transformation capabilities
Documentation
# Development Session Summary - Directory Organization Features

## Session Goals and Achievements

We set out to integrate two new file organization features into SMV:
1. A function to group files by basename into directories
2. A function to flatten directory structures

We successfully implemented both features, following an intent-based CLI design philosophy, and made them available through `--group` and `--flatten` flags.

## Key Decisions

### Command Design Philosophy
We explored and documented an "intent-based flags" philosophy where:
- Commands express user intent, not mechanical implementation
- Each flag represents a complete, meaningful operation
- Sensible defaults are applied without requiring additional flags
- Command names reflect mental models rather than technical details

### Implementation Choices
- For `--flatten`, we made removing empty directories the default behavior
- We decided against a separate command for keeping empty directories when flattening
- We chose simple, intuitive flag names: `--group` and `--flatten`
- We bumped the version to 0.2.0 as this is a new feature, not a patch or major version

### Codebase Structure
- Core functionality was separated into dedicated modules
- We created a proper `lib.rs` to expose modules for testing
- We implemented comprehensive tests using the `tempfile` crate

## Commit Strategy
We broke our work into focused, atomic commits:
1. Core modules (sort.rs, unsort.rs)
2. Library exports (lib.rs)
3. CLI integration (main.rs updates)
4. Documentation (README.md)
5. Tests 
6. Dependency updates and version bump
7. Design philosophy documentation

## Discovered Issues
At the end of the session, we discovered a branching issue: we had branched our feature from a hotfix branch (`fix/snake-case-spaces`) rather than from `main` or `dev`. This raised questions about:
- The proper merge strategy to use
- How to handle uncommitted changes in the working directory
- The best approach for release management

We decided to document the issue for resolution in a future session.

## Next Steps
In our next session, we need to:
1. Resolve the branching strategy
2. Address uncommitted changes
3. Complete the release process (tagging, GitHub release, crates.io publication)

A detailed context document was created at `docs/feature-branch-context.md` to ensure continuity between sessions.