**Credentials and Global Flags**
- Certificates (an old credential mechanism) are no longer supported. If you have a certificate, arc will behave like you do not have any credentials. Follow the login prompts to convert your certificate into a token and things will work correctly again.
- Removed `arcanist_configuration` configuration setting. This is a legacy/FB-only option which doesn't fit into the roadmap.
- Removed `--conduit-version`. We do capability testing, now.
- Removed `--conduit-timeout`. Not clear this ever really had any callers.
- Removed `--skip-arcconfig`. Unclear what this was for. FB only option because someone created an invalid file at `/home/.arcconfig`?
- Removed `--arcrc-file`. Unclear that this had any real uses. Potentially open to restoring this or similar if there's an automation/bot use for it.
- `--config` and `--load-phutil-library` must now appear before other workflow arguments. For example, `arc --config x=y diff` is valid, but `arc diff --config x=y` is not.
**Workflow: Diff**
- `arc diff --no-diff` (an internal workflow) has been removed.
- `arc diff --cache` (which was a passthrough for `arc lint --cache`, which has also been removed, below) has been removed.
See T2543. The flags related to previewing a diff have changed:
| Old Command | New Command |
|---|---|
| `arc diff --only` | `arc diff --only --nolint --nounit` |
| `arc diff --preview` | `arc diff --only` |
| `arc diff --plan-changes` | //None// |
| //None// | `arc diff --draft` |
Previously, `arc diff --preview` and `arc diff --only` had similar behavior: they only created a diff (not a revision). `--preview` ran lint and unit tests, while `--only` did not. The new behavior is that `--preview` has been removed, and `--only` now runs lint and unit tests. You can recreate the old `--only` with `arc alias`, as `--only --nounit --nolint` or perhaps `--only --nounit --nolint --browse`. The old `--preview` is now `--only`. This rename is because the distinction between "draft" and "only" seems more clear than the distinction between "draft" and "preview".
- The `--plan-changes` flag has been removed. This is obsolete with drafts.
- The `--draft` flag has been added. This holds a revision in the new "Draft" state indefinitely, even after builds finish. Drafts are not automatically submitted to reviewers for review. The `--draft` flag serves as a sort of more powerful version of the `--preview` and `--plan-changes` flags.
**Workflow: Lint**
- The internal "async lint" flag has been removed. This was an ancient, Facebook-specific flag for extensions which is obsoleted by Harbormaster.
- `arc lint --only-new` has been removed. This relied on upstream lint support which was never fully developed.
- `arc lint --cache` has been removed.
- The `arc.lint.cache` config option has been removed.
- `arc lint --only-changed` has been removed. arc now detects whether you want warnings on all lines or only changed lines by examining the other arguments (paths, `--everything`, `--lintall`, and `--rev`).
**Events / Extensions / Developer**
- `arc diff` no longer dispatches `ArcanistEventType::TYPE_REVISION_WILLCREATEREVISION` if the server is sufficiently modern. (It no longer uses the datastructure this event received.)
- When any configuration source specifies an invalid library, we now prompt you to continue without it if stdin is a TTY. This allows you to fix config with `arc set-config --local` and similar. If stdin is not a TTY, we fatal. Previously, we would not prompt you to continue.
- `ArcanistConfiguration` no longer exists. Its hooks no longer exist, either:
- `willRunWorkflow()` no longer exists.
- `didRunWorkflow()` no longer exists.
- `didAbortWorkflow()` no longer exists.
- `getCustomArgumentsForCommand()` no longer exists.
- The `Workflow->didParseArguments()` callback no longer exists. Just do the parsing in `executeWorkflow()`.
- `ArcanistWorkflow->passedArguments` no longer exists (no callers).
- `ArcanistWorkflow->getPassedArguments()` no longer exists (no callers).