54 lines
2.0 KiB
Plaintext
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) {
|