1. Recherche: fetchChunkSnippets() — après le classement RRF existant, récupère les passages précis qui matchent depuis NoteEmbeddingChunk. Pur affichage, AUCUN changement de classement. 2. Script migration: scripts/migrate-chunk-embeddings.ts Indexe toutes les notes existantes en fragments. Batch de 10, barre de progression. Usage: npx tsx scripts/migrate-chunk-embeddings.ts 3. Memory Echo chunk-level: à faire (US restante)
79 lines
2.1 KiB
HTML
79 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>Test Sidepanel</title>
|
|
<style>
|
|
body { font-family: sans-serif; padding: 20px; }
|
|
.error { color: red; }
|
|
.success { color: green; }
|
|
pre { background: #f5f5f5; padding: 10px; overflow-x: auto; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>Test Extension Momento</h1>
|
|
<div id="results"></div>
|
|
|
|
<script>
|
|
const results = document.getElementById('results');
|
|
|
|
function log(message, type = 'info') {
|
|
const div = document.createElement('div');
|
|
div.className = type;
|
|
div.textContent = message;
|
|
results.appendChild(div);
|
|
}
|
|
|
|
function testFile(filename) {
|
|
return fetch(filename)
|
|
.then(response => {
|
|
if (!response.ok) throw new Error(`HTTP ${response.status}`);
|
|
return response.text();
|
|
})
|
|
.then(content => {
|
|
log(`✓ ${filename} chargé (${content.length} bytes)`, 'success');
|
|
return { filename, content };
|
|
})
|
|
.catch(error => {
|
|
log(`✗ ${filename}: ${error.message}`, 'error');
|
|
return { filename, error };
|
|
});
|
|
}
|
|
|
|
async function testSidepanelJS() {
|
|
const script = document.createElement('script');
|
|
script.src = 'sidepanel.js';
|
|
script.onerror = () => log('✗ sidepanel.js: Erreur de chargement', 'error');
|
|
script.onload = () => {
|
|
log('✓ sidepanel.js chargé', 'success');
|
|
// Check for CSP violations
|
|
if (typeof chrome !== 'undefined') {
|
|
log('✓ API chrome disponible', 'success');
|
|
} else {
|
|
log('✗ API chrome non disponible (normal hors extension)', 'error');
|
|
}
|
|
};
|
|
document.head.appendChild(script);
|
|
}
|
|
|
|
async function runTests() {
|
|
log('🧪 Début des tests...', 'info');
|
|
|
|
// Test file loading
|
|
await Promise.all([
|
|
testFile('sidepanel.html'),
|
|
testFile('sidepanel.js'),
|
|
testFile('content.js'),
|
|
testFile('background.js'),
|
|
testFile('manifest.json')
|
|
]);
|
|
|
|
// Test sidepanel.js execution
|
|
await testSidepanelJS();
|
|
}
|
|
|
|
runTests();
|
|
</script>
|
|
</body>
|
|
</html>
|