From 52c4cb1dee549766bdd9527d15d3deb96ffff007 Mon Sep 17 00:00:00 2001 From: Antigravity Date: Sat, 20 Jun 2026 17:07:38 +0000 Subject: [PATCH] feat: chunks recherche (snippets) + script migration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- .gitignore | 3 + architectural-grid/server.ts | 2 +- architectural-grid/vite.config.ts | 6 +- architectural-grid1/server.ts | 2 +- architectural-grid1/vite.config.ts | 8 +- memento-mobile/assets/adaptive-icon.png | Bin 70 -> 31443 bytes memento-mobile/assets/icon.png | Bin 70 -> 31443 bytes memento-mobile/assets/splash.png | Bin 70 -> 31443 bytes memento-mobile/tailwind.config.js | 1 - memento-note/components/rich-text-editor.tsx | 3 +- .../extension/dist-chrome-store/diagnose.js | 160 ++++++++++++++++++ .../extension/dist-chrome-store/manifest.json | 7 +- .../memento-web-clipper-chrome-store.zip | Bin 301296 -> 376168 bytes .../extension/dist-chrome-store/sidepanel.js | 10 +- .../dist-chrome-store/test-sidepanel.html | 78 +++++++++ .../memento-web-clipper-chrome-store.zip | Bin 376168 -> 453816 bytes .../extension/scripts/build-chrome-store.mjs | 12 +- .../ai/services/semantic-search.service.ts | 52 +++++- memento-note/package.json | 3 +- .../scripts/migrate-chunk-embeddings.ts | 51 ++++++ monitoring/metrics-token.example | 2 + monitoring/prometheus.yml | 5 + 22 files changed, 373 insertions(+), 32 deletions(-) create mode 100644 memento-note/extension/dist-chrome-store/diagnose.js create mode 100644 memento-note/extension/dist-chrome-store/test-sidepanel.html create mode 100644 memento-note/scripts/migrate-chunk-embeddings.ts create mode 100644 monitoring/metrics-token.example diff --git a/.gitignore b/.gitignore index 7f40959..ab46839 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,6 @@ docker-data/ # Misc *.tsbuildinfo next-env.d.ts + +# Monitoring secrets (generate at deploy) +monitoring/metrics-token diff --git a/architectural-grid/server.ts b/architectural-grid/server.ts index d1b46e5..2c6cb42 100644 --- a/architectural-grid/server.ts +++ b/architectural-grid/server.ts @@ -36,7 +36,7 @@ async function startServer() { const app = express(); const server = createServer(app); const wss = new WebSocketServer({ server }); - const PORT = 3000; + const PORT = 4000; app.use(express.json()); diff --git a/architectural-grid/vite.config.ts b/architectural-grid/vite.config.ts index 0506f1b..9b26838 100644 --- a/architectural-grid/vite.config.ts +++ b/architectural-grid/vite.config.ts @@ -1,15 +1,11 @@ import tailwindcss from '@tailwindcss/vite'; import react from '@vitejs/plugin-react'; import path from 'path'; -import {defineConfig, loadEnv} from 'vite'; +import {defineConfig} from 'vite'; export default defineConfig(({mode}) => { - const env = loadEnv(mode, '.', ''); return { plugins: [react(), tailwindcss()], - define: { - 'process.env.GEMINI_API_KEY': JSON.stringify(env.GEMINI_API_KEY), - }, resolve: { alias: { '@': path.resolve(__dirname, '.'), diff --git a/architectural-grid1/server.ts b/architectural-grid1/server.ts index d1b46e5..2c6cb42 100644 --- a/architectural-grid1/server.ts +++ b/architectural-grid1/server.ts @@ -36,7 +36,7 @@ async function startServer() { const app = express(); const server = createServer(app); const wss = new WebSocketServer({ server }); - const PORT = 3000; + const PORT = 4000; app.use(express.json()); diff --git a/architectural-grid1/vite.config.ts b/architectural-grid1/vite.config.ts index 0506f1b..3636b89 100644 --- a/architectural-grid1/vite.config.ts +++ b/architectural-grid1/vite.config.ts @@ -1,15 +1,11 @@ import tailwindcss from '@tailwindcss/vite'; import react from '@vitejs/plugin-react'; import path from 'path'; -import {defineConfig, loadEnv} from 'vite'; +import {defineConfig} from 'vite'; -export default defineConfig(({mode}) => { - const env = loadEnv(mode, '.', ''); +export default defineConfig(() => { return { plugins: [react(), tailwindcss()], - define: { - 'process.env.GEMINI_API_KEY': JSON.stringify(env.GEMINI_API_KEY), - }, resolve: { alias: { '@': path.resolve(__dirname, '.'), diff --git a/memento-mobile/assets/adaptive-icon.png b/memento-mobile/assets/adaptive-icon.png index 08cd6f2bfd1b53ec5a4db72bed55f40907e8bdfa..6b825f46ef2618b44b889aed3a5317b40bae3a43 100644 GIT binary patch literal 31443 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 Mw%yo=Kf0X#Um1|#=Kufz literal 70 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9xZY8JuI3K{zz}&{z5M@%E Q4U}N;boFyt=akR{0JB1w@EC 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 Mw%yo=Kf0X#Um1|#=Kufz literal 70 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9xZY8JuI3K{zz}&{z5M@%E Q4U}N;boFyt=akR{0JB1w@EC z4rowOP*5oegHogfL`0+{BPg9vLrA?lIHM#ve1F`#zP0YXKbA{$t#i)aZ++h9-DjW8 z#XY;N6z4CV4?&Qk^$zSW5Htt;cMddH7W{+PSQ`ocndh_PfIkGuFA)Bfg09~{LC{jj z8oTw^;2ZsIxJM5>4rtLeWMnY&ue&D{rH4LHJbodgL}A&g<9!>YfB0y%HgDmv$Kf}Z z?$tSQJX6KW{LP8R+RaZ6tD7Xe+`3(EYs*33`9JHpz1{MIwBFJax1<(ICB`jCSg>MV z=;?MJx4-On_%Y2VaAd}K>T`i@ICZ?38lIlZ{9t0DZScA$lgK|`P*9NCcw+qh_!-`v z=-@M02X&;bnroqF%&@;}Oja4nd$DU_$o1&pE>uTbd6#7a_N5o{@un><5mK@!;g5rh zpAC42KjfqmN3RH~gC?l>a{Qt&-Y`+o*^qZXnCnrNX^XMkjoG;yvv)Vskt#;0P zPs3E*W=}(_eOZl0SM<^~keEftY~%1afe)dktoz@wQOWTHy)tJlvIXmDH0z#TnS2?F zR($Y5`m<)w+ScY~;}skaH)MQmNS&I;jo}F}ScCRQ%w@gs<1xOD*w*VsQYZ~H1wtrH z{Rm4S94bfQ(Pb>6Ym8QU_=UE%HnUIQBqVp3_^+N;(o{}wGDtHsQW9U$v+UU>$5 zofYkqpexHa)pj!D?J9K2)=duI9;l9tXBv;c-AfK;x82n%`x80*L9guRCHEDt{bN*M zS%NLvr=OMSg7;+qZh;Lu&ZG`&YZEsihwGwQFQT9Ivl#vOw^ePj)PL1OQz$(Bq52*Z z8SRf`?8~OXfdR9ZKVz{!xv@VtbkNEKi)nv(`{zG5_$rz@D_fz}oF{X(Cv=WsYK?I- zMsTU(FaA|Ld%s`|`DcgoiH|F?5ntRq|KP(ZJGK9ki$81DR=oA5@PLmtfsAqxi}movg(_T7A@p;Xh&Jo(`+>i=f*Pa^Em|tp?p-w zDqc$QnCjDdsehaetU*|eat%8cGrYhxrreEag4J2mpn5@Fz~uLMU-@usnujQqYQ-46 zcGEHzzs7xZh0+mi`3m=3V}0DoySk%Qc&R1Rf=DMkgnlxEJa`pnj*Lgt9`HyT&)5DK z3gXHo@p0uh?ZNzJ3Jyz-51(w19YG2N_Pd@^QONjF$Gc$!yHo6qSg7M?0{!nke;-F)t1 zXQzJ|%2vab>#Q518zOS!JlS>w-kM=BoSgBT-)_8&#ACVfNrg$KU#$*2rGpZJMN3d% zpn21>J)J&&ug5q>$l-nBqg5E9d5cHJViSv(TXaIXAgwo-1^Y7*r>46GLJ&V|)0G|O zMBi}9z!V{oB2+;_f7w%f*+7FZClx>e3-isWr?~i)_4M~I+AB-aO z*d~zOgMxxOR95@x8h73BH}{Si=DEfkDs(Gyo9>pIj|nYhsHCYR0!k$6<4S0#4#C3U zJ(s7)t_%I90=H+FjPm)-^5#18tj6BQt}!PIT|D)_V9u9-K)WKm)m=^9hvh5|xNCpB zg&cN8`q~qs>P6*KYN4bdeVdPGrZKlQcj?6^UW*P6!*VaG#@Jl=1`JZN*W6v$ja>k+ zH(j}@-`5ZFoXg7RFzkbeMDogIX+34ENtz$XG`8ua7?cH{z=qYyzmuN^GGJ5|D^tqc zhr3gH8`~qdx&MkDKT583XZrN{P^=i)@T0(LiMa3uA(R8zP1NXU<1q4HZE| zs^14?gz;csmX-0@pU!|9qJhj0kr3a~z~>}3%$_-EyXbmRQBhQk-ov2?(G-Lbt7<4~ zfhEXGIi{=SU!Qn-FjgH9aTBSU(wXzoW45?uf# z7(MZn?H4s9vqD=_6{*FPFw-IrdLEdivAOFP<9TYXVLVg^Q@UF;RU-)Mh;r?Zed>RC z2qn7g8bg*G=$aRBOT1p0kq2?_CzbDzwC|8X?#m6naj~g-`Wp4jKs$X<#rzNKOU!AO zE&h?{R5x!E3IM*>nCHKias!}WS#tC(=pE>~ z3JR*DdvI`YvbpQvbL9gM_QfuC4O_b8viN=PD9)!0Q~lNdk_R|t>K8LyEWKY;vj{@F zEZ=hqr)sa-CK^ypM-RKk^vz$YCuSmd;I`o_!W=g_r}{d6xs|3m(z~MUuvnN>*HRim ziKqoJ5cyn$qR`Tuy9rmwe-^Ku?bW;%E&{vSj;|;)&Ym4 z0t!s4F;~^q&P+eks~W4vM~Bvn2kooHtd1VrdJkf3($HmrponrrJpbhl!Hj?Q#9YVi zNcYO{cC2=C6H_~az}hcIrJApz>H~PV2=H01CbH}sO%wia&r6Ec@{cETsa3hJ0Y87N ziZuFuzk|d;17_h1=^21{RrLFhuFJ{KpNP{dOO+ZG0~^%p6Z8jw{q~Rgb3na+K{+Ch zGzzV$1bcTP@sLN%a9c!(2pI$N1fU-|WfS9ZS5BowZ(gf?s>aDeLY8OV8m)N;A8201 zrJuSgWK6*^!zP;g%4#CeK(SZ_Y)wn8ebU_3Yj`nQtIBDk#8AO5NsvH~#m9Ul|o_8*}`fN64U0c{v1#z=A*?> zFM^PQ3I^n{z%2ulw8zC)EGwjBmEKUuug$%azSOHzgz8Hod;;a-vKvIP)$${5#DXff zm|=2`>MOB8c3G;F8QJ7cEZC_7z-8HJoZiP$mbO0 zodr;IG~+3p&)forTC3$F@(;ibpugpr;in-?87m6TPB*HRHdH@@p1pzdQ(|+8ZQ9#X z!BiWC96o%hf2%~;?sk{U-|bw1f3pDsKtRrek?$7;)6qMQ5cVbG5R8EF^(EfK-%ACk z4m~&l@0>=b)hP3%mumA<;X*n^!y)i)lwfL^qa0T@?b+ zTgxYk6H1Wg=IteCio!<-&cGg7SNpfRisQiR0KgcU5oTP*;9&SxZ0j{1#$Al+peYuu zxsl3NFD;e(rCk7w+mwi7x0LK{2arPea2HhwIee*EUP04;p`sg&1KIV zD>XNYC)({Ja`_q+*-{`I@W0UU(^eG!S$QF_Vl=|q<~c)vN=WNhh}8g8^lJ@nQ{*!! z*q$IjikEhPHwJ-2R;vP7&VZ~+E1)H24-=*_<3a;AuXyV0eNqZI9-e&9HW7J=P(AO=?j|$1Q-prIzSG--l~xI&oez8glU)*Yz6J*YrgVE zNoOd1l%_Mm@*b7OfXbGj1=;1+NiTYx0K)ONL?s2eh4}t)7L{==72xRw`62S7kJ;34t z@ZL)p?}56Won8zL9r_)nR)EJr2BsAEURy4kn0`{pEDi0Xex% z!AHYb{g{S>p(9i{9|qE!1BE53N19IR7pTC*ELsR@w{? zo3I9Ys8F#DOffoAtHI@u&5OXS8`3%gR`_h?*jfm`j}B|- zCra%mj!>A&O!`v5vsSqRSRWTcthxXxp8`02ZI7&+COPy3+~E+c7i!u~M1Vgz*d z6=sfD`Fi%eL3&`>_Ar3-DjFvy^O@95lyC+_8FsS;x*MjX1>4g2OBb&K4N4 z8aP`>B`De~VVEUG|B%k=a*C@K=l#GdRp-K@k=JYUn;iUWnC!l6nx@&AfY7eApi|qh zpRf057!~zp1htP1rnVEPxIuqL_$qgDlJM=y(nW6xw*L^@&tCLae`;GX>y>W1Q|Q3c zW=!Oz=-;ba+L?I+mz>6K7tpRYGfoN_aCAx#UHT?P8?=vTTZF1p@ZZee);@gS9?ltP z#yEqAsE=LC^OBsyCz)sEH|)UUh3_~ms-GZKA(=(sEiEBLE%@bf&BwUPolZGL19>eu z`1D1{<4HYl#{SgB^)RaqsJrmQFAv@S`p_gQnA@R6#+942$MZ&Wqjzu$c>~@w^FiO( zo%rl8ci;VbcL*w&nM)jS=550&q4V3%^f3=m&+KD!+JqhRk(CoR`qoKks zGpf<#rD*jZ2Ve9(98l&`l<$zcrp)91wY{iIfQ^f*8l3Gz z{#uY8$LD{!@59&oFo@W&&gHlka`cWL9~KP0C=j%sV46?0cJ+_GDj6;tK4yh~tIXHd zww}DD#lAI$qX_l8eOPV-G=JS$(4-eBIQW#vw78aEnJjU}>I~aU)nWwPG2WN^4ott# z_tnDiZdIgpZIv^BMDh-t!i~_u=PfPXWHU~e6Egml2V3Xe*zVePRpBDW(#5C$jfuK) z$|Yy+$5(>7_1eFzz_21Q$;GQzb!rE#3Tj56NjOoSUH)w|gEpHW%^8f5FzbbX z7c9=8W&`PKg_%v~|2Gk-+AOFwq>I_TKK~RZxHKvcKTKGX&j=ML0+`*n32j!|kZWqz z(2#330SCP<51VN;GAAw$=K{9C(T5avQCVa6shi+XH`z4UAWyDd&mpEQOAcmJxf&=Mu05>a6tm7-2wuoSKW_+P^FsF-Lq4L4MB zMx<{q{oNq*QeTnv z9fixAdh?-u4^;S}5Gg$hSV9wECBWb&l9}zdmN9QP?q#s@5}KPVoc{w15`iLqP*mv#JIIGqVvfFM?hHat3egn~+(B_AtM(7|3{`^ST0Lwc1%DH(N${np5sbsUvn-aEN=4{Ler=&BR0SlRblcSOHRxcOf=FBNGdz+R{6qaiw(0yaZd} zi=d&k(4?H+ACU@(a2X0*g>C(~6Vfnuv{=^=p(|BQvz_Xo69D~#h^i_Gg>_@n6rxo1 z7qT$q0S&+vdOdR)I@J5!kpr@yS=oZUu#%SdGZ^09g+0gEw*V0!lp3MU`Wg%{QL?x&H-E$y4y~mhe zD_FG(j@!(((*G{&Y0A#72K>A3HoF=yeaY+p>eYZbt0|}d-3u_gO7>r0==%?Cb*>&d zCEe4uY*n9rHawJ1_0)TQ$5|L`*_*VF2oXPb({qho)QB;7j&QAK;--eV21V^zNsx5)(i!S&AGs9#v6ZS`0e?e=H#P_g zm`9-~24Upin84q}y@!dyM+suplG9~+(qOC9`VEi+1S+)@ItkWBr-s);!dt?sBb=qW ziST29W?Cjf9&(o6JkuZ^kRzCdl}zY45Z4aZg;0d;^aiPG;q%aDh&LEmeO#Fn6ZuB% z0ULQL?g4R!U2-rp-g+_v5oasCIYM{fJ9mA?5QYe=++a$$@|i8)+t8v1ZRdQ}+EY^! z_$6d`wE`~O^2Gm6f6)60yhF2vS^pO{UM5^}kB#?FGhQu#Drj2ZM0akU}X4=9ASTrswCCf)}dEkq5!m$QXI?otlfCUpg*e$&D!?YI>Uj&(*>Yr8j zSpy2+#nzS1hJ^_InmH_X+P<1G=XUOHocWr~r!ORM_<(!*Q`LvwhXT0W^b7#hD8aYp9yw;fea>i>{bKlN*%`Ufd#%l|6 z$7a0N_)+MFP;X(OIr!~OK0uTme{SY-=2$R`!KpnKPx_{>yv6_E%bHjVHHY2?uRrT^ zroC;)Vt;t~H!TQqV?=?MCD@i}Z@*QLl~+p1V0EBfURWjHiB!o1wJ1DZW@)I_RKfeY z%VY}KO7VOmchmzKov;+vP%n`h>h_W>jInkBSaFDM7Oj-vK{6Alzz?5NVPLunNFn=s zA0!n=)&ifjt9Y4AUvchqdsWVN1WJSeC0?!*x%TpJjKGvIG;E|9>z{wiR>(XL6LY;7~8aDY4vWETbJfo~g8gpj5 zz7)PNn#nvP7Jj_(rcAB4E^|0ase<%n{Ri7R^GB6ALY@T^Bdqr`+ZIV4{SWf0@;}XN zBCr2oBH^N2X|a&pNq8lw)ik^K<(vk$H3e*NDFgR}^^@N_1U4Uq-I@Y+k!j$-ceh;C z)SVli>)>FvjtF;KyaTiGgkCsW+cL;tcn~q*>@Ow3_~+iN>~?c@ zee7;Y=3Gtzo6HQObmL{p{w9BR0Q-<6Hv_Rz!S$D%e#a>x;}g}R1TRKoJWQA4oWJaB zdHXfmwGdtDp@Yo#k6o2qwB;|B;@h70lCttVh`2y@@t0je-}Z<($!;KXNBRveM&CHM zncI}!g%M2la0pWyc5=T#mfAD=S^2Q}7H*$?S=naUp>2I(lg@-M9&P$MGX{YfS&m5% z9!+NXTPdCw0=A!}6;FLXYO%5ZE9MXhR;C}3EqxCQYNd9$xq}fg*}<>Y=7ola_Hd@Y zR>hWnn|krH?%S90!1lG1%n-2gY&9@s*LXIb$NWoPcNbppWe3_fK+7h0nDrfK0sFE|GVN!v!Ma7eoVzpR;?j@@eb`wCnuh zFZaz-BuxV#zwOUd6FpHaP`h0enZ`CB4(L<&dC6MkcQhurjK+uc`(Qn-99eW%mN zcSKp0HH)JJA4apt?5q|Br$htBJ^7Jpjr-3(&aB>JKbP~dYu#~FlV z3xiwBXidj4n|ma7K|WGPfX$ZeOtAT^mN`0}h|aMZL`YR*9) zNPFoYbGKsR(B~`U{*L@n!}4YHtJN-XFHh8ce*}$F`2m?mF>r3sb`6(xsr1&Q)T!Tdb^`opRQ&)6Vyp4WHR05&PP17Ja7W z$CPdUe@l}4bft*pO9@~%kBI9n44+3Xx3R&)edMU&YxB(sRM1=9|u{9+5o9q<_C0v0oW7 zmsN8UkrjyU=4x`6w3d?%g#~xRKI$f?)y;r{i3v6mr&HxrY7}N-px~ytPSLkS&RrEA zkdgDtl8yujT6|deI|2-VZkTa7$ou>ZiXUPlBAOI=KPreFyQ_eXOY5g+gRAzdo3Ro{ zxTLn0RB@c8f-B)gaMj>$$3sI7Fo(Y^Y1!Izn%b)jrR&3+`+j7e7x8_7CmA=$|&}El;i;-CLxdyjSsnGxGfMnEi;1P=_l9N-;&SRusnF#1(8#@g;llU z%4whQhEka5vo3{aCqJGqzHMmR-(8NwFUS zTQY)Lq$uy+y_-#Ll;~%Aa3nkr(~FL%~5h1ag>9+TFjA>r_fZm^XJfi zCeQK7Mi!zasHTG3QH^!QebCM0*KMaJ>k zE%As5zA?m5FOfHdvExIa>q-CH_eiu0FmQ84qmXq@8A{+*&vkkv83=xU8c)1J|DLA> zty^@dV3o1-V#(}J+p;;wgPLBDHY7zE*$}aI`_Nx79$CN`#g1Fd`xjEHcO;dvI&cI+>4(i z2jTV4Vqogt^EM^^v4wIFMj56AJ<$Lt8{J?Iz5npxMJ^Gc&OfqP9Na1%n`|~EQmH5R z#p@&yWF=15Q*#u?p1a*WQn@lu4h9=(jR5b-k8(iZ>^n<(v9EsR64Am9A=GT-cuu&Z z`2w(Nd+qEk0ZgKIb}R974xCOf-Cns;QU;+vE3Qrjj(=9~^;?3?5fCSKhYpo_9pJLAXHehK0bt;9cS z55O1^;qjtkrNr5(YPTbuo1Y>gib5yaH&veA@T5}W6xYDq$Ue4NNN(yqQqwb-A)0HH zoStW;3O-3uVhiA|KUH$iZ4NZRCWKX-H*6L^>9*ojfX}O?Q;+*Qx-F16)VF`T996R) za-pW11!a-49FHYR-m+iL?sVfr43}ZD*A7qDPL(*3*KL&vi|5|0bC2|*9!`ecVQj$z z(oY5#be_N6W>_yF<8F1RFi&k~LaRw-4V;bk;Q)_t-(@`#sM?H`IR7=PpI%e*KB3bC zPQUv?2BYg)maL-{c*`bG0?dC?dU)*m=NR{xo)?2^8*(m6_-9{z$=+0C*L@wL56ts^ zTQtIQK*3AZ%Os@_!kDHrU`w!HuB>qu$^0`+0CnCGGEYzxa}Pv~ty%~t!0t~F-M41( zr(NW^F1ICYZ``b8j{dMpKyykkeFtazN?`j6cSZm0cDyWkuN;XSSkTNR;|I)nH1+guyP_(%3BX5&weD>Vc>}z})=oGT_iMCnOs&aFwb@};^bXGbkGBNd z<*qUIp;L-UFJP6ZSLPQ4niCn`hHLD`wc&!m3d3T^)MR|ByJZ>l(}=a|2RDg0;bjU0 z#rxOQdKv23jc2$;c!PrgpY0U)>_k94PAx+P2!^PJ-fb zA|sA;M$K)}V$onDtXX`QMDxl>c<|tXiG5?{g$-@ugIEOSN7`0*jgDSl^CwC3dZ&A0 zjW`2LjwYmL^&YPIey?4&Mv06>mGY_D5HLh?Cs~ga*^O_jTW2T+S*e~kN&Ha5)V4oT z`~aDKQ>Xfuq!f9Pf%~S8Gw^c;$;s&KC0B7CMZdN%z^A8<(_jCYUJ|LQ zGpTTF(GoFxo;KWLM|4`ZC`juJ(X1C#Pl}G!h2s4Z;`p7=X#Kr2GpgM=ds_lG{i3^g z=Xn1Q0_jC?H*S2(r+yuV2K%-|<*cam;tNiPhH`G)GHN_|^hBCqsBa ztGD~;Nsy{mzZj+V0uad>X9R`F<1KkRM~+H*dbz>SpQP7yoX?kkvNKy(8IN>ukSN6Y zI+KBRW^UcQk?p_{b0poQAS>*6>NuS?wQAN*n6Yi*OmkO@g&oh4Y^8A~v9P|mAc*0Z z)%%B~v!~cp6gS1Nu*dsbaoxOOot&pnPiK=}oS363o&o6f2^k2cmd+c!j zb5vayX zV2)+N+6!fe#X|YL0+9AoNu-?aqe;!fOa={OJ2H7IUVN~3?G%r!A1oREpOoGRG+pg* zhv)1UZxH*A(|3Yqdm?AjDN^TokR8rz&N1{ zv5iw1iaQd@btaj0cO}L#@VP@u2Z&*}FImUdcP^UsQeTu?|Dm_Xj@J8P(Ato;BstGZ z%g&C5TAU(2)%W>4%&Bf1so#avd&^oW)pL=92q3uR$e!wcF^DvzEfC6kkY89@*DWqg z!AZK0pk%0y^GoxqYWLg$9p|U-_j`&^dBSmEoGemrxmWS3 z;vbU+4aUrWmEF~nhe_`AUzsYCB+~A^-;W@IX#NnkGxzD!Op^WxC~Q9B`dIWAGZ~gz*cA;3Q4rkr*e@`_Ug`2%v1s-AkSZX*Z*Mm*e`i04 zwj1Z_7^V0uaul`CfC5Mf)fVRKd4Q_`i=(8R#N*;3u2)c_Lw4(1yDBZu3$I_9wBAq* zcU@Y6%THQsdiJf&95*1?jX%Dnw?wQ_ITbXD|C2bGc-4*3UKC{Gms06o^6ghI3fINT zj@~4-cUuc`dT-QY)E|+GH*NG06UO4ouZ{AYqU!_M{X5u<-+ygXwK0_6Akwa&lL^_N zO^x@;?hhvYVBPMTb7)9}ToN3~p9CX3&IHv9ceE)7K&Fk~#mZA9qTC>`hVrL%ZT|Sx zt#3}Z86>D1{=J?pQZ^}9aJ_ghJF}WRds%9jxqz?3Fl=7W620fOk$|x?2X%(F$}gby zA?Z@0x}L;1$Cq?Z?9*+Va@5}KDJ1qq68m=vd3HBbJOKLD)p1PXJKTk+Iq5Thfs^RF zJxZn8Gw_Qy+e+Wbe$y>riEt`fi zNWVSE^u&T*D zR*caDuNJes^ql%0qI*hb$MWO=(adqNR~#c>e+SlQEE!eU!1dO(*`!NZz1!ul;I~W{ z9)LV;kP+RU?@e>`G&`DLJyL4ju6MTbm?*pk_U;wr*ShCgS~AGk?eT!>lSr`#eYg$N zbBLg*KV+>uxxjdPUVc9H9;wT|anthTyP|^8e^pc;B##t=7va zoRe*D$s72?i;dlfSMiygyYiU`IIKJcn3~sQ1lhooiw#`qF_wAK+I-{KIiu;|Nf}cZ zBRjcw=;jm{=Mn>~&Gp8lU8b9eP-6sG(nFGmp^g8w8e#?7xPX*?t@F2As-iE8J?{|s zgB_V4SeIf}J2si2D^n9%P0wxkRyl2cNDZ*Qk+-`I4)X@>|Pqn$u)^h(%C`oYjq`{WI?P-g4;O8*3~ z3V;5Uh%x`*gbQ*f2HQfLZcVJ$&iN>W?oXBNcFXsBiVj$v$;%!jE^{wkp-&JJ>1&wf ztUy74NIbZVD*oE|iAQBkK5=&Yt4C|-ap77@uJrat=;=7N{}v%zCnN-{(`_6pw#1fQ z&Ao&Q`jP=W4ywaDX$&e(U_ zyoorr^TKZ1wMjG^K;q;{)9=?)duCo)z{!5kq_$nJai2i3afQ(pKlm}hqBkPJG@HaX ztn9LSM4!I4_1*?S%p#F{XbXUL0)FN*uT5CD?^38;wA{j-H}O{}E21^2*!Dw8-!1@LA`7A!)l9jd)g3fX-zqa12eNuUlGv|wF7eF<>byzYu)d6uAr1M;G!!>vUoVXo<|ATqPcVKh`bB+ArMhPtsruX49t1#6;6om6tf# zs9zhM?Hdmz6#hZl;Cy8*hql*|pV4cdq`cO&Un|qd_FwFyd|14>FwAzM@er+RJ#Cc7 z;E+FsmgJ8y6qB4Sc{MuJLBNxEp%wfhH$i$1-rIPLb12^Z{G?VxXzK>e!d?>iE!B|q Mw%yo=Kf0X#Um1|#=Kufz literal 70 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9xZY8JuI3K{zz}&{z5M@%E Q4U}N;boFyt=akR{0J {aiModal.type === 'preview' && {t('ai.result.suggestion') || 'Suggestion'}} -
+
diff --git a/memento-note/extension/dist-chrome-store/diagnose.js b/memento-note/extension/dist-chrome-store/diagnose.js new file mode 100644 index 0000000..b98cdf8 --- /dev/null +++ b/memento-note/extension/dist-chrome-store/diagnose.js @@ -0,0 +1,160 @@ +#!/usr/bin/env node +/** + * Script de diagnostic pour l'extension Momento + * Vérifie tous les fichiers et identifie les problèmes potentiels + */ + +import fs from 'fs' +import path from 'path' +import { fileURLToPath } from 'url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const extDir = __dirname + +console.log('🔍 Diagnostic Extension Momento\n') + +const issues = [] +const warnings = [] + +// Vérifier la syntaxe des fichiers JS +function checkSyntax(filePath) { + try { + const content = fs.readFileSync(filePath, 'utf8') + // Pas de vérification syntaxique simple en Node.js sans eval + // On vérifie juste que le fichier est lisible + return true + } catch (error) { + issues.push(`Fichier illisible: ${filePath} - ${error.message}`) + return false + } +} + +// Vérifier les event handlers inline dans le HTML +function checkInlineHandlers(htmlPath) { + try { + const content = fs.readFileSync(htmlPath, 'utf8') + const inlineHandlers = [] + + if (content.match(/onerror=/i)) inlineHandlers.push('onerror') + if (content.match(/onclick=/i)) inlineHandlers.push('onclick') + if (content.match(/onload=/i)) inlineHandlers.push('onload') + + if (inlineHandlers.length > 0) { + issues.push(`Event handlers inline trouvés dans ${htmlPath}: ${inlineHandlers.join(', ')}`) + } else { + console.log('✓ Pas d\'event handlers inline dans le HTML') + } + } catch (error) { + issues.push(`Impossible de lire ${htmlPath}: ${error.message}`) + } +} + +// Vérifier les fixes CSP dans sidepanel.js +function checkCSPFixes(jsPath) { + try { + const content = fs.readFileSync(jsPath, 'utf8') + + // Vérifier l'absence de onerror inline + if (content.match(/onerror=/)) { + issues.push('Event handler onerror trouvé dans sidepanel.js') + } else { + console.log('✓ Pas de onerror inline dans sidepanel.js') + } + + // Vérifier la présence du fix avec data-fallback + if (content.includes('data-fallback')) { + console.log('✓ Fix CSP data-favicon présent') + } else { + warnings.push('Fix CSP data-favicon可能缺失') + } + + // Vérifier le handler de favicon + if (content.includes("querySelector('.page-favicon')")) { + console.log('✓ Handler error pour favicon présent') + } else { + warnings.push('Handler error pour favicon可能缺失') + } + + } catch (error) { + issues.push(`Impossible de lire ${jsPath}: ${error.message}`) + } +} + +// Vérifier le fix pick mode +function checkPickModeFix(jsPath) { + try { + const content = fs.readFileSync(jsPath, 'utf8') + + // Vérifier le handler visibilitychange + if (content.includes('visibilityState === \'hidden\'')) { + console.log('✓ Handler visibilitychange pour hidden présent') + } else { + issues.push('Handler visibilitychange pour hidden manquant') + } + + // Vérifier l'appel à setPickModeOnTab(false) + if (content.match(/visibilityState === 'hidden'.*setPickModeOnTab\(false\)/s)) { + console.log('✓ Appel setPickModeOnTab(false) dans visibilitychange présent') + } else { + issues.push('Appel setPickModeOnTab(false) dans visibilitychange可能缺失') + } + + } catch (error) { + issues.push(`Impossible de lire ${jsPath}: ${error.message}`) + } +} + +// Vérifier le manifest +function checkManifest(manifestPath) { + try { + const content = fs.readFileSync(manifestPath, 'utf8') + const manifest = JSON.parse(content) + + console.log('✓ Manifest.json valide') + console.log(` Version: ${manifest.version}`) + console.log(` Permissions: ${manifest.permissions.join(', ')}`) + console.log(` Host permissions: ${manifest.host_permissions.length}`) + + } catch (error) { + issues.push(`Manifest.json invalide: ${error.message}`) + } +} + +// Exécuter les tests +console.log('📋 Vérification des fichiers...\n') + +checkSyntax(path.join(extDir, 'sidepanel.js')) +checkSyntax(path.join(extDir, 'content.js')) +checkSyntax(path.join(extDir, 'background.js')) + +console.log('\n🔒 Vérification CSP...\n') +checkInlineHandlers(path.join(extDir, 'sidepanel.html')) +checkCSPFixes(path.join(extDir, 'sidepanel.js')) + +console.log('\n🎯 Vérification fix pick mode...\n') +checkPickModeFix(path.join(extDir, 'sidepanel.js')) + +console.log('\n📦 Vérification manifest...\n') +checkManifest(path.join(extDir, 'manifest.json')) + +// Résumé +console.log('\n' + '='.repeat(50)) +if (issues.length === 0 && warnings.length === 0) { + console.log('✅ Aucun problème détecté !') +} else { + if (issues.length > 0) { + console.log('\n❌ Problèmes détectés:') + issues.forEach(issue => console.log(` • ${issue}`)) + } + if (warnings.length > 0) { + console.log('\n⚠️ Warnings:') + warnings.forEach(warning => console.log(` • ${warning}`)) + } +} + +console.log('\n📝 Instructions:') +console.log('1. Rechargez l\'extension dans chrome://extensions (bouton 🔄)') +console.log('2. Ouvrez une page web normale') +console.log('3. Cliquez sur l\'icône Momento') +console.log('4. Fermez le sidepanel - la bannière doit disparaître') +console.log('5. Ouvrez la console (F12) - pas d\'erreur CSP') diff --git a/memento-note/extension/dist-chrome-store/manifest.json b/memento-note/extension/dist-chrome-store/manifest.json index 54d9395..9b1dfc5 100644 --- a/memento-note/extension/dist-chrome-store/manifest.json +++ b/memento-note/extension/dist-chrome-store/manifest.json @@ -13,8 +13,7 @@ ], "host_permissions": [ "https://memento-note.com/*", - "http://*/*", - "https://*/*" + "https://www.memento-note.com/*" ], "background": { "service_worker": "background.js" @@ -25,8 +24,8 @@ "content_scripts": [ { "matches": [ - "http://*/*", - "https://*/*" + "https://memento-note.com/*", + "https://www.memento-note.com/*" ], "js": [ "content.js" diff --git a/memento-note/extension/dist-chrome-store/memento-web-clipper-chrome-store.zip b/memento-note/extension/dist-chrome-store/memento-web-clipper-chrome-store.zip index 49733188449e9adb8e1d816fa56a5e7308e6ba8d..20eb25de4378ae9778ca2f5be6cc4cce51968fbf 100644 GIT binary patch delta 21372 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 delta 9988 zcmZ9SWl$Ym6Ri(&aCdhN?hrJ%ySuvu4H6FS4hilKf#3&sx8UyX4#BxezPE1Ox-&nX zUaPD3)UKJ?HPVMqIF~gTNXl|h&{zNf92}srtOjWc2C}iNZUaXCADNITfq%6s#?e0t z;=TU!1xTO&X+CNl*uVK?#;JeWiv8qYUY#%ZAMb@{{`sR4F8{Q!{P;hOq8j_JE?ei* zUq5NfX#ejp!^SZ1e>r8d2>F*4_Lw5zi6RJPoH~@=1^U0%!71avk+5&@ApUBWTcLk+ zy7T;3a`;>LpQeATgurMl>((#KYw?71fC9j{K>?@$DL!pLnk1BGZix9hiRZ|2@aJqu zIudYp8ziI%_!$b)JsnJy0+mP&)*FSuqytavLS5j3yD%X5*uc+B(32?OPSw9Lyd(4g z3K$_6iU1RQ9tVBJ2;OajMic?xzCc5YfMkqf5U$<@dbXRh1f^84(^Ga|NhW+&wfSg9LdPlo4$pOv$d(#zy!L7ZOUu1+nHVJ6xJ>@t z@LZ;ucY}>|@t2$r7h|#%_Ec;SimC0GcW%(Q^Y=%|ja%{g3EoNmk8gr96p+2|j9$^4 z*6Jk?f!ri)X z_>EQ0*pbJ_pM9jWMRF0;t32`IU!w=;zpS(#6rJDNs+M7;c*={(5ZR$nK#jw|)9Kw1 zwsO1fnIlXM9EI2bDhm1C5%3Suxm4HK5*r!iCFvv52Af}g;$S@)r&ag7L0zf~VvFP%B| z9X`cS%BYtIhoFp+&mF*{e`MwA&6sBQ0!3#^6si z4K-iOD7hUj5UH59DHqe5_co5eOdS8YS_v2VZZ;#wId#kwme``iSOG$6GM z#7>kl4{{QmFYvHYs)KUgWYc5acV?LJC%a3#&dvk2NPIg7P@P*}e4p=?=pCtC>c~x& zFyEA#=e3Qlmqsxjrk5Ydftkmhhc5IK%{FDIwa0tzM3LT%|@%#4QeeEM6z8^v?H*=1$M+F4$bs%R%ZsT|Il9QHC3KYfViC zQFRU(-%`i17t{2|-}b~Ehe38y)8Ew1ia_1X8yla}oHxco&oozY-O*%7&fl6J0?CrwDOa|_mrcR9AU zQu^ttNu-b0odd!+o~`%{x~zE_+?!)5C*!DtmaO0_UBZMvEc;ebG-zLC&vK`g0iXE6 zK`jR7XQ<63mE;BAr6h3#!MvuVN{Ce=7mdNIp1}cOnvXyu*V*I)LlaCGqu&y@<*1bm z@h^)vxDTS#vACA+a*Q*~q(Lu6JZNR;UV9s9pHw2%qU1r}4jiAX+DH=UIp{mQEMJMJ z?pSzchIGgfY`c3Dz1NXkpQF1`Eur?0Ie2yM9kY((e%G%d{|Yor8h5xr1HDe?67)M) zgaH8Yn-GBAPG6f;eqB9{@?pU5CNzH3Ik^Xs52B~|Atuj@qY7)A(6N5F3R027Z3+)6 zSUDU;@?Sx1Lj$#TOKZ23Zuk_2LSaEvQU?YthU@E&Jg#l@KnL}<*}y>S@(1eR18E3C zM9Y8=&^fz(#kI!KpUlECu5PE@fzx1VMq!Mq+XC?-C@bTut2R^o3x>d2Rx@-CX;DzV zT6x%(bPul0bi9V0LL<1TwV>{Z23P_N(97``5jBKVfC9bsD4v+V=Rk&5Q zB7QwwzEHLliP`eB&s0oC&j#5V=8bHD1hB>lP5CB;MAAvzs>>jDkMWCN>aY9s(DpAQ z{Ov;OfWnhqlC>?a8OVyy!it!u=2wq$;7y3=r4ze~cGDp}PA!iQ4Nl@gKrr z6|sW+Dly*HpI4LkTcFfJggqf{et4kUhJZVB#bY1iE1U3h`&1yq!VoPBII9gsS;@;< zR!oBu9ry7DzJK#9Nt(5O_m69fvBW{vTkg0Zf%&cKzoj|=SS)SUMK%-(w~Fo|nXYFm ziVc3s^x8j9bJQ>`?CgWvJy0=uCsM*b?^p%7xl#M!2wa}|W znkmTT^zK_%pi;bBX{I#cD!~^+-{GqF-H{WFaFv~6%!cFJ3hwkb6(xm!U+qB)S(Mt| zT$klBL$Ni~y%TllZ!x!-ucfoLfe?aC9=enbTRlPP?`EkRAd6WdJ*;z9HifiLkB9)} z87_+h!-)27%^GH-fy~>gTOYp++hgw`BdJzV?|ziQg2dh0%f$utmCcLGW46Z>8VKpz z=jCI$!pFd=eWmqaF^_nn2PeBu7K3DBURb6<2I&ID1Q-wzv#giZ}9U zo&#`@Zo!VAx7XqGO2z7KC&i_Vu6p@daHevZfcX5m6+odz zG*WwG|F!Q?^Iah9OUwH`Nm*j5X~I|I?hkohc~;fx3n)+y2RwFfjs!ez`d^hm6g8}l zG#K#{DuJI{a98iW-KV}SY|Q9pFeEd3x=26R%dP3JmD@cjyzQUzv$?5!?}nHbjDB67 zA-Z-5DA8~b0aR2S6f$|KbWf^eWoAOycd3|4o%%^V}IBLsW)mwQtzoh)=!FK8f;}L6Hv}9F(gS z`sV&w!H+t_ueDWYWK8H6In@}A&4Ifs6x;Spz$Ge7-HtmkdmE+nE?kas4KyD^#XN%BV7!ICt}^h=IZ8=&pU6mct4yqZV1H_6ZH!i zwS?Hsi8pqrbxHDM1Q8*RhPdv4PH2sro2I9{i@i%RiiS#bKIXwREzIv$T{SnC6C-vo zoD8M7nIieO#qn}1l9KOBkA9dIC(12ch0s3z!KwJqL8l%WEbJmzP?l$`KJ%?sU}nr% zWX3VISH!@r*2G$qzx&I2psv`Vs2*n?bqSuJy7WyKg4~lp)U@hd665p46&yU?Ob(*Pd^yVlYV+IQy5b`cEG$#W zD#=I^MLWVHdZ*H$pd3yEDS4h;yM6-j+?jkHQih98^OCFX0cl9cc`$$SKK!ik^`N%8 z7Ouf%UC(N2Jz%AM1;dbeaU>D%6HG$EZ01fP#5ybm_M&|jFBFG^PqTXV*3wXP$Z5AG zXKsP(#G96mL}Q)DngaZzT|^4}>9SBWtIxF5u1UlxsQL4*VIAWf*W*_LL3qHN z13viN5bxU@37UdFNk>0wYG>1__Kn zZ4muljrv*vHT_;UIwxV;KgQtL0KD$ORAVxt<)ZbHx2^Q>Gnx#>t6K zI7m6ebf8SNh|lSj6!?>nHFRY;UhU>2lr=gX>#|++C?ruweuELs=1l@$DlJV92a&Y# zw-rNJf@9pm=}?J#dZjBVopS8pX(8b|*Si&bOT*OWnQKIJ0|*o6OvIGkn$Sa%rV!>9 z4d}>A=rF7?WA#U|9Ukc-VTivxJLKRu`a{MNrGVbIgotM7)CK~g^Ij22H7&Dd7ZP{a zC3BXDr1}|#$_UAaS{3WqEq_FO$nsK*+DS_Mkf@?#HU4-IRX3PY`N-pkQlo{HSd$$h zhu1wgUh_AUJIpXhA*5ttVc4`r+A(0l7~WsfMnZFLyr}l|!MyFM`!0{s^W$J#(%r2c zw0d9p+nsXo{Lfl@O@091jGX2BQ1O#=Xk$H?ZD<3tbp&seOQ%?&kmOG03sbIMyr=P$ zpAH^o*mt^a4_$o{nl6?IGHWuu@xl-!c03X(BTV>0#f9s8vrJeLM4J?kWcsSX33=a3 z*$}#ubV{P?mQq?M04mNyFl~2%a!be?sPdRM0E(^8_oG%fY}>Qwr!qe1OdA|$$JmOu z0Wm#TStpi8KX{}H-UG_QomAAe<#%zrh_!KZSP@?`W1z120KZSiK%1rEBjNfAU&q2z zFua73G>*QUA)8Lon6K{VxNapNapbPSP2#wBLh}dP_9ziVKeK{T6S*S772_6CP&Xie zX`IH3BnIX&cm@M2BfKlly(jyC{IZ3)*(=?K#FCuxDkEYi)#`kA=i@UC#*TKEGEM%a z5!3ng4uZRZNd=+Z4hnW_WG}K8f*TpVU5jiwpOD#acnapr1_Z4YbUC-RUyk4)^=)A1UKw0Wt);psqu$d6eDPL}7u5Fv@!w{K1nNW$G(|N~#P?moc=? zb5|5`IH)yepz%G@!Z`d&mv;898psn)t`kM-p`J+*Ev~FWyzu70TeBJ6qzaJKh1x%d zK7EcvqNatFu$%vuWj5^<%(?eg4Rb`^Z_3$s^o>byu$(%MEPwvyrAx3Eh49uB9+`0m@T<(sF>l`SGwr zgnD^0)doeJ$`bXkup53TTV23d%WX8(Z@GMOWMd#WuD`gq$u4T6mAs;RaBDG^Ucezg z3*8m)xiDKzY3uBx_qUef>~5%+H}lJT3`?xENZU(Urd@&j{8-r}jDTZeRMfiAjyuMD zwX^S#TnB~5B?|cg#-KU%^RIbkgX#TchfFlc#zcQsR5IRrtMXcdd`_&()VLc=Nx#Hx zmVDK?`Ko?k&r8nFZQ`Btg^fPW?FBh1I<~-OXwEokxEKqSvfWU2)FC#NyJQ5Db|rUh zcDA*{P7(ZI@`@D06W-8Uy-_{}{Wa3FN)I09fS4o8wZtp{vkY6l`l_c=d5!h=9Je!JrOJi}S=>-)zTZ%s%6Z|Hf^46L*+8skW zMz%`uOhukE$7DE2z%Qp{)m06O^Zw*{Ioe6Gw|^Lrm`-M9UPVth4&x^nnv}fxwV)`(M|dfLzIr>Ut>L)9mm)W7ou(-G3kEVg z%KZTG(ky5w(RG}At%%fAge8RWX z(a7VSQK4V3xxZLANbM8>rOhYQfr7_JjbJ{U1AC5|*xIvfh@s1wPD-Q3-SgaWmk#G% zmba`ostv53$}f#03@gEnCHZC0AEwyZRv+96?=0XwVLKeYDoxhRvq?=0vnU#&eQPm` z6$=MlFXn|^YKLT5QS~Xfq4v#$my`B(PzmChuf@OgZcutS4^giz2hreQIq`%Gp}bV# z$7k||9q?(K&kFfpHTSaNWTy`1E1}gcfei#~5<>V*{TL@zPSc2fsMCf$;uNt9OAPZ_ zGe~(V)0_LysSHLjvdqsB8MuyOyxdqKm(qi5A}W%l+0x<@=b5A_NemX+)M@XYV-!Ce zA&3vnXnc&yVhm(GZ-kI*B*#r-MLB~-h&=2saswSgYF9wC6xo&rSfX5YpLF>dVZ$Fq z+2Ea{n7YU4dHLBPE%WJ)(*y+S*~5fhwC**dQ&cvWB&hd>&v-OQ8C$`oeM{h@*YpM@ ze-@ulg@jZg&Aa2>tw1oku_govaili(z1i|%Cn3m?WdKVt(zqtp2ShYx!fH>QHGmU% zNqIF!Y7UD-c_$p~4xdS7v_pqi(@>+6+%XLK+Kk7pjfJc2u5Ua=9p>#*Nc-zFI1B}( z3Cv$UcG^{pZ~0$ZCcEr`Cbj&pfoY&wy>GnnB4x3VD9bHWW@xWDf^O`Np=)eOA7Cea zByd6FI-(qlW!=AzE!=&R57jUw<_GqWf^=+9C&VUxttdH_vn_oe&JKrmnNpJw+s)pv ztqx6i>>8M?_NLCX zB6-=DluIGeHS?s7CJ(bH{#Zm{eTg7%+~5WOKBknH?)P`do#t~PDqVWg-p=b4;~w!H zS*SnXlvQSU8mk4iO>}9`QWm&D1<~JiYvxMW8|`PvHWmYKu9FaGmhSc*J{~uttN8ATmYup0kJhq*DA{x}X4$xp zo&x4gFK5Hi9a6~+9OvMI4^O+aFf}=ktmaJpQ z4@wAxk7*!Fg*<~T!%Ukw^$e_@l!B^eYh8$7tq>)5O-Qs!b;Rh^ ziOsbX^^V+%TWLQKKR8_FwKawj{Qg?g)5=7&&>33K?ZxaCMc0>ZYP5S>c0$I^ zm60S!PZtW3kZj6J0(fj#%>7h2d&(;tf_0-l;cMb<4?sxZ#b zwp$x^!mL6>Edwrp9K%vS;F0K>MP%bgNOCtkB5O0gX;z*KP=1|`jrQmNf}!x|xsGjQ zoEPJ0iUr5oedQArM6kwD4+{CU^P-&nWv@~eS6VE(g|WQG!vN{pjp<0yslnusl14^( zsKPUShwjE$09P6y})bL+Q7akZAMDv>+Q; zc#?1A%~ZzwY#k{y*z9Js)Wiu!qa7X(2tOQY$i>ZOSXm1UwbkitT8?Za!FYx?+x-Y^ zN`$-Nl`Y4|#EMN-XQa1SYySP?-`nSrbh?bV4>744K@MuM?FR2E&>P z2Q7wzsfFpEMSvg1qa2yek%NH)1MQL<^!kNivp?Zw!J`lj$--_OJv;~GD7a# z5=c`sQvq9OP%^eVM{TuZ)D4b#B{8c$Fc3yedu(p@z}*g*b(Yz zo8vR|GwlT&oV#snfY(WcTv>BBo=VS*)V{_@2gS`q5Ffrn<&N_aWkE5z$TDQGP$aGY zhuL(gy}}!mILeUkY7|Hx7LzqYmQK6aWZ#hs$-$;Sg~S(e^0jAH=J|#qNl>T-p{>JN zy9Zh$Pzzgu5k|YmJ7(eX1mqe{_=UMjSfY!v7YW>n+NFKBTG#kzbyB`t?8{~<3DKR& zPgzhbAOiDdrT-Th==hJeUQ8=yde5h1C8T8CdeQ1ltt4mj)qkBGUUQCL;qR|j zs;fi&Y1q#wH5mIbI?gG4v@Wl|E1rh8SktVY6-3;wlJ1m}h;f}0nH|kw;5t(~;g>76 z-z0UbqSkPnk$G~YX`ksG*~tt4Q%&e~8;)Hd?w90EM(0YEMmS%{4g+n10gnvd{0c#K zwQ2?uy2cYbi6bf#S19T3exIOsLOc28=GTx&TIU5zxKLaDBE@$3hag=N(vZnu^$S4w zSI{#yuoT-F-Org#IL?+N_o4*kjqYaFSk0fF*$9_sBV`m}s9NSLI>{z~3Qree*yCP; z_^|;CggS9grmD$w6*OXPV_JlMXyOFYBX8c~6m+TR1-;i5FMjHT4y#`WJ!-mQsQ zlV01@4#O_WW)^#GrY+@t@$@x1zB^8qWnEW!$`EW+GhpG~=I*@Q^s|Y_CxnsI@H*e%xoMcZN#hhqJBqrCA+nD88Au__f~MotLdCNZk;w>O?WD z>#Xs+mo;+5me7t==kawsF%Ymw$Mf`r z$p!u{WE(mk1GlP6)*|xcMb|mpSLQWs-NSx{d~`)!{u_=mk4&F;-2K$Jyr2M>8Bbp2O0&JSRsjK!UZ|-(a{82w%W*=i&hy zMg3+X5vhP0&z~5{omXvCOG7a(C_EX?_ep7DRx7^`sW-XBT+01^(ua%PsX&eDS3XjV^0zqVh?U>BKdr&(OVfft5cpU>^^V5 zc^YqVS}jqEcHo}RygoKheoq*r(zQdeAh>Fn)z8{tPeTSP4OVQHW9|uRq=al=mM1zB z!LwA2A>fM1Q}OH6OQRs2Ty(5|@iyQsfET5ng)QDRcDH z@rcV(z{GJ+927`tzx+c3|0>5Ka#}2Qp3!fu?b1MmoR-|V9wn_Y^EuP#;HdywVfowd zW-N-`BUy=BbZF*TgWF{t`srhI(^0}@2a7Sy%CIR5}emJO|?IyO`){t0w#Yj)>F;<8{T%; zkh0=bnwv#C>5Rh9G&&B1rm;}+Wt=SNZ+6TZ5HEM|-;TUJVWXe)o08h9Z#MvZd!nl< zCNg!*1Oh>=PZKTISp1X}j;pjvHRfu{!)v=*8HB;aq<>x=dkGW8OfyN|7+Smf1km<- zF@Btj&%mFzc4?gEY0HAJ#)A$ZI@IYosAWP#Xstjf_2mo+a7@xgx0}nF; zWO>gv@|_?T;7?aCj1Paifgc94R6bn$8JY(HfcPPduerK`rxpaV%*PYnK@x=kV1hD` z5r;3vKy+*=gJX0+BmkMxC2g$NhZ?PDCmXls z`xs+o{3D_$6aW@v*3t(uvww%8Bv&{~MgRi7yvLZNykc}Y=@oqG>W9hbM4KSd@|z#~3GwkP_51R`Sc=SGp2 z1c6J-t9+e80DzD9tblu?AEA-&b#J0Ctu4SFy$X>(Q-z*gU>Q609x=0RAONIE=I9xsz(JGmBx9L5l?i4`BQbCSM?VV;LHLateFdi)cfG zg8|fwzBE^b`#}KaVYqRMX;5O{8|&>7mxa=Ex*@u+Hvy3w`3inJN&x?ch=zz5%J`}N zzWAx3k)HYazU--?RT685p2JPJdL9!OaP_O&OI^*oQ4$+&$b+a|#{0(n2x->G_sEG6 zv6m_E4H))bimwg9>RQm_Tc@s}j7cdHN3`2r1awK2DFHgUADXSQ`!mIK24O_TiDJOA7n KgbC1p)c*l^s3a@^ diff --git a/memento-note/extension/dist-chrome-store/sidepanel.js b/memento-note/extension/dist-chrome-store/sidepanel.js index c334286..eaa63b3 100644 --- a/memento-note/extension/dist-chrome-store/sidepanel.js +++ b/memento-note/extension/dist-chrome-store/sidepanel.js @@ -246,6 +246,14 @@ function bindIdleHandlers() { document.getElementById('clipSelBtn')?.addEventListener('click', () => void runAnalyze('selection')) document.getElementById('clipPageBtn')?.addEventListener('click', () => void runAnalyze('page')) document.getElementById('clipLinkBtn')?.addEventListener('click', () => void runAnalyze('link')) + + // Gérer l'erreur de chargement du favicon + document.querySelector('.page-favicon')?.addEventListener('error', function() { + const fallback = this.getAttribute('data-fallback') + if (fallback && this.src !== fallback) { + this.src = fallback + } + }) } async function clearSelection() { @@ -410,7 +418,7 @@ function renderIdle() {
${escapeHtml(t('activePage'))}
- +
${escapeHtml(pageTitle || '—')}
${escapeHtml(pageUrl || '—')}
diff --git a/memento-note/extension/dist-chrome-store/test-sidepanel.html b/memento-note/extension/dist-chrome-store/test-sidepanel.html new file mode 100644 index 0000000..e8aa574 --- /dev/null +++ b/memento-note/extension/dist-chrome-store/test-sidepanel.html @@ -0,0 +1,78 @@ + + + + + Test Sidepanel + + + +

