# תוכנית עבודה — תמונ״ך מגרסה 2.10.0 לגרסה 3.0.0

נכתב: ג׳ באב תשפ״ו (03/08/2026) · על בסיס בדיקה בפועל של `com\_chadbedera\_madaeihatanach-2\_10\_0.otzplugin`

\---

## חלק א׳ — מה מצאתי בקובץ (לפני שמתכננים)

בדקתי את התוסף בפועל. הנתונים האלה משנים את חלוקת העבודה, ולכן הם ראשונים:

|פריט|מצב|
|-|-|
|`shell/router.js`|**2,039 שורות / 110KB** — כל הלוגיקה בקובץ אחד|
|`shell/router.css`|29KB|
|`index.html`|8.5KB|
|קבצי דאטה|**19MB** (צומח 6.4MB, בע״ח 6.2MB, אישים 3.1MB, ביהמ״ק 1.7MB, דומם 0.9MB, מקומות 0.3MB)|
|רשומות|אישים 1,915 · מקומות 316 · צומח 124 · בע״ח 114 · ביהמ״ק 79 · דומם 67 = **2,615**|
|קבצי `guides/<cat>/view.html`|**לא קיימים בארכיון** — יש הפניה אליהם ב-`CATEGORIES` (שדה `path`) אבל הקוד מרנדר ילידית. שארית מיותרת שכדאי לנקות|

**המסקנה התפעולית החשובה ביותר:** `router.js` לבדו הוא כ-35,000 טוקנים. כל שיחה שנוגעת בו מבזבזת 70K טוקנים (העלאה + החזרה) לפני שכתבנו שורה אחת. **בלי פיצול הקובץ, כל התוכנית הזו תעלה פי שלושה ותסבול משגיאות העתקה.** לכן שלב 0 אינו אופציונלי.

\---

## חלק ב׳ — שלושה אבחונים שמשנים את הפתרון

### 1\. באג 996 — אני יודע מה קורה

צפיתי בהקלטה. אחרי לחיצה על ״אישור״ אוצריא אכן עוברת ללשונית התוסף — אבל מוצגת **תיבת השער** (8 האיקונים), לא חלון התוצאות.

בקוד (`handleIdentifyClick`, שורה 1718) הרצף הוא:

```js
if (canOpenSelf) bringToFront();   // קורא ל-plugin.openSelf
showResults(matches, text);        // מצייר את ה-overlay
```

הבעיה: ב-0.9.96 `plugin.openSelf` **פותח/טוען מחדש את מופע התוסף**. ה-overlay שצוירת נמחק עם טעינת ה-webview מחדש — או שהוא צויר במופע רקע שאינו זה שהוצג. ב-0.9.95 לא היה מעבר בכלל, ולכן ה-overlay שרד במופע הקיים — בדיוק כפי שתיארת.

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

```
לפני openSelf:  Otzaria.call('plugin.storage.set', { key:'pending\_identify',
                  value: JSON.stringify({ text, matches, ts: Date.now() }) })
בעליית התוסף:   קוראים pending\_identify; אם קיים וטרי (< 30 שניות) →
                  showResults(...) ומוחקים את המפתח
```

זהו דפוס ״handoff״ סטנדרטי. הוא גם מייתר את בדיקת הגרסה בנתיב הזה.

### 2\. הפופאפ בספרייה — אי אפשר להוסיף לו פס גלילה

בצילום השני החלון החתוך הוא **`ui.showConfirm` של אוצריא עצמה**, לא HTML שלנו. אין לנו שליטה על ה-CSS שלו, ולכן ״להוסיף פס גלילה״ אינו אפשרי מצידנו. שלוש דרכים אמיתיות:

* **א׳ (מומלץ) — לקצר את התוכן.** במקום 76 שורות: סיכום לפי קטגוריה (״4 אישים · 6 צומח · 1 מקום״) + 5 ההתאמות החזקות ביותר + ״ועוד 8 — לחיצה על אישור תציג את כולן״. ממילא אחרי תיקון מנוע הזיהוי מספר ההתאמות יצנח.
* **ב׳** — לבדוק בתיעוד 0.9.96 אם `ui.showConfirm` קיבל פרמטר `scrollable`/`maxHeight`, או אם יש `ui.showDialog` עשיר יותר.
* **ג׳** — כשיש יותר מ-6 התאמות, לדלג על הקונפירם ולעבור ישירות ללשונית (אחרי שהתיקון מסעיף 1 יעבוד).

