Code Keeper Bot

למפתחים ולסוכני AI:

  • התחלה מהירה - סוכני AI
    • מה אסור
    • מה מותר ומומלץ
    • פורמטי ציטוט קוד
    • מחיקה בטוחה (רק ב-/tmp)
    • קומיטים ו-PR
    • קישורים מהירים
    • Cheatsheet – GitHub CLI (gh)
  • התחלה מהירה - מפתחים
    • שלב 1: התקנה
    • שלב 2: הגדרת .env
    • שלב 3: הרצה
    • מה הלאה?
  • Quickstart לתרומה
    • צעדי הכנה
    • סביבת פיתוח
    • הרצת טסטים
    • על ה‑Stubs
    • קישורים
  • הנחיות מלאות לסוכני AI
    • מגבלות קריטיות
      • הרצת פקודות
    • כלי קבצים מאושרים
    • עקרונות עריכת קוד
    • קומיטים ו-Pull Requests
    • עבודה עם טסטים
    • קישורים מהירים
  • 🚦 מערכת Rate Limiting לסוכני AI ולווב
    • אסטרטגיה – Shadow Mode תחילה
    • משתני סביבה וקונפיג
    • אינטגרציה – בוט טלגרם
    • אינטגרציה – Flask/WebApp
    • החרגות חשובות
    • ניטור ומדדים (Prometheus)
    • אבטחה והגנות
    • קונפיגורציה (Pydantic Settings)
    • תקלות נפוצות
    • קישורים
  • Doc Authoring Guide (Sphinx/RTD)
    • מטרות
    • מדיניות
    • הצהרת תקציר בראש העמוד
    • ספירות בפרוזה: ספירת מופעים לעומת ערך שנאכף
    • הטמעת קוד מהמקור (literalinclude)
    • ייצוא הסעיפים בבניית האתר
    • כיוון האתר (מימין לשמאל)
    • התפריט עוקב אחרי הסעיף שקוראים בו
    • רשומה ב-What’s New
    • טיפים מהירים
    • קישורים
  • Style & Naming Glossary
    • מטרות
    • מיפוי מונחים
    • כללים
    • עוגני תיעוד
  • Versioning & Stable Anchors
    • מדיניות עוגנים יציבים
    • What’s New
    • דוגמת Anchors
    • קישורים
  • What’s New
    • 2026-11-05
    • 2026-11-04
    • 2026-11-03
    • 2026-10-31
    • 2026-10-30
    • 2026-10-29
    • 2026-10-28
    • 2026-10-27
    • 2026-10-25
    • 2026-10-24
    • 2026-10-23
    • 2026-10-22
    • 2026-10-19
    • 2026-10-18
    • 2026-10-17
    • 2026-10-16
    • 2026-10-14
    • 2026-10-13
    • 2026-10-12
    • 2026-10-11
    • 2026-10-10
    • 2026-10-07
    • 2026-10-06
    • 2026-10-05
    • 2026-10-04
    • 2026-10-01
    • 2026-09-30
    • 2026-09-29
    • 2026-09-28
    • 2026-09-27
    • 2026-09-23
    • 2026-09-22
    • 2026-09-21
    • 2026-09-20
    • 2026-09-17
    • 2026-09-16
    • 2026-09-15
    • 2026-09-14
    • 2026-09-13
    • 2026-09-10
    • 2026-09-09
    • 2026-09-08
    • 2026-09-07
    • 2026-09-06
    • 2026-09-02
    • 2026-09-01
    • 2026-08-31
    • 2026-08-25
    • 2026-08-21
    • 2026-01-29
    • 2025-12-11
    • 2025-11-11
    • 2025-11-06
    • 2025-11-05
    • 2025-10-30
    • 2025-10-29
    • 2025-10-15
  • ארכיטקטורה
    • תרשים רכיבים (תמציתי)
    • תרשים ארכיטקטורה מפורט
    • מבנה תיקיות
    • מקורות נוספים
      • Clean Architecture ב-src
        • תרשים שכבות
        • מבנה תיקיות
        • שכבת הדומיין (Domain)
        • שכבת היישום (Application)
        • שכבת התשתית (Infrastructure)
        • דוגמת זרימה: יצירת סניפט
        • הנחיות עבודה
    • זרימות מרכזיות
    • קישורים
    • תשתית HTTP – סשן aiohttp משותף
    • הפרדת אחריות – DocumentHandler
  • עקרונות להוספת פיצ’ר לסטיקי-נוטס
    • התיעוד למשתמש הוא חלק מהפיצ’ר
    • סעיפים שעברו לעמודים אחרים
  • עקרונות להוספת פיצ’ר לסטיקי-נוטס — השרת, המסד והחוזים בין השירותים
    • היעד: בדיוק אחד, ובשכבה טהורה אחת
    • המכסה: fail-closed, והפטור-לאדמין שהורג מכסות בשקט
    • אינדקס ייחודי: ממוספר, ונבנה לפני שמפילים
    • אכיפה שנבנית רק בצד אחד היא הבטחה שהצד השני מפר בשקט
    • זהות לעומת נורמליזציה: אותה פונקציה בשני הקצוות
    • יתומים: זיהוי בקריאה, לא בכתיבה
    • מצב התזכורת: שדה אחד מתאר, שניים סוטים
    • השם של פתק בשורה אחת: פונקציה אחת לפוש, לפעמון ולדשבורד
    • הקישור הקבוע של פתק על קובץ: הגרסה האחרונה, בזמן הקריאה
    • הדגימה: כשל אינו ”אין“, ו-401 אינו כשל
    • התוכן: נשמר כמו שנשלח, וה-escape שייך לתצוגה
    • העדפה שיש לה גם מצב ”רק במכשיר זה“
    • גודל הטקסט בעמוד ההגדרות: מה שמסוכן יושב סביב הבורר
    • צבע: מזהה במסד, hex נגזר, וכינוי במקום מיגרציה
      • הקלט סובלני, האחסון קנוני
      • color בתשובת ה-API הוא hex, ולא מה שמאוחסן
      • הפלטה חיה פעמיים, ובדיקה מצליבה אותן
      • הצבעים והמדידה
      • שני חצאים למיגרציה, ואף אחד מהם אינו מיותר
    • חיפוש בפתקים: למה רג’קס ולא $text
    • שרשורי תגובות: השרת
      • השרת: הבעלות קודמת לכל, והתשובה מהמסד
    • ארכיון: היעד הרביעי
    • מה לבדוק, ובמה
  • עקרונות להוספת פיצ’ר לסטיקי-נוטס — מנוע הרינדור והמארקדאון של הפתק
    • רינדור בתצוגה: innerHTML אף פעם לא על טקסט לא-מהימן
    • אינדקס המשימות: התאמה מלאה בין שרת ללקוח
    • טבלאות: בלוק רב-שורתי בתוך מנוע של שורה-לשורה
    • קינון רשימות: שאלה אחת, מקום אחד, ומקור מדיד
    • קוד בשורה: יחידה אחת, שקודמת לכל מפריד
    • בלוק קוד: כשצריכה של בלוק שלם מוחקת שלושה סייגים
      • מה שהסדר בלולאה אוכף, ומה שהוא לא
      • ההעתקה: מהמקור, לא מה-DOM
      • יישור לימין: אותה שאלה, ולכן אותה פונקציה
    • בלוקי אלרט: הבלוק הראשון שמכיל שורות אחרות
      • התחביר אינו שלנו, ולכן הוא נמדד
      • שתי סטיות מכוונות, ושתיהן מאותו שורש
      • מקור אחד לסוג, וכל הצרכנים קוראים ממנו
      • הצבעים: אין כאן פלטה
      • ::: details: הסוג היחיד שדורש אלמנט אחר, ולמה זה נעצר בו
      • הכרעת הקליק, וההיסט שאינו נוגע בו
      • הכותרת: אותה תווית שהמסמך מציג, ולמה דווקא כאן זה קריטי
      • הצבעים והכיול: אותה מלכודת של האלרט, ואותו כלל מובייל
      • innerHTML: מקום אחד, ובגלל הקלט ולא בגלל ה-API
  • עקרונות להוספת פיצ’ר לסטיקי-נוטס — הממשק בדפדפן: גאומטריה, אינטראקציה וניגודיות
    • עיגון שורה בפתקי ריפו: למה anchored אינו זמין
    • פתקי ריפו: המשטח הוא התוכן של הגולל, לא הקונטיינר
    • סדר: flush לפני כל פעולה הרסנית
    • גודל: מה שנקבע לעומת מה שנכנס
    • גודל של פתק חדש, והגיבוי של פתק בלי גודל
    • העתקת מזהה הפתק: בשורת השם, והמזהה נקרא ברגע הלחיצה
    • תפריט ⋮: הפעולות הנדירות, ומה קובע לאן הוא נפתח
    • גודל הטקסט: טוקן אחד, ולמה דווקא בפיקסלים
    • מקור אחד למחלקה, ומקור אחד לסדר
    • חיפוש בתוך פתק: מודול הדגשה אחד, ומה שהפתק מוסיף עליו
      • ההדגשה: מודול אחד, ולא עותק נוסף
      • הדילוג על SVG: סלקטור, ולא tagName
      • תצוגה שנבנית מאפס: המצב ברשומה, וההדגשה בסוף כל בנייה
      • בלוק מתקפל שהחיפוש פתח אינו של המשתמש
      • לחיצה רגילה, לחיצה ממושכת, ומקלדת
      • התיבה: ילד של הפתק, מעליו, ובלי לשנות את המלבן שלו
      • כשאין מקום מעל: חיישן, ולא חישוב
      • גלילה, מיקוד ומקשים: רק הפתק זז, ורק התיבה שומעת
      • הצבעים: משטח קשיח, ומדידה בפיקסלים
      • מה לבדוק, ובמה
    • שרשורי תגובות: השרת והממשק בוובאפ
      • הממשק: ילדים של הפתק, והמצב במקום אחד
      • הבקשות: הצלחה רק כשהשרת אמר, ותקרת זמן משלה
      • ערכות וניגודיות
      • מה לבדוק, ובמה
    • ארכיון: המנהל במצב ארכיון, העמוד וחלון השם
    • מה לבדוק, ובמה
  • מדריך תרומה
    • כללים כלליים
    • Workflow בסיסי
    • Pre-commit
    • Conventional Commits
    • דוגמאות שימושיות
    • קישורים
  • Branch Protection & PR Rules
    • כללי ענפים
    • חוקי PR
    • CI – Required Checks
    • קישורים

