המיני Web App (סקירה)

מה נותן?

  • צפייה ועריכה – תצוגת קוד עם הדגשת תחביר, עריכה עם CodeMirror

  • הרצת קוד (Playground) – הרצת Python דרך API עם מגבלות ואבטחה (הרצת קוד (Code Execution Playground))

  • ספריית סניפטים – גלריית קטעי קוד קצרים עם חיפוש, סינון וקרדיט מחבר (ספריית סניפטים (Web))

  • תצוגת Markdown מתקדמת – GFM, Mermaid, KaTeX, Task Lists אינטראקטיביות

  • ארגון מתקדם: - סימניות (Bookmarks) – סימון נקודות חשובות בקוד - אוספים (Collections) – ארגון קבצים לפי נושאים - פתקים דביקים (Sticky Notes) – הערות ויזואליות על הקוד - מועדפים (Favorites)

  • פעולות מרובות – בחירה מרובה וביצוע פעולות על מספר קבצים

  • שיתוף – קישור ציבורי לשיתופים פנימיים (זמני או קבוע)

  • עמודי סטטוס – מעקב זמינות ותקינות

דשבורד חדש

  • פיד אחרון – מקבץ את כל הפעילות האחרונה (קבצים, גיבויים, תזכורות), עם אפשרות הרחבה במובייל ובדסקטופ.

  • הגדרות פוש – מצב המנויים, תזכורות ממתינות, והיסטוריית השליחה האחרונה/הבאה.

  • פתקים אחרונים – עד 10 פתקים שעודכנו לאחרונה, בין אם יש להם תזכורת עתידית ובין אם מדובר בעדכון ידני.

  • כל הכרטיסיות חולקות Layout רספונסיבי: במובייל מוצגת עמודה אחת, ובדסקטופ שני טורים (היסטוריה + כרטיסי מצב).

אייקוני שפה אחידים

  • כל קובץ בדשבורד מקבל שדה language שמחושב בצד השרת: קודם נלקחת השפה שנשמרה במסד הנתונים; אם היא ריקה משתמשים בזיהוי לפי שם הקובץ (resolve_file_language).

  • קבצי .env וכל וריאציה שמתחילה ב-.env (למשל .env.local) מסומנים תמיד כ-env ומקבלים את האייקון 🔐.

  • האייקונים זהים בכל הרכיבים – פיד אחרון, כרטיס ”קבצים אחרונים“, ספריית קבצים ותצוגת קובץ בודד. כך אין הבדל בין כרטיסיית הדשבורד לרשימות אחרות.

  • fallback: אם לא מזוהה שפה משויכת, מוצג האייקון 📄 יחד עם טקסט ”text“.

טבלת אייקונים נפוצים

שפה

אייקון

הערות

Python

🐍

ברירת המחדל לקבצי .py או שדה programming_language=python.

JavaScript / TypeScript

📜 / 📘

מנותב לפי הסיומת או לפי השדה במסד.

Dockerfile / YAML

🐳 / 📋

גם docker-compose.yml.

Env

🔐

כל שם קובץ שמתחיל ב-.env.

טקסט

📄

fallback אוטומטי.

הנחיות לסוכני AI

  • הנתונים ב-API (למשל /dashboard או /files) כוללים את אותו שדה language והאייקון לא דורש חישוב נוסף.

  • אין צורך לפרש את האימוג’י עצמו – הסתמכו על השדה הטקסטואלי language או programming_language כדי להחליט על פעולה.

  • במידה וסוכן צריך להציג הסבר למשתמש, ניתן להשתמש בטבלה שלעיל או להסתמך על תגובה סטנדרטית (”קובץ env, אייקון 🔐“).

כתובת והרשאות

  • כתובת הבסיס: מוגדרת דרך PUBLIC_BASE_URL.

  • הרשאות בסיסיות לקריאה; אין חשיפה של נתונים רגישים.

הגדרות ENV

  • PUBLIC_BASE_URL – נדרש להצגת קישורי שיתוף ציבוריים.

  • לאחר merge, האתר מתעדכן אוטומטית ב-Read the Docs (בהתאם לקונפיגורציה).

קישורים ותמונות מסך

  • דפי שיתוף: /share/<share_id>.

  • בעת קריאה ל-POST /api/share/<file_id> ניתן לציין {"type": "permanent"} כדי לקבל קישור קבוע, או להשאיר ברירת מחדל לקישור זמני.

  • מומלץ לצרף צילומי מסך של תצוגת קובץ ושיתוף.

ראו גם

באנר הכרזות בראש המסך

ה‑WebApp כולל באנר הכרזות קצר בראש העמוד (מחליף את ”טיפ שבועי“ הישן). מעתה ניהול ההכרזות נעשה דרך ממשק אדמין ו‑API, ללא צורך בהזרקות ידניות.

איך מפעילים?

  1. ודאו שהדגל WEEKLY_TIP_ENABLED נשאר true – זהו המתג הכללי של הרכיב.

  2. היכנסו ל‑/admin/announcements וצרו/ערכו הכרזה. סימון ”הפעל“ יכבה אוטומטית כל הכרזה פעילה אחרת (תמיד תהיה לכל היותר אחת פעילה).

  3. בצד הלקוח, התבנית base.html מבצעת fetch ל‑GET /api/v1/announcements/active; אם קיימת הכרזה פעילה היא מוזרקת אוטומטית אל window.__announcements ומוצגת.

הערות וקישורים

  • link בהכרזה הוא אופציונלי. קישורים פנימיים יתחילו ב‑/; קישורים חיצוניים חייבים להיות https:// (http:// נחסם מטעמי אבטחה).

  • ניתן עדיין לבצע הזרקה ידנית ל‑HTML לצורך בדיקות/פיתוח, אך זה אינו נדרש עוד בתצורה רגילה.

מה קורה מאחורי הקלעים?

  • אם אין הכרזה פעילה – לא מוצג באנר כלל (display:none).

  • כאשר קיימת הכרזה, מוצגת הראשונה בלבד. כאשר יש link – הרכיב מקבל role="link" ותומך לחיצה/Enter/Space; אחרת מוצג כ‑role="status".

  • ההנפשה מבוססת מרקיזה אנכית; ריחוף עוצר את הגלילה לנגישות טובה יותר.

כיבוי זמני

  • ניתן לכבות גלובלית באמצעות WEEKLY_TIP_ENABLED=false.

  • משתמש יכול להשבית מקומית (ללא UI מובנה) עם localStorage.setItem('announcementBannerOff', '1').

המלצות לתוכן

  • הודעות קצרות וברורות בעברית, עם קריאה לפעולה.

  • מומלץ לספק יעד פנימי ב‑link עם פרטים מלאים (בלוג/צ’יינג’לוג).