Skip to content

V2.0.0#1

Open
pavalso wants to merge 31 commits intomainfrom
v2.0.0
Open

V2.0.0#1
pavalso wants to merge 31 commits intomainfrom
v2.0.0

Conversation

@pavalso
Copy link
Copy Markdown
Owner

@pavalso pavalso commented Dec 30, 2025

🚀 Highlights

  • Introduced a full-featured Management Dashboard with real-time component monitoring, plugin control, and log streaming.
  • Added a powerful CLI command system (awioc) with extensible subcommands.
  • Implemented manifest-based component loading for directory-based plugins.
  • Major refactor of the bootstrap, configuration, and lifecycle APIs.
  • Version bumped to 2.0.0.

✨ New Features

Management Dashboard

  • New Management Dashboard application sample:

    • HTTP UI for inspecting application state
    • Live component status (initialized / initializing / shutting down)
    • Enable / disable plugins at runtime
    • Real-time log streaming with filtering
    • WebSocket-based updates
  • Added:

    • Dashboard configuration models
    • HTTP request handler
    • Log buffer and custom logging handler
    • Full static frontend (HTML, CSS, JS)
  • Auto-generated manifest.yaml support for dashboard components

HTTP Server Sample Enhancements

  • New HTTP server manifest (.awioc/manifest.yaml)
  • Cleaner project structure with explicit app export
  • Improved sample configuration layout

CLI Framework (AWIOC CLI)

  • New extensible command architecture

  • Implemented commands:

    • run – start application
    • init – initialize a project
    • add – add plugins or libraries
    • remove – remove plugins or libraries
    • info – show project information
    • config – manage configuration
    • pot – manage shared component directories
    • generate – generate manifests
  • Unified command context and command registry

  • awioc --help and awioc <command> --help support

  • awioc --version support


🧩 Component & Plugin System

  • Added directory-based plugins via .awioc/manifest.yaml

  • Support for loading multiple components from a single plugin directory

  • Improved plugin lifecycle management:

    • Safe enable / disable
    • Dependency checks before shutdown
  • Enhanced component metadata and internals inspection


⚙️ Configuration & Bootstrap Changes

  • Refactored IOC bootstrap process:

    • Cleaner separation of environment, YAML, and context-based config loading
    • Improved configuration reload support
  • Added:

    • Context-specific .env handling
    • Dynamic reconfiguration and reload logic
  • Improved logging setup and configuration precedence


🧰 API Changes & Additions

  • Expanded public API exports:

    • Component introspection helpers
    • Registration and metadata utilities
    • Project management helpers
  • Improved initialize_components, shutdown_components, and wait_for_components

  • Added project-level helpers:

    • AWIOCProject
    • Project detection and creation utilities

🧹 Improvements & Refactors

  • Large internal refactor across:

    • bootstrap
    • api
    • CLI entry point (__main__.py)
  • Improved error handling and logging clarity

  • Cleaner separation between container, config, and lifecycle responsibilities

  • README and sample updates


🐛 Fixes

  • Fixed duplicate and inconsistent logging behavior
  • Improved path validation and sandboxing for static file serving
  • Safer plugin enable/disable operations
  • Cleanup of duplicated or deprecated code paths

🔧 Maintenance

  • Updated .gitignore

  • Version bumped in package metadata:

    • 0.1.02.0.0
  • Added missing __init__.py exports

  • Improved typing and documentation across new modules

…t file types (.yaml, .env) and improving save functionality with secret value handling
…tionalities, along with improved error handling and UI updates for plugin operations
finnllex added 3 commits May 1, 2026 09:14
- Implemented a feature in the `RunCommand` to regenerate imports before component initialization.
- Added command-line options `--no-generate-imports` and `--generate-imports` to control the regeneration behavior.
- Introduced a new module `imports_writer.py` to handle the creation of symlinks and shims for IDE compatibility.
- Enhanced the `import_map.py` with a new function `to_module_name` to sanitize module names for Python compatibility.
- Updated tests for the `RunCommand` to verify the new import regeneration behavior.
- Created tests for the new imports writer functionality, including symlink and shim creation.
- Added tests for the `to_module_name` function to ensure proper sanitization of module names.
finnllex and others added 3 commits May 3, 2026 09:17
- Introduced `alias` attribute in `ImportTarget` to carry user-declared identifiers from `ioc.yaml`, allowing stub generation to publish under `awioc.imports`.
- Added `parse_py_ref` function to split Python reference strings into module and attribute components.
- Updated `_entry_from_ref` to utilize the new `alias` for libraries and resources, ensuring correct mapping in the import map.
- Implemented `write_stubs` function to create supplemental typings for `awioc.imports`, including handling for path-based and `py:` resources.
- Enhanced `merge_pyright_config` to include `stubPath` for better type resolution in Pyright.
- Added tests for alias handling in import map and stubs generation, ensuring correct behavior for libraries and resources.
- Introduced `compile_resource` to handle resource specifications with constructor kwargs for `py:` references.
- Updated existing tests to cover new functionality and ensure compatibility with the changes.
- ioc.yaml resource entries can now be a list of refs. compile_resource
  compiles each element and returns a Python list registered as a single
  resource, with synthetic metadata held in the side-table since lists
  reject __setattr__.
- Stub writer aggregates list-resources into `<name> = list[T]` (or
  `list[Union[T1, T2]]` for mixed element types), resolving each
  element's class via py: parsing or the adjacent .awioc/manifest.yaml.
- Resource stub aliases now use the manifest's registered component name
  rather than the file basename so the static symbol matches the
  ResourceHandle key returned at runtime.
- DI wiring/config registration reads metadata via the side-table and
  recurses into list wrappers so nested elements still get their config
  registered and their modules wired.
- Adds samples/cli_terminal: a programmable CLI building block other
  components can extend at runtime via the cli_terminal resource.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant