‏הצגת רשומות עם תוויות chatgpt. הצג את כל הרשומות
‏הצגת רשומות עם תוויות chatgpt. הצג את כל הרשומות

יום שלישי, 16 בספטמבר 2025

שאלות ל-chatGpt מכל אתר

כתבתי תוסף לשימוש ChatGpt בכל אתרי האינטרנט:

  • מסמנים טקסט כלשהו
  • לוחצים Shift+Q
  • יופיע בלון קטן - שאל את chatGpt.
  • לוחצים על הבלון וייפתח חלון עם הטקסט כשאלה ב-chatGpt:
שימוש בתוסף:
  • העתק את הקוד
  • לחץ ctrl+d כדי ליצור סימניה
  • שנה את שם הסימניה ל-AskGPT ובמקום הכתובת, הדבק את הטקסט שהעתקת בסעיף 1
  • כעת תוכל להשתמש בתוסף בכל אתר אינטרנט, כפי שמוסבר למעלה
javascript:(function(){const m=document.createElement('div');m.id='chatgpt-context-menu';m.style.position='absolute';m.style.background='#fff';m.style.border='1px solid #ccc';m.style.padding='8px 12px 12px 12px';m.style.borderRadius='5px';m.style.boxShadow='0 2px 8px rgba(0,0,0,0.2)';m.style.cursor='pointer';m.style.display='none';m.style.zIndex=99999;m.style.transition='opacity 0.2s';m.style.opacity=0;m.style.minWidth='120px';m.style.fontFamily='Arial,sans-serif';m.style.direction='rtl';const close=document.createElement('span');close.innerHTML='✕';close.style.position='absolute';close.style.top='2px';close.style.right='6px';close.style.cursor='pointer';close.style.fontSize='12px';close.style.color='#666';close.addEventListener('click',()=>{h()});m.appendChild(close);const label=document.createElement('div');label.innerText='שאל את ChatGPT';label.style.marginTop='10px';m.appendChild(label);document.body.appendChild(m);let t='';function s(x,y){m.style.top=y+'px';m.style.left=x+'px';m.style.display='block';setTimeout(()=>m.style.opacity=1,10)}function h(){m.style.opacity=0;setTimeout(()=>m.style.display='none',200)}document.addEventListener('keydown',e=>{if(e.shiftKey&&e.key.toLowerCase()==='q'){t=window.getSelection().toString().trim();if(t){const r=window.getSelection().getRangeAt(0).getBoundingClientRect();s(r.right+window.scrollX,r.bottom+window.scrollY)}}});document.addEventListener('click',e=>{if(!m.contains(e.target))h()});label.addEventListener('click',()=>{if(t){window.open('https://chat.openai.com/?q='+encodeURIComponent(t),'_blank','width=600,height=400')}h()});})();
  

לחלופין אפשר למצוא את הקוד בגיטהאב שלי: https://github.com/snirex/AskGpt/blob/main/AskGpt.min.js

יום חמישי, 10 ביולי 2025

צביעת שיחות ב-ChatGpt

הוספת אפשרות לצבוע שיחות (צאטים) ב-ChatGpt
  1. לחץ כאן כדי להעתיק את הקוד
  2. לחץ ctrl+d כדי ליצור סימניה
  3. שנה את שם הסימניה ל-צביעת שיחות, ובמקום הכתובת, הדבק את הטקסט שהעתקת בסעיף 1
  4. בזמן שימוש באתר ChatGPT, לחץ על הסימניה ששמרת כדי להציג את התפריט
