Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- Interfaces: Provide JSON schemas of the type system and instance system via GraphQL API
- Interfaces: Query for JSON Schemas of the type system and instance system via the Rust Client
- CLI: Print the JSON Schemas of the type system and instance system
Changed
Fixed
Distribution
- Docker: Added static labels (org.opencontainers.image)
Infrastructure
[0.10.0-alpha-2] - 2024-10-27
Added
- CLI: Provisioning config files
reactive-graph instances init
- CLI: Generate and provisioning certificates using
reactive-graph instances generate-certificate
- CLI: Manage repositories of a local instance using
reactive-graph instances repository
- CLI: Set config values of a local instance using
reactive-graph instances config graphql --secure true
- Distribution: Dockerfile and run configurations for docker
- Docs: Documented installation via docker
Changed
- Docs: Moved book to root folder
- Docs: Applied Reactive Graph Design System
Fixed
- CLI: Self-Updater
Infrastructure
- CI: Update rust nightly toolchain to nightly-2024-10-19
- CI: Auto-merge dependabot PRs
[0.10.0-alpha-1] - 2024-10-20
Added
- CLI: Print or install shell completions (bash, fish, zsh, powershell) and man pages
- CLI: Self Update
reactive-graph update
- CLI: Init instance
reactive-graph instances init <path>
Infrastructure
- CI: Create tag nightly after merge and successful build on main branch
- CI: Publish nightly releases to GitHub Releases
- CI: Sign nightly tag with GPG
- CI: New layout for debian packages
- CI: Added support for
i686-unknown-linux-gnu
(32-bit) - CI: Added support for
armv7-unknown-linux-musleabihf
(MUSL) - CI: Added support for
x86_64-pc-windows-gnu
(MinGW) - CI: Added support for
powerpc-unknown-linux-gnu
,powerpc64-unknown-linux-gnu
andpowerpc64le-unknown-linux-gnu
- CI: Added support for
riscv64gc-unknown-linux-gnu
- CI: Check in lock file for security audit workflow
- CI: Automatic labeling
[0.10.0-alpha-0] - 2024-03-24
This is a highly technical release with a lot of major refactorings and design changes.
Highlights
- Modularized code base
- API separation
- Replaced dependency injection framework
Added
- Added plural types (
EntityTypes
for a set ofEntityType
s) + Changed API to use plural types - Handle reactive instances ReactiveEntity + ReactiveRelation like smart pointers (is this an anti-pattern?)
- Introduced thiserror for lots of error types
- Added test mocks using default_test in order to write tests easier
- Added declarative reactive models (reactive-derive + TypedReactivePropertyContainer)
- Added RelationTypeProviderRegistry and FlowTypeProviderRegistry
- Provide and use preludes
- Support JSON, JSON5 and TOML formats for importing and exporting types
- Added configuration for the location to the SSL certificate and private key
- Remotes Management
- JSON-Schemas
- CLI REPL + Improved CLI
Changed
- Use TypedBuilder in core-model + migrate all calls to the new builders
- Refactored reactive layer out of core-model
- Moved reactive from core-model to reactive
- Refactored hashmap and vec to dashmap and dashset
- Implemented lots of conversions between types and instances
- Refactored import export managers into own services to separate concerns
- Grouped services in a business layer
- Moved tests into implementation classes to follow rust coding guidelines
- Modernized lots of tests with mocks
- Renamed model to inexor_rgf_graph
- Plugins can use springtime dependency injection + Added declarative macros for type providers
- Extended behaviour API: BehaviourFactoryCreator + BehaviourFunctions
- Moved behaviour functionality into behaviour_api and behaviour impl modules
- Moved reactive functionality into reactive_api and reactive impl modules
- Refactored error methods in dynamic graph to regular error types with thiserror
- Made handle_web_resource async
- Web resource providers must have an ID
- Make import export managers fully async
- Improved error types for import and export types
Removed
- Removed IndraDB
[0.9.1-25] - 2023-07-20
Highlights
- Remotes Management
- JSON-Schemas
- CLI REPL + Improved CLI
- Documentation
Added
- Remotes Management
- JSON-Schemas for all types and instances
- CLI REPL
- GraphQL: Filter types by properties, extensions and/or components
- GraphQL: Added counts in types
- GraphQL: Filter plugins by dependencies or unsatisfied dependencies
- GraphQL: Uninstall plugin
- GraphQL: Test getting all plugins
- Plugin System: Whitelist plugins with new configuration enabled_plugins
- Documentation: New chapter about the system architecture
- Documentation: New chapter about the RuntimeBuilder
- Documentation: New chapter limitations
- Documentation: Cross compilation and supported platforms
- Documentation: Packaging for debian
Changed
- All APIs: Delete methods returns boolean
- CLI: refactored CLI tables from the client to the CLI crate
- Runtime: Improved state management in runtime and RuntimeBuilder
- Plugin System: Configuration file accepts short names
- Documentation: Updated sections about the model
- Documentation: Updated lots of GraphQL examples
- Documentation: Updated installation instructions
Fixed
- Don't block runtime shutdown at a specific situation
[0.9.1-22] - 2023-05-07
Added
- Publish debian package for x86_64, aarch64 and armv7
[0.9.1-14] - 2023-05-07
Added
- Publish binaries for more targets, including Raspberry Pi
[0.9.1-4] - 2023-05-07
Added
- Configure the application using environment variables
- Generate Debian Package
[0.9.1] - 2023-05-01
Added
- First public release on crates.io
[0.9.0-15] - 2023-03-26
Added
- Configuration: Configure the instance
- Configuration: Configure the graphql server
- Configuration: Configure the plugins
- Configuration: Added config manager
- Plugin Resolver: Disable all plugins
- Plugin Resolver: Disable specific plugins
- Plugin Repository Manager: Remove duplicate plugins in plugin installation folder
- Executable: Added cli argument for the instance name and description
- Executable: Added cli argument for disabling all plugins
- Executable: Added cli argument for disabling a specific plugin
- Executable: Added cli argument for disabling hot deployment
- Executable: Added cli argument for configuring the hostname and port of the GraphQL server
- Executable: Added cli argument for configuring the shutdown timeout
- Type System: Allow merging types into existing types and plugin type providers are now merging instead of ignoring changes
- GraphQL: Simplify trigger action by providing a dedicated GraphQL mutation
- GraphQL: Allow sorting of type properties
- GraphQL: Allow sorting of type extensions
Changed
- Workspace: Create mono repository
- Workspace: Migrate repository frp into workspace
- Workspace: Migrate repository model into workspace
- Workspace: Migrate repository builder into workspace
- Workspace: Migrate repository reactive into workspace
- Runtime: Refactor into runtime and binary
- Runtime: Use tokio as async runtime
- Plugin Resolver: Resolving plugins asynchronously
- Plugin Lifecycle: Make plugin activate and deactivate methods async
- GraphQL: Generate dynamic GraphQL schema using async-graphql 5.0.0
[0.8.0] - 2022-02-01
Added
- Plugins: Plugin resolver state machine
- Plugins: Plugin dependencies and plugin versioning
- Plugins: Plugin installation directory
- Plugins: Hot deployment
- Plugins: Gracefully shutdown and refresh plugins and their behaviours during deployment / hot deployment
- Plugins: GraphQL: List, start, stop and restart plugins
- Plugins: GraphQL: List unsatisfied dependencies
- Behaviours: Lifecycles (init, connect, disconnect, shutdown)
- Behaviours: A state machine manages the behaviour (connecting, disconnecting, reconnecting)
- Behaviours: Compute behaviour initially
- Behaviours: Validation layer for behaviours
- Behaviours: Factories can construct behaviour instances
- Behaviours: Handle behaviour construction errors
- Behaviours: Macro support for implementing behaviours
- Behaviours: Added GraphQL API for behaviours + Allow connecting and disconnecting behaviours manually (flow editor)
- Behaviours: Unit tests for lots of reactive behaviours
- Model: Introduce namespaces
- Model: Use concrete type system identifiers instead of strings
- API: Validate types on construction (validate that components or entity types are present)
Changed
- Behaviours: Centralized behaviour storage (no more store behaviours in the plugins)
- Behaviours: Reimplemented lots of reactive behaviours
- Plugins: Split most plugins into a model and plugin crate
- API: Make service API and plugin API more consistent (same/similar method names + use type system identifiers)
- Tooling: rustfmt uses separate lines per import
[0.7.0] - 2022-09-25
Added
- Flow Types: Replicate and instantiate flows multiple times (like flow templates)
- Dynamic Graph: A second GraphQL api make the access to the instance system more intuitive
- Plugins: Avoid boilerplate using plugin macros
- Plugins: Metadata about the plugin
- Plugins: Dependency information
- Plugins: Expose GraphQL query service to plugins
Changed
- Plugin: Dedicated error messages for the plugin API
- Plugin: Default trait implementations for the plugin API to reduce boilerplate
- Plugin: Return option none if a plugin doesn't use certain functionality
[0.6.0] - 2022-02-26
Added
- Documentation: Added initial documentation as book (using mdBook)
- GraphQL: Navigate from components to entity types and to relation types
- GraphQL: Navigate from a property instance to the property type
- GraphQL: Shortcut labels
- GraphQL: Filter flows by flow type
- GraphQL: Get flow by label
- GraphQL: Search instances by property value
- GraphQL: Added method to add/remove component to/from an existing instances
- GraphQL: Added filters for instances for applied components/behaviours
- Model: Components can have extensions
- Core: Provide required components and entity types in the application core
- Core: Event System for Type System and Instance System
Changed
- GraphQL: Rename mutation types (Remove prefix GraphQl)
- GraphQL: Rename type_name to type
- GraphQL: Stream property instances in subscriptions instead of handcrafted JSONs
- GraphQL: Simplified label resolver
- GraphQL: Removed behaviour resolver from types
- Model: Make extensions a separate type (used in components, entity types and relation types)
- Model: Removed behaviours from types
- Model: Added list of applied components and behaviours to reactive instances
- Documentation: Convert code of conduct and changelog to markdown
- Documentation: Added code of conduct and changelog to book
[0.5.0] - 2022-01-20
Added
- Plugin API: Added find, import & export methods for all managers
- Core: Search for type names with wildcards
Changed
- Refactored dependency injection library
- Updated dependencies of the dependency injection library
Removed
- Plugin-API: Removed dependencies for faster builds and smaller plugin
binaries:
actix-http
,actix-web
,async-std
,query_interface
,inexor-rgf-core-reactive