# Deviations from the Original This project is a ground-up Rust rewrite of [Brett Terpstra's doing](https://github.com/ttscoff/doing). While it aims for full compatibility with the original Ruby implementation, there are intentional differences driven by Rust ecosystem conventions, architectural constraints, and practical improvements. Each deviation is documented as a formal record in the repository. The full details, rationale, and migration notes for every deviation are available at: [github.com/aaronmallen/doing/tree/main/docs/deviations](https://github.com/aaronmallen/doing/tree/main/docs/deviations) ## Summary of Deviations | ID | Title | What Differs | | --- | --- | --- | | [DEV-0001] | Configuration Format | Defaults to TOML at XDG path instead of YAML | | [DEV-0002] | Hyphenated Command Names | Uses hyphens instead of underscores | | [DEV-0003] | fzf Not Auto-Installed | Never installs software on your behalf | | [DEV-0004] | JSON Output Structure | Top-level array of section objects | | [DEV-0005] | No config update/refresh | Missing keys filled from compiled-in defaults | | [DEV-0006] | update Is Self-Update | Updates the Rust binary, not a Ruby gem | | [DEV-0007] | No help -c Compact Flag | Help generated by clap, no compact mode | | [DEV-0008] | select Uses --no-menu Not --force | Clearer name for non-interactive batch mode | | [DEV-0009] | select -F for --finish | -f taken by global --doing-file | | [DEV-0010] | --quiet Has No -q Short Flag | -q assigned to select --query | | [DEV-0011] | --age Has No -a Short Flag | -a used by tag --autotag | | [DEV-0012] | redo --file Has No -f Short Flag | Global -f conflict | | [DEV-0013] | completion generate --file No -f | Global -f conflict | | [DEV-0014] | Config Home Uses Platform-Native Path | `~/Library/Application Support` on macOS, not `~/.config` | [DEV-0001]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0001-configuration-format.md [DEV-0002]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0002-hyphenated-command-names.md [DEV-0003]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0003-fzf-not-auto-installed.md [DEV-0004]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0004-json-output-structure.md [DEV-0005]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0005-no-config-update-refresh.md [DEV-0006]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0006-update-is-self-update.md [DEV-0007]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0007-no-help-compact-flag.md [DEV-0008]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0008-select-no-menu-not-force.md [DEV-0009]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0009-select-finish-uppercase-f.md [DEV-0010]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0010-quiet-no-short-flag.md [DEV-0011]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0011-age-no-short-flag.md [DEV-0012]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0012-redo-file-no-short-flag.md [DEV-0013]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0013-completion-file-no-short-flag.md [DEV-0014]: https://github.com/aaronmallen/doing/blob/main/docs/deviations/0014-config-home-platform-native.md