### 3\. הזיהוי המורחב — מצאתי את המקור המדויק

זה לא ״כיוונון״, יש שני מנגנונים שמייצרים כמעט את כל השגיאות:

**א. `candidateForms` מקלף אותיות שימוש בלי לבדוק אם זה חוקי.** `מַחֲנֵה` → מקלפים מ׳ → `חנה` → פגיעה. אבל `מַ` בפתח **אינה** מ׳ השימוש (שהיא `מִ` בחיריק+דגש או `מֵ` בצירי). הניקוד פוסל את זה בוודאות.

**ב. `looseForm` (כתיב חסר) מוחל גם על פעלים.** בצילום: `וַיִּשְׁאֲלוּ` → `וישאלו` → הסרת ו׳/י׳ → `שאל` → מתאים לצורה הרזה של `שאול` → ״שאול / יהונתן בן שאול״. אותו מנגנון נותן ״ויאמר״→אמר, ״ישראל״→יעקב וכו׳.

**הפתרון: להפסיק לזרוק את הניקוד.** כרגע `tokenizeHeb` מסירה ניקוד בשורה הראשונה ומאבדת את המידע המבחין ביותר שיש. הטקסט באוצריא מנוקד וטעום במלואו — זה משאב שכרגע נזרק לפח.

\---

## חלק ג׳ — מנוע זיהוי v2: הצעה מלאה

שכבות, לפי סדר. כל שכבה מייצרת **ציון**, לא כן/לא:

**0. טוקניזציה כפולה.** לכל טוקן שומרים `{raw: 'וַיִּשְׁאֲלוּ', bare: 'וישאלו'}`. כל השאר נשען על זה.

**1. פסילת פעלים (הרווח הגדול ביותר, זול).** ו׳ ההיפוך היא חתימה חד-משמעית: `וַיּ / וַיִּ / וַתּ / וַֽיְ / וָאֶ`. טוקן שמתחיל כך = פועל → לא נכנס לזיהוי כלל (אלא בהתאמה מדויקת מנוקדת לשם). זה לבדו מסלק את רוב הרעש בפסוקי סיפור.

**2. ולידציית אותיות שימוש לפי ניקוד.** מקלפים תחילית **רק** אם היא נושאת ניקוד חוקי לתפקידה:

|אות|ניקוד חוקי כתחילית|דוגמה נגדית|
|-|-|-|
|מ|מִ+דגש, מֵ|`מַחֲנֵה` ❌ (פתח)|
|ב/כ/ל|שווא, פתח, קמץ, חיריק, צירי||
|ה|פתח/קמץ/סגול + דגש||
|ו|שווא (וְ), שורוק (וּ)|`וַ`+דגש = פועל ❌|
|ש|שֶׁ/שַׁ + דגש||

**3. לקסיקון מנוקד — קציר אוטומטי.** בכל רשומה יש שדה `verses` עם הפסוק **המנוקד המלא**. בדקתי: קציר אוטומטי של הצורה המנוקדת של השם מתוך הפסוקים שלו מצליח על **1,141 מתוך 1,915** אישים (60%) בהתאמה מדויקת בלבד; עם סובלנות לתחיליות ולנטיות סמיכות זה יעלה משמעותית. מה שנשאר — סבב AI חד-פעמי או מקור תנ״ך מנוקד. אחרי זה: `שָׁאוּל` מול `וַיִּשְׁאֲלוּ` — אין התאמה, נקודה.

**4. התאמה ארוכה גוברת, בלי חפיפות.** ״בני ישראל״ תופס את שתי המילים ומונע גם ״בני״ (אישי) וגם ״ישראל״→יעקב.

**5. כתיב חסר — רק כמוצא אחרון.** רק אם אין שום התאמה מדויקת בפסוק, רק לטוקנים שאינם פעלים, ורק באורך 4+ (היום 3).

**6. הקשר הפסוק.** אם התוסף יודע איזה ספר/פרק פתוח — רשומה שיש לה `verse` באותו ספר מקבלת בונוס גדול. (לבדוק אם ה-payload של תפריט ההקשר מוסר `bookId`/`ref`; אם לא — לבקש מאוצריא.)

