|
| 1 | +--- |
| 2 | +status: new |
| 3 | +tags: |
| 4 | + - ReleaseNote |
| 5 | +--- |
| 6 | + |
| 7 | +# Corporate Memory 26.1.0 |
| 8 | + |
| 9 | +Corporate Memory 26.1 is the first major release in 2026. |
| 10 | + |
| 11 | +<!-- |
| 12 | +{ class="bordered" } |
| 13 | +
|
| 14 | +{ class="bordered" } |
| 15 | +
|
| 16 | +{ class="bordered" } |
| 17 | +--> |
| 18 | + |
| 19 | +The highlights of this release are: |
| 20 | + |
| 21 | +- Build: |
| 22 | + - ... |
| 23 | + |
| 24 | +- Explore: |
| 25 | + - ... |
| 26 | + |
| 27 | +- Automate |
| 28 | + - ... |
| 29 | + |
| 30 | + |
| 31 | +This release delivers the following component versions: |
| 32 | + |
| 33 | +- eccenca DataIntegration v26.1.0 |
| 34 | +- eccenca Explore v26.1.0 |
| 35 | +- eccenca Corporate Memory Control (cmemc) v26.1.0 |
| 36 | +- eccenca Graph Insights v19.1.1-2 |
| 37 | + |
| 38 | +We tested this release with the following dependency components: |
| 39 | + |
| 40 | +- Ontotext GraphDB v11.3.0 |
| 41 | +- Keycloak v26.5.3 |
| 42 | + |
| 43 | +More detailed information for this release is provided in the next sections. |
| 44 | + |
| 45 | +## eccenca DataIntegration v26.1.0 |
| 46 | + |
| 47 | +We are excited to announce the release of DataIntegration v26.1, ... |
| 48 | + |
| 49 | + |
| 50 | +## eccenca Explore v26.1.0 |
| 51 | + |
| 52 | +We are pleased to announce Explore v26.1, ... |
| 53 | + |
| 54 | + |
| 55 | +## eccenca Corporate Memory Control (cmemc) v26.1.0 |
| 56 | + |
| 57 | +We are excited to announce cmemc v26.1.0, which introduces new features, improvements and bug fixes. |
| 58 | + |
| 59 | +**v26.1.0 of cmemc adds the following new features:** |
| 60 | + |
| 61 | +- `admin workspace thread-dump` command |
| 62 | + - new command to request a thread dump for all live threads of the build / dataintegration component |
| 63 | +- `admin acl list` command |
| 64 | + - new `--filter` option with the following concrete filters: |
| 65 | + - `name` - filter by access condition name |
| 66 | + - `user` - filter by required user account |
| 67 | + - `group` - filter by required group membership |
| 68 | + - `read-graph` - filter by readable graph |
| 69 | + - `write-graph` - filter by writable graph |
| 70 | +- `admin acl delete` command |
| 71 | + - new `--filter` option with the same filters as the list command |
| 72 | +- `admin acl export` command |
| 73 | + - new command to export access conditions to a JSON file |
| 74 | + - `--filter` option with the same filters as the list command |
| 75 | + - `--output-file`. `--output-dir` and `--filename-template` option to control file structure |
| 76 | + - `--replace` option to replace existing files |
| 77 | +- `admin acl import` command |
| 78 | + - new command to import access conditions from a JSON file |
| 79 | + - `--filter` option with the same filters as the list command |
| 80 | + - `--replace` option to replace existing access conditions with same IRI |
| 81 | +- object list infrastructure |
| 82 | + - new `DirectMultiValuePropertyFilter` class for multi-value filtering with delimiter support |
| 83 | + - support for hidden filters (excluded from help text and shell completion) |
| 84 | +- `config list` command |
| 85 | + - added table output with Connection, Base URI, and Grant Type |
| 86 | + - `--id-only` option: get only connection names |
| 87 | + - `--filter` option with regex filter for connection names |
| 88 | +- `project list` command |
| 89 | + - new `--filter` option with the following concrete filters: |
| 90 | + - `id` - filter by project ID (name) |
| 91 | + - `regex` - filter by regex matching project name, label, or description |
| 92 | + - `tag` - filter by tag label |
| 93 | +- `project delete` command |
| 94 | + - new `--filter` option with the same filters as the list command |
| 95 | +- `project file delete` command |
| 96 | + - new `--filter` option with the following concrete filters: |
| 97 | + - `project` - filter by project ID |
| 98 | + - `regex` - filter by regex matching resource name |
| 99 | + - new `-a, --all` option to delete all file resources |
| 100 | +- `project variable delete` command |
| 101 | + - new `--filter` option with the following concrete filters: |
| 102 | + - `project` - filter by project ID |
| 103 | + - `regex` - filter by regex matching variable id, value, description, or template |
| 104 | + - new `-a, --all` option to delete all variables |
| 105 | +- `project import/export` with Access Conditions |
| 106 | + - `--include-access-conditions` flag to `project export` and `project import` to bundle access control |
| 107 | + data with project archives |
| 108 | +- `graph delete` command |
| 109 | + - new `--filter` option with the following concrete filter: |
| 110 | + - `imported-by` - filter by graphs imported by the specified graph IRI |
| 111 | +- `query list` command |
| 112 | + - new `--filter` option with the following concrete filters: |
| 113 | + - `id` - filter by query URI pattern (regex match on short_url) |
| 114 | + - `type` - filter by query type (SELECT, CONSTRUCT, ASK, DESCRIBE, UPDATE) |
| 115 | + - `placeholder` - filter by queries containing specific placeholder keys |
| 116 | + - `regex` - filter by regex pattern in query text or label |
| 117 | +- `workspace import/export` with Access Conditions |
| 118 | + - `--include-access-conditions` flag to `admin workspace export` and `admin workspace import` to bundle access control |
| 119 | + data with project archives |
| 120 | +- `query explain` command |
| 121 | + - new command to show the query optimization plan for a SPARQL query |
| 122 | + - accepts a file path or a catalog query URI |
| 123 | + - new `--catalog-graph` option to select the query catalog graph |
| 124 | +- `query create` command |
| 125 | + - new command to create a new query in the catalog from a SPARQL file |
| 126 | + - new `--id` option to set the query URI (auto-generated from filename if not provided) |
| 127 | + - new `--label` and `--description` options |
| 128 | + - new `--catalog-graph` option to select the query catalog graph |
| 129 | +- `query update` command |
| 130 | + - new command to update an existing query in the catalog |
| 131 | + - new `--query-file`, `--label`, and `--description` options |
| 132 | + - new `--catalog-graph` option to select the query catalog graph |
| 133 | +- `query delete` command |
| 134 | + - new command to delete one or more queries from the catalog |
| 135 | + - new `-a, --all` option to delete all queries |
| 136 | + - new `--filter` option with the same filters as the list command |
| 137 | + - new `--catalog-graph` option to select the query catalog graph |
| 138 | +- object list infrastructure |
| 139 | + - new `MultiFieldPropertyFilter` class for searching across multiple object fields |
| 140 | +- cmem-client logging |
| 141 | + - new `ClickHandler` class for custom logging output to look the same as cmemc logging |
| 142 | + - `CMEMC_LOG_LEVEL` config variable for setting log level (default: `DEBUG`) |
| 143 | + |
| 144 | +**v26.1.0 of cmemc ships the following fixes:** |
| 145 | + |
| 146 | +- SSL CA bundle not forwarded to httpx when using custom certificates |
| 147 | + - `REQUESTS_CA_BUNDLE` is now passed as the CA bundle path to httpx via `config.verify` |
| 148 | + - Fixed `SSL_VERIFY=false` parsing bug where any string value was treated as `True` |
| 149 | +- Shell completion on msys2/Windows |
| 150 | + - Removed custom zsh completion script in favour of Click's built-in completion |
| 151 | + - Users on msys2/Windows should use: `eval "$(_CMEMC_COMPLETE=zsh_source cmemc | tr -d '\r')"` |
| 152 | +- `graph export` command |
| 153 | + - Fixed MIME type extension handling for RDF formats on Windows systems where `mimetypes.guess_extension()` can return None |
| 154 | +- Project import from a directory |
| 155 | + - This was caused by the addition of Access Conditions to the command group |
| 156 | + |
| 157 | +**v26.1.0 of cmemc introduces the following changes:** |
| 158 | + |
| 159 | +- Delete commands normalization |
| 160 | + - `dataset delete`, `admin user delete`, `admin acl delete`, `project delete`, `graph delete`, `graph insights delete`, `project variable delete` now accept multiple IDs |
| 161 | + - Added zero-padded counter format (01/10 instead of 1/10) |
| 162 | + - Changed success message from "done" to "deleted" |
| 163 | + - Added upfront validation to prevent mixing IDs with --all/--filter options |
| 164 | + - Added deduplication to prevent deleting same item twice |
| 165 | +- Shell completion descriptions now use full terminal width |
| 166 | + - Command group descriptions in shell completions adapt to terminal width instead of being truncated at 45 characters |
| 167 | + - Improves user experience by showing complete command descriptions in modern wide terminals |
| 168 | +- Error handling improvements |
| 169 | + - Replaced `ClickException` with `CmemcError` throughout codebase for consistent error handling |
| 170 | + - Made `CmemcError` auto-retrieve click context, removing need for explicit context passing |
| 171 | + - Simplified error handling by removing redundant context parameters from all error calls |
| 172 | + - Added `suppress_completion_errors` decorator to handle connection errors in shell completion functions |
| 173 | +- Object list infrastructure refactoring |
| 174 | + - Enhanced `DirectListPropertyFilter` with transform option for flexible list transformations |
| 175 | + - Added `transform_list_none` function as default no-op transform for list filters |
| 176 | + - Added `transform_extract_labels` function to extract labels from list of dictionaries |
| 177 | + - Improved consistency between `DirectValuePropertyFilter` and `DirectListPropertyFilter` APIs |
| 178 | +- Improved table output for list commands |
| 179 | + - Added consistent captions to all list command tables showing count, item type, and instance |
| 180 | + - Replaced `timeago` library with `humanize` for better time formatting |
| 181 | + - Enhanced empty table messages to distinguish between filtered and unfiltered results |
| 182 | + - Affected commands: `acl list`, `admin client list`, `admin user list`, `dataset list`, |
| 183 | + `graph list`, `graph imports list`, `graph insights list`, `admin metrics list`, |
| 184 | + `admin migration list`, `project list`, `project variable list`, `admin workspace python list`, |
| 185 | + `admin workspace python list-plugins`, `query list`, `query status`, `workflow scheduler list`, |
| 186 | + `graph validation list`, `vocabulary list`, `vocabulary cache list`, `workflow list` |
| 187 | +- `dataset list` and `dataset delete` commands |
| 188 | + - Refactored to use ObjectList infrastructure for consistent filtering |
| 189 | + - Dataset types are now displayed as clickable documentation links |
| 190 | + - Type column shows human-readable titles (e.g., "JSON", "CSV", "Excel") instead of raw plugin IDs |
| 191 | + - Links direct to official eccenca Corporate Memory dataset documentation |
| 192 | + - Dataset IDs are now displayed as clickable workspace links |
| 193 | +- `graph list` command |
| 194 | + - Graph labels now displayed as clickable links to the graph in the web interface |
| 195 | + - Refactored to use ObjectList infrastructure for consistent filtering |
| 196 | +- `project list` command |
| 197 | + - Project labels now displayed as clickable links to the project in the web interface |
| 198 | + - Added "Modified" timestamp column with humanized time display |
| 199 | + - Table minimum width now set to match caption length for better formatting |
| 200 | +- `project variable delete` command |
| 201 | + - Refactored to use ObjectList infrastructure for consistent filtering |
| 202 | +- `query list` command |
| 203 | + - Query labels now displayed as clickable links to the query editor in the web interface |
| 204 | +- `query` command group |
| 205 | + - `--catalog-graph` completion now only suggests graphs that contain queries |
| 206 | + - dependent placeholder value completion now resolves using already-provided `-p` values |
| 207 | + - placeholder key completion shows labels and dependency hints when a value query requires another placeholder |
| 208 | +- `workflow list` command |
| 209 | + - Workflow labels now displayed as clickable links to the workflow editor in the web interface |
| 210 | +- `config list` command |
| 211 | + - default output changed from simple list to table format |
| 212 | + - use `--id-only` to get the simple connection name list for piping |
| 213 | + - removal of previously deprecated commands / groups - see migration notes |
| 214 | + |
| 215 | + |
| 216 | +## Migration Notes |
| 217 | + |
| 218 | +TODO |
| 219 | + |
| 220 | +!!! info "Backward and Forward Compatibility" |
| 221 | + |
| 222 | + We do not guarantee forward compatibility for configuration, data or projects. |
| 223 | + I.e. importing a project created with DataIntegration v25.2.0 into DataIntegration v25.1.0 (or older) might not work. |
| 224 | + |
| 225 | + Backward compatibility will be ensured or migration paths explained. |
| 226 | + I.e. projects created with DataIntegration v24.3.0 can be imported into DataIntegration v25.1.0. |
| 227 | + |
| 228 | +!!! info "Important info" |
| 229 | + |
| 230 | + Since v24.3.0, the components eccenca DataPlatform and eccenca DataManager are merged |
| 231 | + into a single component eccenca Explore. |
| 232 | + |
| 233 | +### eccenca DataIntegration |
| 234 | + |
| 235 | +... |
| 236 | + |
| 237 | +### eccenca Explore |
| 238 | + |
| 239 | +... |
| 240 | + |
| 241 | +### cmemc |
| 242 | + |
| 243 | +**v26.1.0 of cmemc finally removes the following deprecated functionality:** |
| 244 | + |
| 245 | +- `dataset resource` command group |
| 246 | + - deprecated in v25.6.0, use `project file` command group instead |
| 247 | +- `graph tree` command |
| 248 | + - deprecated in v25.2.0, use the `graph imports tree` command instead |
| 249 | +- `admin store migrate` command |
| 250 | + - deprecated in v25.0.0, use the `admin migration` command group instead |
| 251 | +- `--overwrite` options |
| 252 | + - deprecated in v25.0.0, use the `--replace` option instead |
| 253 | + - affected commands: `admin store export`, `project import`, `project export`, `admin workspace export` |
| 254 | +- deprecated auto-completion URIs |
| 255 | +- `dataset delete` command |
| 256 | + - `--project` option, use `--filter projext XXX` instead |
| 257 | +- `project create --from-transformation` option |
| 258 | + |
0 commit comments