Skip to content

feat: קריאת טווח שורות מקבלת תקרה משלה (10MB) במקום ה-500KB - #3320

Merged
amirbiron merged 2 commits into
mainfrom
claude/posthog-mcp-analytics-setup-jplx79
Sep 2, 2026
Merged

amirbiron merged 2 commits into
mainfrom
claude/posthog-mcp-analytics-setup-jplx79

Conversation

@amirbiron

@amirbiron amirbiron commented Sep 2, 2026 •

Copy link
Copy Markdown
Owner

✨ תיאור קצר

codekeeper_get_repo_file סירב לכל קובץ מעל 500KB, עם lines ובלעדיו, כי בדיקת הגודל רצה ב-get_file_at_commit לפני שהתוכן מפוענח ונחתך. webapp/app.py בן 805,594 הבייטים — הקובץ שהכי הרבה עובדים עליו כאן — היה פשוט בלתי קריא דרך הכלי.

מעכשיו קריאת טווח נשפטת מול תקרה משלה. סוגר את #3317.

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

📦 שינויים עיקריים

  • קוד (Backend)
  • בוט טלגרם
  • מסד נתונים/מיגרציות
  • תיעוד (docs/, README, מחרוזת התיאור)
  • DevOps/CI/CD

איך זה מומש — הדרך הפשוטה מהאישו

max_size כבר היה פרמטר של get_file_at_commit עם ברירת מחדל. אז השינוי כולו יושב ב-mcp_server/repo_backend.get_file:

size_kwargs = {"max_size": RANGE_READ_MAX_BYTES} if lines is not None else {}

בלי lines הפרמטר לא מועבר כלל, כך שברירת המחדל של שירות המראה נשארת מקור האמת היחיד ל-500KB ולא נוצר מספר שני שצריך לסנכרן. services/git_mirror_service.py לא נגע, webapp/routes/repo_browser.py לא נגע, והעוזר המשותף שחותך את הטווח נשאר במקומו — כלומר האינווריאנטה מ-#3316, ששני הכלים חולקים סמנטיקה מדויקת, מוחזקת.

למה תקרה אחרת ולא ביטול

הבלוב עדיין נקרא ומפוענח במלואו לפני החיתוך — זה בדיוק מה שמדדתי באישו. "בלי תקרה" פירושו שקובץ פתולוגי בריפו יגיע ל-RAM כמו שהוא.

קובץ גודל שיא זיכרון
webapp/app.py 0.8MB 5.5MB
md_preview.bundle.js 6.6MB 35.7MB

קריאה ופענוח עולים בערך פי שלושה מגודל הקובץ. 10MB חוסמים את השיא סביב 30MB, ונותנים פי 12 מרווח מעל הקובץ הגדול ביותר שבאמת קוראים (app.py). המספר הזה הוא החלטת מדיניות של שכבת ה-MCP — לכן הוא ב-repo_backend ולא בשירות המראה, והוא שינוי של שורה אחת אם תרצה אחרת.

ולידציית הטווח עברה לפני הקריאה

הרמת התקרה הפכה את זה לעלות אמיתית: טווח פגום כמו [9, 2] היה גורם לקריאה ולפענוח של עד 10MB רק כדי להיפסל בסוף. כשהתקרה הייתה 500KB זה לא היה משנה, כי קובץ גדול נפסל ממילא. הבדיקה טהורה וזולה, אז היא רצה ראשונה — וזה חלק מהשינוי, לא שיפור נפרד.