javascript:(function(){
  let s = JSON.parse(localStorage.getItem('navMarkerSettings')) || {
    markers: [{symbol:'📌',bgColor:'#fff8b3',color:''}],
    minimized: false
  };
  function save() {
    localStorage.setItem('navMarkerSettings', JSON.stringify(s));
  }
  function h() {
    document.querySelectorAll('nav a').forEach(c=>{
      let t=c.textContent.trim();
      c.style.backgroundColor='';
      c.style.color='';
      s.markers.forEach(m=>{
        if(t.startsWith(m.symbol)||t.endsWith(m.symbol)){
          c.style.backgroundColor=m.bgColor||'';
          c.style.color=m.color||'';
        }
      });
      c.style.fontWeight='';
      if(c.hasAttribute('data-active')){
        c.style.fontWeight='bold';
      }
    });
  }
  h();
  const n=document.querySelector('nav');
  if(n){
    new MutationObserver(h).observe(n,{childList:true,subtree:true,attributes:true,attributeFilter:['data-active']});
  }
  if(!document.getElementById('markerConfigMenu')){
    const m=document.createElement('div');
    m.id='markerConfigMenu';
    m.style.position='fixed';
    m.style.top='55px';
    m.style.right='10px';
    m.style.width='270px';
    m.style.background='#fefefe';
    m.style.border='1px solid #333';
    m.style.borderRadius='8px';
    m.style.boxShadow='0 4px 12px rgba(0,0,0,0.2)';
    m.style.fontFamily='sans-serif';
    m.style.zIndex='9999';
    m.style.overflow='hidden';
    m.style.opacity='0.9';
    m.style.cursor='move';
    m.innerHTML='';
    document.body.appendChild(m);
    const hd=document.getElementById('menuHeader'),
          tb=document.getElementById('toggleMenu'),
          ct=document.getElementById('menuContent'),
          cl=document.getElementById('closeMenu');
    // מצב פתיחה/סגירה לפי saved
    ct.style.display = s.minimized ? 'none' : 'block';
    tb.textContent = s.minimized ? '+' : '−';
    tb.onclick=()=>{
      if(ct.style.display==='none'){
        ct.style.display='block';
        tb.textContent='−';
        s.minimized = false;
      }else{
        ct.style.display='none';
        tb.textContent='+';
        s.minimized = true;
      }
      save();
    };
    cl.onclick=()=>{
      m.style.transition='opacity 0.2s ease';
      m.style.opacity='0';
      setTimeout(()=>{m.remove();},500);
    };
    function r(){
      const l=document.getElementById('markerList');
      l.innerHTML='';
      if(s.markers.length===0){
        l.innerHTML='אין סימנים מוגדרים.';
      }
      s.markers.forEach((m,i)=>{
        const d=document.createElement('div');
        d.style.marginBottom='4px';
        d.style.background='#f0f0f0';
        d.style.padding='4px 30px 4px 4px';
        d.style.borderRadius='4px';
        d.style.position='relative';
        d.innerHTML=`${m.symbol} BG:       Text:     `;
        const b=document.createElement('button');
        b.textContent='🗑️';
        b.style.position='absolute';
        b.style.right='-25px';
        b.style.top='50%';
        b.style.transform='translateY(-50%)';
        b.style.background='none';
        b.style.border='none';
        b.style.cursor='pointer';
        b.onclick=()=>{
          s.markers.splice(i,1);
          save();
          r();
          h();
        };
        d.appendChild(b);
        l.appendChild(d);
      });
    }
    r();
    document.getElementById('addMarker').onclick=()=>{
      const sy=document.getElementById('newSymbol').value.trim(),
            bg=document.getElementById('newBg').value,
            co=document.getElementById('newColor').value;
      if(sy){
        s.markers.push({symbol:sy,bgColor:bg,color:co});
        save();
        r();
        h();
      }
    };
    document.getElementById('resetMarkers').onclick=()=>{
      if(confirm('לאפס הכל?')){
        localStorage.removeItem('navMarkerSettings');
        s={markers:[], minimized: false};
        r();
        h();
      }
    };
    let x=0,y=0,mx=0,my=0;hd.onmousedown=d;
    function d(e){
      e=e||window.event;e.preventDefault();
      mx=e.clientX;my=e.clientY;
      document.onmouseup=c;document.onmousemove=f;
    }
    function f(e){
      e=e||window.event;e.preventDefault();
      x=mx-e.clientX;y=my-e.clientY;
      mx=e.clientX;my=e.clientY;
      m.style.top=(m.offsetTop-y)+'px';
      m.style.left=(m.offsetLeft-x)+'px';
      m.style.right='auto';
    }
    function c(){document.onmouseup=null;document.onmousemove=null;}
  }
})();


שימוש בתוסף:
בתיבת התוסף יש להגדיר תו רצוי וצבעים - למשל
תוצבע רקעצבע טקסט
>      
יש לשנות את שם השיחה הרצויה שתתחיל או תסתיים בתו שנבחר.
כך, כל שיחה תיצבע בצבע ע"י התחלת או סיום השיחה בתו שהוגדר

יום שני, 30 ביוני 2025

תפריט שאלות של השיחה הנוכחית ChatGPT

תפריט פרומפטים ל-chatGPT


כתבתי תוסף לכרום שמוסיף את התפריט באופן אוטומטי (עם אפשרות למזעור או סגירה)
ניתן להוריד את התוסף מחנות גוגל כרום

אם לא ניתן להתקין תוספים אצלך בדפדן, אז אפשר להפעיל את זה בדרך הבאה:

  1. לחץ כאן כדי להעתיק את הקוד
  2. העתק מכאן את הקוד
  3. לחץ ctrl+d כדי ליצור סימניה
  4. שנה את שם הסימניה ל-תפריט, ובמקום כתובת, הדבק את הטקסט שהעתקת בסעיף 1
  5. בזמן שימוש באתר ChatGPT, לחץ על הסימניה ששמרת כדי להציג את התפריט

או להעתיק ולהדביק מ-Github שלי



יום חמישי, 5 בספטמבר 2024

ChatGPT - תיקון ימין-שמאל בכתיבת עברית