**7. שלוש דרגות ביטחון בתצוגה:** ✓ ודאי · \~ סביר · ? אפשרי. ברירת מחדל — שתי הראשונות; ״הצג זיהויים נוספים (7)״ פותח את השאר. **זה מה שהופך את הבעיה לפתירה:** לא צריך אלגוריתם מושלם, צריך אלגוריתם שיודע להודות בספק.

**8. סט בדיקות זהב.** 60–100 פסוקים עם התוצאה הנכונה הידועה, נבדקים ב-Node מחוץ לאוצריא. כל זיהוי שווא שתדווח עליו נכנס לסט. בלי זה כל תיקון ישבור משהו אחר ולא נדע.

\---

## חלק ד׳ — חלוקה לשיחות

עיקרון: **שיחה אחת = אזור קוד אחד + מטרה אחת + גרסה אחת.** אף פעם לא להעלות קבצי דאטה (19MB) לשיחה שעוסקת בקוד.

### סבב 0 — תשתית (חובה, לפני הכול)

|#|נושא|מודל|קלט|פלט|
|-|-|-|-|-|
|**0.1**|**פיצול `router.js` ל-8 מודולים** + ניקוי `view.html` המת|Claude Opus (תכנון) → Claude Code (ביצוע)|router.js, index.html|2.11.0 — **אפס שינוי תפקודי**|
|**0.2**|הקמת ריפו גיטהב + `CHANGELOG.md` + סקריפט build/גרסה|Claude Code|הריפו|תשתית|

פיצול מוצע: `identify.js` · `results-ui.js` · `entry-detail.js` · `edit-forms.js` · `storage.js` · `settings.js` · `guides.js` · `home.js`. אין צורך ב-bundler — `index.html` טוען כמה `<script>`.

> \*\*0.1 מחזיר את ההשקעה כבר בשיחה השלישית.\*\* במקום 35K טוקנים לכל תיקון — 4K.

### סבב 1 — באגים דחופים

|#|נושא|מודל|למה יחד/לחוד|
|-|-|-|-|
|**1.1**|באג 996 (handoff דרך storage) + קיצור תוכן ה-showConfirm + שינוי תווית התפריט ל״זהה דצח״מ בתוסף תמונ״ך!״|**Claude Opus** — צריך חקירת API וגישה לרשת|שלושתם באותה פונקציה בדיוק (`handleIdentifyClick` + `registerUnifiedMenuItem`). לפצל = לפתוח את אותו קובץ שלוש פעמים|
|**1.2**|עיצוב חלון התוצאות למראה אוצריא + גלילה פנימית + כותרת/צ׳יפים דביקים|**Claude Sonnet** — CSS טהור, לא צריך Opus|קלט: `router.css` + `showResults` בלבד|

בשיחה 1.1 לבקש לבדוק: `github.com/Otzaria/otzaria` → תיקיית ה-plugin API / `docs`, וכן ה-Release notes של 0.9.96.

### סבב 2 — מנוע הזיהוי (הלב)

|#|נושא|מודל|
|-|-|-|
|**2.1**|תכנון מפורט + בניית סט הבדיקות + סקריפט הרצה ב-Node|**Claude Opus**|
|**2.2**|יישום 8 השכבות + כיול מול הסט|**Claude Opus**|
|**2.3**|קציר הלקסיקון המנוקד מתוך `verses` (סקריפט) + השלמת החסר|**מודל עם חלון הקשר ענק** (Gemini Pro האחרון) — כאן כן נוגעים בדאטה|

**לא לערבב 2.1 ל-2.2 בשיחה אחת.** התכנון צריך לצאת כמסמך שאתה מאשר לפני שנשרפים טוקנים על יישום.

### סבב 3 — דף הבית והאזור האישי

|#|נושא|מודל|
|-|-|-|
|**3.1**|שורת חיפוש עליונה לכל הרוחב (מסגרת זהב, מנוע `identify` קיים) + פריסת 3+3 + החלפת איקון בע״ח|Sonnet|
|**3.2**|**אזור אישי — תכנון סכמת אחסון** (סימניות, עריכות, טיוטות, שליחה מרוכזת)|**Opus**|
|**3.3**|יישום האזור האישי + העברת ״משוב״ ו״הוספת HTML״ לתוכו + שמירת דף HTML כאיקון קבוע בשער|Sonnet|