Test Extension Momento

+
+ + + + diff --git a/memento-note/extension/memento-web-clipper-chrome-store.zip b/memento-note/extension/memento-web-clipper-chrome-store.zip index 20eb25de4378ae9778ca2f5be6cc4cce51968fbf..a23c08ccb8ef91fbaf87866a86aaea69a6e5adf6 100644 GIT binary patch delta 40735 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 ?eDw6>;*> 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 delta 26557 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%0ArPYpBv^Cb8abDWP$j|T-)+jE5dRY{T zaNS3O5_JdW>Dq?kqBXnMOqJB;J+aTT7^SplD*b4x+(d#aHp%W>Yrznu()!;9o3XA3 zY%h~B-*xTuQ}#?5X7Ist^D1?%KQ!6JcNX&@y|vsepo`pXL0W`sx8#L%dw^qBrVH?MJGkzAtOL0N0@>ZSi` z@sSXbJaGDPZl|8M+M#+e)r}bcEtyS)LaCL7eC-epEE^%GUx~I;$~}L88P}Rss}DM6 znvcS6WT+)Zx4<2E|8}^nD*5O;EL-PAP0$67RS4{tq4^LFAfQnqZd!al6(Lpz^Vpxl z9i=Yd<#PA7q9t)&_-32NITcU)y&Y3c;qBEietQ_`cBA^t|0=M!g+#qpU2&y}Jkwg^ z`t7WI629{W>DND}zxwi`1N?4k&&sht?blv0_le*}@g!x8UP!GS>!_US)(qq@=A>B1wVJUqE$Sj>n_h^0v*k zRrTqG12GcC?g^O1WRz+mQ@-s?OQ_*DT>;(s4(nB&#mw`cxAWy>0i?a2WrUFGE^-=O7PJoYAB!OF@YG?uR&ldLK8+x>YSr(2%|JeVb_Gb=LL^WN>sQJ zll?oePgLV)NdSt=$BHE9amvxn{qs-XQ@>fL7faxzKse$mP8YUwb)Eyf)3rvQxHlLf zyd94nlenl6dBGxOogbGE1!0bTzHfJL=+N!T{ph%CkzQa}wC!^wzD0Ew8!+_Ee!gWb zVo;3lX4RY8RZZVMgrL;prOT${-12578aiL7FB`mWll=&?J%9=~iFiJ%uHv`#)s4H- z(@b)r+@dPTzF`4x*^w(2Q;kM*cYTdsxrt~2`zv)k34M*;44==rHu(7Kl~q{|1{Uwl z|H+1u;=YR@{?EEcO7~xYu=np8g})&2FIfExDE9x|#_}(y`3vs<0^x&yw+Z?S#{L4_ z!+*ch`3v$65qSUQ#@ZnQ*S~^)!>)&Edk4kJf-^x0WIZE9u>TlUq=Wiunms}O#jUjh+?A-hX4SO{JGKo zlKd$P{Z@acupT22|H~WsV+0Z{AH7rpV~hJpvd2zykLFWoq!F zy!mU$$Ijy9`rno*-GA6&O>R@xjuC)5|13QLw7B~S|4=#p5305Me^YUN`2SJ;kK`|Z zzo@~F^f5*01c8M7AO8PHI0B&h+vHE#E&|##gEE04GaRGkYUjvu`XG&NkovI~@Oa`Ru>LF`fCJw*Pc3{GZ_e(~V?+ZbSee Kp%MPi)BggK!YTm( diff --git a/memento-note/extension/scripts/build-chrome-store.mjs b/memento-note/extension/scripts/build-chrome-store.mjs index 2754dca..8ba8c96 100755 --- a/memento-note/extension/scripts/build-chrome-store.mjs +++ b/memento-note/extension/scripts/build-chrome-store.mjs @@ -76,11 +76,13 @@ function processSidepanelJs(content) { function processManifestJson(content) { const manifest = JSON.parse(content) - // Remove localhost from host_permissions - if (manifest.host_permissions) { - manifest.host_permissions = manifest.host_permissions.filter( - perm => !perm.includes('localhost:3000') && !perm.includes('127.0.0.1:3000') - ) + manifest.host_permissions = [ + 'https://memento-note.com/*', + 'https://www.memento-note.com/*', + ] + + if (manifest.content_scripts?.[0]) { + manifest.content_scripts[0].matches = ['https://memento-note.com/*', 'https://www.memento-note.com/*'] } return JSON.stringify(manifest, null, 2) diff --git a/memento-note/lib/ai/services/semantic-search.service.ts b/memento-note/lib/ai/services/semantic-search.service.ts index c311d13..074a2b5 100644 --- a/memento-note/lib/ai/services/semantic-search.service.ts +++ b/memento-note/lib/ai/services/semantic-search.service.ts @@ -100,20 +100,60 @@ export class SemanticSearchService { const fusedResults = await this.reciprocalRankFusion(keywordResults, semanticResults) - return fusedResults + const topResults = fusedResults .sort((a, b) => b.score - a.score) .slice(0, opts.limit) - .map(result => ({ - ...result, - title: result.title || opts.defaultTitle, - matchType: result.score > 0.8 ? 'exact' as const : 'related' as const - })) + + // Fetch chunk snippets for top results (display only — no ranking change) + const noteIds = topResults.map(r => r.noteId) + const snippetMap = await this.fetchChunkSnippets(query, noteIds) + + return topResults.map(result => ({ + ...result, + title: result.title || opts.defaultTitle, + matchType: result.score > 0.8 ? 'exact' as const : 'related' as const, + matchedSnippets: snippetMap.get(result.noteId), + })) } catch (error) { console.error('Error in hybrid search:', error) return this._ftsFallback(query, userId, opts) } } + /** + * Fetch matching chunk snippets for display (no ranking impact). + * Finds chunks whose content contains the query terms. + */ + private async fetchChunkSnippets( + query: string, + noteIds: string[] + ): Promise> { + if (noteIds.length === 0 || !query.trim()) return new Map() + + try { + const rows: Array<{ noteId: string; content: string }> = await prisma.$queryRawUnsafe( + `SELECT "noteId", content FROM "NoteEmbeddingChunk" + WHERE "noteId" = ANY($1::text[]) + AND content ILIKE $2 + ORDER BY "noteId", "chunkIndex" + LIMIT 30`, + noteIds, + `%${query.slice(0, 100)}%` + ) + + const map = new Map() + for (const row of rows) { + const existing = map.get(row.noteId) || [] + const snippet = row.content.length > 200 ? row.content.slice(0, 200) + '...' : row.content + if (existing.length < 3) existing.push(snippet) + map.set(row.noteId, existing) + } + return map + } catch { + return new Map() + } + } + /** * PostgreSQL full-text search using tsvector + GIN index. * SECURITY: Uses $queryRawUnsafe with parameterized bind params ($1, $2…). diff --git a/memento-note/package.json b/memento-note/package.json index 468f01d..96d0a1e 100644 --- a/memento-note/package.json +++ b/memento-note/package.json @@ -14,7 +14,8 @@ "db:migrate:deploy": "prisma migrate deploy", "db:push": "prisma db push", "db:studio": "prisma studio", - "db:reset": "prisma migrate reset", + "db:reset": "node -e \"console.error('BLOCKED: use prisma migrate deploy. See CLAUDE.md'); process.exit(1)\"", + "db:reset:unsafe": "prisma migrate reset", "db:switch": "node scripts/switch-db.js", "setup:env": "node scripts/setup-env.js", "test": "playwright test", diff --git a/memento-note/scripts/migrate-chunk-embeddings.ts b/memento-note/scripts/migrate-chunk-embeddings.ts new file mode 100644 index 0000000..e068f7c --- /dev/null +++ b/memento-note/scripts/migrate-chunk-embeddings.ts @@ -0,0 +1,51 @@ +/** + * Script de migration : indexe toutes les notes existantes en fragments. + * Usage: npx tsx scripts/migrate-chunk-embeddings.ts + */ +import prisma from '@/lib/prisma' +import { chunkIndexingService } from '@/lib/ai/services/chunk-indexing.service' + +async function main() { + console.log('=== Migration des chunks d\'embeddings ===\n') + + const notes = await prisma.note.findMany({ + where: { + trashedAt: null, + noteEmbedding: { isNot: null }, + }, + select: { id: true, title: true, content: true }, + orderBy: { createdAt: 'asc' }, + }) + + console.log(`${notes.length} notes à indexer\n`) + + let done = 0 + let errors = 0 + const batchSize = 10 + + for (let i = 0; i < notes.length; i += batchSize) { + const batch = notes.slice(i, i + batchSize) + + await Promise.all(batch.map(async (note) => { + try { + const result = await chunkIndexingService.indexNote(note.id, note.title, note.content) + if (result.newFragments > 0) { + done++ + } + } catch (e: any) { + errors++ + console.error(` ✗ ${note.title?.slice(0, 40)}: ${e.message}`) + } + })) + + process.stdout.write(`\r${Math.min(i + batchSize, notes.length)}/${notes.length} traitées`) + } + + console.log(`\n\n=== Terminé ===`) + console.log(`Notes indexées: ${done}`) + console.log(`Erreurs: ${errors}`) + + await prisma.$disconnect() +} + +main().catch(console.error) diff --git a/monitoring/metrics-token.example b/monitoring/metrics-token.example new file mode 100644 index 0000000..4eacc13 --- /dev/null +++ b/monitoring/metrics-token.example @@ -0,0 +1,2 @@ +# Copy to metrics-token at deploy time (see scripts/deploy-prod.sh) +# Example: openssl rand -hex 32 > monitoring/metrics-token diff --git a/monitoring/prometheus.yml b/monitoring/prometheus.yml index 26c977d..bd6a5ec 100644 --- a/monitoring/prometheus.yml +++ b/monitoring/prometheus.yml @@ -18,6 +18,11 @@ scrape_configs: static_configs: - targets: ['memento-note:3000'] + - job_name: 'mcp-server' + metrics_path: '/metrics' + static_configs: + - targets: ['mcp-server:3001'] + - job_name: 'node-exporter' static_configs: - targets: ['node-exporter:9100']