Compare commits

...

6 Commits

Author SHA1 Message Date
Tom Moor ae926c6f09 v0.81.1 2024-11-19 23:01:03 -05:00
Tom Moor e4a463601c fix: Do not override from address in self-hosted env, closes #7929 2024-11-19 23:00:50 -05:00
Tom Moor 72e464569b fix: Further improvements to diacritics matching in CMD+F 2024-11-19 23:00:27 -05:00
Tom Moor d598affa7d fix: Cannot sort by role on member settings, closes #7986 2024-11-19 23:00:17 -05:00
Tom Moor 90efd707d9 fix: No-op sending emails in self-hosted if configuration is unavailable rather than retrying
towards #7982
2024-11-19 23:00:09 -05:00
Tom Moor 64c7a89e4d v0.81.0 2024-11-11 08:55:29 -05:00
6 changed files with 22 additions and 8 deletions
+2 -2
View File
@@ -3,7 +3,7 @@ Business Source License 1.1
Parameters
Licensor: General Outline, Inc.
Licensed Work: Outline 0.80.2
Licensed Work: Outline 0.81.1
The Licensed Work is (c) 2024 General Outline, Inc.
Additional Use Grant: You may make use of the Licensed Work, provided that
you may not use the Licensed Work for a Document
@@ -15,7 +15,7 @@ Additional Use Grant: You may make use of the Licensed Work, provided that
Licensed Work by creating teams and documents
controlled by such third parties.
Change Date: 2028-09-26
Change Date: 2028-11-20
Change License: Apache License, Version 2.0
+8 -3
View File
@@ -248,14 +248,19 @@ export default class FindAndReplaceExtension extends Extension {
let m;
const search = this.findRegExp;
while ((m = search.exec(deburr(text)))) {
// We construct a string with the text stripped of diacritics plus the original text for
// search allowing to search for diacritics-insensitive matches easily.
while ((m = search.exec(deburr(text) + text))) {
if (m[0] === "") {
break;
}
// Reconstruct the correct match position
const i = m.index > text.length ? m.index - text.length : m.index;
this.results.push({
from: pos + m.index,
to: pos + m.index + m[0].length,
from: pos + i,
to: pos + i + m[0].length,
});
}
} catch (e) {
@@ -52,7 +52,7 @@ function PeopleTable({ canManage, ...rest }: Props) {
),
},
{
id: "isAdmin",
id: "role",
Header: t("Role"),
accessor: "rank",
Cell: observer(({ row }: { row: { original: User } }) => (
+1 -1
View File
@@ -368,5 +368,5 @@
"qs": "6.9.7",
"rollup": "^4.5.1"
},
"version": "0.80.2"
"version": "0.81.1"
}
+1 -1
View File
@@ -143,7 +143,7 @@ export class Mailer {
Logger.info("email", `Sending email "${data.subject}" to ${data.to}`);
const info = await transporter.sendMail({
from: data.from ?? env.SMTP_FROM_EMAIL,
from: env.isCloudHosted && data.from ? data.from : env.SMTP_FROM_EMAIL,
replyTo: data.replyTo ?? env.SMTP_REPLY_EMAIL ?? env.SMTP_FROM_EMAIL,
to: data.to,
messageId: data.messageId,
+9
View File
@@ -51,6 +51,15 @@ export default abstract class BaseEmail<
* @returns A promise that resolves once the email is placed on the task queue
*/
public schedule(options?: Bull.JobOptions) {
// No-op to schedule emails if SMTP is not configured
if (!env.SMTP_FROM_EMAIL) {
Logger.info(
"email",
`Email ${this.constructor.name} not sent due to missing SMTP configuration`
);
return;
}
const templateName = this.constructor.name;
Metrics.increment("email.scheduled", {