🧪 בדיקות

  • אימות מול mirror אמיתי (git clone --mirror של הריפו הזה), ולא מול דמה:
    • webapp/app.py עם lines=[5431, 5436] ← status: ok, total_lines: 20036, התוכן נכון
    • אותו קובץ בלי lines ← status: too_large, max: 512000
    • md_preview.bundle.js.map (11.7MB) עם lines ← too_large, max: 10485760
    • קובץ בינארי עם lines ← status: binary, מטא-דאטה בלבד
    • שיא זיכרון לקריאת טווח מ-app.py: 5.4MB
  • חמישה טסטים חדשים ב-tests/test_mcp_additive_params.py, עם דמה שרושמת את max_size שהועבר בפועל
  • מוטציה — חמש, כולן הפילו את מה שנועדו:
    1. לא מעבירים max_size כלל (חזרה למצב שב-קבצים מעל 500KB אינם נקראים דרך ה-MCP כלל — גם לא בקריאת טווח שורות #3317)
    2. מעבירים את התקרה תמיד — שובר את הקריאה המלאה ואת הוובאפ
    3. ביטול התקרה במקום החלפתה
    4. ולידציית הטווח חוזרת לרוץ אחרי הקריאה
    5. התיאור מזכיר תקרה אחת במקום שתיים
  • tests/test_mcp_*.py — 528 עוברים, אפס נופלים
  • ⚠️ flake8 אינו מותקן בקונטיינר הזה. הרצתי py_compile ואורך שורות מול max-line-length=120

ובדרך תפסתי טסט שלי ששיקר: קראתי לו ..._before_the_cap_is_lifted בזמן שהקובץ כן נקרא ורק אחר כך הטווח נפסל. mirror.calls == [] הוא מה שהפך את ההבטחה לבדיקה.

🧪 בדיקות נדרשות ב‑PR

  • 🔍 Code Quality & Security
  • Unit Tests (3.11)
  • Unit Tests (3.12)

📝 סוג שינוי

  • feat: פיצ'ר חדש

✅ צ'קליסט

  • הקוד עוקב אחרי הסגנון
  • בדיקות רצות ועוברות
  • תיעוד עודכן — docs/mcp-server.rst (הסייג בסעיף mcp-line-range אמר את ההפך ותוקן; טבלת הכלים), mcp_server/README.md, ומחרוזת התיאור של הכלי
  • לא נוספו ג'ובים חדשים
  • לא נוספו משתני סביבה
  • אין סודות/מפתחות בקוד
  • אין מחיקות מסוכנות
  • הודעת הקומיט תואמת Conventional Commits
  • עיינתי במסמכי אתר התיעוד — docs/mcp-server.rst, סעיפים mcp-line-range וטבלת הכלים

🧩 השפעות/סיכונים

קריאה קיימת אינה משתנה. בלי lines ההתנהגות זהה בבייט, ולוובאפ אין שום שינוי — יש על שניהם טסט.

קריאת טווח מקובץ גדול צורכת עכשיו עד ~30MB שיא רגעי במקום להיכשל מיד. בשירות שמשרת משתמש אחד זה זניח, וזו בדיוק ההחלטה שהתקבלה באישו אחרי שהמספרים נמדדו.

לקוח MCP שהיה מחובר לפני הדיפלוי לא יראה את התיאור החדש עד שיתחבר מחדש — אבל ההתנהגות תעבוד לו בכל מקרה.

🧯 סיכון / החזרה לאחור (Rollback)

revert של הקומיטים מחזיר את המצב במלואו. אין מיגרציה ואין שינוי מצב מתמשך. ולחלופין, RANGE_READ_MAX_BYTES = 512_000 מחזיר את ההתנהגות הישנה בשורה אחת.

🔗 קישורים


🤖 Generated with Claude Code

https://claude.ai/code/session_0154RpRM1aCgLXCwUqDgywYp

… cap

codekeeper_get_repo_file opened with "(max 500KB; binary files return
metadata only)" and, two sentences later, "read only that range instead
of the whole file". Read together those say the range is how you handle a
file that is too big. It is not: the size check runs in
get_file_at_commit before the content is decoded and sliced, so a file
over the cap returns too_large with lines just as without it.

That mattered more here than in prose, because this string is what the
agent reads to decide how to call the tool. An agent that got too_large
had the lines sentence sitting in the same paragraph and would plausibly
retry with a range, spending a second call on the identical answer.

The cap now closes the description instead of opening it, so it reads as
a constraint on the tool rather than as context for the range. Reordering
alone still leaves the inference available, so the limit now says out
loud that it applies to the file and not to the range.

