Files
ledger/blobs/0x659f282cd07f48d7e639a304098e22e777748e0ef0147fa1beb6776249858090
2026-10-03 12:15:29 +00:00

54 lines
2.0 KiB
Plaintext

diff --git a/tests/acceptance/9/CRITERIA.json b/tests/acceptance/9/CRITERIA.json
new file mode 100644
index 0000000000000000000000000000000000000000..c6ea8e6a8592adee4635ea5bdce4c7b755eb5684
--- /dev/null
+++ b/tests/acceptance/9/CRITERIA.json
@@ -0,0 +1,12 @@
+{
+ "schema": "elffuss-t2t/criteria@2",
+ "issue": 9,
+ "criteria": [
+ {
+ "index": 1,
+ "tests": [
+ "tests/acceptance/9/criteria.test.js::criterion 1"
+ ]
+ }
+ ]
+}
diff --git a/tests/acceptance/9/criteria.test.js b/tests/acceptance/9/criteria.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..ad6f753de0186ed37545a390ad3ef00342bca48d
--- /dev/null
+++ b/tests/acceptance/9/criteria.test.js
@@ -0,0 +1,15 @@
+import test from 'node:test'
+import assert from 'node:assert/strict'
+const mod = await import('../../../web/js/conversations.js')
+
+const convOf = content => ({ title: null, agent: { history: [{ role: 'user', content }] } })
+
+test('criterion 1', () => {
+ const emoji = '\u{1F600}'
+ const a39 = 'a'.repeat(39)
+ const title = mod.titleFor(convOf(a39 + emoji + 'bcd'))
+ assert.equal(title, a39 + emoji + '…')
+ assert.equal(title.isWellFormed(), true)
+
+ assert.equal(mod.titleFor(convOf('a'.repeat(60))), 'a'.repeat(40) + '…')
+})
diff --git a/web/js/conversations.js b/web/js/conversations.js
index aa9c8399e55571db9062824e5531848c5cd2943a..6227d7578c5db268bfa264d3873d9734edba52c4 100644
--- a/web/js/conversations.js
+++ b/web/js/conversations.js
@@ -41,7 +41,8 @@ export function titleFor(conv) {
// no debe filtrarse al título de la pestaña — se muestra el texto limpio.
const raw = firstUser.content.startsWith(GOAL_PREFIX) ? firstUser.content.slice(GOAL_PREFIX.length) : firstUser.content;
const t = cleanTitle(raw);
- return t.length > 40 ? t.slice(0, 40) + '…' : t || 'Nueva conversación';
+ const chars = Array.from(t);
+ return chars.length > 40 ? chars.slice(0, 40).join('') + '…' : t || 'Nueva conversación';
}
export function setProvider(mod) {