Menu
Introduction
Getting Started
Developer guide
Release
Updates
News in 0.22.0
News in 0.21.0
News in 0.20.0
News in 0.19.0
Architecture
CLI
Technical documentations
Version
Publication date

Mar 9, 2022

Confidentiality
Public
Reactions
1
Share

News in 0.22.0

Features


  • New: Forms — A form is a structured document used to collect and store data in a consistent way. Each form is created from a published form template and inherits its schema — the set of fields, their types, and their layout. Forms make it easy to capture experimental parameters, sample metadata, or observations in a repeatable format, so the data you collect stays uniform and comparable across your data lab (1c9fc877f9bc6c8a)
    • Form templates & versioning — Create form templates with draft/publish/archive lifecycle, optional template version, and the ability to unarchive a template version (1c9fc877f9bc6c8a)
      • ComputedParam — New computed parameter type with @ variable references and outer-variable references; validation runs on submit and on version publish (51f3890d1c9fc877f9bc6c8a)
        • AI-assisted filling — Fill a form from free text and generate computed-field expressions with AI (c18dafa21c9fc877)
          • Note integration — Embed forms in notes and note templates; convert FormBlock when creating a note template from a note; filter notes and note templates by form / form template in the search builder; sync notes containing forms with Space (0c98cab26d3bbefbe5d866bc1c9fc877)
          • New: Entity actions — Custom action buttons and links can now be added to the menu of lab entities (resources, scenarios, notes, forms, and their templates) — for example to open a custom viewer, trigger an analysis, or jump to a related page (9982cca6)
            • New: Scenario export / import — Possibility to export and import a scenario to a compressed file (1c9fc877)
              • Update: App — Possibility to switch Auto stop policy for App to Manual. In Manual, the app are not automatically stopped.

                Technical Features


                • Switch from pip to uv — gws post-install and BrickSettings now use uv instead of pip; remaining pip references migrated (1c9fc877)
                  • New SelectParam type — Replaces the deprecated allowed_values argument on StrParam / IntParam / FloatParam with a dedicated param type supporting {label, value} options and Enum classes. allowed_valuesstill works in 0.22 with a deprecation warning and will be removed in 0.24.
                    • A migration codemod is shipped — run it on a brick with:gws brick code-migrate <brick_path> --version 0.22.0 Use --dry-run to preview the diff or --yes to apply without prompting (1c9fc877f9bc6c8a)
                    • New DateParam type — New param type for date fields, with proper typing and min/max value checks (f9bc6c8ae28d2b71)
                      • Test suite overhaul — Significant rework of the test infrastructure:
                        • Parallel execution — Tests can now run in parallel via pytest-xdist; each worker gets its own test DB schema. Use --parallel (with optional --workers <N> or auto):gws server test all --parallel gws server test all --parallel --workers 4
                          • Multi-brick test runs — New gws server test-all command runs the suite across multiple bricks in one call, with per-brick JUnit XML reports
                            • BrickTestRunner task — New task at src/gws_core/test/brick_test_runner.py that installs a configurable set of bricks inside a fresh glab test container and runs gws server test-all against them, producing a JUnit XML folder and an aggregated summary. Useful for running a brick's tests in an isolated, reproducible environment
                              • Faster local runs — Simplified before/after hooks and skipped DB migrations in test mode (1c9fc877)
                              • Entity action plugin system — New EntityActionPlugin API to contribute menu actions on lab entities from any brick (9982cca6):
                                • Plugin definition — Subclass EntityActionPlugin, set entity_action_type (one of RESOURCESCENARIONOTEFORMSCENARIO_TEMPLATENOTE_TEMPLATEFORM_TEMPLATE), and register it with the @entity_action_plugin("<name>") decorator
                                  • get_actions(entity) — Return the list of actions to show for the given entity, using the EntityAction.button(...) / EntityAction.link(...) helpers (with icons, colors, dividers, and nested sub-menus)
                                    • execute_action(entity, action_name) — Handle button clicks; can return a navigation instruction in the result
                                      • Namespacing & dispatch — Plugins are namespaced as <brick_name>.<plugin_name> so the dispatch endpoint routes each action back to the right plugin
                                        • Auto-disabled with the brick — A disabled brick's plugins are never registered, so its actions disappear automatically
                                          • Validation — Plugin unique_name and per-button action_name are checked for uniqueness
                                          • Reflex improvements — New download service, improved select resource input and resource search filter, improved typing for resource select (1c9fc8770603a3f8)
                                            • Streamlit / Reflex env apps — New command to generate env app files, fix env app generation, and generate environment.json during Reflex plugin installation (e60ac7f91bcf7b921c9fc877)

                                              Other Changes


                                              • Remove hardcoded /lab path — Replaced hardcoded /lab references with an env variable and a settings method (1c9fc877)
                                                • App lifecycle hardening — Kill existing processes using the port on start, force-kill processes on stop, and improve stop-app behavior (1c9fc877)
                                                  • Compress utilities — New add_dir_content method, sudo option, and improved documentation (a148e43f6b5f0208)
                                                    • FileHelper.is_excel — New helper to detect Excel files (9982cca6)
                                                      • DockerService volume paths — New method to get paths for volumes (1e920a26)
                                                        • Task exception logging — Option to log full exception stack trace (1c9fc877)
                                                          • Note rollback event — Emit update event when a note is rolled back (1c9fc877)
                                                            • ZipCompress error handling — Improved error handling with detailed messages (4717ddc8)
                                                              • VenvService logging — Improved error logs (2de25fe5)
                                                                • Settings: stop storing is_test — is_test is no longer persisted in settings.json (1c9fc877)
                                                                  • PostInstall cleanup — Removed pigz from post-install (handled by Docker config) (1c9fc877)
                                                                    • ReflexProcess debug logs — Added debug logging to ReflexProcess (1c9fc877)
                                                                      • Streamlit / Reflex version bump — Updated Streamlit and Reflex versions (1bcf7b92)


                                                                        Shine Logo
                                                                        Technical bricks to reuse or customize

                                                                        Have you developed a brick?

                                                                        Share it to accelerate projects for the entire community.