3.2 לחוד כי טעות בסכמת האחסון = איבוד עריכות של משתמשים אחרי עדכון. זו ההחלטה היקרה ביותר בכל הפרויקט.

### סבב 4 — גיטהב, עדכונים ודיווחים

|#|נושא|מודל|הערה|
|-|-|-|-|
|**4.1**|מנגנון בדיקת עדכונים + שליחת דיווחי באגים|Opus|קלט התקבל — ראה ״ממצאי התוספים המצורפים״ למטה. **דיווח באגים: יש תבנית מוכנה. בדיקת עדכונים: אין ממי להעתיק**|
|**4.2**|ממשק ניהול/בילד — bump גרסה, אריזת `.otzplugin`, changelog, Release אוטומטי|**Claude Code**|זה בדיוק מה שביקשת: לערוך → ללחוץ → לקבל גרסה|

### מסלול מקביל — תוכן ונתונים (לא תלוי בקוד, אפשר בכל עת)

|#|נושא|מודל|
|-|-|-|
|**ת.1**|תיקוני אישים: בני המן ← אב, זרש+המן כבני זוג + **ולידציה סכמתית של כל 2,615 הרשומות**|סקריפט + מודל ארוך-הקשר|
|**ת.2**|העתקת אפשרויות הסינון מתוסף ״אישים״ (+ מ״ביוגרפיות״, ברשות הבעלים)|Sonnet|
|**ת.3**|קישור ממיקום בכרטיס אישים → כרטיס מקומות עם המפה|Sonnet|
|**ת.4**|שאיבת חומר מספרי פליקס|ראה אזהרה למטה|

**ת.1 שווה זהב:** סקריפט ולידציה שרץ על כל הרשומות ומדווח על אבות/אמהות שאינם קיימים כרשומה, בני זוג לא הדדיים, ילדים ללא הורה מקביל — ימצא עשרות ״בני המן״ נוספים במכה אחת, במקום לתקן אחד-אחד. אפשר להריץ אותו כ-GitHub Action על כל commit.

\---

## חלק ה׳ — איזה AI ואיזה מודל, בקצרה

|משימה|הכלי|למה|
|-|-|-|
|ארכיטקטורה, אלגוריתם הזיהוי, דיבוג API, סכמות אחסון|**Claude Opus**|החלטות שטעות בהן יקרה|
|CSS, UI, עריכות חוזרות, טפסים|**Claude Sonnet**|זול ומהיר, איכות מספקת|
|עבודה על הריפו: פיצול קבצים, סקריפט בילד, ריצה על כמה קבצים יחד|**Claude Code**|**הפתרון האמיתי ל״לא רוצה להעלות את הקובץ בכל פעם״**|
|קבצי דאטה של 6MB, ספרים סרוקים, PDFים ארוכים|מודל עם חלון הקשר ענק (Gemini Pro האחרון)|חלון הקשר, לא איכות חשיבה|
|ולידציות, בדיקות שפיות|סקריפט Node — לא AI|דטרמיניסטי וחינם|

\---

## חלק ו׳ — כללי עבודה (חשוב לא פחות מהחלוקה)

1. **מקור אמת יחיד לגרסה:** `CHANGELOG.md` בריפו. פתיחת כל שיחה: ״הגרסה הנוכחית היא X.Y.Z מתאריך \_\_\_, מצורף הקובץ העדכני״.
2. **אף פעם לא להעלות קבצי דאטה לשיחת קוד.** אם צריך דוגמה — 3 רשומות מספיקות.
3. **תבנית פתיחה קבועה לכל שיחה:**

> תוסף אוצריא ״תמונ״ך״, גרסה X.Y.Z. מצורפים: `<רק הקבצים הרלוונטיים>`. המשימה: `<משימה אחת>`. אל תיגע בשום קובץ אחר. בסוף: (א) diff מדויק, (ב) שורת changelog, (ג) מספר גרסה חדש.