מדריכים בסיסיים:

  • התקנה והגדרה
    • דרישות מערכת
    • התקנה מהירה
      • 1. שכפל את הריפוזיטורי
      • 2. התקן תלויות
      • 3. הגדר משתני סביבה
      • 4. הפעל את הבוט
    • התקנה עם Docker
      • 1. בנה את ה-Image
      • 2. הפעל עם Docker Compose
      • 3. שדרוג volume קיים מ-MongoDB 6.0
    • הגדרת MongoDB
    • הגדרת Telegram Bot
    • הגדרות מתקדמות
    • בדיקת התקנה
    • פתרון בעיות
    • תמיכה
  • Rate Limiting
    • Environment variables
    • Databases and Cache (Pooling/Timeouts)
    • HTTP Clients
    • שימוש ב‑http_async (Async HTTP)
    • שימוש ב‑http_sync (Sync HTTP)
    • Flask
    • Telegram Bot
    • Metrics
    • Security
  • Config via Pydantic Settings
    • היררכיית טעינה
    • ולידציות
    • .env.example
    • שימוש לסוכנים
    • פרמטרי קונפיגורציה מרכזיים (חדשים)
    • איחוד תיעוד קונפיגורציה
  • קבצי קונפיגורציה ייעודיים
    • config/alert_graph_sources.json
    • config/observability_runbooks.yml
    • config/alert_quick_fixes.json
    • config/alerts.yml
    • config/error_signatures.yml
    • config/image_settings.yaml
  • משתני סביבה - רפרנס
    • טבלה מרכזית
    • התראות וניטור (הרחבה)
    • מדדים, OTEL וחיזוי
    • תפעול, אינטגרציות ופיצ’רים
    • דגלי בדיקות ופיתוח
    • דוגמאות קונפיגורציה
    • קישורים
    • טבלת Scopes לפיצ’רים של GitHub
  • 🚀 The Performance Bible: CodeKeeper Optimization Guide
    • 0. חוק הברזל: Cache First (מנע את הגישה ל-DB)
    • 1. חוק ה-Projection (אל תמשוך מה שאתה לא מציג)
    • 2. חישובים ב-DB (Smart Metadata)
    • 3. אינדוקס מורכב (Compound Indexes)
    • 4. אופטימיזציית API וחיפוש (The Snippet Pattern)
    • 5. הזרקת נתונים אסינכרונית (Lazy Loading)
    • 6. הגדרות סביבה (The Production Sweet Spot)
  • ביצועים והרחבה (Performance & Scaling)
    • עימוד (Pagination)
    • Projection
    • דגשים
    • כוונון Connection Pooling ו-Timeouts
    • לוגי איטיות (מהיר לאיתור צווארי בקבוק)
    • בדיקות מהירות אחרי שינוי ENV
    • הנחיות לפי סביבה
  • Sticky Notes Warmup – פתרון ביצועים משולב
    • רקע קצר
    • מה מחזיק את המסלול היום
    • מה השתנה מאז המעבר ל-gevent
    • העלאת ה-timeout — איך עושים את זה נכון
    • איפוס הדגל בעת שינוי אינדקסים
    • מה לבדוק אם ה-latency קופץ שוב
    • קישורים
  • טיפול בקבצים גדולים (Large Files)
    • מגבלות ופולבקים
    • הנחיות הפעלה
    • ניטור

API Reference:

  • API Reference
    • main module
    • config module
    • bot_handlers module
    • conversation_handlers module
    • database package
      • Submodules
        • database.bookmark module
        • database.bookmarks_manager module
        • database.collections_manager module
        • database.manager module
        • database.models module
        • database.repository module
    • services package
      • Submodules
        • services.backoff_state module
        • services.backup_service module
        • services.code_service module
        • services.github_service module
        • services.google_drive_service module
        • services.investigation_service module
        • services.webserver module
    • handlers package
      • Subpackages
        • handlers.github package
      • Submodules
        • handlers.documents module
        • handlers.file_view module
        • handlers.pagination module
        • handlers.save_flow module
        • handlers.states module
    • utils module
      • CodeErrorLogger
        • CodeErrorLogger.__init__()
        • CodeErrorLogger.log_code_processing_error()
        • CodeErrorLogger.log_code_activity()
        • CodeErrorLogger.log_validation_failure()
        • CodeErrorLogger.log_sanitization_success()
      • TimeUtils
        • TimeUtils.ISRAEL_TZ_NAME
        • TimeUtils.to_israel_time()
        • TimeUtils.format_relative_time()
        • TimeUtils.parse_date_string()
        • TimeUtils.get_time_ranges()
      • TextUtils
        • TextUtils.truncate_text()
        • TextUtils.escape_markdown()
        • TextUtils.clean_filename()
        • TextUtils.extract_hashtags()
        • TextUtils.highlight_text()
        • TextUtils.format_file_size()
        • TextUtils.pluralize_hebrew()
      • SecurityUtils
        • SecurityUtils.generate_secure_token()
        • SecurityUtils.hash_content()
        • SecurityUtils.validate_user_input()
        • SecurityUtils.sanitize_code()
      • TelegramUtils
        • TelegramUtils.send_typing_action()
        • TelegramUtils.send_document_action()
        • TelegramUtils.safe_answer()
        • TelegramUtils.get_user_mention()
        • TelegramUtils.split_long_message()
        • TelegramUtils.safe_edit_message_text()
        • TelegramUtils.safe_edit_message_reply_markup()
        • TelegramUtils.extract_message_text_preserve_markdown()
      • CallbackQueryGuard
        • CallbackQueryGuard.DEFAULT_WINDOW_SECONDS
        • CallbackQueryGuard.should_block()
        • CallbackQueryGuard.should_block_async()
      • AsyncUtils
        • AsyncUtils.run_with_timeout()
        • AsyncUtils.batch_process()
      • PerformanceUtils
        • PerformanceUtils.timing_decorator()
        • PerformanceUtils.measure_time()
      • ValidationUtils
        • ValidationUtils.is_valid_filename()
        • ValidationUtils.is_safe_code()
      • FileUtils
        • FileUtils.download_file()
        • FileUtils.get_file_extension()
        • FileUtils.get_mime_type()
        • FileUtils.create_temp_file()
      • ConfigUtils
        • ConfigUtils.load_json_config()
        • ConfigUtils.save_json_config()
      • CacheUtils
        • CacheUtils.set()
        • CacheUtils.get()
        • CacheUtils.delete()
        • CacheUtils.clear()
      • get_memory_usage()
      • setup_logging()
      • generate_summary_stats()
      • detect_language_from_filename()
      • tg_emoji()
      • get_language_emoji()
      • SensitiveDataFilter
        • SensitiveDataFilter.filter()
      • install_sensitive_filter()
      • safe_zip_entry_name()
      • build_zip_bytes()
      • stash_pending_zip_bytes()
      • load_pending_zip_bytes()
      • cleanup_pending_zip()
      • cleanup_stale_pending_zips()
    • workspace
      • activity_reporter module
        • get_mongo_client()
        • close_mongo_client()
        • SimpleActivityReporter
        • create_reporter()
      • alert_forwarder module
        • emit_event()
        • public_webapp_base_url()
        • forward_alerts()
      • alert_manager module
        • emit_event()
        • reset_state_for_tests()
        • note_request()
        • get_current_error_rate_percent()
        • get_current_avg_latency_seconds()
        • get_request_stats_between()
        • bump_threshold()
        • get_thresholds_snapshot()
        • check_and_emit_alerts()
        • forward_critical_alert()
        • get_dispatch_log()
      • autocomplete_manager module
      • backup_menu_handler module
        • emit_event()
        • BackupMenuHandler
      • batch_commands module
      • batch_processor module
      • bot_handlers module
      • bot_rate_limiter module
      • cache_commands module
        • cache_stats_command()
        • clear_cache_command()
        • setup_cache_handlers()
        • cache_warm_command()
        • debug_cache_command()
      • cache_manager module
        • DynamicTTL
        • ActivityBasedTTL
        • build_cache_key()
        • CacheManager
        • dynamic_cache()
        • cached()
        • async_cached()
      • chatops package
        • Submodules
      • code_preview module
        • CodePreviewManager
      • code_processor module
      • config module
      • conftest module
      • conversation_handlers module
      • database package
        • Submodules
      • duplicate_detector module
        • scan_duplicates()
      • file_manager module
        • BackupInfo
        • BackupManager
        • SkillInfo
        • SkillManager
      • fix_telegram_parse_error module
        • clean_for_telegram()
        • apply_fix()
        • wrap_edit_message_calls()
      • github_menu_handler module
      • github_upload_fix module
        • github_upload_new_file()
        • handle_document_fixed()
        • upload_to_github_fixed()
        • setup_minimal_commands()
        • stats_command_secured()
        • check_commands()
      • handlers package
        • Subpackages
        • Submodules
      • http_async module
        • CircuitOpenError
        • get_session()
        • request()
        • close_session()
      • http_sync module
        • CircuitOpenError
        • get_session()
        • request()
      • i18n package
        • Submodules
      • integrations module
      • integrations_github_monitor module
        • fetch_rate_limit()
        • summarize_rate_limit()
      • integrations_sentry module
        • is_configured()
        • get_recent_issues()
        • search_events()
        • get_issue_events()
      • internal_alerts module
        • emit_event()
        • normalize_alert_details()
        • emit_internal_alert()
        • get_recent_alerts()
      • large_files_handler module
        • LargeFilesHandler
      • lazy_loader module
      • main module
      • metrics module
        • emit_event()
        • generate_latest()
        • track_performance()
        • metrics_endpoint_bytes()
        • metrics_content_type()
        • note_active_user()
        • note_request_started()
        • note_request_finished()
        • get_active_requests_count()
        • get_current_memory_usage()
        • get_recent_errors_count()
        • get_top_slow_endpoints()
        • get_slowest_endpoint()
        • note_deployment_started()
        • note_deployment_shutdown()
        • get_avg_response_time_seconds()
        • record_request_outcome()
        • update_health_gauges()
        • record_startup_stage_metric()
        • record_startup_total_metric()
        • record_http_request()
        • record_request_queue_delay()
        • record_outbound_request_duration()
        • increment_outbound_retry()
        • set_circuit_state()
        • set_circuit_success_rate()
        • get_boot_monotonic()
        • mark_startup_complete()
        • note_first_request_latency()
        • get_process_uptime_seconds()
        • record_dependency_init()
        • record_db_operation()
        • get_uptime_percentage()
        • set_adaptive_observability_gauges()
        • set_external_error_rate_percent()
        • track_file_saved()
        • track_search_performed()
        • track_github_sync()
      • monitoring package
        • Submodules
      • observability module
      • observability_instrumentation module
        • traced()
        • start_span()
        • set_current_span_attributes()
      • observability_otel module
        • setup_telemetry()
      • predictive_engine module
        • emit_event()
        • Trend
        • note_observation()
        • evaluate_predictions()
        • reset_state_for_tests()
        • maybe_recompute_and_preempt()
        • get_recent_predictions()
        • get_trend_snapshot()
      • rate_limiter module
        • RateLimiter
      • refactor_handlers module
      • refactoring_engine module
        • מדיניות וקונפיגורציה
        • מקרה מיוחד: Safe Decomposition ל‑models.py
      • remediation_manager module
        • handle_critical_incident()
        • get_incidents()
      • reminders package
        • Submodules
      • repo_analyzer module
        • emit_event()
        • RepoAnalyzer
      • search_engine module
      • secret_manager module
        • encrypt_secret()
        • decrypt_secret()
      • services package
        • Submodules
      • setup_bookmarks module
        • emit_event()
        • check_mongodb_connection()
        • setup_bookmarks_collection()
        • verify_installation()
        • main()
      • terminal_commands module
        • emit_event()
        • run_in_sandbox()
        • terminal_enter()
        • terminal_exit()
        • terminal_run_command()
        • terminal_command()
        • setup_terminal_handlers()
      • test_basic module
        • test_python_version()
        • test_import_main()
        • test_environment()
        • test_basic_calculation()
        • TestRequirements
      • test_bookmarks module
      • user_stats module
        • UserStats
      • utils module
        • CodeErrorLogger
        • TimeUtils
        • TextUtils
        • SecurityUtils
        • TelegramUtils
        • CallbackQueryGuard
        • AsyncUtils
        • PerformanceUtils
        • ValidationUtils
        • FileUtils
        • ConfigUtils
        • CacheUtils
        • get_memory_usage()
        • setup_logging()
        • generate_summary_stats()
        • detect_language_from_filename()
        • tg_emoji()
        • get_language_emoji()
        • SensitiveDataFilter
        • install_sensitive_filter()
        • safe_zip_entry_name()
        • build_zip_bytes()
        • stash_pending_zip_bytes()
        • load_pending_zip_bytes()
        • cleanup_pending_zip()
        • cleanup_stale_pending_zips()
      • webapp package
        • Submodules
  • מודולים ראשיים
    • File Management
    • GitHub Integration
    • Backup System
    • Code Processing
    • Search Engine
    • Repository Analysis
    • Batch Processing
    • Large Files Handling
    • Cache Management
    • User Statistics
    • Activity Reporting
    • Utilities
    • Lazy Loading
    • Integrations
    • Terminal Commands
    • Autocomplete Manager
  • Handlers
    • זרימת פקודה בסיסית
    • ארכיטקטורת Handlers
    • Show Command
      • Show Command
        • מפרט פקודת /show
        • דוגמת תגובת HTML
        • הערות יישום
        • קישורים
    • Drive Menu
      • Drive Menu V2
        • דגל פיצ’ר
        • זרימות עיקריות
        • התחברות (Device Flow)
        • טיפול שגיאות
        • ניטור
        • API (autodoc)
    • File View Handler
      • File View Handler Module
    • Pagination Handler
    • Save Flow Handler
    • States Handler
    • GitHub Handlers
    • GitHub Menu Bridge
    • Document Flow
      • זרימת הטיפול במסמכים (Document Flow)
        • מפה ותפקידים
        • זרימת טיפול בקובץ
        • מצבי upload_mode
        • תלויות והזרקות
        • Best Practices
        • שכבת אחסון (FilesFacade מול DB הישן)
        • ראו גם
    • Drive Utilities
  • Services
    • Code Service
      • Code Service Module
    • GitHub Service
    • Backup Service
    • AI Explain Service
    • Community Library Service
    • Image Generator Service
    • Snippet Library Service
    • Observability HTTP Service
    • Google Drive Service
      • Google Drive Service
        • סקירה
        • חיבור נפרד לכל שירות (owner)
        • החיבור בוובאפ: קוד ה-state נשמר בשרת
        • עמוד מדיניות הפרטיות (/privacy)
        • הערות OAuth
        • בדיקת חיבור לפני גיבוי (check_connection)
        • כשלים שמוחזרים כ-None
        • מבני קבצים
        • API (autodoc)
  • Database
    • Database Manager
    • Models
      • CodeSnippet Model
      • DatabaseManager Class
    • Database Operations
      • Save Operations
      • Search Operations
      • Delete Operations
      • Statistics Operations
    • אינדקסים בקולקציית users
    • מדריכי מודולים ייעודיים
      • מנהל סימניות – BookmarksManager
        • מתי משתמשים בו?
        • מבנה ואינדקסים
        • מגבלות שימוש
        • תהליך Toggle
        • סנכרון עם שינויים בקובץ
        • אירועים (Analytics)
        • Autodoc
      • מנהל אוספים – CollectionsManager
        • רכיבי בסיס
        • אינדקסים
        • סוגי אוספים
        • תרחישי שימוש נפוצים
        • חוקים ושמירה על איכות
        • שיתוף ציבורי
        • Autodoc
  • MongoDB Indexing Cookbook
    • למה?
    • אינדקסים מומלצים
    • מתכונים (Python / PyMongo)
    • בדיקות explain (Mongo Shell)
    • מה לחפש ב-explain?
    • בדיקת קיום אינדקסים
    • אינדקסים שהם התנהגות, לא אופטימיזציה
    • שיטות עבודה מומלצות
    • דוגמאות נוספות
    • Gotchas נפוצים
  • Cursor-based Pagination (created_at / _id)
    • למה?
    • עקרונות מיון יציב
    • קידוד/פענוח קורסור (Python)
    • תבנית שאילתה (חדש → ישן)
    • PyMongo – דוגמה מלאה
    • דפדוף לאחור (ישן → חדש)
    • בדיקות ידניות (Copy‑Paste)
    • שיטות עבודה מומלצות
    • Gotchas נפוצים
    • קישורים
  • Database Schema
    • Collections
      • code_snippets
      • users
      • bookmarks
      • sessions (WebApp)
    • Indexes
    • Relationships
    • קישורים
  • מבנה נתונים מפורט (Detailed Database Schema)
    • אוסף: code_snippets
    • אוסף: large_files
    • אוסף: users
    • אוסף: bookmarks
    • אוסף: collections
    • אוסף: backups
    • אוסף: sticky_notes
    • אוסף: note_boards
    • יחסים בין אוספים
    • סכמת מערכת Observability - התראות ומטריקות
    • Best Practices
    • קישורים