docs/mcp-server.rst already carried this caveat in the mcp-line-range
section. It was missing only where the agent looks, which is the half
that acts on it.

Verified by mutation: restoring the old order fails, and reordering
without the explicit sentence fails too.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154RpRM1aCgLXCwUqDgywYp
@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @amirbiron, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 1 day and 15 hours by commenting @sourcery-ai review. Upgrade to get a review now.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

🧯 Dangerous deletes guard report

Policy: see .cursorrules — dangerous deletions are blocked unless wrapped safely.

Summary:

  • Flagged findings (blocking): 0
    0
  • Excluded matches (not blocking): 15
  • Total matches (all files): 129

Flagged findings (file:line:snippet):
(none)

Excluded matches (by path pattern)
./webapp/static/js/md_preview.bundle.js.map:4:  "sourcesContent": ["// Markdown-it plugin to render GitHub-style task lists; see\n//\n// https://github.com/blog/1375-task-lists-in-gfm-issues-pulls-comments\n// https://github.com/blog/1825-t … [truncated]
./README.md:842:find . -name "__pycache__" -exec rm -rf {} +
./docs/DOCUMENTATION_GUIDE.md:453:rm -rf _build
./docs/Makefile:24:	rm -rf $(BUILDDIR)
./Dockerfile:42:    rm -rf /var/lib/apt/lists/*
./Dockerfile:121:    rm -rf /var/lib/apt/lists/*
./node_modules/katex/src/fonts/Makefile:139:	rm -rf pfa ff otf ttf woff woff2
./node_modules/katex/package.json:153:    "build": "rimraf dist/ && mkdirp dist && cp README.md dist && rollup -c --failAfterWarnings && webpack && node update-sri.js package dist/README.md",
./node_modules/mermaid/dist/mermaid.js.map:4:  "sourcesContent": ["/**\n* Default values for dimensions\n*/\nconst defaultIconDimensions = Object.freeze({\n\tleft: 0,\n\ttop: 0,\n\twidth: 16,\n\theight: 16\n});\n/**\n* Default values for tr … [truncated]
./node_modules/mermaid/dist/mermaid.min.js:1524:`,"getStyles"),c1e=RQe});var h1e={};dr(h1e,{diagram:()=>NQe});var NQe,f1e=N(()=>{"use strict";$ge();a1e();l1e();u1e();NQe={parser:Fge,db:n1e,renderer:o1e,styles:c1e}});var m1e,g1e=N(()=>{"use  … [truncated]
./node_modules/mermaid/dist/chunks/mermaid.esm/chunk-2M32CCKP.mjs.map:4:  "sourcesContent": ["{\n  \"name\": \"mermaid\",\n  \"version\": \"11.12.0\",\n  \"description\": \"Markdown-ish syntax for generating flowcharts, mindmaps, sequence d … [truncated]
./node_modules/mermaid/dist/chunks/mermaid.core/chunk-KS23V3DP.mjs.map:4:  "sourcesContent": ["{\n  \"name\": \"mermaid\",\n  \"version\": \"11.12.0\",\n  \"description\": \"Markdown-ish syntax for generating flowcharts, mindmaps, sequence  … [truncated]
./node_modules/mermaid/dist/chunks/mermaid.esm.min/chunk-4HFYJGYH.mjs.map:4:  "sourcesContent": ["{\n  \"name\": \"mermaid\",\n  \"version\": \"11.12.0\",\n  \"description\": \"Markdown-ish syntax for generating flowcharts, mindmaps, sequen … [truncated]
./node_modules/mermaid/dist/chunks/mermaid.esm.min/chunk-4HFYJGYH.mjs:1:var r={name:"mermaid",version:"11.12.0",description:"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graph … [truncated]
./node_modules/mermaid/dist/mermaid.min.js.map:4:  "sourcesContent": ["/**\n* Default values for dimensions\n*/\nconst defaultIconDimensions = Object.freeze({\n\tleft: 0,\n\ttop: 0,\n\twidth: 16,\n\theight: 16\n});\n/**\n* Default values fo … [truncated]

@sourcery-ai

sourcery-ai Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Reviewer's Guide

Updates the runtime MCP tool description to explicitly distinguish file-size enforcement from line-range reads, and adds a regression test covering both ordering and wording without changing tool behavior.

File-Level Changes

Change Details Files
Clarify the MCP tool description so line ranges cannot be mistaken for a way to bypass the file-size limit.
  • Move the 500KB and binary-file caveat after the range behavior explanation.
  • Explicitly state that files over 500KB return too_large even when lines is supplied.
  • Preserve the existing sync and range semantics while changing documentation only.
mcp_server/server.py
Add a regression test that validates the assembled runtime tool description contains both required clarifications.
  • Build the MCP server and inspect the description through _tool_manager.
  • Assert the size-limit wording follows the range explanation.
  • Assert the explicit non-bypass statement and binary-file caveat are present.
tests/test_mcp_server_build.py

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai

coderabbitai Bot commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 74a163d8-933f-406d-a73d-148c826d4195

📥 Commits

Reviewing files that changed from the base of the PR and between aca7599 and a5e8f18.

📒 Files selected for processing (2)
  • mcp_server/server.py
  • tests/test_mcp_server_build.py

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

התיאור של codekeeper_get_repo_file מבהיר שמגבלת 500KB חלה על הקובץ ולא על הטווח. נוסף טסט שבודק את ניסוח התיאור ואת התנהגות התיעוד לגבי קבצים בינאריים.

Changes

תיאור codekeeper_get_repo_file

Layer / File(s) Summary
עדכון התיאור ואימות הניסוח
mcp_server/server.py, tests/test_mcp_server_build.py
התיאור מציין שמגבלת 500KB חלה גם כאשר מועבר lines. התיאור מציין שקבצים בינאריים מחזירים מטא-דאטה בלבד. הטסט בודק את סדר המשפטים ואת ההבהרות. Claude Code ביצע את שינוי הניסוח ואת בדיקת האימות.

Estimated code review effort: 1 (Trivial) | ~5 דקות

Merge Risk: ⚪ Minimal · up to a5e8f

This localized documentation change clarifies that ranged reads do not bypass the 500KB file limit and does not alter tool behavior, data, or deployment. No actionable merge-blocking risk remains beyond normal checks and review.

Poem

תיאור מדויק עומד בשורה
500KB נשאר גבול ברור
lines אינו עוקף את הקיר
בינארי מחזיר מטא-דאטה בלבד
Claude Code קידד, והטסט מאיר
CodeKeeper forever 💫

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning הכותרת מתארת שינוי התנהגותי שבו תקרת הטווח היא 10MB. לפי מטרות ה-PR, השינוי בפועל מוגבל לעדכון תיאור הכלי ולהוספת טסט, ללא שינוי ב-backend או בחוזה הכלי. יש לעדכן את הכותרת כך שתתאר את שינוי התיעוד והטסט, לדוגמה: "docs: הבהרת מגבלת 500KB ב-codekeeper_get_repo_file".
✅ Passed checks (4 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed התיאור מפורט ורלוונטי וכולל סיכום, שינויים עיקריים, בדיקות, סיכונים, קישורי הקשר ותוכנית rollback. הוא אינו מסמן במפורש שהבדיקות הנדרשות ב-PR הושלמו, אך התיאור עדיין עומד בדרישה להיות ברובו שלם.
  • Fix all pre-merge checks with AI
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/posthog-mcp-analytics-setup-jplx79

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor

⏱️ Performance report

(No performance test durations collected. Mark tests with @pytest.mark.performance.)

@github-actions

github-actions Bot commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor

📖 Documentation Preview

The documentation has been built successfully!

To view locally:

  1. Download the artifacts
  2. Extract the zip file
  3. Open index.html in your browser

@codecov

codecov Bot commented Sep 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 2 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="tests/test_mcp_server_build.py">

<violation number="1" location="tests/test_mcp_server_build.py:373">
P3: This test reads the description through the private `mcp._tool_manager` attribute, unlike every other test in the file which uses the public `await mcp.list_tools()`. The admin repo tool is filtered out of `list_tools()` in the fail-closed non-admin context, which is why the private API was used. Prefer the public path used elsewhere (e.g. set `mcp._request_is_admin = lambda: True` then `await mcp.list_tools()` as `test_repo_tools_visible_to_admin` does) to avoid coupling the test to FastMCP's internal `_tool_manager`.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

``mcp-line-range``). הוא חסר היה בדיוק במקום שהסוכן קורא.
"""
mcp = build_mcp(_FakeBackend(), repo_backend=_FakeRepoBackend())
description = mcp._tool_manager.get_tool("codekeeper_get_repo_file").description

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: This test reads the description through the private mcp._tool_manager attribute, unlike every other test in the file which uses the public await mcp.list_tools(). The admin repo tool is filtered out of list_tools() in the fail-closed non-admin context, which is why the private API was used. Prefer the public path used elsewhere (e.g. set mcp._request_is_admin = lambda: True then await mcp.list_tools() as test_repo_tools_visible_to_admin does) to avoid coupling the test to FastMCP's internal _tool_manager.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At tests/test_mcp_server_build.py, line 373:

<comment>This test reads the description through the private `mcp._tool_manager` attribute, unlike every other test in the file which uses the public `await mcp.list_tools()`. The admin repo tool is filtered out of `list_tools()` in the fail-closed non-admin context, which is why the private API was used. Prefer the public path used elsewhere (e.g. set `mcp._request_is_admin = lambda: True` then `await mcp.list_tools()` as `test_repo_tools_visible_to_admin` does) to avoid coupling the test to FastMCP's internal `_tool_manager`.</comment>

<file context>
@@ -352,3 +352,26 @@ async def test_save_file_description_matches_what_the_tool_actually_does():
+    ``mcp-line-range``). הוא חסר היה בדיוק במקום שהסוכן קורא.
+    """
+    mcp = build_mcp(_FakeBackend(), repo_backend=_FakeRepoBackend())
+    description = mcp._tool_manager.get_tool("codekeeper_get_repo_file").description
+
+    assert description.index("500KB") > description.index("lines=[start, end]")
</file context>

… one

codekeeper_get_repo_file refused any file over 500KB, lines or not,
because the size check runs in get_file_at_commit before the content is
decoded and sliced. webapp/app.py at 805,594 bytes — the file most worked
on in this repo — was simply unreadable through the tool (#3317).

A range read is judged against its own ceiling now. The whole-file path
is untouched: max_size is passed only when lines is given, so the mirror
service default stays the single source of truth for 500KB and the webapp
caller keeps the behaviour it has today.

The ceiling is replaced, not removed. The blob is still read and decoded
whole before slicing, so "no limit" would put a pathological file in RAM
as-is; measured, read plus decode costs about three times the file size,
so 10MB bounds the peak near 30MB while leaving twelve times the headroom
over the largest file anyone actually reads. That number is MCP-layer
policy, which is why it lives in repo_backend rather than in the mirror
service.

Raising the ceiling also made range validation worth moving. It used to
run after the read, which cost nothing when a large file was refused
anyway; now a malformed range like [9, 2] would read and decode up to
10MB before being rejected. The check is pure and cheap, so it runs
first.

The description and the docs both said the opposite of this and are
corrected. They now name both ceilings rather than one, because an agent
that gets too_large needs to know whether lines will help it or whether
the file is past every limit.

Verified against a real mirror: webapp/app.py returns the requested lines
and still returns too_large without them; the 11.7MB source map is
refused with max reporting the ceiling that judged it. Five mutations
fail, including passing the ceiling always, removing it entirely, and
moving validation back after the read.

Closes #3317

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154RpRM1aCgLXCwUqDgywYp
@amirbiron amirbiron changed the title docs: התיאור של get_repo_file הפסיק לרמוז שקריאת טווח עוקפת את מגבלת הגודל feat: קריאת טווח שורות מקבלת תקרה משלה (10MB) במקום ה-500KB Sep 2, 2026
@amirbiron
amirbiron merged commit fa79512 into main Sep 2, 2026
29 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants