דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. מחשבים וטכנולוגיה
  3. עזרה הדדית - מחשבים וטכנולוגיה
  4. המלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨

המלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨

מתוזמן נעוץ נעול הועבר עזרה הדדית - מחשבים וטכנולוגיה
503 פוסטים 43 כותבים 34.5k צפיות 35 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • י יוסי רחמים

    @אהרן אפשר שגיאה מהCONSOLE?
    @מוח-קודח

    א מחובר
    א מחובר
    אהרן
    כתב נערך לאחרונה על ידי
    #489

    @יוסי-רחמים כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

    @אהרן אפשר שגיאה מהCONSOLE?
    @מוח-קודח

    2b1f3f9d-502e-44ae-999b-8482718c3017-image.png

    י תגובה 1 תגובה אחרונה
    0
    • א אהרן

      @יוסי-רחמים כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

      @אהרן אפשר שגיאה מהCONSOLE?
      @מוח-קודח

      2b1f3f9d-502e-44ae-999b-8482718c3017-image.png

      י מנותק
      י מנותק
      יוסי רחמים
      כתב נערך לאחרונה על ידי
      #490

      @אהרן בזמן השגיאה שאתה לא מצליח להכניס API

      א תגובה 1 תגובה אחרונה
      0
      • י יוסי רחמים

        @אהרן בזמן השגיאה שאתה לא מצליח להכניס API

        א מחובר
        א מחובר
        אהרן
        כתב נערך לאחרונה על ידי
        #491

        @יוסי-רחמים כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

        @אהרן בזמן השגיאה שאתה לא מצליח להכניס API

        את השגיאה הזו פתרתי כשהבנתי שצריך לסמן את התיבת סימון ואז לאשר, המפתח נקלט אח"כ [פשוט הופיע תיבה לאישור אך בלי הטקסט, כפי שהראתי קודם, ורק בסיוע גמיני שקרא את הסקריפט יכולתי להבין שצריך ללחוץ על אישור התיבה]. הבעיה שכעת גם התוסף לא מגיב בכלל לבקשת הסבר, לטענת גמיני כיון שהוא מכוון לקבלת סוג תשובה אחת ומקבל סוג אחר. לא בטוח שזה נכון כי בכלל לא נפתחת תיבה לתשובה, אלא זה כאילו לא לחצתי. בנוסף {כמובן פחות קריטי}, כנראה חוץ מזה שחסר המלל בעברית לתהליך אישור הAPI [כמו שכתבתי] גם לא מופיע בתוסף הסבר על האפשרויות מתחת לכל אפשרות כפי שהופיע פעם, כנראה גם זה לא מופיע בקובץ התרגום.
        02b8fb58-8042-45f9-b26f-8cd2b43724ce-image.png

        S תגובה 1 תגובה אחרונה
        0
        • א אהרן

          @יוסי-רחמים כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

          @אהרן בזמן השגיאה שאתה לא מצליח להכניס API

          את השגיאה הזו פתרתי כשהבנתי שצריך לסמן את התיבת סימון ואז לאשר, המפתח נקלט אח"כ [פשוט הופיע תיבה לאישור אך בלי הטקסט, כפי שהראתי קודם, ורק בסיוע גמיני שקרא את הסקריפט יכולתי להבין שצריך ללחוץ על אישור התיבה]. הבעיה שכעת גם התוסף לא מגיב בכלל לבקשת הסבר, לטענת גמיני כיון שהוא מכוון לקבלת סוג תשובה אחת ומקבל סוג אחר. לא בטוח שזה נכון כי בכלל לא נפתחת תיבה לתשובה, אלא זה כאילו לא לחצתי. בנוסף {כמובן פחות קריטי}, כנראה חוץ מזה שחסר המלל בעברית לתהליך אישור הAPI [כמו שכתבתי] גם לא מופיע בתוסף הסבר על האפשרויות מתחת לכל אפשרות כפי שהופיע פעם, כנראה גם זה לא מופיע בקובץ התרגום.
          02b8fb58-8042-45f9-b26f-8cd2b43724ce-image.png

          S מנותק
          S מנותק
          smct
          כתב נערך לאחרונה על ידי smct
          #492

          @אהרן
          עובד לך בנטפרי התוסף?
          @יוסי-רחמים
          איך אני משנה לעיברית?

          א תגובה 1 תגובה אחרונה
          0
          • S smct

            @אהרן
            עובד לך בנטפרי התוסף?
            @יוסי-רחמים
            איך אני משנה לעיברית?

            א מחובר
            א מחובר
            אהרן
            כתב נערך לאחרונה על ידי
            #493

            @smct כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

            @אהרן
            עובד לך בנטפרי התוסף?

            לא הבנתי את השאלה, אם השאלה אם יש לי נטפרי, כן ב"ה, אם השאלה אם עובד, עיין בהודעה לפניך [בקיצור, לא], גם בפנאל צד לא עובד, למרות ששם כן נפתחת תיבה.
            a74f06ca-0766-45cb-b24a-d02eb7e45900-image.png

            תגובה 1 תגובה אחרונה
            0
            • י מנותק
              י מנותק
              יוסי רחמים
              כתב נערך לאחרונה על ידי
              #494

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

              מ תגובה 1 תגובה אחרונה
              0
              • י יוסי רחמים

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

                מ מחובר
                מ מחובר
                מוח קודח
                כתב נערך לאחרונה על ידי
                #495

                @יוסי-רחמים אם תוכל להעלות לכאן, למנוטפרים. תודה.

                י תגובה 1 תגובה אחרונה
                0
                • מ מוח קודח

                  @יוסי-רחמים אם תוכל להעלות לכאן, למנוטפרים. תודה.

                  י מנותק
                  י מנותק
                  יוסי רחמים
                  כתב נערך לאחרונה על ידי
                  #496

                  @מוח-קודח dbb5577e-16db-4d17-9054-96f97b198c10-cglajpafddcffakjmpijpdhlhdkgdebc (1).crx

                  א תגובה 1 תגובה אחרונה
                  1
                  • י יוסי רחמים

                    @מוח-קודח dbb5577e-16db-4d17-9054-96f97b198c10-cglajpafddcffakjmpijpdhlhdkgdebc (1).crx

                    א מחובר
                    א מחובר
                    אהרן
                    כתב נערך לאחרונה על ידי אהרן
                    #497

                    @יוסי-רחמים כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

                    @מוח-קודח dbb5577e-16db-4d17-9054-96f97b198c10-cglajpafddcffakjmpijpdhlhdkgdebc (1).crx

                    כל עוד לא תוקנה הבעיה שהיתה שם זה לא יעזור [אימות מפתח דרך מודל לא תקף], תשאיר את הגירסא הקודמת רק תשנה את המודל
                    69a93ec1-a94c-4617-80c1-b676ca52f11d-image.png

                    י תגובה 1 תגובה אחרונה
                    1
                    • א אהרן

                      @יוסי-רחמים כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

                      @מוח-קודח dbb5577e-16db-4d17-9054-96f97b198c10-cglajpafddcffakjmpijpdhlhdkgdebc (1).crx

                      כל עוד לא תוקנה הבעיה שהיתה שם זה לא יעזור [אימות מפתח דרך מודל לא תקף], תשאיר את הגירסא הקודמת רק תשנה את המודל
                      69a93ec1-a94c-4617-80c1-b676ca52f11d-image.png

                      י מנותק
                      י מנותק
                      יוסי רחמים
                      כתב נערך לאחרונה על ידי
                      #498

                      @אהרן כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

                      @יוסי-רחמים כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

                      @מוח-קודח dbb5577e-16db-4d17-9054-96f97b198c10-cglajpafddcffakjmpijpdhlhdkgdebc (1).crx

                      כל עוד לא תוקנה הבעיה שהיתה שם זה לא יעזור [אימות מפתח דרך מודל לא תקף], תשאיר את הגירסא הקודמת רק תשנה את המודל
                      69a93ec1-a94c-4617-80c1-b676ca52f11d-image.png

                      נשלח לבדיקה

                      תגובה 1 תגובה אחרונה
                      2
                      • י מנותק
                        י מנותק
                        יוסי רחמים
                        כתב נערך לאחרונה על ידי
                        #499

                        פורסם

                        א תגובה 1 תגובה אחרונה
                        2
                        • י יוסי רחמים

                          פורסם

                          א מחובר
                          א מחובר
                          אהרן
                          כתב נערך לאחרונה על ידי
                          #500

                          @יוסי-רחמים כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

                          פורסם

                          יש קובץ למנוטפרים?

                          י תגובה 1 תגובה אחרונה
                          0
                          • א אהרן

                            @יוסי-רחמים כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

                            פורסם

                            יש קובץ למנוטפרים?

                            י מנותק
                            י מנותק
                            יוסי רחמים
                            כתב נערך לאחרונה על ידי
                            #501

                            @אהרן 39e03375-ce15-4254-b35a-e8e4ca93509a-cglajpafddcffakjmpijpdhlhdkgdebc (1).crx 😒

                            מ תגובה 1 תגובה אחרונה
                            0
                            • י יוסי רחמים

                              @אהרן 39e03375-ce15-4254-b35a-e8e4ca93509a-cglajpafddcffakjmpijpdhlhdkgdebc (1).crx 😒

                              מ מחובר
                              מ מחובר
                              מוח קודח
                              כתב נערך לאחרונה על ידי
                              #502

                              @יוסי-רחמים שגיאת 418
                              גם במפתח אישי
                              אזלו הסיכויים למנוטפרים?

                              א תגובה 1 תגובה אחרונה
                              1
                              • מ מוח קודח

                                @יוסי-רחמים שגיאת 418
                                גם במפתח אישי
                                אזלו הסיכויים למנוטפרים?

                                א מחובר
                                א מחובר
                                אהרן
                                כתב נערך לאחרונה על ידי
                                #503

                                @מוח-קודח כתב בהמלצה | ✨חסכו שעות עבודה עם ClarityAI: התוסף שמסכם, מתרגם ומסביר כל דף אינטרנט בשבילכם✨:

                                @יוסי-רחמים שגיאת 418
                                גם במפתח אישי
                                אזלו הסיכויים למנוטפרים?

                                עד ש@יוסי-רחמים יתאים את התוסף שלו למנוטפרים, הכנתי משהו זמני, שצריך להוסיף לתוסף tampermonkey, בלי אחריות, ולא ישבתי לדייק אותו, במיוחד שאפילו לא קראתי מה כתוב בו, סמכתי על בינה וראיתי שעובד. רק לשימוש לבינתיים, חובה להוסיף מפתח API של גוגל היכן שכתוב [לתמונות לא הצלחתי להפעיל, כנראה צריך תיקון קל]:

                                // ==UserScript==
                                // @name Gemini Universal Explainer (Text & Images) - Lite Model
                                // @namespace http://tampermonkey.net/
                                // @version 1.4
                                // @description מסביר טקסט מסומן או תמונות (Alt+Click) בכל אתר באמצעות Gemini API, כולל צ'אט המשך.
                                // @author You
                                // @match :///*
                                // @grant GM_xmlhttpRequest
                                // @grant GM_addStyle
                                // @connect generativelanguage.googleapis.com
                                // @connect *
                                // ==/UserScript==

                                (function() {
                                'use strict';

                                // ==========================================
                                // הגדרות משתמש - חובה למלא
                                // ==========================================
                                const GEMINI_API_KEY = 'כאן להוסיף את המפתח האישי בין הגרשיים';
                                // ==========================================
                                
                                const MODEL_NAME = 'gemini-2.5-flash-lite';
                                const API_URL = `https://generativelanguage.googleapis.com/v1beta/models/${MODEL_NAME}:generateContent?key=${GEMINI_API_KEY}`;
                                
                                let chatHistory = [];
                                let currentContext = null; // שומר את הטקסט או נתוני התמונה שנבחרו
                                let triggerButton, modal, chatContent, inputField, sendBtn, closeBtn, loadingIndicator;
                                
                                // --- הוספת סגנונות CSS (עיצוב) ---
                                GM_addStyle(`
                                    #gemini-trigger-btn {
                                        position: absolute;
                                        z-index: 99999;
                                        background: #4285F4; /* Google Blue */
                                        color: white;
                                        border: none;
                                        border-radius: 50%;
                                        width: 32px;
                                        height: 32px;
                                        cursor: pointer;
                                        display: none;
                                        box-shadow: 0 2px 5px rgba(0,0,0,0.3);
                                        font-size: 16px;
                                        align-items: center;
                                        justify-content: center;
                                        transition: transform 0.2s;
                                    }
                                    #gemini-trigger-btn:hover { transform: scale(1.1); }
                                
                                    #gemini-modal-overlay {
                                        position: fixed; top: 0; left: 0; width: 100%; height: 100%;
                                        background: rgba(0,0,0,0.5); z-index: 100000; display: none;
                                        justify-content: center; align-items: center;
                                    }
                                
                                    #gemini-modal {
                                        background: white; width: 500px; max-width: 90%; height: 600px;
                                        border-radius: 12px; display: flex; flex-direction: column;
                                        box-shadow: 0 10px 25px rgba(0,0,0,0.5); overflow: hidden;
                                        font-family: sans-serif; direction: rtl;
                                    }
                                
                                    #gemini-header {
                                        padding: 15px; background: #f1f3f4; border-bottom: 1px solid #ddd;
                                        display: flex; justify-content: space-between; align-items: center;
                                        font-weight: bold; color: #333;
                                    }
                                
                                    #gemini-close-btn { cursor: pointer; font-size: 20px; color: #666; }
                                    #gemini-close-btn:hover { color: #000; }
                                
                                    #gemini-chat-content {
                                        flex: 1; padding: 15px; overflow-y: auto; background: #fafafa;
                                        display: flex; flex-direction: column; gap: 10px;
                                    }
                                
                                    .gemini-message {
                                        padding: 10px 15px; border-radius: 18px; max-width: 80%;
                                        line-height: 1.5; word-wrap: break-word; white-space: pre-wrap;
                                    }
                                    .gemini-user-msg {
                                        background: #dcf8c6; align-self: flex-start; border-bottom-right-radius: 4px; color: #000;
                                    }
                                    .gemini-model-msg {
                                        background: #ffffff; border: 1px solid #eee; align-self: flex-end; border-bottom-left-radius: 4px; color: #000;
                                    }
                                    .gemini-context-preview {
                                        font-size: 0.8em; color: #666; font-style: italic; border-bottom: 1px dashed #ccc; margin-bottom: 5px; padding-bottom: 5px; max-height: 60px; overflow: hidden;
                                    }
                                    .gemini-context-preview img { max-height: 50px; border-radius: 4px; }
                                
                                    #gemini-input-area {
                                        padding: 10px; border-top: 1px solid #ddd; background: white;
                                        display: flex; gap: 10px;
                                    }
                                
                                    #gemini-input {
                                        flex: 1; padding: 10px; border: 1px solid #ccc; border-radius: 20px; outline: none;
                                    }
                                    #gemini-send-btn {
                                        padding: 0 20px; background: #4285F4; color: white; border: none;
                                        border-radius: 20px; cursor: pointer; font-weight: bold;
                                    }
                                    #gemini-send-btn:disabled { background: #ccc; cursor: not-allowed; }
                                
                                    #gemini-loading {
                                        display: none; align-self: center; margin: 10px; color: #666; font-style: italic;
                                    }
                                    /* Dark mode support for websites that have it */
                                    @media (prefers-color-scheme: dark) {
                                        #gemini-modal { background: #2d2d2d; color: #e0e0e0; }
                                        #gemini-header { background: #1e1e1e; border-bottom-color: #444; color: #fff; }
                                        #gemini-chat-content { background: #252525; }
                                        #gemini-input-area { background: #1e1e1e; border-top-color: #444; }
                                        #gemini-input { background: #333; color: white; border-color: #555; }
                                        .gemini-model-msg { background: #333; border-color: #444; color: #e0e0e0; }
                                        .gemini-user-msg { background: #054740; color: #e0e0e0; }
                                        #gemini-close-btn { color: #aaa; }
                                    }
                                `);
                                
                                // --- יצירת רכיבי הממשק (UI) ---
                                function createUI() {
                                    // כפתור טריגר (נורה)
                                    triggerButton = document.createElement('button');
                                    triggerButton.id = 'gemini-trigger-btn';
                                    triggerButton.innerHTML = '💡';
                                    triggerButton.title = 'קבל הסבר מג\'מיני';
                                    document.body.appendChild(triggerButton);
                                
                                    // חלונית מודאלית
                                    const overlay = document.createElement('div');
                                    overlay.id = 'gemini-modal-overlay';
                                    overlay.innerHTML = `
                                        <div id="gemini-modal">
                                            <div id="gemini-header">
                                                <span>Gemini Explainer</span>
                                                <span id="gemini-close-btn">&times;</span>
                                            </div>
                                            <div id="gemini-chat-content"></div>
                                            <div id="gemini-loading">חושב...</div>
                                            <div id="gemini-input-area">
                                                <input type="text" id="gemini-input" placeholder="שאל שאלת המשך..." disabled>
                                                <button id="gemini-send-btn" disabled>שלח</button>
                                            </div>
                                        </div>
                                    `;
                                    document.body.appendChild(overlay);
                                
                                    // שמירת הפניות לאלמנטים
                                    modal = overlay;
                                    chatContent = overlay.querySelector('#gemini-chat-content');
                                    inputField = overlay.querySelector('#gemini-input');
                                    sendBtn = overlay.querySelector('#gemini-send-btn');
                                    closeBtn = overlay.querySelector('#gemini-close-btn');
                                    loadingIndicator = overlay.querySelector('#gemini-loading');
                                
                                    // הגדרת מאזינים לאירועים בממשק
                                    triggerButton.addEventListener('click', startExplanation);
                                    closeBtn.addEventListener('click', closeModal);
                                    modal.addEventListener('click', (e) => { if (e.target === modal) closeModal(); });
                                    sendBtn.addEventListener('click', sendFollowUp);
                                    inputField.addEventListener('keypress', (e) => { if (e.key === 'Enter') sendFollowUp(); });
                                }
                                
                                // --- לוגיקת אינטראקציה באתר (בחירה/קליק) ---
                                
                                // טיפול בבחירת טקסט
                                document.addEventListener('mouseup', (e) => {
                                    // התעלם אם הקליק בתוך המודאל או על הכפתור
                                    if (modal.style.display === 'flex' || e.target === triggerButton) return;
                                
                                    const selection = window.getSelection();
                                    const selectedText = selection.toString().trim();
                                
                                    if (selectedText.length > 0) {
                                        currentContext = { type: 'text', data: selectedText };
                                        showTriggerButton(e.pageX, e.pageY);
                                    } else {
                                        // אם זו לא תמונה, הסתר כפתור
                                        setTimeout(() => {
                                            if(triggerButton.style.display === 'flex') hideTriggerButton();
                                        }, 200);
                                    }
                                });
                                
                                // טיפול בלחיצה על תמונה (Alt + Click כדי לא להפריע לגלישה רגילה)
                                document.addEventListener('click', (e) => {
                                    if (e.altKey && e.target.tagName === 'IMG') {
                                        e.preventDefault();
                                        e.stopPropagation();
                                        const imgUrl = e.target.src;
                                        currentContext = { type: 'image', url: imgUrl };
                                        showTriggerButton(e.pageX, e.pageY);
                                    }
                                }, true); // Use capture to intercept early
                                
                                function showTriggerButton(x, y) {
                                    triggerButton.style.left = `${x + 10}px`;
                                    triggerButton.style.top = `${y + 10}px`;
                                    triggerButton.style.display = 'flex';
                                }
                                
                                function hideTriggerButton() {
                                    triggerButton.style.display = 'none';
                                }
                                
                                // --- לוגיקת הצ'אט וה-API ---
                                
                                async function startExplanation() {
                                    if (GEMINI_API_KEY === 'הכנס_את_מפתח_ה-API_שלך_כאן' || !GEMINI_API_KEY) {
                                        alert('נא להגדיר מפתח API של Gemini בקוד הסקריפט.');
                                        return;
                                    }
                                
                                    hideTriggerButton();
                                    openModal();
                                    clearChat();
                                    setLoading(true);
                                
                                    chatHistory = []; // איפוס היסטוריה
                                    let initialPromptParts = [];
                                
                                    // הצגת ההקשר שנבחר בחלונית
                                    addMessageToChat('context', currentContext);
                                
                                    if (currentContext.type === 'text') {
                                        const prompt = `הסבר בקצרה בעברית את הטקסט הבא: "${currentContext.data}"`;
                                        initialPromptParts = [{ text: prompt }];
                                        chatHistory.push({ role: 'user', parts: initialPromptParts });
                                        await callGeminiAPI(chatHistory);
                                    }
                                    else if (currentContext.type === 'image') {
                                        addMessageToChat('model', 'מוריד ומעבד את התמונה...');
                                        try {
                                            const base64Data = await fetchImageAsBase64(currentContext.url);
                                            // הסרת הכותרת של ה-base64 אם קיימת (data:image/png;base64,)
                                            const base64String = base64Data.split(',')[1];
                                            const mimeType = base64Data.split(';')[0].split(':')[1];
                                
                                            const prompt = "הסבר בקצרה בעברית מה רואים בתמונה הזו.";
                                            initialPromptParts = [
                                                { text: prompt },
                                                { inline_data: { mime_type: mimeType, data: base64String } }
                                            ];
                                            chatHistory.push({ role: 'user', parts: initialPromptParts });
                                            // מחיקת הודעת ה"מעבד" לפני שליחת הבקשה
                                            chatContent.lastChild.remove();
                                            await callGeminiAPI(chatHistory);
                                        } catch (error) {
                                            setLoading(false);
                                            addMessageToChat('model', 'שגיאה בטעינת התמונה: ' + error.message);
                                            console.error(error);
                                        }
                                    }
                                }
                                
                                async function sendFollowUp() {
                                    const text = inputField.value.trim();
                                    if (!text) return;
                                
                                    inputField.value = '';
                                    addMessageToChat('user', text);
                                    setLoading(true);
                                
                                    chatHistory.push({ role: 'user', parts: [{ text: text }] });
                                    await callGeminiAPI(chatHistory);
                                }
                                
                                async function callGeminiAPI(contents) {
                                    const payload = {
                                        contents: contents,
                                        generationConfig: {
                                            temperature: 0.7,
                                            maxOutputTokens: 1024,
                                        }
                                    };
                                
                                    GM_xmlhttpRequest({
                                        method: "POST",
                                        url: API_URL,
                                        headers: {
                                            "Content-Type": "application/json"
                                        },
                                        data: JSON.stringify(payload),
                                        onload: function(response) {
                                            setLoading(false);
                                            if (response.status >= 200 && response.status < 300) {
                                                try {
                                                    const data = JSON.parse(response.responseText);
                                                    const reply = data.candidates[0].content.parts[0].text;
                                                    chatHistory.push({ role: 'model', parts: [{ text: reply }] });
                                                    addMessageToChat('model', reply);
                                                } catch (e) {
                                                    addMessageToChat('model', 'שגיאה בפענוח התשובה מג\'מיני.');
                                                    console.error('Parsing error:', e, response.responseText);
                                                }
                                            } else {
                                                const errorMsg = `שגיאת API: ${response.status} - ${response.statusText}. ייתכן ששם המודל שגוי או לא זמין.`;
                                                addMessageToChat('model', errorMsg);
                                                console.error('API Error:', response.responseText);
                                            }
                                        },
                                        onerror: function(error) {
                                            setLoading(false);
                                            addMessageToChat('model', 'שגיאת רשת בחיבור לג\'מיני.');
                                            console.error('Network error:', error);
                                        }
                                    });
                                }
                                
                                // --- פונקציות עזר ---
                                
                                function fetchImageAsBase64(url) {
                                    return new Promise((resolve, reject) => {
                                        GM_xmlhttpRequest({
                                            method: "GET",
                                            url: url,
                                            responseType: 'blob',
                                            onload: function(response) {
                                                if (response.status === 200) {
                                                    const reader = new FileReader();
                                                    reader.onloadend = () => resolve(reader.result);
                                                    reader.onerror = reject;
                                                    reader.readAsDataURL(response.response);
                                                } else {
                                                    reject(new Error(`Failed to fetch image: ${response.status}`));
                                                }
                                            },
                                            onerror: (err) => reject(err)
                                        });
                                    });
                                }
                                
                                // --- ניהול חלונית המודאל ---
                                
                                function openModal() {
                                    modal.style.display = 'flex';
                                    inputField.focus();
                                }
                                
                                function closeModal() {
                                    modal.style.display = 'none';
                                    currentContext = null;
                                }
                                
                                function clearChat() {
                                    chatContent.innerHTML = '';
                                }
                                
                                function setLoading(isLoading) {
                                    loadingIndicator.style.display = isLoading ? 'block' : 'none';
                                    inputField.disabled = isLoading;
                                    sendBtn.disabled = isLoading;
                                    if (!isLoading) inputField.focus();
                                    chatContent.scrollTop = chatContent.scrollHeight;
                                }
                                
                                function addMessageToChat(role, content) {
                                    const msgDiv = document.createElement('div');
                                
                                    if (role === 'context') {
                                        msgDiv.className = 'gemini-context-preview';
                                        if (content.type === 'text') {
                                            msgDiv.textContent = `נבחר: "${content.data.substring(0, 50)}${content.data.length > 50 ? '...' : ''}"`;
                                        } else {
                                            msgDiv.innerHTML = `נבחרה תמונה: <br><img src="${content.url}" style="max-height:50px;">`;
                                        }
                                    } else {
                                        msgDiv.className = `gemini-message gemini-${role}-msg`;
                                        msgDiv.innerHTML = content.replace(/\n/g, '<br>');
                                    }
                                
                                    chatContent.appendChild(msgDiv);
                                    chatContent.scrollTop = chatContent.scrollHeight;
                                }
                                
                                // אתחול ראשוני
                                createUI();
                                

                                })();

                                תגובה 1 תגובה אחרונה
                                0

                                • התחברות

                                • אין לך חשבון עדיין? הרשמה

                                • התחברו או הירשמו כדי לחפש.
                                • פוסט ראשון
                                  פוסט אחרון
                                0
                                • חוקי הפורום
                                • פופולרי
                                • לא נפתר
                                • משתמשים
                                • חיפוש גוגל בפורום
                                • צור קשר