עזרה ודוגמאות:

  • דוגמאות שימוש
    • שימוש בסיסי
      • יצירת אפליקציית בוט
      • שמירת קוד חדש
      • חיפוש קוד
    • שימוש ב-Handlers
      • יצירת Command Handler
      • יצירת Conversation Handler
    • שימוש ב-Services
      • זיהוי שפת תכנות
      • ניתוח קוד
    • אינטגרציה עם GitHub
      • העלאת קוד ל-Gist
      • שליפת Gists של משתמש
    • עבודה עם מסד הנתונים
      • ביצוע שאילתות מורכבות
      • עדכון קבצים
      • סטטיסטיקות
    • טיפול בשגיאות
      • טיפול בשגיאות בסיסי
      • Retry Logic
    • בדיקות
      • בדיקת יחידה
      • בדיקת אינטגרציה
    • דוגמאות מתקדמות
      • עיבוד באצווה
      • קאשינג
    • שיתוף ציבורי דרך ה‑API (curl)
    • דוגמת Markdown מתקדמת לתצוגה
  • Testing Guide
    • 🚀 Quickstart לטסטים
    • הנחיות קריטיות
    • טעינת Stubs לטלגרם
    • דוגמת שימוש ב‑tmp_path
    • מחיקה בטוחה
    • Mocking HTTP ב‑github_menu_handler
    • השהיות של קוד הייצור בטסטים
    • רישום Blueprint בסביבת טסטים
    • בדיקות מול מונגו אמיתי
      • GLIBC_TUNABLES בשירותי המונגו
      • אימות ביטוי מול גרסת הייצור, בלי לכתוב
    • כיסוי בדיקות (pytest-cov)
    • CI נתמך
    • טסטי Markdown כבדים (md_heavy)
    • בדיקות דפדפן, ותקרת הזמן
    • Sentry בבדיקות
    • מצב שקוד הייצור זוכר בזיכרון התהליך
    • הקפאת זמן ותהליכוני רקע
    • בדיקות ביצועים (Performance)
    • קישורים
  • דוגמאות טסטים – Rate Limiting ואסינכרוניות
    • Rate Limiting (Redis Mock)
    • טסטים אסינכרוניים
  • בדיקות ביצועים (Performance Tests)
    • סימון טסטים
    • הרצה מקומית
    • CI / GitHub Actions
    • דוחות וזמני ריצה
    • טיפים
  • CI/CD Guide
    • חוקים קשיחים
    • סטטוסים נדרשים
    • ריכוז CI (Overview)
    • תווית ה-runner
    • פואמה על PR
    • בדיקות מומלצות
    • בנייה של התיעוד
    • קישורים
  • Conversation Handlers & States
    • רשימת States (מבחר בפועל)
    • Save Flow (תרשים מצבים)
    • GitHub Flow (תרשים מצבים)
    • ספריית סניפטים – זרימת הגשה (Bot)
      • ביטול הוגן
      • התראות אדמין והודעת משתמש
    • דוגמת Handler תמציתית
    • טבלת זרימות מלאה
    • קישורים
    • דוגמאות קוד תמציתיות (ממשיות)
      • Save – שלבים עיקריים
      • GitHub – תפריט ושיחת העלאה
      • Backup – תפריט
      • Drive – תפריט
    • מוקשים נפוצים ופתרונות
      • query.answer()
      • עריכת הודעות בבטחה – ”Message is not modified“
      • Filters
      • Persistent data (context.user_data)
    • דוגמאות טסטים קצרות
      • Save – התחלה וזרימה בסיסית
      • GitHub – upload_conv_handler
  • מצב היועץ (/advisor)
    • כניסה ויציאה
    • הניתוב
    • מה נשמר במסד
    • הגדרות והקריאה למודל
    • בדיקות
  • Troubleshooting Guide
    • שגיאות נפוצות
    • ImportError בזמן טסטים (telegram / ConversationHandler / filters)
    • שגיאות parse_mode
    • שגיאות asyncio: ”attached to a different loop“ / ”Event loop is closed“
    • דיבוג מהיר
    • בדיקת חיבור MongoDB
    • קישורים
  • Development Workflow
    • הוספת Handler חדש
    • הוספת Endpoint ל‑WebApp
    • עדכון Schema במסד הנתונים
    • קישורים
  • Pre-commit Hooks
    • התקנה והרצה
    • Hooks פעילים (עיקריים)
    • טיפים לפתרון בעיות
  • כלי עזר למפתחים
    • tools/analyze_queries.py
      • מטרה
      • דרישות
      • דוגמת הרצה
      • פלט אופייני
      • טיפים
    • tools/dup_scan.py
      • מטרה
      • דוגמת הרצה
      • פרמטרים חשובים
      • Best Practices
  • סקריפטים שימושיים
    • scripts/cleanup_repo_tags.py
    • scripts/migrate_reminder_acked_status.py
    • scripts/dev_seed.py
    • scripts/import_snippets_from_markdown.py
    • scripts/measure_md_parse_cost.py
    • scripts/md_parser_upgrade_zero_diff.py
    • scripts/migrate_workspace_collections.py
    • scripts/run_log_aggregator.py
    • scripts/start_webapp.sh
    • scripts/start_with_worker.sh
    • scripts/run_all.sh
  • בינאום ותמיכה בשפות
    • מבנה הקבצים
    • בחירת שפה בזמן ריצה
    • הוספת שפה חדשה
    • עקרונות כתיבה
    • בדיקות מהירות
  • Integrations
    • GitHub API
      • יצירת Gist (דוגמה)
    • Google Drive (OAuth Flow)
    • Telegram Webhooks vs Polling
    • קישורים
    • GitHub – Scopes נדרשים
    • Troubleshooting GitHub – Rate limits
    • GitHub CLI (gh) – תקציר קצר
    • Repository Providers
    • Best Practices – מאגרים גדולים/Monorepos
  • שרת ה-MCP — חיבור Claude ל-CodeKeeper
    • מה זה נותן
    • ארכיטקטורה בקצרה
    • מודל הריצה של הכלים
    • הכלים
    • הקבועים, התקרות ואוצר המילים של התשובה
    • אימות והרשאות
    • תקרת התשובה — מה כלי מצהיר, ומי אוכף
    • גבולות הבקשה — גודל הגוף והקצב
    • פריימר לסוכן — GET /api/agent/primer
      • עריכה מהדפדפן
    • העלאת תוכן בלי לעבור דרך המודל
      • הראוט — PUT /api/agent/upload
      • upload_id בכלים
      • האחסון
    • הורדת קובץ לדיסק בלי לעבור דרך המודל
      • הראוט — GET /api/agent/download
    • הפעלה — צעד אחר צעד
      • שלב 1 — שירות חדש
      • שלב 2 — מצב בסיס (PAT בלבד)
      • שלב 3 — מצב OAuth (מוסיף את Claude.ai)
      • שלב 4 — דפדפן הריפו (אדמין, אופציונלי)
    • חיבור לקוחות
      • Claude.ai (Custom Connector)
      • Claude Code (טוקן)
      • Claude Desktop
    • דפדפן הריפו — איך זה עובד
      • רענון אוטומטי (autosync)
      • אימות מול GitHub — הטוקן לא נשמר במראה
      • מדיניות סינון סודות
      • התנהגות בזמן sync
    • מדידת שימוש (PostHog MCP Analytics)
      • לכידת הכוונה (context)
      • מצב הקריאה (ck_read_mode)
    • אבטחה — עקרונות
    • פתרון תקלות
    • סעיפים שעברו לעמודים אחרים
    • ראו גם
  • שרת ה-MCP — קבצים ופתקים במסד: גרסאות, עקביות ומחזור חיים
    • עדכון תיאור בלי גרסה חדשה
    • תיאור ארוך בשמירה — description_saved
    • גיל התיאור — description_age_versions
      • מתי החותמת זזה
      • קבצים שנשמרו לפני שהשדה קיים
    • האם זו הגרסה האחרונה — is_latest
    • טביעת אצבע לתוכן — content_sha256 ו-content_changed
      • תשובות הכתיבה: content_changed
      • למה מחשבים ולא שומרים
      • פתקים: note.content_sha256 ו-content_changed
    • כמה עריכות בגרסה אחת — codekeeper_multi_edit_file
      • עריכה על מה שקראתם — expected_content_sha256
    • קריאת פתק בודד — codekeeper_get_note
    • היסטוריית פתקים
    • שרשורי תגובות על פתקים — codekeeper_comment_note
    • התראה כשסוכן שומר קובץ
  • שרת ה-MCP — קריאה, פרסור וחיפוש בתוכן
    • ענף שלא במראה, מול קובץ שלא קיים
    • איזה קובץ docs_get_section קורא, ובאיזה ריפו
    • איפה מפת ה-Markdown חולקת על GitHub
    • איך docs_get_section מוצא כותרת
    • מפת סימבולים (outline)
      • HTML ו-Jinja
      • CSS
      • RST
    • קריאת טווח שורות
    • כמה מופעים יש באמת (total מול total_at_least)
      • החוזה היום
      • איך זה נספר
      • מה לא נכנס לספירה
      • רישיות
      • סינון לפי נתיב (file_pattern)
    • איך מחפשים קובץ ופתק — codekeeper_search_code ו-codekeeper_search_notes
    • חיפוש בתוך קובץ שמור (query)
      • מה ההתאמה עושה, ומה לא
      • מצבי הקצה
    • קריאה לפי סעיף בקובץ Markdown שמור (toc ו-section)
      • איזה קובץ נקרא לפי סעיף
      • מצבי הקצה
      • איפה המפה חולקת על הוובאפ
    • גודל וספירת שורות ברשימת הריפו
    • קריאה קבוצתית — codekeeper_read_batch
      • למה באץ«, ולא קריאות במקביל
      • פריט, ומה הוא מחזיר
      • commit אחד לכל ריפו
      • קריאה אחת לכל קובץ, ושני סדרים
      • תקציב הבתים, ולמה בתים הם גם תווים
      • הדדליין
      • מכסת הקצב, ולמה אין החזר
  • Repository Integrations
    • מצב תמיכה
    • הערות
  • Security Guide
    • סודות ופרטיות
      • ניקוי טוקן הבוט מלוגים, חריגות ו‑Sentry
    • הרצת קוד (Code Execution Playground)
    • הצפנת טוקנים (דוגמה)
    • CSRF ב‑WebApp
    • Rate Limiting (דוגמה)
    • קישורים
    • אבטחת הודעות בטלגרם
  • Smart Observability v7 – Predictive Health & Adaptive Feedback
    • חיבור Grafana → Telegram (Webhook)
    • Grafana Annotations
    • Adaptive Thresholds (ספים דינמיים)
    • הפרדה בין שגיאות פנימיות לחיצוניות
    • Predictive Health (v7)
      • SAFE_MODE ודילוג על פעולות מנע
      • ChatOps
      • הרשאות ChatOps ו-Rate Limit
      • Grafana – ייבוא דשבורד לדוגמה
    • Grafana – Accuracy & Prevention Panels
      • תרשים זרימת Feedback Loop
    • Auto‑Remediation (v5)
      • Incident Memory
      • Feedback Loop לאירועים חוזרים
    • ChatOps – /observe
      • הרחבות מצב מפורט
    • Endpoints
    • קישורים לתיעוד ChatOps
    • טיפים
  • Git LFS Integration
    • מתי להשתמש ב‑LFS
    • התקנה בסיסית
    • Best Practices
    • מגבלות וגבולות
    • קישורים
  • סימניות (Bookmarks)
    • מהן סימניות?
    • איך להוסיף סימנייה
    • פאנל הסימניות
    • Anchor יציב
    • מגבלות, אבטחה ופרטיות
    • API קצר (למפתחים)
    • הערות שימושיות
  • פתקים דביקים (Sticky Notes)
    • מהם פתקים דביקים?
    • איך מוסיפים ומנהלים פתקים
    • עיגון יציב לעומת מיקום קבוע
    • שילוב עם סימניות
    • מגבלות, פרטיות ואבטחה
    • לוחות פתקים
      • שם, ביטול והעתקה
      • תפריט ⋮
      • צבע הפתק
      • חיפוש בפתקים
      • גלילה אינסופית בלוח
      • צ’קבוקסים בפתק
      • עיצוב מארקדאון
      • חיפוש בתוך פתק
      • גודל הטקסט בפתק
      • כתב יד
      • לוחות דרך MCP
      • תזכורות בפתקי לוח
    • פתקים על קבצי ריפו
      • יתומים
      • פתקי ריפו דרך MCP
      • חיפוש פתק לפי שם
    • שרשורי תגובות על פתקים
    • ארכיון
    • טיפים שימושיים
    • API קצר (למפתחים)
    • התראות ותזכורות (Reminders)
      • איורים
    • Troubleshooting קצר
      • בעיות נפוצות בתזכורות
  • תזכורות בבוט
    • פקודות עיקריות
    • איך הוויזרד עובד
    • טיפים לשימוש בפקודה מהירה
    • ניהול התזכורות
    • מגבלות ומדיניות
    • מתזמן והתאוששות
    • חיבור לקוד
    • קישורים
  • האוספים שלי (My Collections)
    • יכולות מרכזיות
    • איך משתמשים
    • תיוג פריטים באוספים
    • שילוב עם סימניות ופתקים דביקים
    • מגבלות ופרטיות
    • API קצר (למפתחים)
    • טיפים
    • מובייל/טאבלט – גרירה לסידור
    • לוח Kanban עבור שולחן העבודה
  • שיתוף קוד (חשוב)
    • מה זה עושה?
    • איפה הכפתור מופיע?
    • איך זה עובד (זרימה)
    • דרישות
    • מגבלות והתנהגות
    • הודעות הצלחה/שגיאה
    • Troubleshooting קצר
    • דוגמאות (טקסטואליות)
  • עיון בקוד GitHub (כולל חיפוש בשם קובץ)
    • שורת כלים
    • תוצאות חיפוש
    • ניווט ריפו
  • הורדת ריפו
    • מה בדיוק מוריד
    • הורדת תיקייה כ־ZIP
      • לאן נשמר
      • שם הקובץ
    • מגבלות
    • הודעות נפוצות
  • תכנית בדיקות לבוט – Composition Root (Container) לשירות Snippet
    • איך לבדוק
    • סט דוגמאות לשמירה (Copy/Paste)
    • בדיקות נוספות
    • תקלות שכדאי לעקוב אחריהן
    • בדיקות זרימה מורחבות (לאחר מעבר ל-Facade/Container)
      • 1) שמירה/תצוגה/עריכה (קבצים רגילים)
      • 2) קבצים גדולים
      • 3) מסמכים/העלאות
      • 4) Google Drive
      • 5) ChatOps – זיהוי שפה (שקיפות ודיבוג)
      • 6) רגרסיה כללית

