# Changelog ## [0.2.3] Hotfix. In 0.2.2, `import app_skellington` raised `ImportError: cannot import name 'NoCommandSpecified' from partially initialized module` (a circular import) for every install. * Fix the circular import between `cli` and `app_container`. The framework exceptions now live in `_util`, and the public names are unchanged. * Tested on Linux, CPython 3.8–3.14 (Gitea CI). Each version builds the wheel and sdist, installs them and smoke-tests the import. * Tooling: ruff replaces black/isort/flake8; uv with a committed lockfile. * Metadata: license classifier corrected to MIT-0; Python version classifiers added; "OS Independent" replaced by Linux (Windows and macOS untested). * README: the debug variable is `APPSKELLINGTON_DEBUG`. ## [0.2.2] (2024-11-17) Second release is focused on cleanup, documentation. * flake8, black, isort - all warnings and errors fixed. * Documentation improved. * Build and deploy process documented for developers. * Poetry removed, replaced with modern pyproject.toml and setuptools.build_meta for automatic version management. ## [0.1.0] (2020-07-19) First release to PyPi. * Basic functionality. Probably not the best code. * Sub-menus supported, multi-level through CLI. * Config through ConfigObj ini. Define spec file and input config.ini * Colored Logging * Services can be defined and provided to classes