Latest-Developments: Pipe-Parser fuer Name|URL-Bullet-Format

Analog Monitor-Aenderung: Pills parsen {Name|URL, Name|URL} direkt und
nutzen die URL aus dem Bullet, statt ueber sources_json-Namen nachzuschlagen.
Damit verweist jeder Pill-Klick eindeutig auf den belegenden Post — keine
Name-Kollisionen mehr (insbesondere bei Telegram-Kanaelen mit mehreren
gleichnamigen sources_json-Eintraegen).

Legacy-Kompat: Items ohne Pipe gehen weiter per lookupByName durch.
Dieser Commit ist enthalten in:
Claude Code
2026-04-19 01:19:07 +02:00
Ursprung f4334863a0
Commit a38a6e1930
2 geänderte Dateien mit 22 neuen und 10 gelöschten Zeilen

Datei anzeigen

@@ -229,12 +229,18 @@ var Lagebild = {
var t = trailingRe.exec(body);
if (t) {
body = body.replace(trailingRe, '').trim();
var names = t[1].split(',').map(function(n){return n.trim();}).filter(Boolean);
var items = t[1].split(',').map(function(n){return n.trim();}).filter(Boolean);
var seen = {};
pills = names.map(function(n){
if (junkRe.test(n)) return '';
var k = normName(n); if (seen[k]) return ''; seen[k] = true;
return buildPill(lookupByName(n), n);
pills = items.map(function(item){
var pipeIdx = item.indexOf('|');
var itemName = pipeIdx >= 0 ? item.slice(0, pipeIdx).trim() : item.trim();
var itemUrl = pipeIdx >= 0 ? item.slice(pipeIdx + 1).trim() : '';
if (!itemName || junkRe.test(itemName)) return '';
var k = normName(itemName); if (seen[k]) return ''; seen[k] = true;
if (itemUrl) {
return buildPill({ name: itemName, url: itemUrl }, itemName);
}
return buildPill(lookupByName(itemName), itemName);
}).filter(Boolean).join('');
}
if (!pills) {

Datei anzeigen

@@ -278,14 +278,20 @@
var t = trailingRe.exec(body);
if (t) {
body = body.replace(trailingRe, '').trim();
var names = t[1].split(',').map(function (n) { return n.trim(); }).filter(Boolean);
var items = t[1].split(',').map(function (n) { return n.trim(); }).filter(Boolean);
var seen = {};
pills = names.map(function (n) {
if (junkRe.test(n)) return '';
var key = normalizeSourceName(n);
pills = items.map(function (item) {
var pipeIdx = item.indexOf('|');
var itemName = pipeIdx >= 0 ? item.slice(0, pipeIdx).trim() : item.trim();
var itemUrl = pipeIdx >= 0 ? item.slice(pipeIdx + 1).trim() : '';
if (!itemName || junkRe.test(itemName)) return '';
var key = normalizeSourceName(itemName);
if (seen[key]) return '';
seen[key] = true;
return buildPill(lookupByName(n), n);
if (itemUrl) {
return buildPill({ name: itemName, url: itemUrl }, itemName);
}
return buildPill(lookupByName(itemName), itemName);
}).filter(Boolean).join('');
}
if (!pills) {