diff --git a/blobs/0x659f282cd07f48d7e639a304098e22e777748e0ef0147fa1beb6776249858090 b/blobs/0x659f282cd07f48d7e639a304098e22e777748e0ef0147fa1beb6776249858090 new file mode 100644 index 0000000..0cd8490 --- /dev/null +++ b/blobs/0x659f282cd07f48d7e639a304098e22e777748e0ef0147fa1beb6776249858090 @@ -0,0 +1,53 @@ +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) { diff --git a/events/0000000996.json b/events/0000000996.json new file mode 100644 index 0000000..06ec579 --- /dev/null +++ b/events/0000000996.json @@ -0,0 +1 @@ +{"data":{"cites":[],"envelope":{"delegation":{"identity":"0xdd8075ba73c2173b9f05957b5f1a7561600e5494","nonce":"1791029712","project":"0x0000000000000000000000000000000000000000000000000000000000000000","scopes":1,"sessionX":"0x261790e324f700bae7e8d45e043af95beb0e83fc1ea3c4209cbacbaa8e5eedae","sessionY":"0x9f9a738888298bc0d9af0fbdd3879d693164f2baaa96664fa731c5bb81f9a23d","validFrom":"1791029652","validUntil":"1791202512"},"delegationSignature":"0xb83c7aaab5580d9a760dde81cae55e63663a1d5e83466ea319f62e315a3b0a2b12628652cec67ceedae5dafc7623d31c53653c7daab1728f8584e555be19f5c01c","kind":"session","signature":"0xfcf4ef76d4d2554e4919e7501d40d7b0a6baae48ed6d7fd50a4a6e3b8d5069f21c8018a313f4ddf4937fa4eda51be5b94907f89815272cfa638b2a5dc11d68b7"},"mainHead":null,"message":{"author":"0xdd8075ba73c2173b9f05957b5f1a7561600e5494","baseCommit":"0x34e25b3bb1782986b27961da07f41ea08a1698d0","basePartial":"0x0000000000000000000000000000000000000000000000000000000000000000","citesHash":"0x0000000000000000000000000000000000000000000000000000000000000000","issueId":"0x76d6986733689a0daf7f538f2068e36d2e4d9363bd01d5e0e69704ee39f48fd3","issuedAt":"1791029729","lines":3,"nonce":"1791029729710","patchHash":"0x659f282cd07f48d7e639a304098e22e777748e0ef0147fa1beb6776249858090","project":"0x16d6e75341c5f21003a4d9e89b416a545f7335094d7df139fd20942c9b7fb2de","repo":"0xd822e541c0173492ca0725a08935bcd8eaa756a9559600a9427d0daac625ead2"},"pr":"elffuss/code:item/0xb63407496b05c7ed5580852a8b11084877e719e1f4a9a6c4ae367c9b15f22b59"},"eventHash":"0xe3ea02cb768741cd506e9c812872f36ca7e6bac93f64fe3e72cbaba66dd4222f","gatewaySignature":"0x2b49ea6f0b061c86fd440ab04b85ee4f9dc2b54f115832f3f5818b59f2b39fd84ad3a5754b7b353a1973cfacfc6318a85daf106874b45a0ba1b06e6a02cda83d1b","prev":"0x5433a63b6303f4107cda3f46b41cb38c69697c80d2224887d8892c9a1863c22e","seq":996,"ts":1791029729,"type":"solution","v":2}