# [5.7.0](https://github.com/frappe/bench/compare/v5.6.0...v5.7.0) (2021-12-01)
### Bug Fixes
* Allow git url with custom username ([#1200](https://github.com/frappe/bench/issues/1200)) ([6411812](641181260e))
* Archived app naming, apps.txt sync ([79980c3](79980c3c55))
* Check if app is installed in env via initialize_apps ([a192240](a192240cec))
* Check if archived_sites directory exists before running ([b11f5b0](b11f5b0f96))
* Cleanup import hell ([e2fd9de](e2fd9de921))
* Cleanup import hell (contd) ([d2fba5f](d2fba5fe52))
* correct patches.txt ([a28a0d0](a28a0d0d23))
* Don't fetch meta for rm app ([17edb47](17edb4797b))
* Drop support for Frappe v4-5-6 ;) ([616dff8](616dff8fbb))
* frappe app can exist without public folder ([13ed9be](13ed9beca5))
* Handle collisions while moving apps ([3709682](3709682231))
* Import bench.cli ([27128c7](27128c7c18))
* import path for util ([ee6a967](ee6a967a20))
* Initialize bench in get-app with --init-bench ([a2ccc30](a2ccc30bc3))
* Move logging to lower level App.get API ([4ba5422](4ba5422b65))
* Pass `skip_assets` while resolving dependant apps ([8275d67](8275d678f4))
* Patch to move archived_sites to archived/sites ([877e812](877e812fbb))
* raise (by default) when exec_cmd fails ([3995b92](3995b9237b))
* Raise and handle Exception class ([c4b8391](c4b8391716))
* remove unwanted `patches.txt` ([85500b7](85500b7751))
* rename key ([75f8462](75f84625ad))
* Show bench init job via bench get-app (conditional) ([225fce5](225fce5be6))
* Show pip's help menu when --help is passed in pip command ([6d10d75](6d10d75bb1))
* Show traceback if error occurs during init, get outside bench dir ([806d543](806d543fac))
* Show traceback in dev mode and set exit code on errors ([e074a1d](e074a1d886))
* Show traceback on bench init failure ([30e3e72](30e3e725a8))
* Show warning while using experimental features ([b7994e2](b7994e21b1))
* sync apps file in init, imports and no warn in CI ([71d178d](71d178dde9))
* Trailing slash not setting app name properly ([357fcc0](357fcc0bbd))
* Use test frappe app - frappe_docs instead of wiki or chat ([c636c7c](c636c7c133))
### Features
* add `live_reload` to default_config ([9f74ec0](9f74ec0adb))
* Add alias for remove-app: rm, remove ([6890d98](6890d98847))
* Add custom workers in Procfile ([#1201](https://github.com/frappe/bench/issues/1201)) ([593b80e](593b80eec9))
* add no-git option to new-app command ([2a25a6d](2a25a6d2d9))
* added option to provide custom queues ([e12f53d](e12f53d1a5))
* Aliased Commands ([b75d352](b75d352454))
* App Meta Base Class ([ce00798](ce00798b5d))
* bench drop {bench_path} ([906ad5a](906ad5a099))
* Dynamic Output rendering ([f117959](f117959801))
* Initialize bench on bench get(-app) if not created ([38382b8](38382b84fb))
* **minor:** --install-app option in init ([8480eb5](8480eb5df7))
* **minor:** Any procman in bench start ([bae338a](bae338ad0b))
* **minor:** App Meta handling on disk repos ([1865eee](1865eeeb6d))
* **minor:** Bench.python property that points to env python ([d63a988](d63a9883e0))
* New methods in Bench class ([53e811f](53e811fe0a))
* New methods in the App Class ([54f9741](54f9741385))
* Pass --use-feature='dynamic-feed' for new CLI ([b92fb14](b92fb1401b))
* Restart process manager for develop mode ([6123cd5](6123cd5b49))
* Skip warnings if envvar BENCH_DEVELOPER set ([20560c9](20560c97c4))
### Performance Improvements
* Cache Bench and App instantiation ([cd1f526](cd1f526d09))
It's off by default. If you want it enabled, pass --verbose or -v
following `bench`. The verbosity only changes how pip installs work.
Other stuff is immaterial at this point.
Eg: bench -v setup requirements
* Add long description using README.md
* Add project URLs. This will brighten up
https://pypi.org/project/frappe-bench/ a bit
* Update contact, license info, etc
* Add project classifiers
* Optimized condiitonal checks
* Removed warnings for src, --version
* Handled positional shifts due to usages of --use-feature (by
set.intersection)
* Raise Exception always instead of hiding the traceback
* Hanlde job-step renders
* Use context manager for managing renders and state
* Job and Step remain process agnostic - neither are dependant on the
other
Each operation can be broken down to multiple jobs. For instance, the
update operation can be broken down into: setting up bench dirs, env,
backups, requirements, etc.
Each step has a lot of output since Frappe requires a lot of complex
stuff to be done as a pre-requisite. Bench tries to simplify a lot in a
single command. Once, a step is completed, it's output is not really
required. So, we can ignore it to reduce the noise.
Here's where the `bench.cli.fancy` variable kicks in. Along with the
refactored log and new step wrapper, it makes the above thing possible.
At this point, there's no way to set this var from the end user...given
I'm still developing this. In the later commits, the idea is to pass a
flag similar to pip's --use-feature flag.
* Don't update node packages twice (already managed via
update_requirements)
* Don't reload bench.utils - this made sense back when bench was updated
along with the apps
* Fix utils namespaces. Import instead of ....
* Separate out branch validation logic
* Add type hints
* Raise named Exception "CannotUpdateReleaseBench" instead of SystemExit
* Use "newer" APIs wherever possible