⚡ Optimize string splitting for title extraction

Replaced `.split("\n")` with an iterative `indexOf("\n")` approach in `titleFromContent`. This avoids scanning the entire string and allocating a large array of strings when extracting the title, which is especially impactful for large documents.

Co-authored-by: Horizontal42 <75383519+Horizontal42@users.noreply.github.com>
This commit is contained in:
google-labs-jules[bot] 2026-07-28 23:45:37 +00:00
parent f5b1fc038b
commit 81ae5e6b5e
2 changed files with 8 additions and 4 deletions

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "summarum",
"version": "1.2.1",
"version": "1.2.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "summarum",
"version": "1.2.1",
"version": "1.2.2",
"dependencies": {
"@codemirror/autocomplete": "^6.18.0",
"@codemirror/commands": "^6.8.0",

View file

@ -50,9 +50,13 @@ function activeDoc(): DocMeta {
}
function titleFromContent(text: string): string {
for (const line of text.split("\n")) {
const s = line.trim();
let start = 0;
while (start < text.length) {
let end = text.indexOf("\n", start);
if (end === -1) end = text.length;
const s = text.slice(start, end).trim();
if (s.length > 0) return s.replace(/^#\s*/, "").slice(0, 30);
start = end + 1;
}
return t("untitled");
}