זרימות עבודה:

  • זרימות עבודה (Workflows)
    • רשימת זרימות
      • זרימת שמירת קוד (Save Flow)
        • סקירה כללית
        • מצבי שמירה
        • זרימת עבודה בסיסית
        • מצב איסוף ארוך (LONG_COLLECT)
        • זיהוי סודות (Secrets Detection)
        • טיפול בכפילויות
        • ניקוי קוד מודבק
        • Edge Cases
        • קישורים
      • זרימת חיפוש (Search Flow)
        • סקירה כללית
        • סוגי חיפוש
        • זרימת עבודה
        • מבנה SearchIndex
        • פילטרים
        • טיפול בשגיאות Regex
        • מיון תוצאות
        • חישוב Relevance Score
        • Edge Cases
        • קישורים
      • זרימת רפקטורינג (Refactor Flow)
        • סוגי רפקטורינג
        • זרימת עבודה
        • שימוש בבוט (Telegram)
        • CodeAnalyzer
        • יצירת הצעת רפקטורינג
        • אימות לפני ואחרי
        • ייצוא לגיסט (אופציונלי)
        • שמירת גרסה
        • Edge Cases
        • מדיניות קיבוץ ופיצול (Cohesion Policy)
        • Smart Clustering ו‑Cycle Guard
        • Safe Decomposition ל‑models.py
        • שמות קבצים דומייניים (Canonical)
        • מצב שכבות (Layered)
        • פרמטרים ניתנים לכוונון
        • מגבלות ידועות
        • קישורים
      • זרימת גיבוי ושחזור (Backup Flow)
        • סקירה כללית
        • סוגי גיבויים
        • יצירת גיבוי מלא
        • שחזור מגיבוי
        • גיבוי ל-Google Drive
        • ניהול גיבויים
        • ייבוא ZIP חיצוני
        • Edge Cases
        • קישורים
      • זרימת שיתוף ב-Gist (Gist Flow)
        • סקירה כללית
        • נקודות כניסה
        • זרימת עבודה בסיסית
        • אימות הטוקן — למה יש שורה שנראית מיותרת
        • שלושת מצבי auth_failed
        • למה שתי הודעות ולא אחת
        • Fail-closed
        • Edge Cases
        • קישורים
    • קישורים

מנועי המערכת:

  • מנועי המערכת (System Engines)
    • מנוע חיפוש (Search Engine)
    • מנוע רפקטורינג (Refactoring Engine)
    • יכולות מתקדמות (Smart Clustering, Cycle Guard)
    • מצב שכבות (Layered Mode)
    • Safe Decomposition ל‑models.py (פיצול בטוח לחבילת models/)
    • מעבד קוד (Code Processor)
    • מנוע ניתוח (Code Analyzer)
    • מנוע גיבויים (Backup Service)
    • מנוע אינטגרציות (Integration Services)
    • מנוע Observability
    • קישורים

Edge Cases וטיפול בשגיאות:

  • Edge Cases וטיפול בשגיאות
    • קבצים גדולים
    • קידודים לא סטנדרטיים
    • GitHub Rate Limits
    • MongoDB Connection Errors
    • Redis Unavailability
    • שגיאות Parsing
    • שגיאות File I/O
    • שגיאות Network
    • שגיאות Validation
    • שגיאות Concurrent Access
    • Best Practices
    • קישורים

איכות וקונבנציות:

  • 📝 Type Hints – Best Practices
    • אסטרטגיה: הקשחה הדרגתית
    • פרוטוקולים וסטאבים
    • דוגמאות מהקוד
    • הגדרות MyPy
    • מסלול מיגרציה
    • הנחיות לסוכנים
    • דוגמאות קצרות
  • ניקוי קוד מודבק (Pasted-code cleanup)
    • הכלל: שמירה שומרת בדיוק את מה שנשלח
    • החריג: קוד שמודבק בבוט
    • תווים שמשנים את סדר התצוגה
      • איפה מוצגת אזהרה
      • איפה עדיין אין אזהרה
    • הוובאפ: פענוח של השליחה, לא ניקוי
    • ה-MCP
    • כשמוסיפים כניסה חדשה
    • טסטים
    • קישורים
  • כללי שכבות – CodeBot
    • שכבות
    • Composition Root
    • זיהוי שפה – מקור אמת
    • בדיקות אכיפה

