From 01adf0c68b999fd7658c319d031e2d33f1cf27ac Mon Sep 17 00:00:00 2001 From: Federico Scodelaro Date: Tue, 14 Jul 2026 04:49:58 -0300 Subject: [PATCH 1/3] fix: Add box-sizing to modals (#2052) --- client/styles/modals.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/client/styles/modals.scss b/client/styles/modals.scss index 0a600e90..60b439a7 100644 --- a/client/styles/modals.scss +++ b/client/styles/modals.scss @@ -5,6 +5,7 @@ max-width: 90%; border-radius: 8px; overflow: hidden; + box-sizing: border-box; &::backdrop { background-color: var(--modal-backdrop-color); From 8ed7a5985ac2e8500725af9845acdace43f70d30 Mon Sep 17 00:00:00 2001 From: josh-j <1652991+josh-j@users.noreply.github.com> Date: Tue, 14 Jul 2026 09:51:31 +0200 Subject: [PATCH 2/3] Fix: mq.poll materialized the entire queue per poll (#2019) --- client/data/mq.datastore.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/client/data/mq.datastore.ts b/client/data/mq.datastore.ts index 5a8c5eb5..4a8ff98e 100644 --- a/client/data/mq.datastore.ts +++ b/client/data/mq.datastore.ts @@ -181,13 +181,20 @@ export class DataStoreMQ { async poll(queue: string, maxItems: number): Promise { // Note: this is not happening in a transactional way, so we may get duplicate message delivery - // Retrieve a batch of messages - const messages = await this.ds.luaQuery( - [...queuedPrefix, queue], - { - limit: maxItems, - }, - ); + // Retrieve a batch of messages with an early-terminating cursor scan. + // (luaQuery would materialize the ENTIRE queue before applying the + // limit — O(queue length) per poll, quadratic over a full space reindex.) + const messages: MQMessage[] = []; + for await ( + const { value } of this.ds.query({ + prefix: [...queuedPrefix, queue], + }) + ) { + messages.push(value); + if (messages.length >= maxItems) { + break; + } + } if (messages.length === 0) { return []; } From 59a147f2d4628f42471319a8a5fdce0fb94ae171 Mon Sep 17 00:00:00 2001 From: henrikx <00heols@gmail.com> Date: Tue, 14 Jul 2026 09:53:18 +0200 Subject: [PATCH 3/3] Fix lost capture groups due to `ipairs` dropping nil values from table (#2046) Fixes #2045 --- libraries/Library/Std/Editor/Lua.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/libraries/Library/Std/Editor/Lua.md b/libraries/Library/Std/Editor/Lua.md index 2ed70e7d..ac7120ea 100644 --- a/libraries/Library/Std/Editor/Lua.md +++ b/libraries/Library/Std/Editor/Lua.md @@ -68,12 +68,8 @@ local function augmentGlobal(localCode) -- Then approximate specific local tag-based object declarations in queries and add them -- matches `tags.something`, `index.tag "something"` and `index.tag("something")` patterns only for m in string.matchRegexAll(localCode, "(?:from|local)\\s+(\\w+)\\s+=\\s*(?:index\\.objects\\s*\"(\\w+)\"|index\\.objects\\s*\\(\"(\\w+)\"\\)|tags\\.(\\w+))") do - local tag - for i, t in ipairs(m) do - if i > 2 and t then - tag = t - end - end + -- m[1] = full match, m[2] = variable name, m[3..5] = tag from each alternative + local tag = m[3] or m[4] or m[5] -- Do we have a schema for this tag? local schema = config.get({"tags", tag, "schema"}) if schema then