4. **בסוף כל שיחה — קובץ מלא, לא טלאים.** ובדיקה שהגרסה במניפסט עלתה.
5. **גיבוי לפני כל סבב.** יש 2,615 רשומות שאין להן גיבוי חוץ מהקובץ הזה.

\---

## חלק ז׳ — הערת זכויות יוצרים (חשוב, אנא קרא)

כתבת שעל ספרי פליקס ״אין זכויות יוצרים״. **זה לא מדויק.** פרופ׳ יהודה פליקס נפטר בשנת תשס״ה/2005; לפי חוק זכות יוצרים הישראלי ההגנה חלה 70 שנה לאחר פטירת המחבר — כלומר עד 2075. גם ״עולם הצומח המקראי״ וספריו האחרים מוגנים.

מה **כן** מותר ובטוח, ואף מקובל:

* **עובדות אינן מוגנות.** ״הצמח X מזוהה כ-Y״ היא עובדה — מותר ללמוד ולכתוב במילים שלך.
* **ציטוט קצר עם ייחוס** — ״לדעת י׳ פליקס, ...״ — לגיטימי לפי דוקטרינת השימוש ההוגן, בהיקף מוגבל.
* **אסור:** העתקת פסקאות, טבלאות, תמונות, או ״הפרזה מפורטת״ שמשחזרת את הספר בניסוח מעט שונה.

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



&#x09;	**>>>>>>>>>>>>>>הוכנסו לתקיה!!<<<<<<<<<<<<<<<<<<**

\---

## חלק ח׳ — רעיונות שלי להרחבה (בחר מה שמדבר אליך)

**קרוב וזול:**

* **״מי בפרשה הזו״** — אינדקס לפי פרשות השבוע. לקהל שלך זה כנראה הפיצ׳ר הכי שימושי שאפשר להוסיף.
* **ייצוא כרטסייה** להדפסה/PDF — למגידי שיעור.
* **״מוזכר יחד עם״** — מתוך שדות `verses`, קישורים אוטומטיים בין דצח״מ באותו פסוק.

**בינוני:**

* **עץ משפחה אינטראקטיבי** — הנתונים (`father`/`mother`/`spouses`/`children`/`siblings`) כבר קיימים ומלאים. חבל שהם רק טקסט.
* **ציר זמן לפי דורות** — השדה `cat` כבר מסודר לפי ספרים.
* **מפת מסע לאישיות** — מקום לידה → מגורים → פטירה → קבורה על מפת ה-Leaflet הקיימת.
* **״ערך היום״** בשער.

&#x20; 				**>> רעיון יפה, שים לב שיש תוסך ימא דהילולא (הורדתי אותו לתקיה שלנו שתראה) שיש ימי הילולא, אבל זה לא כולל אנשים ומאורעות בתנ"ך, בביוגרפיות יש מעט מאורעות בתנ"ך לפי תאריך, אז זה מש רעיון יפה לעשות את של היום! אולי זה עמוד חדש של מאורעות התנ"ך או שזה עבודה מורכבת לסרוק את כל התאריכים בתנ"ך ולראות בפי' מתי זה חלק לא מזוכר וצריך לח]פםש במפרשים ותלמוד בחן ותעדכן אבל ממה שקיים ודאי תעשה אולי להרחיב כנ"ל<<<<<**

**תשתיתי:**

* **GitHub Action לוולידציה** על כל commit — קישורים שבורים, שדות חסרים, בני זוג לא הדדיים.
* **טעינה עצלה של הדאטה** — 19MB נטענים כרגע; אינדקס זיהוי קטן שנטען מיד + דאטה מלא לפי דרישה = פתיחה מיידית.

\---

## חלק ט׳ — שלב ב׳: תוסף ״משנה ותלמוד״

**לא להתחיל לפני 3.0.0 יציב.** אבל שתי הכנות משתלמות כבר עכשיו:

1. **פיצול סבב 0 הוא בדיוק ״המודל הכללי״** שאתה רוצה להעתיק. אם מפצלים נכון, ההעתקה תהיה החלפת תיקיית `guides/` + מניפסט, ולא כתיבה מחדש.
2. **מפרט הסריקה** למי שיעבוד על המסכתות — זה המסמך שיקבע את האיכות. אכין אותו כשנגיע, והוא צריך לכלול: סכמת JSON מדויקת לכל קטגוריה, כללי ניקוד ואיות, פורמט מקורות (מסכת/דף/עמוד), מה עושים בספק, 3 דוגמאות מלאות מאושרות לכל קטגוריה, וסקריפט ולידציה שהוא מריץ לפני שהוא מחזיר לך. **בלי דוגמאות מאושרות וסקריפט ולידציה, פלט של AI על 37 מסכתות יגיע לא-אחיד ותצטרך לתקן הכול ידנית.**

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