WebApp:

  • המיני Web App (סקירה)
    • מה נותן?
    • דשבורד חדש
      • אייקוני שפה אחידים
      • הנחיות לסוכני AI
    • כתובת והרשאות
    • הגדרות ENV
    • קישורים ותמונות מסך
    • ראו גם
    • באנר הכרזות בראש המסך
      • איך מפעילים?
      • הערות וקישורים
      • מה קורה מאחורי הקלעים?
      • כיבוי זמני
      • המלצות לתוכן
  • דפדפן קוד (Code Browser)
    • ייבוא ריפו חדש
    • הגדרת סנכרון אוטומטי
      • הגדרת Webhook ב-GitHub
      • בדיקת הגדרת ה-Webhook
      • מה קורה לג’וב סנכרון
      • דיסק בלי mirrors: המילוי בעלייה
    • משתני סביבה נדרשים
    • תצוגה מרונדרת (Markdown ועמודי תיעוד)
      • עמודי התיעוד (rst)
      • חיפוש בתוך הקובץ בתצוגה המרונדרת
    • התוכן כמו שהוא בריפו, ומי רואה אותו
    • ראו גם
  • ממשקי משתמשים (Web)
    • היכן זה נמצא?
    • מסכים בולטים
    • גרסאות: צפייה והשוואה
      • השוואה בין שתי גרסאות
    • סל המיחזור: שורה לכל קובץ
    • הצ’קליסט ”צעדים ראשונים“ בדשבורד
    • זרימת עבודה דרך הבוט
    • שדות חובה ולוגיקת ולידציה
    • חיווי מצב תהליך
    • ממשק אדמין
    • דוגמאות שימוש לסוכני AI
    • אבטחה ופרטיות
    • הערות תאימות
  • גלריית צילומי המסך (/gallery)
    • הצילומים והכיתובים
    • החלפה או הוספה של צילום
    • המעבר בין הצילומים
    • שיתוף, cache ומגבלת קצב
  • העורך הציבורי (/markdown-editor)
    • הערכה
    • טקסט ההדגמה
    • העורך, התצוגה החיה וסרגל ה-MD
    • הטיוטה והכפתורים
    • ייצוא HTML מעוצב
    • העזרים המשותפים של עמודי העורך
    • מנועי חיפוש
    • הבדיקות
  • ספריית סניפטים (Web)
    • מאפייני UI
    • API – JSON
      • OpenAPI (תקציר)
      • JSON Schema (Response)
      • כללי דפדוף/ספירה
      • שגיאות
      • דוגמאות cURL
    • הגשות, אישור וניהול (אדמין)
    • ייבוא מסמך (אדמין)
    • הגשה דרך הבוט
    • UI בבוט – הסרות ושיפורים
    • גרסה משודרגת – מה חדש
    • מדריך קצר לסוכני AI
  • Caching & HTTP Validators (ETag / Last-Modified / 304)
    • למה זה חשוב?
    • עקרונות בסיס
    • מתכון: Flask + werkzeug
    • בדיקות ידניות (Copy‑Paste)
    • Checklist למימוש נכון
    • Gotchas נפוצים
    • שילוב עם Cache-Control
    • קישורים נוספים
  • מערכת Caching מתקדמת עם TTL דינמי
    • עקרונות
    • קוד לדוגמה
    • דגשים תפעוליים
    • Warmup לנכסי Frontend
    • קישורים
  • Cache Inspector (לוח בקרה של Redis)
    • מה זה Cache Inspector?
      • למה צריך את זה?
    • איך נכנסים?
    • יכולות עיקריות
      • סטטיסטיקות כלליות
      • חיפוש מפתחות
      • הצגת TTL וסטטוס
      • פעולות מחיקה
    • אבטחה ובטיחות
      • הגנת הרשאות
      • הסתרת מידע רגיש (Masking)
      • שימוש ב-SCAN במקום KEYS
      • תקציב זמן למחיקות
    • API Endpoints
      • דוגמאות API
    • תקלות נפוצות
      • Redis מושבת
      • אין הרשאות
      • חיפוש איטי
    • משתני סביבה רלוונטיים
    • ראו גם
  • Config Inspector (סקירת משתני סביבה)
    • מה זה Config Inspector?
    • איך נכנסים?
    • שני עמודים — ולמה
      • עמוד 1: שירות ה-Webapp (עם Status וערך פעיל)
      • עמוד 2: שירותים אחרים — Bot / MCP / Webserver
    • ארבעת הסטטוסים — ואיך נמנעים מ-”Modified“ שגוי
    • לאיזה שירות שייך המשתנה? — לבדוק, לא לנחש
    • משתנה שמשרת כמה שירותים — לתעד בכל המקומות
    • מתי הערך נקרא — ומה קורה כשהוא שגוי
      • שתי הצורות בקוד
      • מה זה אומר בפועל
      • שלוש מלכודות
      • הגדרה ברנדר — שלוש אפשרויות שמירה
    • מיסוך ערכים רגישים
    • צ’קליסט: הוספת משתנה סביבה חדש
    • מדידת הפער ואכיפתו
    • ראו גם
  • MCP Analytics (מדידת השימוש בכלי ה-MCP)
    • מה זה
    • מאיפה הנתונים מגיעים
    • תקרת שורות ומאיפה מגיעה הספירה
    • סימון ”טופל“ / ”נדחה“ בכלים חסרים
    • מיון והעתקה
      • פרמטרים
      • העתקה
    • משתני סביבה
    • מצבי כשל
    • תקציב זמן
    • אבטחה
    • איך העמוד מציג את ההודעה, ואיך קוראים אותה
    • ”X שגיאות חדשות מאז הביקור האחרון“
    • הטורים שנוספו, ומה הם לא אומרים
    • מה שאי אפשר להביא לכאן, ולמה
    • עיצוב
    • טסטים
    • ראו גם
  • Static Performance & Security Checklist (gzip/br, Cache, SRI)
    • דחיסה (br/gzip)
    • כותרות Cache-Control
    • Subresource Integrity (SRI)
    • בדיקות ידניות (Copy‑Paste)
    • Best Practices
    • Gotchas
  • תחזוקת קטלוג הפקודות (commands.json)
    • מבוא
    • מבנה הנתונים (Schema)
    • דוגמת JSON
    • הנחיות סיווג (Taxonomy)
      • טיפים לזיהוי אוטומטי
    • צ’ק-ליסט להוספת פקודה
    • בדיקות
    • כרטיסיות חדשות (דצמ« 2025)
  • חיפוש גלובלי — סוגי החיפוש
    • איפה זה בממשק
    • סוגי החיפוש
      • תוכן
      • טקסט
      • Regex
      • מטושטש
      • פונקציות
      • חיפוש חכם
      • תיעוד
    • כשהסוג שבחרתם לא מוצא כלום
    • מגבלות
    • האינדקס בזיכרון
    • קאש
    • השלמה אוטומטית
    • לא לבלבל עם
    • אינדקס התיעוד
      • מה נכנס לאינדקס
      • המעבר
      • עמוד האדמין
      • הגדרה חד-פעמית
    • ראו גם
  • הרצת קוד (Code Execution Playground)
    • איפה זה ב‑UI?
    • הרשאות (Premium/Admin)
    • Feature Flag (זמינות הפיצ׳ר)
    • API
      • GET /api/code/run/limits
      • POST /api/code/run
    • אבטחה: מה יש ומה חשוב להבין
      • Docker sandbox (מומלץ)
      • חסימת קוד ”מסוכן“
      • לוגים ופרטיות
    • Fail‑Closed מול Fallback
    • תפעול מומלץ בפרודקשן (Runner נפרד)
    • Troubleshooting
      • ”אין כפתור Run“
      • enabled=false ב‑/api/code/run/limits
      • docker_available=false ב‑limits
    • Known Limitations
  • WebApp API Reference
    • Endpoints
    • Authentication Flow
    • Response Schema Example
    • Errors
    • שגיאות נפוצות – POST /api/shared/save
    • קישורים
    • מסנן ושדות קלט ל-/files
      • טבלת פרמטרים
      • דוגמאות בקשה
      • דוגמאות תגובה
  • Bulk actions (בחירה מרובה)
    • סקירה
    • Endpoints
      • POST /api/files/bulk-favorite
      • POST /api/files/bulk-unfavorite
      • POST /api/files/bulk-tag
      • POST /api/files/create-zip
      • POST /api/files/bulk-delete (Soft Delete)
      • POST /api/files/create-share-link
    • שגיאות נפוצות
    • הערות למפתחים
  • ⌨️ עורך קוד (WebApp Editor)
    • טעינת CodeMirror ומצב isLoading
    • החבילה המקומית של CodeMirror, וכיוון לכל שורה
    • שמירת העדפות משתמש – שני נתיבי API
    • המלצות
  • Markdown – מצב מצומצם (קיפול כותרות ###) – אדמין בלבד
    • מאפיינים עיקריים
    • הזרקת דגל הרשאה לתבנית
    • עקרונות המימוש בצד הלקוח
    • צ’ק‑ליסט לפיצ’רים מקומיים דומים
  • מדריך סגנונות וארכיטקטורת Markdown
    • 1. סקירה טכנית (Architecture)
    • 2. מערכת הצבעים (Reader Mode)
    • 3. קטלוג רכיבים (Component Gallery)
      • Admonitions
      • Tables
      • Task Lists
      • Mermaid
      • Details / Summary
      • Code Blocks
      • Highlight (==מארקר==)
      • נוסחאות ($...$, $$...$$)
    • 4. הנחיות למפתחים (Best Practices)
  • Smooth Scrolling (WebApp) — מדריך תמציתי לסוכני AI
    • המצב הנוכחי
    • למה כבוי
    • מה נשאר פעיל
    • הדלקה לניפוי בלבד
    • מה המודול עדיין יודע לעשות כשמדליקים אותו
    • הנחיות לסוכני AI
    • קישורים פנימיים
  • מודולים פנימיים ב-WebApp
    • activity_tracker.py – דגימת פעילות משתמשים
    • community_library_api.py – REST עבור אוסף הקהילה
    • community_library_ui.py – תצוגת Web
    • snippet_library_api.py ו-snippet_library_ui.py
    • push_api.py – Web Push Subscriptions
    • workspace_api.py – ניהול Kanban (Workspaces)
    • config_radar.py – רנטגן קונפיגורציה
    • איך להשתמש בעמוד זה

Frontend > Theming

  • מערכת ערכות הנושא והטוקנים החדשה
    • רקע ומוטיבציה
    • שכבות משתנים וטעינת data-theme
      • תרשים זרימת היררכיית טוקנים
    • טבלת טוקנים עיקריים
    • מפת ערכות הנושא (Theme Reference)
    • Markdown Viewer ו‑Split View
    • הנחיות למפתחים (Best Practices)
      • דוגמת קוד – לא תקין לעומת תקין
    • Component Tokens ו‑Theme Builder
    • בדיקות חובה לפני Merge
    • שימושים נוספים וחריגים
    • קישורים ונספחים
  • ערכות נושא מותאמות אישית – מדריך מקיף
    • מבוא וסקירה כללית
      • מהי ערכת נושא מותאמת אישית?
      • ההבדל בין Presets לבין Custom Themes
      • יכולות המערכת
    • ייבוא ערכות VS Code
      • פורמטים נתמכים
      • מבנה ערכת VS Code
      • מיפוי צבעי UI
    • יצירה ידנית (Native Format)
      • מבנה הפורמט המקומי
      • משתנים חובה
      • רשימת משתנים מלאה (Whitelist)
    • דריסת טוקן שאין לו מקבילה ב-VS Code
      • הצעות ההשלמה בחיפוש הגלובלי
      • בלוקי הקוד בתצוגת ה-Markdown של דפדפן הריפו
      • הטקסט בכפתורי primary
      • ערכה מיובאת בהירה: שדות טופס, הפיד והפוש בדשבורד, ושורת החיפוש ב-Markdown
    • הדגשת תחביר (Syntax Highlighting)
      • ארכיטקטורה
      • מיפוי VS Code Scopes ל-CodeMirror Tags
      • מנגנון Fallback
      • CodeMirror CSS Classes
    • אבטחה וולידציה
      • ולידציית צבעים
      • סניטציה
    • API Reference
      • Endpoints
      • מבנה תגובה
    • פרסום ערכה לציבורית (Shared Themes)
      • מבנה נתונים ב-DB
      • שמירת משתנים בפרסום
    • פתרון בעיות (Troubleshooting)
      • בעיות נפוצות
      • דוגמה לייבוא ערכת Nord
    • קישורים קשורים
  • אייקוני שפות התכנות
    • למה זה נבנה כמערכת ולא כהחלפה נקודתית
    • המבנה
      • צד השרת
      • צד הלקוח
    • גדלים
      • למה 44px ולא 32px
    • הוספה או שינוי של אייקון
      • מבנה קובץ אייקון
      • שמות נרדפים
    • נגישות
    • מלכודות שכבר נתקלנו בהן
      • הסתרת הספרייט
      • הטמעה inline ולא כקובץ חיצוני
      • שני מסלולי רינדור לאותו מסך
    • הנחיות לסוכני AI
    • בדיקות

Observability

  • אובזרווביליות (Observability)
    • מטרות
    • קהלי יעד
    • תצורה
    • בחירת Backend ל־Traces
    • הגדרת OTLP לסביבות
    • קישורים
    • אינסטרומנטציה ידנית (Manual Instrumentation)
    • דוקר קומפוז – הפעלה מהירה עם Jaeger
      • Quick start – אימות ספאנים ב־Jaeger
    • כיסוי דקורטור @traced
    • אימות ב-Staging
  • Background Jobs Monitor
    • סקירה כללית
    • רכיבים וקוד רלוונטי
    • מסד נתונים
      • קולקציה: job_runs
      • פיוס הרצות יתומות
    • UI / WebApp
      • גישה לדשבורד
      • מה רואים בדשבורד
      • Jobs סטטיים vs. דינמיים
    • API Reference
      • GET /api/jobs
      • GET /api/jobs/active
      • GET /api/jobs/{job_id}
      • GET /api/jobs/runs/{run_id}
      • POST /api/jobs/{job_id}/trigger
    • אבטחה
      • הגנה על ה-API
    • ENV וקונפיגורציה
      • משתני סביבה
    • ChatOps – פקודת /jobs
      • פקודות זמינות
      • דוגמאות
    • Alerts
      • הגדרות ב-alerts.yml
      • Flow של Alerts
    • Troubleshooting
      • ”הטריגר לא עובד“
      • ”אין jobs דינמיים בדשבורד“
      • ”לא מגיעים Alerts“
      • ”Job תקוע אבל אין התראה“
      • ”השרת מחזיר 401/403“
      • ”לוגים ריקים בדשבורד“
    • Best Practices
    • ראו גם
  • 📡 Observability Dashboard & API
    • 🖥️ סקירת הממשק /admin/observability
      • חלוקת הדף
      • יכולות סינון
      • מקרא ו־UI
      • 🤖 הסבר AI להתראות
    • 📚 API Reference
      • פרמטרי זמן משותפים
      • GET /api/observability/alerts
        • Meta מועשר להתראות High Error Rate
      • GET /api/observability/aggregations
      • GET /api/observability/timeseries
      • GET /api/observability/replay
      • Runbooks דינמיים + Quick Fix
      • GET /api/observability/export
      • POST /api/observability/quickfix/track
      • POST /api/observability/alerts/ai_explain
    • 🔐 אבטחה, Rate Limiting וקאש
    • 🔌 אינטגרציות ודוגמאות שימוש
      • Grafana / BI
      • Slack / On-call Bot
      • שילוב עם Config Radar
      • רפרנס ל־README
    • ✔️ מה הלאה?
  • Query Performance Profiler
    • Overview
      • קהל יעד
      • מה הכלי לא עושה
    • ממשק משתמש (WebApp)
      • הנתיב
      • איך להגיע
      • מה רואים בדשבורד
    • API Reference
      • Authentication
      • Endpoints
        • GET /api/profiler/summary
        • GET /api/profiler/slow-queries
        • GET /api/profiler/patterns
        • ערכים אמיתיים לשאילתות שלך (query_raw)
        • POST /api/profiler/explain
        • POST /api/profiler/recommendations
        • GET /api/profiler/collection/<name>/stats
    • Security
      • Authentication
      • הגדרת Token
    • אזהרת Observer Effect
    • Privacy / PII
    • Persistence
      • Collection
      • TTL Index
      • אינדקסים נוספים
    • Metrics (Prometheus)
    • Environment Variables
    • המלצות אופטימיזציה נפוצות
    • קישורים נוספים
  • 🧠 Quick Fix חכם (Queue Delay + עומס/DB) – הנחיות למפתחים ולסוכני AI
    • איפה זה מופיע
    • מקור אמת: איפה החוקים חיים
    • טבלת החלטה (Latency / Slow Response)
    • אילו שדות אנחנו משתמשים בהם (סכמת נתונים)
      • אותות עיקריים
      • עומס ומשאבים
      • “DB Pool utilization”
    • עקרונות Safety (חשוב)
    • איך להוסיף/לשנות חוק (צ’קליסט למפתחים ול‑AI)
    • הערות לסוכני AI (איך לעבוד נכון)
  • Asyncio תחת WSGI: הרצת קורוטינות בבטחה
    • רקע קצר
    • התסמינים
    • למה ה-fallback ל-thread לא עוזר
    • הכיוון הנכון
    • Checklist לפני דיפלוי
    • איך בודקים את זה
  • Visual Rule Engine - מנוע כללים ויזואלי
    • סקירה כללית
    • זרימת ההחלטה
    • UI Walkthrough
      • גישה למסך הכללים
      • יצירת כלל חדש
      • הפעלה/כיבוי כלל
      • מחיקת כלל
    • מבנה הכלל (JSON Schema)
      • שדות הכלל
      • דוגמה 1: כלל פשוט (Suppress)
      • דוגמה 2: כלל עם Group (AND)
      • דוגמה 3: OR עם NOT פנימי
      • דוגמה 4: GitHub Issue לשגיאות Sentry חדשות
    • פעולות (Actions)
      • suppress
      • send_alert
      • create_github_issue
      • webhook
    • Evaluation Context - שדות זמינים
      • שדות בסיסיים מההתראה
      • שדות מ-details
      • שדות מדדים
      • שדות זמן (מחושבים)
    • אופרטורים
    • אבטחה
      • הרשאות אדמין
      • Webhook SSRF Protection
    • הסימולטור
    • משתני סביבה
    • פתרון בעיות
      • ”הכלל לא רץ“
      • ”webhook נחסם“
      • ”is_new_error תמיד False“
      • ”GitHub Issue לא נוצר“
    • Test Plan
    • API Reference
    • קישורים
  • Coverage Report (Runbooks / Quick Fixes)
    • מטרה
    • מקור האמת (Catalog / Registry)
    • הגדרות כיסוי (Matching)
      • Runbooks
      • Quick Fixes
    • מה מוצג בדוח
    • API
  • 🧠 Observability AI Explain API
    • 🔐 אימות ובקרות
    • 📥 בקשה (POST /api/ai/explain)
    • 📤 תגובה מוצלחת (200 OK)
    • ❗ קודי שגיאה
    • ⚙️ קונפיגורציה נדרשת
    • 🧪 בדיקות
    • 📝 טיפים לפריסה
  • Rate Limiting
    • Shadow Mode
    • Soft‑Warning (80%)
    • Admin Bypass
    • Monitoring
    • Troubleshooting
    • קישורים
  • 📊 הנחיות Observability ואירועים
    • תבנית אירוע/לוג – שדות חובה
    • עקרון Fail-Open
    • הנחיות טיפול בשגיאות
    • קורלציה עם request_id
    • סטנדרטים נוספים
  • סכמת לוגים
    • שדות חובה
    • שדות מומלצים
    • דוגמה
    • דגימה (Sampling)
      • מה אומר היעדר של שורה
    • פרטיות
    • טקסונומיית שגיאות (Error codes)
  • מדדים (Metrics)
    • נקודת קצה
    • מטריקות קיימות
    • מדדי CodeBot ייעודיים (Handlers/Commands/DB)
    • מטריקות OpenTelemetry (אם זמינות)
    • דוגמאות PromQL
    • Tracing ב-Grafana
    • SLO/SLI לדוגמה
    • התראות (Prometheus alerting rules)
  • Resilience לשירותים חיצוניים
    • למה שכבה מרוכזת?
    • איך זה עובד?
    • דיאגרמת טיפול בשגיאות
    • קונפיגורציה חשובה (ENV)
    • טיפ
    • שימוש בקוד
    • ראו גם
  • התראות (Alerts)
    • סקירה מהירה
    • חוקי ברירת המחדל
    • התאמה לצרכים שלך
    • מדדי Health ו-Startup ל-Prometheus
    • קונפיגורציית alert_manager באפליקציה
    • טעינת שינויים
    • בדיקת הזרימה בקצה השני
    • טיפים אחרונים
    • ראו גם
    • התראות מערכת – דיסק כמעט מלא
  • התראות מבוססות לוגים (Log‑based Alerts)
    • מה זה ולמה
    • הרכיבים בקוד
    • קבצי קונפיג
      • דוגמה מינימלית: config/error_signatures.yml
      • דוגמה מינימלית: config/alerts.yml
    • Option B – חיבור בתוך הקוד (מומש)
      • משתני סביבה
    • Option A – Sidecar מזרם לוגים
    • ספים וקיבוץ – ברירות מחדל
    • אסטרטגיית fingerprint וקנוניקליזציה
    • צ’קליסט למפתחים
    • בדיקה מקומית (סימולציה)
    • הנחיות לסוכני AI
    • אבטחה ופרטיות
    • Rollout מומלץ
    • Troubleshooting
    • ראו גם
    • קישורים לקוד
    • טקסונומיית שגיאות וחתימות
      • תרשים זרימה מקוצר
    • תצוגה ב‑ChatOps
      • פלט לדוגמה (Placeholder)
    • קריאת המשך – classify_error()
  • מנוע ניתוח לוגים (Log Event Aggregator)
    • ארכיטקטורה
    • קונפיגורציה וקבצים
    • הרצת CLI מקומית
    • שילוב במערכת
    • עבודה בטוחה
    • ניפוי תקלות נפוץ
  • Sentry
    • הפעלה (משתני סביבה)
    • התראות ל־Telegram וללוח Observability
      • איפה להגדיר משתנים
      • מה צריך כדי שזה יופיע בלוח Observability
      • מה צריך כדי שזה יישלח לטלגרם
      • Polling – משתנים רלוונטיים
      • Webhook – אבטחה ודה-דופליקציה
    • עקרונות
  • Incident Checklist (On‑Call)
    • בעת פתיחת Incident
    • סטטוסי מעקב אחידים
    • קישורים
  • שינוי רמות לוגים
    • מתי להעלות ל-DEBUG
    • טיפ
  • GitHub Backup & Restore Runbook
    • דרישות מקדימות
    • יצירת נקודת גיבוי (Checkpoint Tag)
    • יצירת ארכיון ZIP
    • שחזור – בדיקה מקומית
    • שחזור מלא לפרודקשן (זהירות!)
    • שחזור קבצים/תיקיות נקודתיים
    • טיפים ובטיחות
    • קישורים
  • Runbooks – SLO Incidents
    • HighErrorRate
    • SLOAvailabilityBreach (זמינות < 99.9%)
    • SLOLatencyP95Breach (P95 > 0.5s)
    • תקלת התחברות ל‑DB (MongoDB) – קריטי
      • סימפטומים
      • סדר פעולות (בקצרה)
    • איטיות/נפילה של שירות חיצוני – בינוני
      • סימפטומים
      • סדר פעולות
    • באג אחרי Deploy / Release – משתנה
      • סדר פעולות
    • דשבורד

פריסה ו-Workers

  • עובדי Push
    • דרישות מוקדמות
    • מסלול מקומי (pywebpush)
      • תקרת זמן למסירה מקומית
    • Node Push Worker (/push_worker)
    • חיבור ל-WebApp (webapp/push_api.py)
    • מי שולח את התזכורות, ומתי
    • המקור השני: כתיבה שהגיעה מ-MCP
    • המקור השלישי: תגובה של סוכן על פתק
    • צד הלקוח
    • בדיקות ועצות

ChatOps

  • ChatOps – סקירה כללית
    • עקרונות
    • קישורים
  • פקודות ChatOps
    • כרטיסיות חיפוש (Ctrl/Cmd+K)
    • /status
    • /health
    • /uptime
    • /system_info
    • /check commands
    • /metrics
    • /observe
    • /observe -v (מפורט)
    • /observe -vv (מפורט מאוד)
    • /errors
      • סטטוסי תוצאות (Mappings)
    • /alerts
    • /jobs
    • /incidents
    • /triage
    • /predict
    • /accuracy
    • /rate_limit
    • /enable_backoff
    • /disable_backoff
    • /sen
    • /lang
    • /lang_debug
    • /dm
    • /ban
    • /unban
    • /blocked
    • /silence
    • /unsilence
    • /silences
    • /cache_stats
    • /clear_cache
    • /cache_warm
    • /cache_clear_stale
    • /debug_cache
    • /status_worker
    • /version_history
  • ChatOps – /observe: הרחבות -v ו- -vv
    • תחביר ופרמטרים
    • דוגמאות
    • פלט לדוגמה – ‎-v
    • פלט לדוגמה – ‎-vv
    • הערות שימוש
    • קישורים רלוונטיים
  • הגבלת קצב לפקודות רגישות
    • עקרונות מרכזיים
    • שימוש בדקורטור
    • קונפיגורציה
    • שילוב בבוט
    • Autodoc
  • Playbooks – תרחישים נפוצים
    • p95 Latency עלה מעל הסף
    • Error Rate > 1%
    • Memory Usage מטפס
    • שירות חיצוני איטי
    • Repeated Incident תחת 15 דק«
  • הרשאות ו-Rate Limit
  • פתרון תקלות (FAQ)
  • שאלות נפוצות

סוכני AI:

  • 🤖 מדריך לסוכני AI
    • נקודת פתיחה מהירה
    • מבנה הפרויקט (בקצרה)
    • הוספת פיצ’רים
    • סקריפטים חשובים
    • מפת דרכים
    • GitHub Issues ו-ChatOps
  • 🚦 מערכת Rate Limiting לסוכני AI ולווב
    • אסטרטגיה – Shadow Mode תחילה
    • משתני סביבה וקונפיג
    • אינטגרציה – בוט טלגרם
    • אינטגרציה – Flask/WebApp
    • החרגות חשובות
    • ניטור ומדדים (Prometheus)
    • אבטחה והגנות
    • קונפיגורציה (Pydantic Settings)
    • תקלות נפוצות
    • קישורים

Observability – Advanced

  • קטלוג אירועים קנוניים
    • GitHub
    • DB
    • Metrics (DB)
    • Web/Share
    • Alerts
    • Web Push
    • Jobs
    • מילוי ה-mirrors בעליית הוובאפ
    • Google Drive
    • אינדקס התיעוד
    • פתקים דביקים
    • Repo Analyzer
    • Business
  • מילון קודי שגיאה (Error Codes)
    • דוגמאות מיפוי
    • הנחיות
  • Tracing ממוקד בנקודות חמות
    • תרשימי זרימה
      • זרימת bot.update
        • מאפיינים מומלצים ל‑Spans (bot.update)
      • זרימת web.request
        • מאפיינים מומלצים ל‑Spans (web.request)
    • טבלת ”היכן עוטפים“
    • דוגמת Trace Viewer
    • הטמעת דקורטור ושימוש בפונקציות עזר
    • Best Practices
    • ראו גם
  • שאילתות PromQL שימושיות
    • זמן תגובה (Latency)
    • שיעור שגיאות
    • אירועי ביזנס
  • Playbook קצר להתראות
    • זרימה
    • דיאגרמת מערכת התראות חכמות
    • קישורים בקוד
    • דגשים
    • כיוונון רעש
    • טיפים מהירים
Code Keeper Bot
  • גלריית צילומי המסך (/gallery)
  • הצגת מקור הדף
הקודם הבא

גלריית צילומי המסך (/gallery)

עמוד ציבורי, בלי התחברות, שמראה איך המוצר נראה: צילום אחד בכל פעם על כל רוחב המסך, ומתחתיו כותרת, משפט הסבר, ”הקודם“ ו“הבא“, מונה ”X מתוך N“, וקישור לעורך הציבורי (העורך הציבורי (/markdown-editor)). נועד לקישור מפוסטים, מה-README ומהיועץ בבוט. הראוט הוא gallery ב-webapp/app.py, והתבנית webapp/templates/gallery.html.

הצילומים והכיתובים

  • הרשימה במקום אחד. הצילומים, הסדר והכיתובים ב-GALLERY_SLIDES ב-webapp/gallery.py — שורה לכל צילום: image (שם הקובץ), title, desc ו-alt. alt מתאר את מה שרואים בתמונה, לקורא מסך ולמי שהתמונה לא נטענה אצלו, ואינו חוזר על הכותרת.

  • הקבצים ב-webapp/static/gallery/: WebP לכל צילום, ולצידו JPEG אחד — תמונת התצוגה המקדימה של הקישור. tests/test_gallery_page.py נופל על קובץ שאין לו שורה ברשימה, ועל שורה שאין לה קובץ.

  • תמונת התצוגה המקדימה (og:image) היא JPEG של הצילום הראשון ברשימה, בקובץ נפרד באותו שם (share_image ב-webapp/gallery.py), ב-SHARE_SIZE ומתחת ל-SHARE_MAX_BYTES (שניהם ב-scripts/build_gallery_image.py).

החלפה או הוספה של צילום

  1. מכינים את הקובץ מצילום המסך המקורי עם scripts/build_gallery_image.py. הסקריפט חותך מלמעלה ומלמטה (--top / --bottom), מקטין ל-MAX_WIDTH לכל היותר, ושומר WebP בדחיסה אחת מהמקור, בלי המטא-דאטה של המכשיר. את מספר הפיקסלים לחיתוך מודדים מהקובץ עצמו: למעלה שורת הסטטוס של המכשיר ושורת הכרטיסיות של הדפדפן, ולמטה סרגל הניווט של המערכת, כשהוא בצילום. צילום בלי שורת סטטוס מתחיל ישר בכרטיסיות, ולכן החיתוך שלו קטן יותר.

  2. כשהצילום עומד ראשון ברשימה, מריצים עם --share: הסקריפט שומר גם את ה-JPEG לתצוגה המקדימה. הצילום נחתך ליחס של SHARE_SIZE בלי מתיחה — הרוחב מהמרכז והגובה מלמטה, כך ששורת הכתובת שבראשו נשארת — והסקריפט נכשל לפני שהוא כותב משהו כשהתמונה יוצאת מעל SHARE_MAX_BYTES.

  3. מעדכנים או מוסיפים את השורה ב-GALLERY_SLIDES.

  4. כשהשם השתנה, מוחקים את הקובץ הישן מהתיקייה (וכשהצילום הראשון התחלף, גם את ה-JPEG הקודם).

צילומי המקור אינם נשמרים בענף הראשי.

המעבר בין הצילומים

  • כתובת לכל צילום. /gallery#3 פותח ישר את הצילום השלישי, בלי שהראשון יופיע לפניו. המעבר מעדכן את הכתובת ב-history.replaceState, כך שלא נוצרת רשומה בהיסטוריה לכל צילום, ו“אחורה“ יוצא מהגלריה.

  • כיוון. בכפתורים, בחיצים במקלדת ובהחלקה, ה“הבא“ הוא הצילום שמשמאל, כמו בכל פריסה מימין לשמאל: חץ שמאלה, והזזת האצבע ימינה. הכיוון נגזר מ-direction של העמוד ולא מוקשח. overscroll-behavior-x: none על html ועל body נדרש כדי שהחלקה לרוחב לא תתפרש בכרומיום כמחוות ”אחורה“ של הדפדפן.

  • זום. הגדלה בשתי אצבעות היא הזום של הדפדפן עצמו, וכל עוד העמוד מוגדל (visualViewport.scale), גרירה באצבע אחת מזיזה את התצוגה ולא מחליפה צילום. לחיצה על התמונה פותחת אותה בגודל מלא.

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

שיתוף, cache ומגבלת קצב

  • תגיות השיתוף. תגיות ה-og: נותנות לקישור כותרת, תיאור ותמונה בוואטסאפ ובטלגרם. og:url ו-og:image בכתובת מלאה (_webapp_base_url ב-webapp/app.py), כי העמוד של וואטסאפ על תצוגה מקדימה (https://developers.facebook.com/documentation/business-messaging/whatsapp/link-previews/) דורש כתובת מלאה. התמונה היא ה-JPEG שבסעיף הקודם, ו-tests/test_gallery_page.py בודק שהיא בגודל SHARE_SIZE ולא מעל SHARE_MAX_BYTES.

  • Cache. כל כתובת של תמונה נושאת ?v={{ static_version }}, כי SEND_FILE_MAX_AGE_DEFAULT שומר סטטיקה בדפדפן לזמן ארוך — בלעדיו צילום שהוחלף באותו שם לא היה מגיע למבקרים.

  • מגבלת קצב. הראוט פטור מהמגבלה הגורפת, כמו /: המפתח של המגביל הוא ה-IP, וקישור שמתפרסם בקבוצה מביא מבקרים רבים, חלקם מאחורי אותה כתובת. התמונות מוגשות מ-static, ש-Flask-Limiter לא סופר.

הקודם הבא

© Copyright 2026, Development Team.

נבנה עם Sphinx, עם ערכת עיצוב של Read the Docs.