יש בעיה בכתיבת שאלות ב-ChatGPT בעברית במחשב - הכתיבה היא רק משמאל לימין.
כתבתי תוסף לכרום שמתקן את זה
ניתן להוריד את התוסף מחנות גוגל כרום

במידה ואין אפשרות להתקנת תוספים בדפדפן שלך, אפשר להשתמש בדרך הבאה:
  1. לחץ כאן כדי להעתיק את הקוד
  2. לחץ ctrl+d
  3. שנה את שם הסימניה, ובמקום כתובת, הדבק את הטקסט שהעתקת בסעיף 1
  4. בזמן שימוש באתר ChatGPT, לחץ על הסימניה ששמרת כדי לשנות כיוון כתיבה

  1. לחץ כאן כדי להעתיק את הקוד
  2. לחץ ctrl+d
  3. שנה את שם הסימניה ל-שניר, ובמקום כתובת, הדבק את הטקסט שהעתקת בסעיף 1
javascript:(function(){/**chatgpt-rtl*/let textareaDirection=localStorage.getItem('snir-textarea-direction')||'rtl';function toggleDirection(){textareaDirection=textareaDirection==='rtl'?'ltr':'rtl';localStorage.setItem('snir-textarea-direction',textareaDirection);const textarea=document.querySelector('#prompt-textarea');if(textarea){textarea.style.direction=textareaDirection;}const img=document.querySelector('#direction-toggle-button img');if(img){img.style.transform=textareaDirection==='ltr'?'scaleX(-1)':'scaleX(1)';}}function toggleMarkdownDirection(){const markdowns=document.querySelectorAll('.markdown');markdowns.forEach(el=>{el.dir=el.dir==='rtl'?'ltr':'rtl';});const img=document.querySelector('#markdown-toggle-button img');if(img){img.style.transform=img.style.transform==='scaleX(-1)'?'scaleX(1)':'scaleX(-1)';}}function makeButtonImage(id,title,imgSrc,imgAlt,clickHandler){const btn=document.createElement('button');btn.id=id;btn.title=title;btn.style.cssText='width:2.2rem;height:2.2rem;border-radius:50%;background:white;color:black;border:1px solid lightgray;font-size:1.2rem;box-shadow:0 2px 6px rgba(0,0,0,0.2);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;position:relative;transition:transform 0.3s cubic-bezier(.68,-0.55,.27,1.55);';btn.onmouseover=()=>btn.style.backgroundColor='#f0f0f0';btn.onmouseout=()=>btn.style.backgroundColor='white';btn.onclick=(e)=>{e.preventDefault();clickHandler();};const img=document.createElement('img');img.src=imgSrc;img.alt=imgAlt;img.style.cssText='width:1.5rem;height:1.5rem;object-fit:contain;pointer-events:none;';btn.appendChild(img);return btn;}/**/ const imgPromptDir='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAD/UExURenp6c7OzrKysnl5eVZWVpOTkwAAAAEBAaGhoW1tbQMDA5ycnI2NjVtbW8bGxsjIyMrKyrGxscXFxd3d3dLS0ubm5ujo6IuLi3d3d+Li4uTk5E1NTezs7CYmJicnJ1BQUI6OjtXV1ZKSknZ2dpqamgICAt/f36ampnJyclxcXDk5OaqqqrCwsK+vr7+/v66urnR0dMPDw29vb+7u7rW1tSwsLIWFhUJCQkRERMTExNTU1AYGBsfHx3FxcWtra8nJybOzswQEBE5OTjMzM6mpqa2trdzc3OXl5UxMTKWlpUtLS52dnUlJSZ6enuPj40hISMvLy0ZGRqSkpOvr6wAAAKVmCqgAAABVdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCwoQfPAAAACXBIWXMAAA7BAAAOwQG4kWvtAAAAGHRFWHRTb2Z0d2FyZQBQYWludC5ORVQgNS4xLjgbaeqoAAAAtmVYSWZJSSoACAAAAAUAGgEFAAEAAABKAAAAGwEFAAEAAABSAAAAKAEDAAEAAAACAAAAMQECABAAAABaAAAAaYcEAAEAAABqAAAAAAAAANl2AQDoAwAA2XYBAOgDAABQYWludC5ORVQgNS4xLjgAAwAAkAcABAAAADAyMzABoAMAAQAAAAEAAAAFoAQAAQAAAJQAAAAAAAAAAgABAAIABAAAAFI5OAACAAcABAAAADAxMDAAAAAA5X1phWJRlb4AAAFhSURBVEhL5ZRXV8JAEIUpurEiorGAHdGIxoYo9i5WbPP/f4uzmZFkl6xsXuV7yHLP3C9kYU9SkJh/rqTSmWyfQponRKfSLxBHXtoM8IjoUAa5PxSUHUeGYZ4RujLCXSFGc2P5cVwz+cIEDwlNmaS6JIvRxXWKJiGaMh3uYgbjLK5FmoRoSonqEktlbp7qEltlgeoS2wdbpLrEVllKvv1lqktsFVhp/5XWCpR/D5i9AquBUEmiwNq6t1FN9C0Bm8mVreSK36vKtievO0Ls4mKl7AmxXwM4qFcPMRWPGg2XBiGacoy3FSccDKhKQRp5DiYUxcpQlBwKpwUOZiLKmTzy9bJ3HsfFJbeiCv6gFe31HeWKa1GlVhLXfyg+15QHc2/Qub3L+HHcP3BL3X7zEe/2xMFMVIHmMzovHIwoChRf0XnjYEJVoPWOzgcHA5oCrU/xxR9N6Ap8dzmUMUp3eloB+AGGLqjp2OH2dAAAAABJRU5ErkJggg=='; const imgMarkdownDir='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE4AAABOCAIAAAAByLdKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALeSURBVHhe7ZsxjuIwFIZTU+0RKLkBJWlX4gLT0SPtDZBAokFcAYFoqaDZFiqQQKKAHi5ARUvB/orfWCSZOF7ivDHM+ypiXvL7ix2HSCG4/xhE9R2xVV0ul61Wq1qtBiyEYXg+nynbEVaqCKYuMILT6tY2XzXtiU6UCsW4ts1R7Xa7FBsE+Ox8UqXBZUJ5EQ5tTarIoMAgwLVKrSWTUAWubE2qk8lEhWE8qal8tCpC9WR2YmtS1bP3W1Qxj4BDW5PqYyo1lU8i1KGt76rAle0LqAIntq+hCorbvowqKGj7SqqgiK2/qrirU1Ocp229U9W/W5BOTSmes/VOFVkqFBgcnrD1ThVoB/NT6//a+qiKTmsHAGH05Esey3JtfVQFjyNmj/m3uqeqAEOUGLdcUE87f4W/qhqkA6zMWegnsJdXzQXdU/0UVUJUI0TVO0Q1iahGiGqMTqdTq9VQ87s0cHBEIIgiU3CojkYjVcAD4ig4Dofq4XBQBTwcj0cKjsOhCi6Xy5oFBFFkCiZVHxDVJKIakat6vV7VnYaBRqOBOAqOw6E6GAxUAQ+Io+A4HKq3263ZbKoazS9H0OE+QRDiKDgOh6oniGoSUY2wUT2dTn9ZQBBFpuBQ3W63qoAHxFFwHA7V6XSqCnhAHAXH4VAFw+GwXq+j5qM0cHBEIIgiUzCp+oCoJhHVCBvV8Xj8x5per0e7RUsaWjabDW0XgEN1NpupAnva7TZ2nM/ntB0EWc8r9nCorlYrVWBPv9/Hjuv1Wm1WKhV1qCJwqILdboepaMlisaDd7vf9fo+W4kMKmFR9QFSTiGqEqHqHqCYR1QhR9Q5RTSKqET9RdZLxGr0nWP6hzaQKQ3UI89n6drSqeUhMqpgY+nVcb+ewnr2AmjLI+VqfMIDPue/HM5PoHrVmkKMKnnixnB90krqbTb4q0OuTn1guJVaqAFd8GIY4ef4Msvqnhv0iYqv6Bojq+3G//wN9rsRvy4i5OAAAAABJRU5ErkJggg==';const dirBtn=makeButtonImage('direction-toggle-button','החלף כיוון כתיבת טקסט',imgPromptDir,'direction',toggleDirection);const markdownBtn=makeButtonImage('markdown-toggle-button','החלף כיוון הצגת תשובות',imgMarkdownDir,'markdown',toggleMarkdownDirection);let btnGroup;function createButtons(){if(!btnGroup){btnGroup=document.createElement('div');btnGroup.id='custom-btn-group';btnGroup.style.cssText='position:absolute;display:flex;gap:10px;z-index:99999;';[dirBtn,markdownBtn].forEach(btn=>btnGroup.appendChild(btn));document.body.appendChild(btnGroup);}const textarea=document.querySelector('#prompt-textarea');if(!textarea)return;textarea.style.direction=textareaDirection;const rect=textarea.getBoundingClientRect();const newTop=rect.top+window.scrollY-10;const newLeft=rect.left+rect.width+110;if(btnGroup.dataset.top!=newTop||btnGroup.dataset.left!=newLeft){btnGroup.dataset.top=newTop;btnGroup.dataset.left=newLeft;[dirBtn,markdownBtn].forEach(btn=>{btn.style.transform='translateY(0)';/**/});}btnGroup.style.top=newTop+'px';btnGroup.style.left=newLeft+'px';}/**/ createButtons();window.addEventListener('scroll',createButtons);window.addEventListener('resize',createButtons);const observer=new MutationObserver(createButtons);observer.observe(document.body,{childList:true,subtree:true});})();

