From 7d8dc5d4aa3d81ec767415e775bf64674cb60c72 Mon Sep 17 00:00:00 2001 From: Davide Silvestri <75379892+silvestrid@users.noreply.github.com> Date: Thu, 19 Feb 2026 21:17:08 +0100 Subject: [PATCH 1/2] Fix bug with the new date-picker showing the wrong date (#4827) --- .../crudTable/filters/DateFilter.vue | 13 +++++++-- .../baseComponents/ABDateTimePicker.vue | 1 + .../modules/core/pages/styleGuide.vue | 2 ++ .../components/row/RowEditFieldDate.vue | 1 + .../components/view/ViewFilterTypeDate.vue | 14 +++++++--- .../view/ViewFilterTypeMultiStepDate.vue | 14 +++++++--- .../view/grid/fields/GridViewFieldDate.vue | 1 + .../modules/database/mixins/dateField.js | 27 +++++++++++++++++-- 8 files changed, 63 insertions(+), 10 deletions(-) diff --git a/enterprise/web-frontend/modules/baserow_enterprise/components/crudTable/filters/DateFilter.vue b/enterprise/web-frontend/modules/baserow_enterprise/components/crudTable/filters/DateFilter.vue index 3d27d8f995..adbe8dc40f 100644 --- a/enterprise/web-frontend/modules/baserow_enterprise/components/crudTable/filters/DateFilter.vue +++ b/enterprise/web-frontend/modules/baserow_enterprise/components/crudTable/filters/DateFilter.vue @@ -30,6 +30,7 @@ :use-utc="true" :model-value="dateObject" :language="datePickerLanguage" + :open-date="dateObject || new Date()" :disabled-dates="disableDates" class="datepicker" @update:model-value=" @@ -107,13 +108,21 @@ export default { return } - const newDate = moment.utc(value) + const newDate = moment(value) if (newDate.isValid()) { this.copy = newDate.format('YYYY-MM-DD') if (sender !== 'dateObject') { - this.dateObject = newDate.toDate() + // Because of some bugs with parsing and localizing correctly dates in + // the vuejs3-datepicker component passed both as string and dates, we + // need to localize the date correctly and replace the timezone with + // the browser timezone. This is needed to be able to show the correct + // date in the datepicker. + const newPickerDate = newDate.clone() + newPickerDate.tz(moment.tz.guess(), true) + + this.dateObject = newPickerDate.toDate() } if (sender !== 'dateString') { diff --git a/web-frontend/modules/builder/components/elements/baseComponents/ABDateTimePicker.vue b/web-frontend/modules/builder/components/elements/baseComponents/ABDateTimePicker.vue index 2d4943ab6c..bb25e62bbc 100644 --- a/web-frontend/modules/builder/components/elements/baseComponents/ABDateTimePicker.vue +++ b/web-frontend/modules/builder/components/elements/baseComponents/ABDateTimePicker.vue @@ -35,6 +35,7 @@ diff --git a/web-frontend/modules/database/components/view/ViewFilterTypeDate.vue b/web-frontend/modules/database/components/view/ViewFilterTypeDate.vue index 410f6d4222..12a87dfd2c 100644 --- a/web-frontend/modules/database/components/view/ViewFilterTypeDate.vue +++ b/web-frontend/modules/database/components/view/ViewFilterTypeDate.vue @@ -24,6 +24,7 @@ :use-utc="true" :model-value="dateObject" :language="datePickerLanguage" + :open-date="dateObject || new Date()" class="datepicker" @updated:model-value="chooseDate($event)" > @@ -53,7 +54,7 @@ export default { data() { return { dateString: '', - dateObject: '', + dateObject: null, } }, mounted() { @@ -67,7 +68,7 @@ export default { }, chooseDate(value) { const timezone = this.getTimezone() - const pickerDate = moment.utc(value) + const pickerDate = moment(value) if (!pickerDate.isValid()) { return } else if (timezone !== null) { @@ -93,7 +94,14 @@ export default { this.copy = newDate.format('YYYY-MM-DD') if (sender !== 'dateObject') { - this.dateObject = newDate.format('YYYY-MM-DD') + // Because of some bugs with parsing and localizing correctly dates in + // the vuejs3-datepicker component passed both as string and dates, we + // need to localize the date correctly and replace the timezone with + // the browser timezone. This is needed to be able to show the correct + // date in the datepicker. + const newPickerDate = newDate.clone() + newPickerDate.tz(moment.tz.guess(), true) + this.dateObject = newPickerDate.toDate() } if (sender !== 'dateString') { diff --git a/web-frontend/modules/database/components/view/ViewFilterTypeMultiStepDate.vue b/web-frontend/modules/database/components/view/ViewFilterTypeMultiStepDate.vue index eb10287cae..7c2d2587d8 100644 --- a/web-frontend/modules/database/components/view/ViewFilterTypeMultiStepDate.vue +++ b/web-frontend/modules/database/components/view/ViewFilterTypeMultiStepDate.vue @@ -64,6 +64,7 @@ :use-utc="true" :model-value="dateObject" :language="datePickerLanguage" + :open-date="dateObject || new Date()" class="datepicker" @update:model-value="chooseDate($event)" > @@ -98,7 +99,7 @@ export default { value: '', daysAgoValue: '', dateString: '', - dateObject: '', + dateObject: null, datePickerLang: { en: {}, fr: {}, @@ -142,7 +143,14 @@ export default { this.copy = newDate.format('YYYY-MM-DD') if (sender !== 'dateObject') { - this.dateObject = newDate.format('YYYY-MM-DD') + // Because of some bugs with parsing and localizing correctly dates + // in the vuejs3-datepicker component passed both as string and + // dates, we need to localize the date correctly and replace the + // timezone with the browser timezone. This is needed to be able to + // show the correct date in the datepicker. + const pickerDate = newDate.clone() + pickerDate.tz(moment.tz.guess(), true) + this.dateObject = pickerDate.toDate() } if (sender !== 'dateString') { @@ -164,7 +172,7 @@ export default { }, chooseDate(value) { const timezone = this.getTimezone() - const pickerDate = moment.utc(value) + const pickerDate = moment(value) if (!pickerDate.isValid()) { return } else if (timezone !== null) { diff --git a/web-frontend/modules/database/components/view/grid/fields/GridViewFieldDate.vue b/web-frontend/modules/database/components/view/grid/fields/GridViewFieldDate.vue index bc1bff453b..85ebe4c605 100644 --- a/web-frontend/modules/database/components/view/grid/fields/GridViewFieldDate.vue +++ b/web-frontend/modules/database/components/view/grid/fields/GridViewFieldDate.vue @@ -40,6 +40,7 @@ :use-utc="true" :model-value="pickerDate" :language="datePickerLanguage" + :open-date="pickerDate || new Date()" class="datepicker" @update:model-value="chooseDate(field, $event)" @selected="preventNextUnselect = true" diff --git a/web-frontend/modules/database/mixins/dateField.js b/web-frontend/modules/database/mixins/dateField.js index b9e39e2b20..0cbf3a0a8f 100644 --- a/web-frontend/modules/database/mixins/dateField.js +++ b/web-frontend/modules/database/mixins/dateField.js @@ -52,7 +52,20 @@ export default { }, methods: { updateFormattedDateValue() { - this.pickerDate = this.momentDate.format(DATE_PICKER_FORMAT) + const pickerDate = this.momentDate.clone() + + // Because of some bugs with parsing and localizing correctly dates in the + // vuejs3-datepicker component passed both as string and dates, we need to + // localize the date correctly and replace the timezone with the browser + // timezone. This is needed to be able to show the correct date in the + // datepicker. + const timezone = getFieldTimezone(this.field) + if (timezone !== null) { + pickerDate.tz(timezone) + } + pickerDate.tz(moment.tz.guess(), true) + + this.pickerDate = pickerDate.toDate() this.date = this.momentDate.format(this.fieldDateFormat) }, updateFormattedTimeValue() { @@ -135,7 +148,17 @@ export default { * date data and the copy so that the correct date is visible for the user. */ chooseDate(field, value) { - this.updateDate(field, moment.utc(value).format(DATE_PICKER_FORMAT)) + const timezone = getFieldTimezone(field) || 'UTC' + const momentDate = this.momentDate || moment.utc() + const pickerDate = moment(value) + .set({ + hour: momentDate.hour(), + minute: momentDate.minute(), + second: momentDate.second(), + }) + .tz(timezone, true) + this.updateCopy(field, pickerDate) + this.updateFormattedDateValue() }, /** * When the user uses the time context to choose a time, we also need to update From 1a92615fe7d9f391e709b360f7b55967a8a60831 Mon Sep 17 00:00:00 2001 From: Bram Date: Thu, 19 Feb 2026 22:35:32 +0100 Subject: [PATCH 2/2] Prepare for 2.1.0 (#4833) --- README.md | 4 +- backend/docker/docker-entrypoint.sh | 2 +- backend/src/baserow/config/settings/base.py | 2 +- backend/src/baserow/version.py | 2 +- changelog.md | 42 ++++++++ .../bug/3635_file_too_large_airtable.json | 0 ...collaborator_field_from_being_upserte.json | 0 ...ollaborators_field_couldnt_be_updated.json | 0 ...tems_that_dont_have_anything_to_navig.json | 0 ...subscribing_from_a_baserow_pages_real.json | 0 ...t_show_trashed_rows_in_search_results.json | 0 ...96_generate_values_empty_output_field.json | 0 ...e_with_an_ai_field_associated_with_an.json | 0 ..._previous_nodes_sample_data_to_be_res.json | 0 .../bug/fix_aifield_keyboard_shortcuts.json | 0 ...imits_to_use_the_correct_config_names.json | 0 ..._search_accuracy_for_the_ai_assistant.json | 0 ..._in_the_local_baserow_single_table_ro.json | 0 ..._endpoints_response_labels_so_that_de.json | 0 .../bug/keyerror_generating_formula.json | 0 .../bug/missing_job_registry.json | 0 .../bug/primary_key_change_import.json | 0 ...i_integration_which_prevented_workspa.json | 0 ...aserow_formula_parser_which_prevented.json | 0 ...ug_in_the_data_input_element_which_co.json | 0 .../bug/type_error_formula_array.json | 0 ...add_kuma_to_onboarding_and_reorganize.json | 0 .../feature/add_ukrainian_language.json | 0 .../allow_pasting_in_auth_code_input.json | 0 .../delete_user_files_uploaded_by.json | 0 ...all_application_types_in_left_sidebar.json | 0 ...ounce_ai_field_value_from_auto_update.json | 0 ..._checking_it_before_queuing_celery_ta.json | 0 ...es_to_reduce_initial_memory_footprint.json | 0 .../refactor/refactor_children.json | 0 ...ile_with_justfiles_use_uv_to_manage_p.json | 0 ...and_formatting_toolchain_autopep8_bla.json | 0 .../refactor/update_to_nuxt_3.json | 0 changelog/releases.json | 4 + deploy/all-in-one/README.md | 40 ++++---- deploy/all-in-one/supervisor/start.sh | 2 +- deploy/cloudron/CloudronManifest.json | 2 +- deploy/cloudron/Dockerfile | 2 +- deploy/helm/baserow/Chart.lock | 20 ++-- deploy/helm/baserow/Chart.yaml | 20 ++-- deploy/helm/baserow/README.md | 2 +- .../baserow/charts/baserow-common/Chart.yaml | 4 +- .../baserow/charts/baserow-common/README.md | 2 +- .../baserow/charts/baserow-common/values.yaml | 4 +- deploy/helm/baserow/values.yaml | 2 +- deploy/render/Dockerfile | 2 +- docker-compose.all-in-one.yml | 2 +- docker-compose.no-caddy.yml | 10 +- docker-compose.yml | 10 +- docs/installation/install-behind-apache.md | 12 +-- docs/installation/install-behind-nginx.md | 12 +-- docs/installation/install-on-aws.md | 28 +++--- docs/installation/install-on-cloudron.md | 4 +- docs/installation/install-on-digital-ocean.md | 4 +- docs/installation/install-on-ubuntu.md | 4 +- .../install-using-standalone-images.md | 12 +-- .../install-with-docker-compose.md | 2 +- docs/installation/install-with-docker.md | 38 ++++---- docs/installation/install-with-helm.md | 2 +- docs/installation/install-with-k8s.md | 12 +-- docs/installation/install-with-traefik.md | 2 +- docs/installation/supported.md | 2 +- docs/plugins/creation.md | 2 +- docs/plugins/installation.md | 26 ++--- enterprise/backend/pyproject.toml | 2 +- enterprise/backend/website_export.csv | 95 +++++++++++++++---- heroku.Dockerfile | 2 +- .../Dockerfile | 2 +- .../backend-dev.Dockerfile | 4 +- .../backend.Dockerfile | 2 +- .../dev.Dockerfile | 4 +- .../baserow_plugin_info.json | 2 +- .../web-frontend-dev.Dockerfile | 4 +- .../web-frontend.Dockerfile | 2 +- premium/backend/pyproject.toml | 2 +- web-frontend/docker/docker-entrypoint.sh | 2 +- web-frontend/package.json | 2 +- 82 files changed, 288 insertions(+), 179 deletions(-) rename changelog/entries/{unreleased => 2.1.0}/bug/3635_file_too_large_airtable.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/3954_fixed_a_bug_preventing_collaborator_field_from_being_upserte.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/3954_fixed_a_bug_where_the_collaborators_field_couldnt_be_updated.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/4182_improve_ux_for_search_items_that_dont_have_anything_to_navig.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/4520_resolved_a_bug_where_unsubscribing_from_a_baserow_pages_real.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/4525_do_not_show_trashed_rows_in_search_results.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/4596_generate_values_empty_output_field.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/4601_fix_importing_a_database_with_an_ai_field_associated_with_an.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/fix_a_bug_that_caused_a_previous_nodes_sample_data_to_be_res.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/fix_aifield_keyboard_shortcuts.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/fixed_celery_time_limits_to_use_the_correct_config_names.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/improve_docs_search_accuracy_for_the_ai_assistant.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/improved_error_handling_in_the_local_baserow_single_table_ro.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/improved_the_token_auth_endpoints_response_labels_so_that_de.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/keyerror_generating_formula.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/missing_job_registry.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/primary_key_change_import.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/resolved_a_bug_in_the_ai_integration_which_prevented_workspa.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/resolved_a_bug_in_the_baserow_formula_parser_which_prevented.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/resolved_a_validation_bug_in_the_data_input_element_which_co.json (100%) rename changelog/entries/{unreleased => 2.1.0}/bug/type_error_formula_array.json (100%) rename changelog/entries/{unreleased => 2.1.0}/feature/add_kuma_to_onboarding_and_reorganize.json (100%) rename changelog/entries/{unreleased => 2.1.0}/feature/add_ukrainian_language.json (100%) rename changelog/entries/{unreleased => 2.1.0}/feature/allow_pasting_in_auth_code_input.json (100%) rename changelog/entries/{unreleased => 2.1.0}/feature/delete_user_files_uploaded_by.json (100%) rename changelog/entries/{unreleased => 2.1.0}/feature/list_all_application_types_in_left_sidebar.json (100%) rename changelog/entries/{unreleased => 2.1.0}/refactor/4317_debounce_ai_field_value_from_auto_update.json (100%) rename changelog/entries/{unreleased => 2.1.0}/refactor/4582_improve_rate_limiter_by_checking_it_before_queuing_celery_ta.json (100%) rename changelog/entries/{unreleased => 2.1.0}/refactor/lazy_import_libraries_to_reduce_initial_memory_footprint.json (100%) rename changelog/entries/{unreleased => 2.1.0}/refactor/refactor_children.json (100%) rename changelog/entries/{unreleased => 2.1.0}/refactor/replace_devsh_and_makefile_with_justfiles_use_uv_to_manage_p.json (100%) rename changelog/entries/{unreleased => 2.1.0}/refactor/replace_python_linting_and_formatting_toolchain_autopep8_bla.json (100%) rename changelog/entries/{unreleased => 2.1.0}/refactor/update_to_nuxt_3.json (100%) diff --git a/README.md b/README.md index 538ba97ad0..9c29bb8056 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ existing tools and performs at any scale. [![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://www.heroku.com/deploy/?template=https://github.com/baserow/baserow/tree/master) ```bash -docker run -v baserow_data:/baserow/data -p 80:80 -p 443:443 baserow/baserow:2.0.6 +docker run -v baserow_data:/baserow/data -p 80:80 -p 443:443 baserow/baserow:2.1.0 ``` ![Baserow database screenshot](docs/assets/screenshot.png "Baserow database screenshot") @@ -116,7 +116,7 @@ Created by Baserow B.V. - bram@baserow.io. Distributes under the MIT license. See `LICENSE` for more information. -Version: 2.0.6 +Version: 2.1.0 The official repository can be found at https://github.com/baserow/baserow. diff --git a/backend/docker/docker-entrypoint.sh b/backend/docker/docker-entrypoint.sh index e100349963..7169abf1d7 100755 --- a/backend/docker/docker-entrypoint.sh +++ b/backend/docker/docker-entrypoint.sh @@ -6,7 +6,7 @@ set -euo pipefail # ENVIRONMENT VARIABLES USED DIRECTLY BY THIS ENTRYPOINT # ====================================================== -export BASEROW_VERSION="2.0.6" +export BASEROW_VERSION="2.1.0" # Used by docker-entrypoint.sh to start the dev server # If not configured you'll receive this: CommandError: "0.0.0.0:" is not a valid port number or address:port pair. diff --git a/backend/src/baserow/config/settings/base.py b/backend/src/baserow/config/settings/base.py index 2f3ffeb7fe..9d26ab2917 100644 --- a/backend/src/baserow/config/settings/base.py +++ b/backend/src/baserow/config/settings/base.py @@ -453,7 +453,7 @@ "name": "MIT", "url": "https://github.com/baserow/baserow/blob/develop/LICENSE", }, - "VERSION": "2.0.6", + "VERSION": "2.1.0", "SERVE_INCLUDE_SCHEMA": False, "TAGS": [ {"name": "Settings"}, diff --git a/backend/src/baserow/version.py b/backend/src/baserow/version.py index 7a478940c9..127c148a32 100644 --- a/backend/src/baserow/version.py +++ b/backend/src/baserow/version.py @@ -1 +1 @@ -VERSION = "2.0.6" +VERSION = "2.1.0" diff --git a/changelog.md b/changelog.md index 6803bdde8d..35203ae282 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,47 @@ # Changelog +## Released 2.1.0 + +### New features +* [Core] Add Kuma to onboarding and reorganize the steps. +* [Core] Add Ukrainian languauge. +* [Core] Allow pasting in 6 digit auth code input. +* [Core] Introduced management command to permanently delete user files uploaded by user. +* [Core] List all application types in left sidebar, even if there are no items in there. + +### Bug fixes +* [Database] Fixed FileSizeTooLargeError when importing Airtable database with files. [#3635](https://github.com/baserow/baserow/-/issues/3635) +* [Database] Fixed a bug preventing Collaborator field from being upserted by user ID. [#3954](https://github.com/baserow/baserow/-/issues/3954) +* [Integration] Fixed a bug where the collaborators field couldn't be updated via upsert actions. [#3954](https://github.com/baserow/baserow/-/issues/3954) +* [Database] Improve UX for search items that don't have anything to navigate to [#4182](https://github.com/baserow/baserow/-/issues/4182) +* [Core] Resolved a bug where unsubscribing from a Baserow page's realtime events wouldn't work correctly. [#4520](https://github.com/baserow/baserow/-/issues/4520) +* [Database] Do not show trashed rows in search results [#4525](https://github.com/baserow/baserow/-/issues/4525) +* [Database] Fix Generate all AI values doesn't work when the output field is Single Select and Generate only values for empty cells is checked [#4596](https://github.com/baserow/baserow/-/issues/4596) +* [Database] Fix importing a database with an AI field associated with an ai_auto_update_user [#4601](https://github.com/baserow/baserow/-/issues/4601) +* [Automation] Fixed a bug where a previously tested node's sample data would disappear in the UI after adding a new node. +* [Database] Fix AI field keyboard shortcuts [#4499](https://github.com/baserow/baserow/-/issues/4499) +* [Core] Fixed Celery time limits to use the correct config names. +* [Core] Improve docs search accuracy for the AI Assistant +* [Integration] Improved error handling in the Local Baserow single table row action. +* [Core] Improved the `token_auth` endpoint's response labels so that developers can differentiate between 2fa enabled and 2fa disabled responses. +* [Database] Handle KeyError exception when generating formulas with AI. +* [Core] Fix missing front-end job types are not handled properly [#4544](https://github.com/baserow/baserow/-/issues/4544) +* [Database] Fix field mapping when importing CSV [#3259](https://github.com/baserow/baserow/-/issues/3259) +* [Core] Resolved a bug in the AI integration which prevented workspaces from being exported and then imported correctly. +* [Core] Resolved a bug in the Baserow formula parser which prevented the OR operator (`||`) from being applied correctly. +* [Builder] Resolved a validation bug in the data input element which considered '0' an invalid number. +* [Database] Fix Create row modal inside linked row field fails if the primary field is of type formula array [#4547](https://github.com/baserow/baserow/-/issues/4547) + +### Refactors +* [Database] Debounce AI field value generation, that has been triggered from auto update. [#4317](https://github.com/baserow/baserow/-/issues/4317) +* [Automation] Improved workflow rate limiter performance by checking limits before queuing tasks. [#4582](https://github.com/baserow/baserow/-/issues/4582) +* [Core] Lazy import libraries to reduce initial memory footprint +* [Core] refactor $children +* [Core] Replace dev.sh and makefile with justfiles. Use uv to manage python in the backend. +* [Core] Replace Python linting and formatting toolchain (autopep8, black, flake8, isort, bandit) with ruff +* [Core] Update from Nuxt 2 to Nuxt 3 [#854](https://github.com/baserow/baserow/-/issues/854) + + ## Released 2.0.6 ### New features diff --git a/changelog/entries/unreleased/bug/3635_file_too_large_airtable.json b/changelog/entries/2.1.0/bug/3635_file_too_large_airtable.json similarity index 100% rename from changelog/entries/unreleased/bug/3635_file_too_large_airtable.json rename to changelog/entries/2.1.0/bug/3635_file_too_large_airtable.json diff --git a/changelog/entries/unreleased/bug/3954_fixed_a_bug_preventing_collaborator_field_from_being_upserte.json b/changelog/entries/2.1.0/bug/3954_fixed_a_bug_preventing_collaborator_field_from_being_upserte.json similarity index 100% rename from changelog/entries/unreleased/bug/3954_fixed_a_bug_preventing_collaborator_field_from_being_upserte.json rename to changelog/entries/2.1.0/bug/3954_fixed_a_bug_preventing_collaborator_field_from_being_upserte.json diff --git a/changelog/entries/unreleased/bug/3954_fixed_a_bug_where_the_collaborators_field_couldnt_be_updated.json b/changelog/entries/2.1.0/bug/3954_fixed_a_bug_where_the_collaborators_field_couldnt_be_updated.json similarity index 100% rename from changelog/entries/unreleased/bug/3954_fixed_a_bug_where_the_collaborators_field_couldnt_be_updated.json rename to changelog/entries/2.1.0/bug/3954_fixed_a_bug_where_the_collaborators_field_couldnt_be_updated.json diff --git a/changelog/entries/unreleased/bug/4182_improve_ux_for_search_items_that_dont_have_anything_to_navig.json b/changelog/entries/2.1.0/bug/4182_improve_ux_for_search_items_that_dont_have_anything_to_navig.json similarity index 100% rename from changelog/entries/unreleased/bug/4182_improve_ux_for_search_items_that_dont_have_anything_to_navig.json rename to changelog/entries/2.1.0/bug/4182_improve_ux_for_search_items_that_dont_have_anything_to_navig.json diff --git a/changelog/entries/unreleased/bug/4520_resolved_a_bug_where_unsubscribing_from_a_baserow_pages_real.json b/changelog/entries/2.1.0/bug/4520_resolved_a_bug_where_unsubscribing_from_a_baserow_pages_real.json similarity index 100% rename from changelog/entries/unreleased/bug/4520_resolved_a_bug_where_unsubscribing_from_a_baserow_pages_real.json rename to changelog/entries/2.1.0/bug/4520_resolved_a_bug_where_unsubscribing_from_a_baserow_pages_real.json diff --git a/changelog/entries/unreleased/bug/4525_do_not_show_trashed_rows_in_search_results.json b/changelog/entries/2.1.0/bug/4525_do_not_show_trashed_rows_in_search_results.json similarity index 100% rename from changelog/entries/unreleased/bug/4525_do_not_show_trashed_rows_in_search_results.json rename to changelog/entries/2.1.0/bug/4525_do_not_show_trashed_rows_in_search_results.json diff --git a/changelog/entries/unreleased/bug/4596_generate_values_empty_output_field.json b/changelog/entries/2.1.0/bug/4596_generate_values_empty_output_field.json similarity index 100% rename from changelog/entries/unreleased/bug/4596_generate_values_empty_output_field.json rename to changelog/entries/2.1.0/bug/4596_generate_values_empty_output_field.json diff --git a/changelog/entries/unreleased/bug/4601_fix_importing_a_database_with_an_ai_field_associated_with_an.json b/changelog/entries/2.1.0/bug/4601_fix_importing_a_database_with_an_ai_field_associated_with_an.json similarity index 100% rename from changelog/entries/unreleased/bug/4601_fix_importing_a_database_with_an_ai_field_associated_with_an.json rename to changelog/entries/2.1.0/bug/4601_fix_importing_a_database_with_an_ai_field_associated_with_an.json diff --git a/changelog/entries/unreleased/bug/fix_a_bug_that_caused_a_previous_nodes_sample_data_to_be_res.json b/changelog/entries/2.1.0/bug/fix_a_bug_that_caused_a_previous_nodes_sample_data_to_be_res.json similarity index 100% rename from changelog/entries/unreleased/bug/fix_a_bug_that_caused_a_previous_nodes_sample_data_to_be_res.json rename to changelog/entries/2.1.0/bug/fix_a_bug_that_caused_a_previous_nodes_sample_data_to_be_res.json diff --git a/changelog/entries/unreleased/bug/fix_aifield_keyboard_shortcuts.json b/changelog/entries/2.1.0/bug/fix_aifield_keyboard_shortcuts.json similarity index 100% rename from changelog/entries/unreleased/bug/fix_aifield_keyboard_shortcuts.json rename to changelog/entries/2.1.0/bug/fix_aifield_keyboard_shortcuts.json diff --git a/changelog/entries/unreleased/bug/fixed_celery_time_limits_to_use_the_correct_config_names.json b/changelog/entries/2.1.0/bug/fixed_celery_time_limits_to_use_the_correct_config_names.json similarity index 100% rename from changelog/entries/unreleased/bug/fixed_celery_time_limits_to_use_the_correct_config_names.json rename to changelog/entries/2.1.0/bug/fixed_celery_time_limits_to_use_the_correct_config_names.json diff --git a/changelog/entries/unreleased/bug/improve_docs_search_accuracy_for_the_ai_assistant.json b/changelog/entries/2.1.0/bug/improve_docs_search_accuracy_for_the_ai_assistant.json similarity index 100% rename from changelog/entries/unreleased/bug/improve_docs_search_accuracy_for_the_ai_assistant.json rename to changelog/entries/2.1.0/bug/improve_docs_search_accuracy_for_the_ai_assistant.json diff --git a/changelog/entries/unreleased/bug/improved_error_handling_in_the_local_baserow_single_table_ro.json b/changelog/entries/2.1.0/bug/improved_error_handling_in_the_local_baserow_single_table_ro.json similarity index 100% rename from changelog/entries/unreleased/bug/improved_error_handling_in_the_local_baserow_single_table_ro.json rename to changelog/entries/2.1.0/bug/improved_error_handling_in_the_local_baserow_single_table_ro.json diff --git a/changelog/entries/unreleased/bug/improved_the_token_auth_endpoints_response_labels_so_that_de.json b/changelog/entries/2.1.0/bug/improved_the_token_auth_endpoints_response_labels_so_that_de.json similarity index 100% rename from changelog/entries/unreleased/bug/improved_the_token_auth_endpoints_response_labels_so_that_de.json rename to changelog/entries/2.1.0/bug/improved_the_token_auth_endpoints_response_labels_so_that_de.json diff --git a/changelog/entries/unreleased/bug/keyerror_generating_formula.json b/changelog/entries/2.1.0/bug/keyerror_generating_formula.json similarity index 100% rename from changelog/entries/unreleased/bug/keyerror_generating_formula.json rename to changelog/entries/2.1.0/bug/keyerror_generating_formula.json diff --git a/changelog/entries/unreleased/bug/missing_job_registry.json b/changelog/entries/2.1.0/bug/missing_job_registry.json similarity index 100% rename from changelog/entries/unreleased/bug/missing_job_registry.json rename to changelog/entries/2.1.0/bug/missing_job_registry.json diff --git a/changelog/entries/unreleased/bug/primary_key_change_import.json b/changelog/entries/2.1.0/bug/primary_key_change_import.json similarity index 100% rename from changelog/entries/unreleased/bug/primary_key_change_import.json rename to changelog/entries/2.1.0/bug/primary_key_change_import.json diff --git a/changelog/entries/unreleased/bug/resolved_a_bug_in_the_ai_integration_which_prevented_workspa.json b/changelog/entries/2.1.0/bug/resolved_a_bug_in_the_ai_integration_which_prevented_workspa.json similarity index 100% rename from changelog/entries/unreleased/bug/resolved_a_bug_in_the_ai_integration_which_prevented_workspa.json rename to changelog/entries/2.1.0/bug/resolved_a_bug_in_the_ai_integration_which_prevented_workspa.json diff --git a/changelog/entries/unreleased/bug/resolved_a_bug_in_the_baserow_formula_parser_which_prevented.json b/changelog/entries/2.1.0/bug/resolved_a_bug_in_the_baserow_formula_parser_which_prevented.json similarity index 100% rename from changelog/entries/unreleased/bug/resolved_a_bug_in_the_baserow_formula_parser_which_prevented.json rename to changelog/entries/2.1.0/bug/resolved_a_bug_in_the_baserow_formula_parser_which_prevented.json diff --git a/changelog/entries/unreleased/bug/resolved_a_validation_bug_in_the_data_input_element_which_co.json b/changelog/entries/2.1.0/bug/resolved_a_validation_bug_in_the_data_input_element_which_co.json similarity index 100% rename from changelog/entries/unreleased/bug/resolved_a_validation_bug_in_the_data_input_element_which_co.json rename to changelog/entries/2.1.0/bug/resolved_a_validation_bug_in_the_data_input_element_which_co.json diff --git a/changelog/entries/unreleased/bug/type_error_formula_array.json b/changelog/entries/2.1.0/bug/type_error_formula_array.json similarity index 100% rename from changelog/entries/unreleased/bug/type_error_formula_array.json rename to changelog/entries/2.1.0/bug/type_error_formula_array.json diff --git a/changelog/entries/unreleased/feature/add_kuma_to_onboarding_and_reorganize.json b/changelog/entries/2.1.0/feature/add_kuma_to_onboarding_and_reorganize.json similarity index 100% rename from changelog/entries/unreleased/feature/add_kuma_to_onboarding_and_reorganize.json rename to changelog/entries/2.1.0/feature/add_kuma_to_onboarding_and_reorganize.json diff --git a/changelog/entries/unreleased/feature/add_ukrainian_language.json b/changelog/entries/2.1.0/feature/add_ukrainian_language.json similarity index 100% rename from changelog/entries/unreleased/feature/add_ukrainian_language.json rename to changelog/entries/2.1.0/feature/add_ukrainian_language.json diff --git a/changelog/entries/unreleased/feature/allow_pasting_in_auth_code_input.json b/changelog/entries/2.1.0/feature/allow_pasting_in_auth_code_input.json similarity index 100% rename from changelog/entries/unreleased/feature/allow_pasting_in_auth_code_input.json rename to changelog/entries/2.1.0/feature/allow_pasting_in_auth_code_input.json diff --git a/changelog/entries/unreleased/feature/delete_user_files_uploaded_by.json b/changelog/entries/2.1.0/feature/delete_user_files_uploaded_by.json similarity index 100% rename from changelog/entries/unreleased/feature/delete_user_files_uploaded_by.json rename to changelog/entries/2.1.0/feature/delete_user_files_uploaded_by.json diff --git a/changelog/entries/unreleased/feature/list_all_application_types_in_left_sidebar.json b/changelog/entries/2.1.0/feature/list_all_application_types_in_left_sidebar.json similarity index 100% rename from changelog/entries/unreleased/feature/list_all_application_types_in_left_sidebar.json rename to changelog/entries/2.1.0/feature/list_all_application_types_in_left_sidebar.json diff --git a/changelog/entries/unreleased/refactor/4317_debounce_ai_field_value_from_auto_update.json b/changelog/entries/2.1.0/refactor/4317_debounce_ai_field_value_from_auto_update.json similarity index 100% rename from changelog/entries/unreleased/refactor/4317_debounce_ai_field_value_from_auto_update.json rename to changelog/entries/2.1.0/refactor/4317_debounce_ai_field_value_from_auto_update.json diff --git a/changelog/entries/unreleased/refactor/4582_improve_rate_limiter_by_checking_it_before_queuing_celery_ta.json b/changelog/entries/2.1.0/refactor/4582_improve_rate_limiter_by_checking_it_before_queuing_celery_ta.json similarity index 100% rename from changelog/entries/unreleased/refactor/4582_improve_rate_limiter_by_checking_it_before_queuing_celery_ta.json rename to changelog/entries/2.1.0/refactor/4582_improve_rate_limiter_by_checking_it_before_queuing_celery_ta.json diff --git a/changelog/entries/unreleased/refactor/lazy_import_libraries_to_reduce_initial_memory_footprint.json b/changelog/entries/2.1.0/refactor/lazy_import_libraries_to_reduce_initial_memory_footprint.json similarity index 100% rename from changelog/entries/unreleased/refactor/lazy_import_libraries_to_reduce_initial_memory_footprint.json rename to changelog/entries/2.1.0/refactor/lazy_import_libraries_to_reduce_initial_memory_footprint.json diff --git a/changelog/entries/unreleased/refactor/refactor_children.json b/changelog/entries/2.1.0/refactor/refactor_children.json similarity index 100% rename from changelog/entries/unreleased/refactor/refactor_children.json rename to changelog/entries/2.1.0/refactor/refactor_children.json diff --git a/changelog/entries/unreleased/refactor/replace_devsh_and_makefile_with_justfiles_use_uv_to_manage_p.json b/changelog/entries/2.1.0/refactor/replace_devsh_and_makefile_with_justfiles_use_uv_to_manage_p.json similarity index 100% rename from changelog/entries/unreleased/refactor/replace_devsh_and_makefile_with_justfiles_use_uv_to_manage_p.json rename to changelog/entries/2.1.0/refactor/replace_devsh_and_makefile_with_justfiles_use_uv_to_manage_p.json diff --git a/changelog/entries/unreleased/refactor/replace_python_linting_and_formatting_toolchain_autopep8_bla.json b/changelog/entries/2.1.0/refactor/replace_python_linting_and_formatting_toolchain_autopep8_bla.json similarity index 100% rename from changelog/entries/unreleased/refactor/replace_python_linting_and_formatting_toolchain_autopep8_bla.json rename to changelog/entries/2.1.0/refactor/replace_python_linting_and_formatting_toolchain_autopep8_bla.json diff --git a/changelog/entries/unreleased/refactor/update_to_nuxt_3.json b/changelog/entries/2.1.0/refactor/update_to_nuxt_3.json similarity index 100% rename from changelog/entries/unreleased/refactor/update_to_nuxt_3.json rename to changelog/entries/2.1.0/refactor/update_to_nuxt_3.json diff --git a/changelog/releases.json b/changelog/releases.json index 30b2721c57..bbba081f3c 100644 --- a/changelog/releases.json +++ b/changelog/releases.json @@ -1,5 +1,9 @@ { "releases": [ + { + "name": "2.1.0", + "created_at": "2026-02-19" + }, { "name": "2.0.6", "created_at": "2025-12-22" diff --git a/deploy/all-in-one/README.md b/deploy/all-in-one/README.md index d42352b921..cd59121a8a 100644 --- a/deploy/all-in-one/README.md +++ b/deploy/all-in-one/README.md @@ -15,7 +15,7 @@ tool gives you the powers of a developer without leaving your browser. [Vue.js](https://vuejs.org/) and [PostgreSQL](https://www.postgresql.org/). ```bash -docker run -v baserow_data:/baserow/data -p 80:80 -p 443:443 baserow/baserow:2.0.6 +docker run -v baserow_data:/baserow/data -p 80:80 -p 443:443 baserow/baserow:2.1.0 ``` ## Quick Reference @@ -52,7 +52,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` * Change `BASEROW_PUBLIC_URL` to `https://YOUR_DOMAIN` or `http://YOUR_IP` to enable @@ -75,7 +75,7 @@ docker run \ ## Image Feature Overview -The `baserow/baserow:2.0.6` image by default runs all of Baserow's various services in +The `baserow/baserow:2.1.0` image by default runs all of Baserow's various services in a single container for maximum ease of use. > This image is designed for simple single server deployments or simple container @@ -223,7 +223,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### Behind a reverse proxy already handling ssl @@ -236,7 +236,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### On a nonstandard HTTP port @@ -249,7 +249,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 3001:80 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### With an external PostgresSQL server @@ -268,7 +268,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### With an external Redis server @@ -287,7 +287,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### With an external email server @@ -307,7 +307,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### With a Postgresql server running on the same host as the Baserow docker container @@ -345,7 +345,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ -p 443:443 \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### Supply secrets using files @@ -372,7 +372,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ -p 443:443 \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### Start just the embedded database @@ -385,7 +385,7 @@ docker run -it \ --name baserow \ -p 5432:5432 \ -v baserow_data:/baserow/data \ - baserow/baserow:2.0.6 \ + baserow/baserow:2.1.0 \ start-only-db # Now get the password from docker exec -it baserow cat /baserow/data/.pgpass @@ -417,7 +417,7 @@ docker run -it \ --rm \ --name baserow \ -v baserow_data:/baserow/data \ - baserow/baserow:2.0.6 \ + baserow/baserow:2.1.0 \ backend-cmd-with-db manage dbshell ``` @@ -540,19 +540,19 @@ the command below. ```bash # First read the help message for this command -docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.0.6 \ +docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.1.0 \ backend-cmd-with-db backup --help # Stop Baserow instance docker stop baserow # The command below backs up Baserow to the backups folder in the baserow_data volume: -docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.0.6 \ +docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.1.0 \ backend-cmd-with-db backup -f /baserow/data/backups/backup.tar.gz # Or backup to a file on your host instead run something like: docker run -it --rm -v baserow_data:/baserow/data -v $PWD:/baserow/host \ - baserow/baserow:2.0.6 backend-cmd-with-db backup -f /baserow/host/backup.tar.gz + baserow/baserow:2.1.0 backend-cmd-with-db backup -f /baserow/host/backup.tar.gz ``` ### Restore only Baserow's Postgres Database @@ -568,13 +568,13 @@ docker stop baserow docker run -it --rm \ -v old_baserow_data_volume_containing_the_backup_tar_gz:/baserow/old_data \ -v new_baserow_data_volume_to_restore_into:/baserow/data \ - baserow/baserow:2.0.6 backend-cmd-with-db restore -f /baserow/old_data/backup.tar.gz + baserow/baserow:2.1.0 backend-cmd-with-db restore -f /baserow/old_data/backup.tar.gz # Or to restore from a file on your host instead run something like: docker run -it --rm \ -v baserow_data:/baserow/data -v \ $(pwd):/baserow/host \ - baserow/baserow:2.0.6 backend-cmd-with-db restore -f /baserow/host/backup.tar.gz + baserow/baserow:2.1.0 backend-cmd-with-db restore -f /baserow/host/backup.tar.gz ``` ## Running healthchecks on Baserow @@ -625,7 +625,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` Or you can just store it directly in the volume at `baserow_data/env` meaning it will be @@ -634,7 +634,7 @@ loaded whenever you mount in this data volume. ### Building your own image from Baserow ```dockerfile -FROM baserow/baserow:2.0.6 +FROM baserow/baserow:2.1.0 # Any .sh files found in /baserow/supervisor/env/ will be sourced and loaded at startup # useful for storing your own environment variable overrides. diff --git a/deploy/all-in-one/supervisor/start.sh b/deploy/all-in-one/supervisor/start.sh index 34cad83a6e..bf57d4672c 100755 --- a/deploy/all-in-one/supervisor/start.sh +++ b/deploy/all-in-one/supervisor/start.sh @@ -14,7 +14,7 @@ cat << EOF ██████╔╝██║ ██║███████║███████╗██║ ██║╚██████╔╝╚███╔███╔╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚══╝╚══╝ -Version 2.0.6 +Version 2.1.0 ========================================================================================= EOF diff --git a/deploy/cloudron/CloudronManifest.json b/deploy/cloudron/CloudronManifest.json index adf626b1ad..74a3a4c853 100644 --- a/deploy/cloudron/CloudronManifest.json +++ b/deploy/cloudron/CloudronManifest.json @@ -8,7 +8,7 @@ "contactEmail": "bram@baserow.io", "icon": "file://logo.png", "tags": ["no-code", "nocode", "database", "data", "collaborate", "airtable"], - "version": "2.0.6", + "version": "2.1.0", "healthCheckPath": "/api/_health/", "httpPort": 80, "addons": { diff --git a/deploy/cloudron/Dockerfile b/deploy/cloudron/Dockerfile index c91b55f484..02abb05dba 100644 --- a/deploy/cloudron/Dockerfile +++ b/deploy/cloudron/Dockerfile @@ -1,4 +1,4 @@ -ARG FROM_IMAGE=baserow/baserow:2.0.6 +ARG FROM_IMAGE=baserow/baserow:2.1.0 # This is pinned as version pinning is done by the CI setting FROM_IMAGE. # hadolint ignore=DL3006 FROM $FROM_IMAGE AS image_base diff --git a/deploy/helm/baserow/Chart.lock b/deploy/helm/baserow/Chart.lock index 06d9909cd7..c70e55b894 100644 --- a/deploy/helm/baserow/Chart.lock +++ b/deploy/helm/baserow/Chart.lock @@ -1,28 +1,28 @@ dependencies: - name: baserow repository: file://charts/baserow-common - version: 1.0.42 + version: 1.0.43 - name: baserow repository: file://charts/baserow-common - version: 1.0.42 + version: 1.0.43 - name: baserow repository: file://charts/baserow-common - version: 1.0.42 + version: 1.0.43 - name: baserow repository: file://charts/baserow-common - version: 1.0.42 + version: 1.0.43 - name: baserow repository: file://charts/baserow-common - version: 1.0.42 + version: 1.0.43 - name: baserow repository: file://charts/baserow-common - version: 1.0.42 + version: 1.0.43 - name: baserow repository: file://charts/baserow-common - version: 1.0.42 + version: 1.0.43 - name: baserow repository: file://charts/baserow-common - version: 1.0.42 + version: 1.0.43 - name: redis repository: https://charts.bitnami.com/bitnami version: 19.5.5 @@ -35,5 +35,5 @@ dependencies: - name: caddy-ingress-controller repository: https://caddyserver.github.io/ingress version: 1.1.0 -digest: sha256:9c973270140fc6fdb429502f70216ed94665e59a0538bf49116eadae6baef0c8 -generated: "2025-12-22T13:25:16.919134+01:00" +digest: sha256:a19febff67ef1f5bde17167c13e7d7f6ea618aeb6cdf8314cdbe0522b2f35dd9 +generated: "2026-02-19T22:20:36.794644+01:00" diff --git a/deploy/helm/baserow/Chart.yaml b/deploy/helm/baserow/Chart.yaml index 9196337067..d6fc8fd2f6 100644 --- a/deploy/helm/baserow/Chart.yaml +++ b/deploy/helm/baserow/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: baserow description: The open platform to create scalable databases and applications—without coding. type: application -version: 1.0.42 -appVersion: "2.0.6" +version: 1.0.43 +appVersion: "2.1.0" home: https://github.com/baserow/baserow/blob/develop/deploy/helm/baserow?ref_type=heads icon: https://baserow.io/img/favicon_192.png sources: @@ -13,43 +13,43 @@ sources: dependencies: - name: baserow alias: baserow-backend-asgi - version: "1.0.42" + version: "1.0.43" repository: "file://charts/baserow-common" - name: baserow alias: baserow-backend-wsgi - version: "1.0.42" + version: "1.0.43" repository: "file://charts/baserow-common" - name: baserow alias: baserow-frontend - version: "1.0.42" + version: "1.0.43" repository: "file://charts/baserow-common" - name: baserow alias: baserow-celery-beat-worker - version: "1.0.42" + version: "1.0.43" repository: "file://charts/baserow-common" - name: baserow alias: baserow-celery-export-worker - version: "1.0.42" + version: "1.0.43" repository: "file://charts/baserow-common" - name: baserow alias: baserow-celery-worker - version: "1.0.42" + version: "1.0.43" repository: "file://charts/baserow-common" - name: baserow alias: baserow-celery-flower - version: "1.0.42" + version: "1.0.43" repository: "file://charts/baserow-common" condition: baserow-celery-flower.enabled - name: baserow alias: baserow-embeddings - version: "1.0.42" + version: "1.0.43" repository: "file://charts/baserow-common" condition: baserow-embeddings.enabled diff --git a/deploy/helm/baserow/README.md b/deploy/helm/baserow/README.md index 4960a56a26..4bae596650 100644 --- a/deploy/helm/baserow/README.md +++ b/deploy/helm/baserow/README.md @@ -232,7 +232,7 @@ caddy: | ------------------------------------------------------------------ | --------------------------------------------------------------------------------------- | ----------------------- | | `global.baserow.imageRegistry` | Global Docker image registry | `baserow` | | `global.baserow.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | -| `global.baserow.image.tag` | Global Docker image tag | `2.0.6` | +| `global.baserow.image.tag` | Global Docker image tag | `2.1.0` | | `global.baserow.serviceAccount.shared` | Set to true to share the service account between all application components. | `true` | | `global.baserow.serviceAccount.create` | Set to true to create a service account to share between all application components. | `true` | | `global.baserow.serviceAccount.name` | Configure a name for service account to share between all application components. | `baserow` | diff --git a/deploy/helm/baserow/charts/baserow-common/Chart.yaml b/deploy/helm/baserow/charts/baserow-common/Chart.yaml index d4eea465db..017e6b83ea 100644 --- a/deploy/helm/baserow/charts/baserow-common/Chart.yaml +++ b/deploy/helm/baserow/charts/baserow-common/Chart.yaml @@ -15,10 +15,10 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.0.42 +version: 1.0.43 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "2.0.6" +appVersion: "2.1.0" diff --git a/deploy/helm/baserow/charts/baserow-common/README.md b/deploy/helm/baserow/charts/baserow-common/README.md index 242fcdb4e6..c796203139 100644 --- a/deploy/helm/baserow/charts/baserow-common/README.md +++ b/deploy/helm/baserow/charts/baserow-common/README.md @@ -6,7 +6,7 @@ | ------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | | `global.baserow.imageRegistry` | Global Docker image registry | `baserow` | | `global.baserow.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | -| `global.baserow.image.tag` | Global Docker image tag | `2.0.6` | +| `global.baserow.image.tag` | Global Docker image tag | `2.1.0` | | `global.baserow.serviceAccount.shared` | Set to true to share the service account between all application components. | `true` | | `global.baserow.serviceAccount.create` | Set to true to create a service account to share between all application components. | `true` | | `global.baserow.serviceAccount.name` | Configure a name for service account to share between all application components. | `baserow` | diff --git a/deploy/helm/baserow/charts/baserow-common/values.yaml b/deploy/helm/baserow/charts/baserow-common/values.yaml index d019abad70..a39140aaa7 100644 --- a/deploy/helm/baserow/charts/baserow-common/values.yaml +++ b/deploy/helm/baserow/charts/baserow-common/values.yaml @@ -38,7 +38,7 @@ global: baserow: imageRegistry: baserow image: - tag: 2.0.6 + tag: 2.1.0 imagePullSecrets: [] serviceAccount: shared: true @@ -83,7 +83,7 @@ global: ## image: repository: baserow/baserow # Docker image repository - tag: 2.0.6 # Docker image tag + tag: 2.1.0 # Docker image tag pullPolicy: IfNotPresent # Image pull policy ## @param workingDir Application container working directory diff --git a/deploy/helm/baserow/values.yaml b/deploy/helm/baserow/values.yaml index b8886ea7fa..5ae368bacf 100644 --- a/deploy/helm/baserow/values.yaml +++ b/deploy/helm/baserow/values.yaml @@ -43,7 +43,7 @@ global: baserow: imageRegistry: baserow image: - tag: 2.0.6 + tag: 2.1.0 imagePullSecrets: [] serviceAccount: shared: true diff --git a/deploy/render/Dockerfile b/deploy/render/Dockerfile index 929b149523..4ce4df9478 100644 --- a/deploy/render/Dockerfile +++ b/deploy/render/Dockerfile @@ -1,4 +1,4 @@ -ARG FROM_IMAGE=baserow/baserow:2.0.6 +ARG FROM_IMAGE=baserow/baserow:2.1.0 # This is pinned as version pinning is done by the CI setting FROM_IMAGE. # hadolint ignore=DL3006 FROM $FROM_IMAGE AS image_base diff --git a/docker-compose.all-in-one.yml b/docker-compose.all-in-one.yml index 4bbe375398..1aa5899dc3 100644 --- a/docker-compose.all-in-one.yml +++ b/docker-compose.all-in-one.yml @@ -3,7 +3,7 @@ services: baserow: container_name: baserow - image: baserow/baserow:${BASEROW_VERSION:-2.0.6} + image: baserow/baserow:${BASEROW_VERSION:-2.1.0} environment: BASEROW_PUBLIC_URL: 'http://localhost' ports: diff --git a/docker-compose.no-caddy.yml b/docker-compose.no-caddy.yml index fc80a44130..78ebec370d 100644 --- a/docker-compose.no-caddy.yml +++ b/docker-compose.no-caddy.yml @@ -191,7 +191,7 @@ x-backend-variables: services: backend: - image: baserow/backend:2.0.6 + image: baserow/backend:2.1.0 restart: unless-stopped ports: - "${HOST_PUBLISH_IP:-127.0.0.1}:8000:8000" @@ -206,7 +206,7 @@ services: local: web-frontend: - image: baserow/web-frontend:2.0.6 + image: baserow/web-frontend:2.1.0 restart: unless-stopped ports: - "${HOST_PUBLISH_IP:-127.0.0.1}:3000:3000" @@ -249,7 +249,7 @@ services: local: celery: - image: baserow/backend:2.0.6 + image: baserow/backend:2.1.0 restart: unless-stopped environment: <<: *backend-variables @@ -270,7 +270,7 @@ services: local: celery-export-worker: - image: baserow/backend:2.0.6 + image: baserow/backend:2.1.0 restart: unless-stopped command: celery-exportworker environment: @@ -291,7 +291,7 @@ services: local: celery-beat-worker: - image: baserow/backend:2.0.6 + image: baserow/backend:2.1.0 restart: unless-stopped command: celery-beat environment: diff --git a/docker-compose.yml b/docker-compose.yml index 1e31d0056b..f8af96cde4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -267,7 +267,7 @@ services: local: backend: - image: baserow/backend:${BASEROW_VERSION:-2.0.6} + image: baserow/backend:${BASEROW_VERSION:-2.1.0} restart: unless-stopped environment: @@ -281,7 +281,7 @@ services: local: web-frontend: - image: baserow/web-frontend:${BASEROW_VERSION:-2.0.6} + image: baserow/web-frontend:${BASEROW_VERSION:-2.1.0} restart: unless-stopped environment: BASEROW_PUBLIC_URL: ${BASEROW_PUBLIC_URL-http://localhost} @@ -329,7 +329,7 @@ services: local: celery: - image: baserow/backend:${BASEROW_VERSION:-2.0.6} + image: baserow/backend:${BASEROW_VERSION:-2.1.0} restart: unless-stopped environment: <<: *backend-variables @@ -351,7 +351,7 @@ services: local: celery-export-worker: - image: baserow/backend:${BASEROW_VERSION:-2.0.6} + image: baserow/backend:${BASEROW_VERSION:-2.1.0} restart: unless-stopped command: celery-exportworker environment: @@ -373,7 +373,7 @@ services: local: celery-beat-worker: - image: baserow/backend:${BASEROW_VERSION:-2.0.6} + image: baserow/backend:${BASEROW_VERSION:-2.1.0} restart: unless-stopped command: celery-beat healthcheck: diff --git a/docs/installation/install-behind-apache.md b/docs/installation/install-behind-apache.md index 00ecb819de..762527a63b 100644 --- a/docs/installation/install-behind-apache.md +++ b/docs/installation/install-behind-apache.md @@ -3,7 +3,7 @@ If you have an [Apache server](https://www.apache.com/) this guide will explain how to configure it to pass requests through to Baserow. -We strongly recommend you use our `baserow/baserow:2.0.6` image or the example +We strongly recommend you use our `baserow/baserow:2.1.0` image or the example `docker-compose.yml` files (excluding the `.no-caddy.yml` variant) provided in our [git repository](https://github.com/baserow/baserow/tree/master/deploy/apache/). @@ -18,8 +18,8 @@ simplifies your life by: > If you do not want to use our embedded Caddy service behind your Apache then > make sure you are using one of the two following deployment methods: > -> * Your own container setup with our single service `baserow/backend:2.0.6` - and `baserow/web-frontend:2.0.6` images. +> * Your own container setup with our single service `baserow/backend:2.1.0` + and `baserow/web-frontend:2.1.0` images. > * Or our `docker-compose.no-caddy.yml` example file in our [git repository](https://github.com/baserow/baserow/tree/master/deploy/apache/). > > Then you should use **Option 2: Without our embedded Caddy** section instead. @@ -32,7 +32,7 @@ simplifies your life by: Follow this option if you are using: -* The all-in-one Baserow image `baserow/baserow:2.0.6` +* The all-in-one Baserow image `baserow/baserow:2.1.0` * Any of the example compose files found in the root of our git repository `docker-compose.yml`/`docker-compose.all-in-one.yml` @@ -115,7 +115,7 @@ You should now be able to access Baserow on you configured subdomain. Follow this option if you are using: -* Our standalone `baserow/backend:2.0.6` and `baserow/web-frontend:2.0.6` images with +* Our standalone `baserow/backend:2.1.0` and `baserow/web-frontend:2.1.0` images with your own container orchestrator. * Or the `docker-compose.no-caddy.yml` example docker compose file in the root of our git repository. @@ -147,7 +147,7 @@ sudo systemctl restart apache2 You need to ensure user uploaded files are accessible in a folder for Apache to serve. In the rest of the guide we will use the example `/var/web` folder for this purpose. -If you are using the `baserow/backend:2.0.6` image then you can do this by adding +If you are using the `baserow/backend:2.1.0` image then you can do this by adding `-v /var/web:/baserow/data/media` to your normal `docker run` command used to launch the Baserow backend. diff --git a/docs/installation/install-behind-nginx.md b/docs/installation/install-behind-nginx.md index fba75429c0..a2fd1b6f2a 100644 --- a/docs/installation/install-behind-nginx.md +++ b/docs/installation/install-behind-nginx.md @@ -3,7 +3,7 @@ If you have an [Nginx server](https://www.nginx.com/) this guide will explain how to configure it to pass requests through to Baserow. -We strongly recommend you use our `baserow/baserow:2.0.6` image or the example +We strongly recommend you use our `baserow/baserow:2.1.0` image or the example `docker-compose.yml` files (excluding the `.no-caddy.yml` variant) provided in our [git repository](https://github.com/baserow/baserow/tree/master/deploy/nginx/). @@ -18,8 +18,8 @@ simplifies your life by: > If you do not want to use our embedded Caddy service behind your Nginx then > make sure you are using one of the two following deployment methods: > -> * Your own container setup with our single service `baserow/backend:2.0.6` - and `baserow/web-frontend:2.0.6` images. +> * Your own container setup with our single service `baserow/backend:2.1.0` + and `baserow/web-frontend:2.1.0` images. > * Or our `docker-compose.no-caddy.yml` example file in our [git repository](https://github.com/baserow/baserow/tree/master/deploy/nginx/). > > Then you should use **Option 2: Without our embedded Caddy** section instead. @@ -32,7 +32,7 @@ simplifies your life by: Follow this option if you are using: -* The all-in-one Baserow image `baserow/baserow:2.0.6` +* The all-in-one Baserow image `baserow/baserow:2.1.0` * Any of the example compose files found in the root of our git repository `docker-compose.yml`/`docker-compose.all-in-one.yml` @@ -107,7 +107,7 @@ You should now be able to access Baserow on you configured subdomain. Follow this option if you are using: -* Our standalone `baserow/backend:2.0.6` and `baserow/web-frontend:2.0.6` images with +* Our standalone `baserow/backend:2.1.0` and `baserow/web-frontend:2.1.0` images with your own container orchestrator. * Or the `docker-compose.no-caddy.yml` example docker compose file in the root of our git repository. @@ -126,7 +126,7 @@ but you might have to run different commands. You need to ensure user uploaded files are accessible in a folder for Nginx to serve. In the rest of the guide we will use the example `/var/web` folder for this purpose. -If you are using the `baserow/backend:2.0.6` image then you can do this by adding +If you are using the `baserow/backend:2.1.0` image then you can do this by adding `-v /var/web:/baserow/data/media` to your normal `docker run` command used to launch the Baserow backend. diff --git a/docs/installation/install-on-aws.md b/docs/installation/install-on-aws.md index 35ca0f7ce5..b057c6d0c7 100644 --- a/docs/installation/install-on-aws.md +++ b/docs/installation/install-on-aws.md @@ -49,7 +49,7 @@ overview this is what any AWS deployment of Baserow will need: ## Option 1) Deploying the all-in-one image to Fargate/ECS -The `baserow/baserow:2.0.6` image runs all of Baserow’s various services inside the +The `baserow/baserow:2.1.0` image runs all of Baserow’s various services inside the container for ease of use. This image is designed for single server deployments or simple deployments to @@ -67,7 +67,7 @@ Run. * You don't need to worry about configuring and linking together the different services that make up a Baserow deployment. * Configuring load balancers is easier as you can just directly route through all - requests to any horizontally scaled container running `baserow/baserow:2.0.6`. + requests to any horizontally scaled container running `baserow/baserow:2.1.0`. #### Cons @@ -75,7 +75,7 @@ Run. * Potentially higher resource usage overall as each of the all-in-one containers will come with its internal services, so you have less granular control over scaling specific services. - * For example if you deploy 10 `baserow/baserow:2.0.6` containers horizontally you + * For example if you deploy 10 `baserow/baserow:2.1.0` containers horizontally you by default end up with: * 10 web-frontend services * 10 backend services @@ -188,18 +188,18 @@ Generally, the Redis server is not the bottleneck in Baserow deployments as they Now create a target group on port 80 and ALB ready to route traffic to the Baserow containers. -When setting up the health check for the ALB the `baserow/baserow:2.0.6` container +When setting up the health check for the ALB the `baserow/baserow:2.1.0` container ,which you'll be deploying next, choose port `80` and health check URL `/api/_health/`. We recommend a long grace period of 900 seconds to account for first-time migrations being run on the first container's startup. #### 5) Launching Baserow on ECS/Fargate -Now we are ready to spin up our `baserow/baserow:2.0.6` containers. See below for a +Now we are ready to spin up our `baserow/baserow:2.1.0` containers. See below for a full task definition and environment variables. We recommend launching the containers with 2vCPUs and 4 GB of RAM each to start with. In short, you will want to: -1. Select the `baserow/baserow:2.0.6` image. +1. Select the `baserow/baserow:2.1.0` image. 2. Add a port mapping of `80` on TCP as this is where this images HTTP server is listening by default. 3. Mark the container as essential. @@ -244,7 +244,7 @@ container_definitions = < We recommend setting the timeout of each HTTP API request to 60 seconds in the @@ -484,7 +484,7 @@ This service is our HTTP REST API service. When creating the task definition you This service is our Websocket API service and when configuring the task definition you should: -1. Use the `baserow/backend:2.0.6` +1. Use the `baserow/backend:2.1.0` 2. Under docker configuration set `gunicorn` as the Command. 3. We recommend 2vCPUs and 4 GB of RAM per container to start with. 4. Map the container port `8000`/`TCP` @@ -496,7 +496,7 @@ should: This service is our asynchronous high priority task worker queue used for realtime collaboration and sending emails. -1. Use the `baserow/backend:2.0.6` image with `celery-worker` as the image command. +1. Use the `baserow/backend:2.1.0` image with `celery-worker` as the image command. 2. Under docker configuration set `celery-worker` as the Command. 3. No port mappings needed. 4. We recommend 2vCPUs and 4 GB of RAM per container to start with. @@ -509,7 +509,7 @@ This service is our asynchronous slow/low priority task worker queue for batch processes and running potentially slow operations for users like table exports and imports etc. -1. Use the `baserow/backend:2.0.6` image. +1. Use the `baserow/backend:2.1.0` image. 2. Under docker configuration set `celery-exportworker` as the Command. 3. No port mappings needed. 4. We recommend 2vCPUs and 4 GB of RAM per container to start with. @@ -520,7 +520,7 @@ imports etc. This service is our CRON task scheduler that can have multiple replicas deployed. -1. Use the `baserow/backend:2.0.6` image. +1. Use the `baserow/backend:2.1.0` image. 2. Under docker configuration set `celery-beat` as the Command. 3. No port mapping needed. 4. We recommend 1vCPUs and 3 GB of RAM per container to start with. @@ -537,7 +537,7 @@ This service is our CRON task scheduler that can have multiple replicas deployed Finally, this service is used for server side rendering and serving the frontend of Baserow. -1. Use the `baserow/web-frontend:2.0.6` image with no arguments needed. +1. Use the `baserow/web-frontend:2.1.0` image with no arguments needed. 2. Map the container port `3000` 3. We recommend 2vCPUs and 4 GB of RAM per container to start with. 4. Mark the container as essential. diff --git a/docs/installation/install-on-cloudron.md b/docs/installation/install-on-cloudron.md index 098addbd52..5b3382d396 100644 --- a/docs/installation/install-on-cloudron.md +++ b/docs/installation/install-on-cloudron.md @@ -46,7 +46,7 @@ $ cd baserow/deploy/cloudron After that you can install the Baserow Cloudron app by executing the following commands. ``` -$ cloudron install -l baserow.{YOUR_DOMAIN} --image baserow/cloudron:2.0.6 +$ cloudron install -l baserow.{YOUR_DOMAIN} --image baserow/cloudron:2.1.0 App is being installed. ... App is installed. @@ -89,7 +89,7 @@ the `baserow/deploy/cloudron` folder, you can upgrade your cloudron baserow serv the latest version by running the following command: ``` -cloudron update --app {YOUR_APP_ID} --image baserow/cloudron:2.0.6 +cloudron update --app {YOUR_APP_ID} --image baserow/cloudron:2.1.0 ``` > Note that you must replace the image with the most recent image of Baserow. The diff --git a/docs/installation/install-on-digital-ocean.md b/docs/installation/install-on-digital-ocean.md index 4ff30ad559..3c68e15c3b 100644 --- a/docs/installation/install-on-digital-ocean.md +++ b/docs/installation/install-on-digital-ocean.md @@ -51,7 +51,7 @@ Navigate to the `Apps` page in the left sidebar of your Digital Ocean dashboard. on `Create App`, select `Docker Hub`, and fill out the following: Repository: `baserow/baserow` -Image tag or digest: `2.0.6` +Image tag or digest: `2.1.0` Click on `Next`, then on the `Edit` button of the `baserow-baserow` web service. Here you must change the HTTP Port to 80, and then click on `Back`. Click on the `Next` @@ -124,7 +124,7 @@ environment. In order to update the Baserow version, you simply need to replace the image tag. Navigate to the `Settings` tag of your created app, click on the `baserow-baserow` component, then click on the `Edit` button next to source, change the `Image tag` into -the desired version (latest is `2.0.6`), and click on save. The app will redeploy +the desired version (latest is `2.1.0`), and click on save. The app will redeploy with the latest version. ## External email server diff --git a/docs/installation/install-on-ubuntu.md b/docs/installation/install-on-ubuntu.md index 7894ac2f4d..4b7ae65bf8 100644 --- a/docs/installation/install-on-ubuntu.md +++ b/docs/installation/install-on-ubuntu.md @@ -34,7 +34,7 @@ docker run -e BASEROW_PUBLIC_URL=http://localhost \ -v baserow_data:/baserow/data \ -p 80:80 \ -p 443:443 \ -baserow/baserow:2.0.6 +baserow/baserow:2.1.0 # Watch the logs for Baserow to come available by running: docker logs baserow ``` @@ -147,7 +147,7 @@ docker run \ -v /baserow/media:/baserow/data/media \ -p 80:80 \ -p 443:443 \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 # Check the logs and wait for Baserow to become available docker logs baserow ``` diff --git a/docs/installation/install-using-standalone-images.md b/docs/installation/install-using-standalone-images.md index 51d0234d13..1e931ac359 100644 --- a/docs/installation/install-using-standalone-images.md +++ b/docs/installation/install-using-standalone-images.md @@ -10,9 +10,9 @@ Baserow consists of a number of services, two of which are built and provided as separate standalone images by us: -* `baserow/backend:2.0.6` which by default starts the Gunicorn Django backend server +* `baserow/backend:2.1.0` which by default starts the Gunicorn Django backend server for Baserow but is also used to start the celery workers and celery beat services. -* `baserow/web-frontend:2.0.6` which is a Nuxt server providing Server Side rendering +* `baserow/web-frontend:2.1.0` which is a Nuxt server providing Server Side rendering for the website. If you want to use your own container orchestration software like Kubernetes then these @@ -27,10 +27,10 @@ in the root of our repository. These are all the services you need to set up to run a Baserow using the standalone images: -* `baserow/backend:2.0.6` (default command is `gunicorn`) -* `baserow/backend:2.0.6` with command `celery-worker` -* `baserow/backend:2.0.6` with command `celery-export-worker` -* `baserow/web-frontend:2.0.6` (default command is `nuxt-prod`) +* `baserow/backend:2.1.0` (default command is `gunicorn`) +* `baserow/backend:2.1.0` with command `celery-worker` +* `baserow/backend:2.1.0` with command `celery-export-worker` +* `baserow/web-frontend:2.1.0` (default command is `nuxt-prod`) * A postgres database * A redis server diff --git a/docs/installation/install-with-docker-compose.md b/docs/installation/install-with-docker-compose.md index e7467191ee..62b0edd50d 100644 --- a/docs/installation/install-with-docker-compose.md +++ b/docs/installation/install-with-docker-compose.md @@ -15,7 +15,7 @@ guide on the specifics of how to work with this image. services: baserow: container_name: baserow - image: baserow/baserow:2.0.6 + image: baserow/baserow:2.1.0 environment: BASEROW_PUBLIC_URL: 'http://localhost' ports: diff --git a/docs/installation/install-with-docker.md b/docs/installation/install-with-docker.md index 35bbaba7c4..b835d94fb7 100644 --- a/docs/installation/install-with-docker.md +++ b/docs/installation/install-with-docker.md @@ -29,7 +29,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` * Change `BASEROW_PUBLIC_URL` to `https://YOUR_DOMAIN` or `http://YOUR_IP` to enable @@ -52,7 +52,7 @@ docker run \ ## Image Feature Overview -The `baserow/baserow:2.0.6` image by default runs all of Baserow's various services in +The `baserow/baserow:2.1.0` image by default runs all of Baserow's various services in a single container for maximum ease of use. > This image is designed for simple single server deployments or simple container @@ -200,7 +200,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### Behind a reverse proxy already handling ssl @@ -213,7 +213,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### On a nonstandard HTTP port @@ -226,7 +226,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 3001:80 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### With an external PostgresSQL server @@ -245,7 +245,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### With an external Redis server @@ -264,7 +264,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### With an external email server @@ -284,7 +284,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### With a Postgresql server running on the same host as the Baserow docker container @@ -322,7 +322,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ -p 443:443 \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### Supply secrets using files @@ -349,7 +349,7 @@ docker run \ -v baserow_data:/baserow/data \ -p 80:80 \ -p 443:443 \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` ### Start just the embedded database @@ -362,7 +362,7 @@ docker run -it \ --name baserow \ -p 5432:5432 \ -v baserow_data:/baserow/data \ - baserow/baserow:2.0.6 \ + baserow/baserow:2.1.0 \ start-only-db # Now get the password from docker exec -it baserow cat /baserow/data/.pgpass @@ -394,7 +394,7 @@ docker run -it \ --rm \ --name baserow \ -v baserow_data:/baserow/data \ - baserow/baserow:2.0.6 \ + baserow/baserow:2.1.0 \ backend-cmd-with-db manage dbshell ``` @@ -517,19 +517,19 @@ the command below. ```bash # First read the help message for this command -docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.0.6 \ +docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.1.0 \ backend-cmd-with-db backup --help # Stop Baserow instance docker stop baserow # The command below backs up Baserow to the backups folder in the baserow_data volume: -docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.0.6 \ +docker run -it --rm -v baserow_data:/baserow/data baserow/baserow:2.1.0 \ backend-cmd-with-db backup -f /baserow/data/backups/backup.tar.gz # Or backup to a file on your host instead run something like: docker run -it --rm -v baserow_data:/baserow/data -v $PWD:/baserow/host \ - baserow/baserow:2.0.6 backend-cmd-with-db backup -f /baserow/host/backup.tar.gz + baserow/baserow:2.1.0 backend-cmd-with-db backup -f /baserow/host/backup.tar.gz ``` ### Restore only Baserow's Postgres Database @@ -545,13 +545,13 @@ docker stop baserow docker run -it --rm \ -v old_baserow_data_volume_containing_the_backup_tar_gz:/baserow/old_data \ -v new_baserow_data_volume_to_restore_into:/baserow/data \ - baserow/baserow:2.0.6 backend-cmd-with-db restore -f /baserow/old_data/backup.tar.gz + baserow/baserow:2.1.0 backend-cmd-with-db restore -f /baserow/old_data/backup.tar.gz # Or to restore from a file on your host instead run something like: docker run -it --rm \ -v baserow_data:/baserow/data -v \ $(pwd):/baserow/host \ - baserow/baserow:2.0.6 backend-cmd-with-db restore -f /baserow/host/backup.tar.gz + baserow/baserow:2.1.0 backend-cmd-with-db restore -f /baserow/host/backup.tar.gz ``` ## Running healthchecks on Baserow @@ -602,7 +602,7 @@ docker run \ -p 80:80 \ -p 443:443 \ --restart unless-stopped \ - baserow/baserow:2.0.6 + baserow/baserow:2.1.0 ``` Or you can just store it directly in the volume at `baserow_data/env` meaning it will be @@ -611,7 +611,7 @@ loaded whenever you mount in this data volume. ### Building your own image from Baserow ```dockerfile -FROM baserow/baserow:2.0.6 +FROM baserow/baserow:2.1.0 # Any .sh files found in /baserow/supervisor/env/ will be sourced and loaded at startup # useful for storing your own environment variable overrides. diff --git a/docs/installation/install-with-helm.md b/docs/installation/install-with-helm.md index a526b92201..a9c4f3f621 100644 --- a/docs/installation/install-with-helm.md +++ b/docs/installation/install-with-helm.md @@ -133,7 +133,7 @@ You can specify a particular Baserow version by updating your `config.yaml`: ```yaml global: baserow: - image: 2.0.6 + image: 2.1.0 ``` Or specify the chart version directly: diff --git a/docs/installation/install-with-k8s.md b/docs/installation/install-with-k8s.md index a0d0de2612..167d46f001 100644 --- a/docs/installation/install-with-k8s.md +++ b/docs/installation/install-with-k8s.md @@ -165,7 +165,7 @@ spec: topologyKey: "kubernetes.io/hostname" containers: - name: backend-asgi - image: baserow/backend:2.0.6 + image: baserow/backend:2.1.0 workingDir: /baserow args: - "gunicorn" @@ -222,7 +222,7 @@ spec: topologyKey: "kubernetes.io/hostname" containers: - name: backend-wsgi - image: baserow/backend:2.0.6 + image: baserow/backend:2.1.0 workingDir: /baserow args: - "gunicorn-wsgi" @@ -281,7 +281,7 @@ spec: topologyKey: "kubernetes.io/hostname" containers: - name: backend-worker - image: baserow/backend:2.0.6 + image: baserow/backend:2.1.0 args: - "celery-worker" imagePullPolicy: Always @@ -298,7 +298,7 @@ spec: - secretRef: name: YOUR_ENV_SECRET_REF - name: backend-export-worker - image: baserow/backend:2.0.6 + image: baserow/backend:2.1.0 args: - "celery-exportworker" imagePullPolicy: Always @@ -315,7 +315,7 @@ spec: - secretRef: name: YOUR_ENV_SECRET_REF - name: backend-beat-worker - image: baserow/backend:2.0.6 + image: baserow/backend:2.1.0 args: - "celery-beat" imagePullPolicy: Always @@ -356,7 +356,7 @@ spec: topologyKey: "kubernetes.io/hostname" containers: - name: web-frontend - image: baserow/web-frontend:2.0.6 + image: baserow/web-frontend:2.1.0 args: - nuxt ports: diff --git a/docs/installation/install-with-traefik.md b/docs/installation/install-with-traefik.md index a8715c909e..30de0a507d 100644 --- a/docs/installation/install-with-traefik.md +++ b/docs/installation/install-with-traefik.md @@ -10,7 +10,7 @@ See below for an example docker-compose file that will enable Baserow with Traef ``` services: baserow: - image: baserow/baserow:2.0.6 + image: baserow/baserow:2.1.0 container_name: baserow labels: # Explicitly tell Traefik to expose this container diff --git a/docs/installation/supported.md b/docs/installation/supported.md index 649335fc82..7cba6d50da 100644 --- a/docs/installation/supported.md +++ b/docs/installation/supported.md @@ -8,7 +8,7 @@ Software versions are divided into the following groups: before the release. * `Recommended`: Recommended software for the best experience. -## Baserow 2.0.6 +## Baserow 2.1.0 | Dependency | Supported versions | Tested versions | Recommended versions | diff --git a/docs/plugins/creation.md b/docs/plugins/creation.md index f0b8905453..9ab12446bf 100644 --- a/docs/plugins/creation.md +++ b/docs/plugins/creation.md @@ -122,7 +122,7 @@ containing metadata about your plugin. It should have the following JSON structu { "name": "TODO", "version": "TODO", - "supported_baserow_versions": "2.0.6", + "supported_baserow_versions": "2.1.0", "plugin_api_version": "0.0.1-alpha", "description": "TODO", "author": "TODO", diff --git a/docs/plugins/installation.md b/docs/plugins/installation.md index 4fca36982d..f4ca0c8ad2 100644 --- a/docs/plugins/installation.md +++ b/docs/plugins/installation.md @@ -36,7 +36,7 @@ build your own image based off the Baserow all-in-one image. 4. Next copy the contents shown into your `Dockerfile` ```dockerfile -FROM baserow/baserow:2.0.6 +FROM baserow/baserow:2.1.0 # You can install a plugin found in a git repo: RUN /baserow/plugins/install_plugin.sh \ @@ -70,9 +70,9 @@ RUN /baserow/plugins/install_plugin.sh \ 5. Choose which of the `RUN` commands you'd like to use to install your plugins and delete the rest, replace the example URLs with ones pointing to your plugin. 6. Now build your custom Baserow with the plugin installed by running: - `docker build -t my-customized-baserow:2.0.6 .` + `docker build -t my-customized-baserow:2.1.0 .` 7. Finally, you can run your new customized image just like the normal Baserow image: - `docker run -p 80:80 -v baserow_data:/baserow/data my-customized-baserow:2.0.6` + `docker run -p 80:80 -v baserow_data:/baserow/data my-customized-baserow:2.1.0` ### Installing in an existing Baserow all-in-one container @@ -111,7 +111,7 @@ docker run \ -v baserow_data:/baserow/data \ # ... All your normal launch args go here -e BASEROW_PLUGIN_GIT_REPOS=https://example.com/example/plugin1.git,https://example.com/example/plugin2.git - baserow:2.0.6 + baserow:2.1.0 ``` These variables will only trigger and installation when found on startup of the @@ -120,7 +120,7 @@ container. To uninstall a plugin you must still manually follow the instructions ### Caveats when installing into an existing container If you ever delete the container you've installed plugins into at runtime and re-create -it, the new container is created from the `baserow/baserow:2.0.6` image which does not +it, the new container is created from the `baserow/baserow:2.1.0` image which does not have any plugins installed. However, when a plugin is installed at runtime or build time it is stored in the @@ -135,7 +135,7 @@ scratch. ### Installing into standalone Baserow service images -Baserow also provides `baserow/backend:2.0.6` and `baserow/web-frontend:2.0.6` images +Baserow also provides `baserow/backend:2.1.0` and `baserow/web-frontend:2.1.0` images which only run the respective backend/celery/web-frontend services. These images are used for more advanced self-hosted deployments like a multi-service docker-compose, k8s etc. @@ -145,8 +145,8 @@ used with docker run and a specified command and the plugin env vars shown above example: ``` -docker run --rm baserow/backend:2.0.6 install-plugin ... -docker run -e BASEROW_PLUGIN_GIT_REPOS=https://example.com/example/plugin1.git,https://example.com/example/plugin2.git --rm baserow/backend:2.0.6 +docker run --rm baserow/backend:2.1.0 install-plugin ... +docker run -e BASEROW_PLUGIN_GIT_REPOS=https://example.com/example/plugin1.git,https://example.com/example/plugin2.git --rm baserow/backend:2.1.0 ``` You can use these scripts exactly as you would in the sections above to install a plugin @@ -169,13 +169,13 @@ associated data permanently. [Docker install guide backup section](../installation/install-with-docker.md) for more details on how to do this. 2. Stop your Baserow server first - `docker stop baserow` -3. `docker run --rm -v baserow_data:/baserow/data baserow:2.0.6 uninstall-plugin plugin_name` +3. `docker run --rm -v baserow_data:/baserow/data baserow:2.1.0 uninstall-plugin plugin_name` 4. Now the plugin has uninstalled itself and all associated data has been removed. 5. Edit your custom `Dockerfile` and remove the plugin. -6. Rebuild your image - `docker build -t my-customized-baserow:2.0.6 .` +6. Rebuild your image - `docker build -t my-customized-baserow:2.1.0 .` 7. Remove the old container using the old image - `docker rm baserow` 8. Run your new image with the plugin removed - - `docker run -p 80:80 -v baserow_data:/baserow/data my-customized-baserow:2.0.6` + - `docker run -p 80:80 -v baserow_data:/baserow/data my-customized-baserow:2.1.0` 9. If you fail to do this if you ever recreate the container, your custom image still has the plugin installed and the new container will start up again with the plugin re-installed. @@ -207,7 +207,7 @@ associated data permanently. restart as the environment variable will still contain the old plugin. To do this you must: 1. `docker stop baserow` - 2. `docker run --rm -v baserow_data:/baserow/data baserow:2.0.6 uninstall-plugin plugin_name` + 2. `docker run --rm -v baserow_data:/baserow/data baserow:2.1.0 uninstall-plugin plugin_name` 3. Now the plugin has uninstalled itself and all associated data has been removed. 4. Finally, recreate your Baserow container by using the same `docker run` command you launched it with, just make sure the plugin you uninstalled has been removed @@ -222,7 +222,7 @@ check what plugins are currently installed. docker run \ --rm \ -v baserow_data:/baserow/data \ - baserow:2.0.6 list-plugins + baserow:2.1.0 list-plugins # or on a running container diff --git a/enterprise/backend/pyproject.toml b/enterprise/backend/pyproject.toml index f20d450367..d560642f9a 100644 --- a/enterprise/backend/pyproject.toml +++ b/enterprise/backend/pyproject.toml @@ -12,7 +12,7 @@ description = """Baserow is an open source no-code database tool and Airtable \ # mixed license license = { file = "../LICENSE" } requires-python = "==3.14.*" -version = "2.0.6" +version = "2.1.0" classifiers = [] [project.urls] diff --git a/enterprise/backend/website_export.csv b/enterprise/backend/website_export.csv index 7af7a2d485..33557991c6 100644 --- a/enterprise/backend/website_export.csv +++ b/enterprise/backend/website_export.csv @@ -4172,6 +4172,12 @@ No. Undo/redo only works for your own actions in your current browser session. Y Yes. [Export tables](/user-docs/export-tables), [export views](/user-docs/export-a-view), or [export entire workspaces](/user-docs/export-workspaces) regularly to create backups. For automated backup solutions, consider using the [Baserow API](/user-docs/database-api) or [webhooks](/user-docs/webhooks) with external backup systems. +### Can I recover an element (like a button, text, or container) after deleting it? + +Currently, when you delete an individual element or container within the Baserow Application Builder, it is permanently removed and cannot be recovered. + +Unlike deleting an entire Application or Database, which moves to your Workspace Trash Bin for 3 days, individual elements are not yet supported by the Trash Bin system. + ## Related resources ### Deletion guides @@ -4210,7 +4216,7 @@ Still need help? If you're looking for something else, please feel free to make [1]: https://baserow.io/user-docs/row-change-history - [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/e16b8f4c-2dc8-429c-85e1-b1b17d31554d/Restore%20deleted%20items%20from%20the%20past%203%20days.jpg",,baserow_user_docs,https://baserow.io/user-docs/data-recovery-and-deletion + [2]: https://baserow-backend-production20240528124524339000000001.s3.amazonaws.com/pagedown-uploads/e16b8f4c-2dc8-429c-85e1-b1b17d31554d/Restore%20deleted%20items%20from%20the%20past%203%20days.jpg",workspace,baserow_user_docs,https://baserow.io/user-docs/data-recovery-and-deletion 24,Tables overview,intro-to-tables,Manage your data in Baserow tables,"# Introduction to tables in Baserow Tables are where your data lives in Baserow. Baserow tables combine spreadsheet familiarity with database power; organize once, visualize many ways. @@ -11501,6 +11507,10 @@ Yes. Self-hosted Baserow supports air-gapped deployment on servers without inter Baserow uses WebSockets for real-time collaboration. If you lose connection, you'll see a ""Connection to the server failed"" message. Baserow automatically attempts to reconnect. Simply refresh the page once your connection is restored. Check the [status page][5] if issues persist. +### Can I run a raw SQL query on Baserow Cloud? + +No, direct SQL/database access is not possible on the cloud-hosted (SaaS) plan. The alternative is using the REST API or switching to the Self-Hosted version if direct DB access is a hard requirement. + ## Troubleshooting and resources ### Self-hosted installation help: @@ -12496,9 +12506,11 @@ Baserow's permission system allows you to control who can view, edit, or manage This guide covers how to understand Baserow's permission system, compare free vs. paid role-based access control, and learn which approach fits your security needs. +> Public view sharing isolates specific data for read-only external access. Learn more about [public sharing][1]. + ## Overview -Permissions determine what members can do within workspaces, databases, tables, and fields. As a workspace admin, you assign roles when [inviting users to a workspace][1] or [creating teams][2], then adjust access as your needs evolve. +Permissions determine what members can do within workspaces, databases, tables, and fields. As a workspace admin, you assign roles when [inviting users to a workspace][2] or [creating teams][3], then adjust access as your needs evolve. The right permission strategy depends on your plan, team size, and security requirements. This guide helps you understand your options and select the best approach. @@ -12572,7 +12584,7 @@ Setting up permissions for a new workspace involves a few key planning steps. Fo ### How to set up permissions in a new workspace -1. **Assess your plan's capabilities**: First, identify which roles are available on your [plan][3]. +1. **Assess your plan's capabilities**: First, identify which roles are available on your [plan][4]. 2. **Design your permission structure**: Before inviting anyone, map out your data access strategy. Ask these questions: * Who needs what level of access (e.g., read-only, editor, admin)? * Which databases or tables contain sensitive data that needs to be restricted? @@ -12658,9 +12670,10 @@ Still need help? If you're looking for something else, please feel free to make - [Contact support](/contact) for questions about Baserow or help with your account - [1]: https://baserow.io/user-docs/working-with-collaborators - [2]: https://baserow.io/user-docs/create-and-manage-teams - [3]: https://baserow.io/user-docs/pricing-plans",roles and permissions,baserow_user_docs,https://baserow.io/user-docs/permissions-overview + [1]: https://baserow.io/user-docs/public-sharing + [2]: https://baserow.io/user-docs/working-with-collaborators + [3]: https://baserow.io/user-docs/create-and-manage-teams + [4]: https://baserow.io/user-docs/pricing-plans",roles and permissions,baserow_user_docs,https://baserow.io/user-docs/permissions-overview 113,Member workspace roles,assign-roles-to-members-at-workspace-level,Assign workspace roles to members in Baserow,"# Assign roles to members at workspace level Workspace-level roles set the default permissions each member has across all databases and tables within a workspace; creating a baseline that can be refined with database and table-level exceptions. @@ -20994,10 +21007,16 @@ Baserow applications do **not** update automatically when you change elements in ## Embed an application -To embed your dashboard or application in another website (like Softr, WordPress, or a custom site), publish your app to get a public URL, then use an HTML + ## Integration Architecture Before diving into the setup, let’s understand what’s actually happening when you connect Baserow to Power BI. diff --git a/heroku.Dockerfile b/heroku.Dockerfile index 118ed77bd7..cbff8a7cec 100644 --- a/heroku.Dockerfile +++ b/heroku.Dockerfile @@ -1,4 +1,4 @@ -ARG FROM_IMAGE=baserow/baserow:2.0.6 +ARG FROM_IMAGE=baserow/baserow:2.1.0 # This is pinned as version pinning is done by the CI setting FROM_IMAGE. # hadolint ignore=DL3006 FROM $FROM_IMAGE AS image_base diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/Dockerfile index dc73e55aa2..e2cb49e16a 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/Dockerfile @@ -1,4 +1,4 @@ -FROM baserow/baserow:2.0.6 +FROM baserow/baserow:2.1.0 COPY ./plugins/{{ cookiecutter.project_module }}/ /baserow/plugins/{{ cookiecutter.project_module }}/ RUN /baserow/plugins/install_plugin.sh --folder /baserow/plugins/{{ cookiecutter.project_module }} diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend-dev.Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend-dev.Dockerfile index ecda845786..ada16281e5 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend-dev.Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend-dev.Dockerfile @@ -1,7 +1,7 @@ # This a dev image for testing your plugin when installed into the Baserow backend image -FROM baserow/backend:2.0.6 as base +FROM baserow/backend:2.1.0 as base -FROM baserow/backend:2.0.6 +FROM baserow/backend:2.1.0 USER root diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend.Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend.Dockerfile index a2f66a377f..c1aa012e22 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend.Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/backend.Dockerfile @@ -1,4 +1,4 @@ -FROM baserow/backend:2.0.6 +FROM baserow/backend:2.1.0 USER root diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/dev.Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/dev.Dockerfile index 6b5a9fb540..520ce2bb5f 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/dev.Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/dev.Dockerfile @@ -1,7 +1,7 @@ # This a dev image for testing your plugin when installed into the Baserow all-in-one image -FROM baserow/baserow:2.0.6 as base +FROM baserow/baserow:2.1.0 as base -FROM baserow/baserow:2.0.6 +FROM baserow/baserow:2.1.0 ARG PLUGIN_BUILD_UID ENV PLUGIN_BUILD_UID=${PLUGIN_BUILD_UID:-9999} diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/plugins/{{ cookiecutter.project_module }}/baserow_plugin_info.json b/plugin-boilerplate/{{ cookiecutter.project_slug }}/plugins/{{ cookiecutter.project_module }}/baserow_plugin_info.json index 44f2eba1c4..2043faba01 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/plugins/{{ cookiecutter.project_module }}/baserow_plugin_info.json +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/plugins/{{ cookiecutter.project_module }}/baserow_plugin_info.json @@ -1,7 +1,7 @@ { "name": "{{ cookiecutter.project_name }}", "version": "0.0.1", - "supported_baserow_versions": "2.0.6", + "supported_baserow_versions": "2.1.0", "plugin_api_version": "0.0.1-alpha", "description": "TODO", "author": "TODO", diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend-dev.Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend-dev.Dockerfile index 86bc2d392c..2c1ec7704f 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend-dev.Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend-dev.Dockerfile @@ -1,6 +1,6 @@ # This a dev image for testing your plugin when installed into the Baserow web-frontend image -FROM baserow/web-frontend:2.0.6 as base -FROM baserow/web-frontend:2.0.6 +FROM baserow/web-frontend:2.1.0 as base +FROM baserow/web-frontend:2.1.0 USER root diff --git a/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend.Dockerfile b/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend.Dockerfile index 33036deb85..015e720089 100644 --- a/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend.Dockerfile +++ b/plugin-boilerplate/{{ cookiecutter.project_slug }}/web-frontend.Dockerfile @@ -1,4 +1,4 @@ -FROM baserow/web-frontend:2.0.6 +FROM baserow/web-frontend:2.1.0 USER root diff --git a/premium/backend/pyproject.toml b/premium/backend/pyproject.toml index 14fb025abc..731e31217e 100644 --- a/premium/backend/pyproject.toml +++ b/premium/backend/pyproject.toml @@ -12,7 +12,7 @@ description = """Baserow is an open source no-code database tool and Airtable \ # mixed license license = { file = "../LICENSE" } requires-python = "==3.14.*" -version = "2.0.6" +version = "2.1.0" classifiers = [] [project.urls] diff --git a/web-frontend/docker/docker-entrypoint.sh b/web-frontend/docker/docker-entrypoint.sh index e30f819531..5fabf5df15 100755 --- a/web-frontend/docker/docker-entrypoint.sh +++ b/web-frontend/docker/docker-entrypoint.sh @@ -2,7 +2,7 @@ # Bash strict mode: http://redsymbol.net/articles/unofficial-bash-strict-mode/ set -euo pipefail -export BASEROW_VERSION="2.0.6" +export BASEROW_VERSION="2.1.0" BASEROW_WEBFRONTEND_PORT="${BASEROW_WEBFRONTEND_PORT:-3000}" show_help() { diff --git a/web-frontend/package.json b/web-frontend/package.json index 4c2c38beb9..3e19bc8771 100644 --- a/web-frontend/package.json +++ b/web-frontend/package.json @@ -1,6 +1,6 @@ { "name": "baserow", - "version": "2.0.6", + "version": "2.1.0", "private": true, "type": "module", "scripts": {