From c214fd51d2f30b041d2d4982af897804f5fc981f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 21 Aug 2023 09:20:57 -0400 Subject: [PATCH 1/3] automated update to translation keys (#636) Co-authored-by: Paul's Grist Bot --- static/locales/en.client.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/static/locales/en.client.json b/static/locales/en.client.json index 893cbda5..c29b0021 100644 --- a/static/locales/en.client.json +++ b/static/locales/en.client.json @@ -490,7 +490,10 @@ "Update Original": "Update Original", "Workspace": "Workspace", "You do not have write access to the selected workspace": "You do not have write access to the selected workspace", - "You do not have write access to this site": "You do not have write access to this site" + "You do not have write access to this site": "You do not have write access to this site", + "Download full document and history": "Download full document and history", + "Remove all data but keep the structure to use as a template": "Remove all data but keep the structure to use as a template", + "Remove document history (can significantly reduce file size)": "Remove document history (can significantly reduce file size)" }, "NotifyUI": { "Ask for help": "Ask for help", @@ -612,7 +615,8 @@ "Show in folder": "Show in folder", "Unsaved": "Unsaved", "Work on a Copy": "Work on a Copy", - "Share": "Share" + "Share": "Share", + "Download...": "Download..." }, "SiteSwitcher": { "Create new team site": "Create new team site", From 963b3ea5df93bf63c4e158a058904b5b04d9ee0e Mon Sep 17 00:00:00 2001 From: nbush Date: Mon, 21 Aug 2023 12:20:19 -0400 Subject: [PATCH 2/3] adding env variable anchor links (#637) --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 25441eee..dc2b9de6 100644 --- a/README.md +++ b/README.md @@ -303,7 +303,7 @@ REDIS_URL | optional redis server for browser sessions and db query ca GRIST_SNAPSHOT_TIME_CAP | optional. Define the caps for tracking buckets. Usage: {"hour": 25, "day": 32, "isoWeek": 12, "month": 96, "year": 1000} GRIST_SNAPSHOT_KEEP | optional. Number of recent snapshots to retain unconditionally for a document, regardless of when they were made -AI Formula Assistant related variables (all optional): +#### AI Formula Assistant related variables (all optional): Variable | Purpose -------- | ------- @@ -316,7 +316,7 @@ OPENAI_API_KEY | optional. Synonym for ASSISTANT_API_KEY that assumes an Op At the time of writing, the AI Assistant is known to function against OpenAI chat completion endpoints for gpt-3.5-turbo and gpt-4. It can also function against the chat completion endpoint provided by llama-cpp-python. -Sandbox related variables: +#### Sandbox related variables: Variable | Purpose -------- | ------- @@ -325,7 +325,7 @@ GRIST_SANDBOX | a program or image name to run as the sandbox. See NSandbox.ts f PYTHON_VERSION | can be 2 or 3. If set, documents without an engine setting are assumed to use the specified version of python. Not all sandboxes support all versions. PYTHON_VERSION_ON_CREATION | can be 2 or 3. If set, newly created documents have an engine setting set to python2 or python3. Not all sandboxes support all versions. -Forward authentication variables: +#### Forward authentication variables: Variable | Purpose -------- | ------- @@ -344,7 +344,7 @@ When using forward authentication, you may wish to also set the following variab GRIST_FORWARD_AUTH_HEADER is similar to GRIST_PROXY_AUTH_HEADER, but enables a login system (assuming you have some forward authentication set up). -Google Drive integrations: +#### Google Drive integrations: Variable | Purpose -------- | ------- @@ -353,7 +353,7 @@ GOOGLE_CLIENT_SECRET| set to the Google Client Secret to be used with Google API GOOGLE_API_KEY | set to the Google API Key to be used with Google API client (accessing public files) GOOGLE_DRIVE_SCOPE | set to the scope requested for Google Drive integration (defaults to drive.file) -Database variables: +#### Database variables: Variable | Purpose -------- | ------- @@ -365,7 +365,7 @@ TYPEORM_PORT | port number for db if not the default for that db type TYPEORM_TYPE | set to 'sqlite' or 'postgres' TYPEORM_USERNAME | username to connect as -Testing: +#### Testing: Variable | Purpose -------- | ------- From b41fa31dd9a0f6308821937159a76400a7d622c8 Mon Sep 17 00:00:00 2001 From: Janet Vorobyeva Date: Tue, 22 Aug 2023 03:17:01 -0400 Subject: [PATCH 3/3] Fixes bug 'this.valueFormatter is not a function' (#632) https://grist.slack.com/archives/C069RUP71/p1692034396980779 Bug showed up when deleting a page with the right kinds of widgets/fields, due to a missing isDisposed check Bug was found in DateTextBox, but I added the fix to NTextBox which had an identical bit of code --- app/client/widgets/DateTextBox.js | 2 +- app/client/widgets/NTextBox.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/client/widgets/DateTextBox.js b/app/client/widgets/DateTextBox.js index 87c88de8..388bfae8 100644 --- a/app/client/widgets/DateTextBox.js +++ b/app/client/widgets/DateTextBox.js @@ -83,7 +83,7 @@ DateTextBox.prototype.buildDom = function(row) { let value = row[this.field.colId()]; return dom('div.field_clip', kd.style('text-align', this.alignment), - kd.text(() => row._isAddRow() ? '' : this.valueFormatter().format(value())) + kd.text(() => row._isAddRow() || this.isDisposed() ? '' : this.valueFormatter().format(value())) ); }; diff --git a/app/client/widgets/NTextBox.ts b/app/client/widgets/NTextBox.ts index 1771366e..12f7a780 100644 --- a/app/client/widgets/NTextBox.ts +++ b/app/client/widgets/NTextBox.ts @@ -63,7 +63,9 @@ export class NTextBox extends NewAbstractWidget { return dom('div.field_clip', dom.style('text-align', this.alignment), dom.cls('text_wrapping', this.wrapping), - dom.domComputed((use) => use(row._isAddRow) ? null : makeLinks(use(this.valueFormatter).formatAny(use(value), t))) + dom.domComputed((use) => use(row._isAddRow) || this.isDisposed() ? + null : + makeLinks(use(this.valueFormatter).formatAny(use(value), t))) ); } }