ניתן גם להעתיק את הקוד מאתר Github שלי

דרך שניה

תוסף לדפדפן גוגל כרום

יש ליצור תיקיה חדשה ולשמור בתוכה את הקבצים הבאים:
  1. manifest.json
    {
      "manifest_version": 3,
      "name": "כיוון כתיבת עברית ב-ChatGPT",
      "version": "1.2",
      "author": "Snir Elgabsi",
      "description": "הוספת תפריט קטן לשינוי כיוון כתיבה ב-ChatGPT",
      "icons": {
        "16": "icon.png",
        "48": "icon.png",
        "128": "icon.png"
      },
      "content_scripts": [
        {
          "matches": [
            "https://chat.openai.com/*",
            "https://chatgpt.com/*"
          ],
          "js": [
            "content.js"
          ]
        }
      ],
      "permissions": [],
      "host_permissions": [
        "https://chat.openai.com/*"
        "https://chatgpt.com/*"
      ]
    }
    לחץ כאן כדי להעתיק את הקוד
  2. content.js
    javascript:(function(){
    let textareaDirection = localStorage.getItem('snir-textarea-direction') || 'rtl';
    
    function toggleDirection(){
      textareaDirection = textareaDirection === 'rtl' ? 'ltr' : 'rtl';
      localStorage.setItem('snir-textarea-direction', textareaDirection);
      const textarea = document.querySelector('#prompt-textarea');
      if(textarea){ textarea.style.direction = textareaDirection; }
      const img = document.querySelector('#direction-toggle-button img');
      if(img){ img.style.transform = textareaDirection === 'ltr' ? 'scaleX(-1)' : 'scaleX(1)'; }
    }
    
    function toggleMarkdownDirection(){
      const markdowns=document.querySelectorAll('.markdown');
      markdowns.forEach(el=>{el.dir=el.dir==='rtl'?'ltr':'rtl';});
      const img=document.querySelector('#markdown-toggle-button img');
      if(img){img.style.transform=img.style.transform==='scaleX(-1)'?'scaleX(1)':'scaleX(-1)';}
    }
    
    function toggleWhitespaceStyle(){
      document.querySelectorAll('.whitespace-pre-wrap').forEach(el=>{
        const isActive=el.classList.contains('styled-q');
        if(isActive){
          el.classList.remove('styled-q');
          el.style.border='';el.style.borderRadius='';el.style.background='';
        }else{
          el.classList.add('styled-q');
          el.style.border='2px solid red';
          el.style.borderRadius='10px';
          el.style.boxShadow='0 0 8px 2px red';
          el.style.padding='5px';
        }
      });
    }
    
    function jumpToNext(){	
      const messages = document.querySelectorAll('[data-message-author-role]');
      let current = [...messages].findIndex(m => m.getBoundingClientRect().top > 100);
      if (current !== -1 && messages[current]) {
        messages[current].scrollIntoView({behavior: 'smooth', block: 'start'});
      }
    }
    
    function jumpToPrevious() {
      const messages = [...document.querySelectorAll('[data-message-author-role]')];
      if (messages.length === 0) return;
      let index = messages.findIndex(m => m.getBoundingClientRect().top >= 10);
      if (index === -1) index = messages.length;
      if (index > 0) {
        messages[index - 1].scrollIntoView({ behavior: 'smooth', block: 'start' });
      }
    }
    
    function toggleQButtonGlow(){
      const qButton=document.querySelector('#q-style-toggle-button');
      if(!qButton)return;
      const glowing=qButton.classList.toggle('glowing-q');
      if(glowing){qButton.style.boxShadow='0 0 10px 4px yellow';}
      else{qButton.style.boxShadow='0 2px 6px rgba(0,0,0,0.2)';}
    }
    
    function createTooltip(btn){
      let tooltip = document.createElement('div');
      tooltip.textContent = 'Snir Elgabsi';
      tooltip.style.cssText = `
        position:absolute;
        bottom:120%;
        left:50%;
        transform:translateX(-50%) scale(0.5);
        padding:5px 10px;
        background:rgba(0,0,0,0.7);
        color:white;
        border-radius:6px;
        font-size:0.9rem;
        opacity:0;
        transition:opacity 0.3s ease, transform 0.3s ease;
        pointer-events:auto;
        cursor:pointer;
        z-index:10000;
        white-space:nowrap;
      `;
      tooltip.onclick = () => {
        window.open('https://snir.blogspot.com', '_blank');
      };
      btn.appendChild(tooltip);
      setTimeout(() => {
        tooltip.style.opacity = '1';
        tooltip.style.transform = 'translateX(-50%) scale(1)';
      }, 500);
      setTimeout(() => {
        tooltip.style.opacity = '0';
        tooltip.style.transform = 'translateX(-50%) scale(0.5)';
        setTimeout(() => {
          if (tooltip.parentElement) {
            tooltip.remove();
          }
        }, 300);
      }, 5030);
      btn._tooltip = tooltip;
    }
    
    function removeTooltip(btn){
      if(btn._tooltip){
        btn._tooltip.style.opacity='0';
        btn._tooltip.style.transform='translateX(-50%) scale(0.5)';
        setTimeout(()=>{if(btn._tooltip){btn._tooltip.remove();btn._tooltip=null;}},300);
      }
    }
    
    function addTooltipEvents(btn){
      let hoverTimeout=null;
      let leaveTimeout=null;
      btn.addEventListener('mouseenter',()=>{
        clearTimeout(leaveTimeout);
        hoverTimeout=setTimeout(()=>createTooltip(btn),1500);
      });
      btn.addEventListener('mouseleave',()=>{
        clearTimeout(hoverTimeout);
        leaveTimeout=setTimeout(()=>removeTooltip(btn),1000);
      });
    }
    
    function makeButtonImage(id,title,imgSrc,imgAlt,clickHandler){
      const btn=document.createElement('button');
      btn.id=id;
      btn.title=title;
      btn.style.cssText='width:2.2rem;height:2.2rem;border-radius:50%;background:white;color:black;border:1px solid lightgray;font-size:1.2rem;box-shadow:0 2px 6px rgba(0,0,0,0.2);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;position:relative;';
      btn.onmouseover=()=>btn.style.backgroundColor='#f0f0f0';
      btn.onmouseout=()=>btn.style.backgroundColor='white';
      btn.onclick=(e)=>{e.preventDefault();clickHandler();};
      const img=document.createElement('img');
      img.src=imgSrc;
      img.alt=imgAlt;
      img.style.cssText='width:1.5rem;height:1.5rem;object-fit:contain;pointer-events:none;';
      btn.appendChild(img);
      addTooltipEvents(btn);
      return btn;
    }
    
    // BASE64 images:
    const imgPromptDir = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAD/UExURenp6c7OzrKysnl5eVZWVpOTkwAAAAEBAaGhoW1tbQMDA5ycnI2NjVtbW8bGxsjIyMrKyrGxscXFxd3d3dLS0ubm5ujo6IuLi3d3d+Li4uTk5E1NTezs7CYmJicnJ1BQUI6OjtXV1ZKSknZ2dpqamgICAt/f36ampnJyclxcXDk5OaqqqrCwsK+vr7+/v66urnR0dMPDw29vb+7u7rW1tSwsLIWFhUJCQkRERMTExNTU1AYGBsfHx3FxcWtra8nJybOzswQEBE5OTjMzM6mpqa2trdzc3OXl5UxMTKWlpUtLS52dnUlJSZ6enuPj40hISMvLy0ZGRqSkpOvr6wAAAKVmCqgAAABVdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCwoQfPAAAACXBIWXMAAA7BAAAOwQG4kWvtAAAAGHRFWHRTb2Z0d2FyZQBQYWludC5ORVQgNS4xLjgbaeqoAAAAtmVYSWZJSSoACAAAAAUAGgEFAAEAAABKAAAAGwEFAAEAAABSAAAAKAEDAAEAAAACAAAAMQECABAAAABaAAAAaYcEAAEAAABqAAAAAAAAANl2AQDoAwAA2XYBAOgDAABQYWludC5ORVQgNS4xLjgAAwAAkAcABAAAADAyMzABoAMAAQAAAAEAAAAFoAQAAQAAAJQAAAAAAAAAAgABAAIABAAAAFI5OAACAAcABAAAADAxMDAAAAAA5X1phWJRlb4AAAFhSURBVEhL5ZRXV8JAEIUpurEiorGAHdGIxoYo9i5WbPP/f4uzmZFkl6xsXuV7yHLP3C9kYU9SkJh/rqTSmWyfQponRKfSLxBHXtoM8IjoUAa5PxSUHUeGYZ4RujLCXSFGc2P5cVwz+cIEDwlNmaS6JIvRxXWKJiGaMh3uYgbjLK5FmoRoSonqEktlbp7qEltlgeoS2wdbpLrEVllKvv1lqktsFVhp/5XWCpR/D5i9AquBUEmiwNq6t1FN9C0Bm8mVreSK36vKtievO0Ls4mKl7AmxXwM4qFcPMRWPGg2XBiGacoy3FSccDKhKQRp5DiYUxcpQlBwKpwUOZiLKmTzy9bJ3HsfFJbeiCv6gFe31HeWKa1GlVhLXfyg+15QHc2/Qub3L+HHcP3BL3X7zEe/2xMFMVIHmMzovHIwoChRf0XnjYEJVoPWOzgcHA5oCrU/xxR9N6Ap8dzmUMUp3eloB+AGGLqjp2OH2dAAAAABJRU5ErkJggg==';
      const imgMarkdownDir = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE4AAABOCAIAAAAByLdKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALeSURBVHhe7ZsxjuIwFIZTU+0RKLkBJWlX4gLT0SPtDZBAokFcAYFoqaDZFiqQQKKAHi5ARUvB/orfWCSZOF7ivDHM+ypiXvL7ix2HSCG4/xhE9R2xVV0ul61Wq1qtBiyEYXg+nynbEVaqCKYuMILT6tY2XzXtiU6UCsW4ts1R7Xa7FBsE+Ox8UqXBZUJ5EQ5tTarIoMAgwLVKrSWTUAWubE2qk8lEhWE8qal8tCpC9WR2YmtS1bP3W1Qxj4BDW5PqYyo1lU8i1KGt76rAle0LqAIntq+hCorbvowqKGj7SqqgiK2/qrirU1Ocp229U9W/W5BOTSmes/VOFVkqFBgcnrD1ThVoB/NT6//a+qiKTmsHAGH05Esey3JtfVQFjyNmj/m3uqeqAEOUGLdcUE87f4W/qhqkA6zMWegnsJdXzQXdU/0UVUJUI0TVO0Q1iahGiGqMTqdTq9VQ87s0cHBEIIgiU3CojkYjVcAD4ig4Dofq4XBQBTwcj0cKjsOhCi6Xy5oFBFFkCiZVHxDVJKIakat6vV7VnYaBRqOBOAqOw6E6GAxUAQ+Io+A4HKq3263ZbKoazS9H0OE+QRDiKDgOh6oniGoSUY2wUT2dTn9ZQBBFpuBQ3W63qoAHxFFwHA7V6XSqCnhAHAXH4VAFw+GwXq+j5qM0cHBEIIgiUzCp+oCoJhHVCBvV8Xj8x5per0e7RUsaWjabDW0XgEN1NpupAnva7TZ2nM/ntB0EWc8r9nCorlYrVWBPv9/Hjuv1Wm1WKhV1qCJwqILdboepaMlisaDd7vf9fo+W4kMKmFR9QFSTiGqEqHqHqCYR1QhR9Q5RTSKqET9RdZLxGr0nWP6hzaQKQ3UI89n6drSqeUhMqpgY+nVcb+ewnr2AmjLI+VqfMIDPue/HM5PoHrVmkKMKnnixnB90krqbTb4q0OuTn1guJVaqAFd8GIY4ef4Msvqnhv0iYqv6Bojq+3G//wN9rsRvy4i5OAAAAABJRU5ErkJggg==';
      const imgPrevBtn='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOBtp6qgAAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAIAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAYAAAAAEAAABgAAAAAQAAAFBhaW50Lk5FVCA1LjEuOAADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAACrgCETU544KAAAAeNJREFUaEPtmbtKxEAUhuMFLdRCsRC0ULQTES+VD2Bhr2AraKGljbYWXrASwdY3UAQbKxFRbFwrURCx9gFEK/U/mUmY7CaTEHLM7Ho++DgzG5Ldk7lkZ+IJgpCbHngM7+E6fVCPUBK38MdwD2ahT8c/pUlHk254Dmf8WhRKZkMVE5mCczDu2kWypWMslMQNNFui2l1oYwLGnVe0iWRJInAHJkEtEndO0UYImt/WnZKgltlUxQiDcBs2w5ovLJBFHUN64R2szjiL+9AJ6K61wg6/pn4c8QKfVDHkCn6qYkhwnjPQlFmBlMgbHIZnuh64BBeM+iF0kgF4Asf8muddQDORVUiswANVrA+SEnESGiMNge3pSy0yq4o+a/BIFa20wX5VZIXGcghHIuPwGrZA6pJcdOqYSt4xMgnN87iMwDFGvuEH/IL03OEyAkfXaoc0lXPzqmMqMv2WgSTiGpKIa3BMv0OQVo/cN2lex1TyTr+lrNmla1mg1eYytF27CKz7WibyZC8DScQ1JBHX4Jh+u+A0pGvXPLgK5FLHVPJOvw2zZi8Fjq41Ck8h93bQiI4+HIlQK9MGBDc1OylJyF+UMrAlQi+ATKjPO4stkWf4CB8gvb16h85iG+x0zDwejBVB+D943i8TrRfXoZttJgAAAABJRU5ErkJggg==';  
      const imgNextBtn='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCA1LjEuOBtp6qgAAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAoAQMAAQAAAAIAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAYAAAAAEAAABgAAAAAQAAAFBhaW50Lk5FVCA1LjEuOAADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAACrgCETU544KAAAAfhJREFUaEPtmc0rBVEYhweFBYWVYkFhI8nHirKRjT1lLQskCytbC9mJIks7SxtZKUl3y4IUJf4JHwvh95tzzu3MnWvmds1rZnKeenrfubeZO+89Z87MOeM5HDLU6FgOfmd//6XNHQfwFl7BOzgLc8kFNK1AV2AltOv4p0R1rTM4qVKfZbiv0khG4DSMOnYSbOgYCwuxW2QJVsIQtPeTMkCtjkkiccxYJLpWF9yELCj0zyXInI6xVNu1UiGVbiCBKyRruEKyhsTwWw87VCrKk44+EoUMwktYByXvI006xlLtfWQY2vtJGUDiGvmEL/AdvgkaQKJrNcBOlYryqGMs7hElDVwhWcMVkjUkht9uuAWl/6QZHWOpdvjlKoq9n5QBXNeKgAt0CzDq2Ekgvq6VCm74zRr/shDpi/dX2IVwDnEMB/yt8ImbsXsRbqs0O5iT5ZB5CrmS/gyn4A7k6wHDPHyFR/6W5+3CVZUGaIajkMcO3bgS5FzHIiziBvJHOU1lfID3OjfyxQ+nmPZne7CU1ObsH5BzbGJaqBf2qbTIBGxUaRG2UCYwJ94CT+C4v1UZfDBcV2mAfshrTXo5qEdHH/uCboUsZszfiuanIghbmQsQ0oRWUmxYTAGW9kdbFpELoorJTRGGcsXkrghDGzyE13CNHzgcjrzied8Om+958SArgwAAAABJRU5ErkJggg==';
    
    // כפתורים:
    const dirBtn = makeButtonImage('direction-toggle-button', textareaDirection==='rtl'?'כיוון כתיבה מימין לשמאל - Ctrl+Shift':'כיוון כתיבה משמאל לימין - Ctrl+Shift', imgPromptDir, 'כיוון כתיבה', toggleDirection);
    dirBtn.querySelector('img').style.transform = textareaDirection === "ltr" ? "scaleX(-1)" : "scaleX(1)";
    
    const mdBtn = makeButtonImage('markdown-toggle-button', 'החלף כיוון כתיבה של התשובות', imgMarkdownDir, 'כיוון תשובות', toggleMarkdownDirection);
    
    const qBtn=document.createElement('button');
    qBtn.id='q-style-toggle-button';
    qBtn.title='הפעל/בטל עיצוב על whitespace-pre-wrap';
    qBtn.textContent='Q';
    qBtn.style.cssText=dirBtn.style.cssText;
    qBtn.onclick=(e)=>{e.preventDefault();toggleWhitespaceStyle();toggleQButtonGlow();};
    addTooltipEvents(qBtn);
    
    const nextBtn=makeButtonImage('next-snir-button','קפוץ לשאלה הבאה - Alt+↓',imgNextBtn,'קפוץ לשאלה הבאה',jumpToNext);
    const prevBtn=makeButtonImage('prev-snir-button','קפוץ לשאלה הקודמת - Alt+↑',imgPrevBtn,'קפוץ לשאלה הקודמת',jumpToPrevious);
    
    // יצירת כפתורים
    function createButtons(){
      if(document.querySelector('#direction-toggle-button')) return;
    
      const textarea=document.querySelector('#prompt-textarea');
      const buttonContainer=textarea?.closest('form')?.querySelector('div.flex > div.flex');
      if(!textarea||!buttonContainer) return;
    
      let btnGroup=document.querySelector('#custom-btn-group');
      if(!btnGroup){
        btnGroup=document.createElement('div');
        btnGroup.id='custom-btn-group';
        btnGroup.style.cssText='position:absolute;bottom:13px;right:95px;display:flex;gap:10px;z-index:9999;';
        buttonContainer.style.position='relative';
        buttonContainer.appendChild(btnGroup);
      }
    
      btnGroup.appendChild(prevBtn);
      btnGroup.appendChild(nextBtn);
      btnGroup.appendChild(mdBtn);
      btnGroup.appendChild(dirBtn);
    
      // החלת כיוון כתיבה מה־localStorage
      if (textarea) {
        textarea.style.direction = textareaDirection;
        const img = dirBtn.querySelector('img');
        if (img) img.style.transform = textareaDirection === 'ltr' ? 'scaleX(-1)' : 'scaleX(1)';
      }
    }
    
    document.addEventListener('keydown', function (e) {
      if (e.key === 'ArrowUp' && e.altKey) {
        e.preventDefault();
        jumpToPrevious();
      }
      if (e.key === 'ArrowDown' && e.altKey) {
        e.preventDefault();
        jumpToNext();
      }
      if(e.ctrlKey && e.shiftKey && !e.altKey) {
        e.preventDefault();
        toggleDirection();
      }
    });
    
    const observer=new MutationObserver(()=>{createButtons();});
    observer.observe(document.body,{childList:true,subtree:true});
    createButtons();
    })();
        
    
    
    לחץ כאן כדי להעתיק את הקוד
  3. שמור את התמונה הבאה בשם icon.png 

    התוסף מוכן, כעת נפעיל אותו ע"י הדפדפן:
  1. פתח את Chrome.
  2. :עבור לכתובת
  3. הפעל את Developer mode (בצד ימין למעלה).
  4. לחץ על Load unpacked ובחר את התיקייה עם הקבצים שלך.