\---

## חלק י׳ — סדר יציאה לדרך

```
שבוע 1   0.1 פיצול      →  0.2 גיטהב        \[2.11.0]
שבוע 2   1.1 באג 996    →  1.2 עיצוב חלון   \[2.11.2]
שבוע 3   2.1 תכנון זיהוי →  2.2 יישום        \[2.12.0]   ← השדרוג הגדול
שבוע 4   3.1 שער+חיפוש  →  3.2 תכנון אזור אישי
שבוע 5   3.3 יישום אזור אישי                  \[3.0.0]
שבוע 6   4.1 עדכונים    →  4.2 סקריפט בילד
במקביל   ת.1–ת.3 (תוכן) — מתי שנוח
```

**להתחיל מ-0.1.** פתח שיחה חדשה, העלה `router.js` + `index.html` בלבד, ובקש תוכנית פיצול מפורטת לאישור לפני ביצוע.

\---

### מה חסר לי כדי להתקדם

1. ~~תוספי ״ביוגרפיות״ ו״עיון הפרשה״~~ — **התקבלו** (ביוגרפיות 2.2.3 + עיון ה**הלכה** 1.4.0; ״עיון הפרשה״ עדיין לא הועלה, אך כנראה מיותר).
2. <b>~~איקון בעלי החיים החדש~~</b> <del>מתיקיית ״איקונים לחנות״ — לשיחה 3.1.</del>     	>הכנסתי לתקיה<
3. <b>~~ספרי פליקס~~</b> <del>— להעלות בפועל</del>.  >הכנסתי לתקיה<

\---

## נספח — ממצאי התוספים המצורפים (נבדקו בפועל, 03/08/2026)

**שני מסלולים שונים לדיווח באגים, שניהם עובדים:**

||ביוגרפיות 2.2.3|עיון ההלכה 1.4.0|
|-|-|-|
|מנגנון|POST ל-EmailJS מהתוסף עצמו|API מובנה של אוצריא: `feedback.sendEmail`|
|הרשאות|`network.access` + `network.allowlist: \["https://api.emailjs.com"]`|`feedback.send\_email`|
|תלות|חשבון EmailJS + מפתחות בקוד|אין — אוצריא מטפלת|
|קוד להעתקה|`js/app.js` שורות 959–1120 + `index.html` 127+ (כפתור צף, מודאל, שמירת שם/מייל, צירוף הערך שהיה פתוח, גרסת אוצריא)|מיניפייד (Vite) — רפרנס API בלבד|

**המלצה: להעתיק את ה-UI מ״ביוגרפיות״ ולחבר אותו ל-`feedback.sendEmail` של עיון ההלכה.** מקבלים מודאל מוכן ומעוצב בלי חשבון צד-שלישי, בלי מפתחות בקוד ובלי הרשאת רשת. **GitHub Issues יורד מהתוכנית** — הוא דורש טוקן בתוך התוסף, וזו בעיה אבטחתית שאין לה פתרון נקי בצד לקוח.

**שלושה ממצאים נוספים שמשנים משימות:**

1. **אין מנגנון בדיקת עדכונים באף אחד מהשניים.** אין ממי להעתיק — 4.1 צריך תכנון מאפס (הצעה: `version.json` ב-GitHub Pages/Raw + `fetch` + `network.allowlist`; זו הפעם היחידה שנצטרך `network.access`).
2. **ב״ביוגרפיות״ אין סינון בכלל** — רק חיפוש חופשי, טאבים ובורר גופן. **ת.2 מתבסס רק על תוסף ״אישים״.**
3. **עיון ההלכה משתמש גם ב-`notifications.scheduleSystem` / `requestPermissions` / `cancelAll`** — התראות מערכת מתוזמנות. רלוונטי אם יירצה בעתיד ״ערך היום״ (חלק ח׳).

