context-attachment-manager
Codex and Claude Code plugin (works in Claude Desktop): choose which past images go to the model with your next message. Unchecked images become placeholders, the conversation goes on, and requests st
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Chrome-Extension für viele offene Tabs: Schnellsuche, Gruppen, Sortieren, Doppelte, Wächter und Verlauf. Optional mit Jev über OpenRouter oder TypeSafe.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Chrome-Extension für viele offene Tabs. Tabwerk findet, gruppiert, sortiert und entdoppelt Tabs, beobachtet Webseiten und sichert jeden Stand von Fenstern, Tabs und Gruppen.
Installieren: Tabwerk im Chrome Web Store
Alles, was sich exakt berechnen lässt, erledigt Code. Für semantische Fragen nutzt Tabwerk optional Jev, ein Entscheidungsmodell von TypeSafe. Jev ist erreichbar über OpenRouter oder direkt über TypeSafe. Ohne Schlüssel laufen alle Funktionen, die nur Code brauchen.
| Bereich | Was passiert | Wer entscheidet |
|---|---|---|
| Schnellsuche | Per Tastenkürzel über jeder Seite: Tabs, Aktionen, Lesezeichen, Verlauf | Code (unscharfe Suche), Jev nur auf Wunsch mit ⇧↵ |
| Finden | Du beschreibst einen Tab in eigenen Worten, Tabwerk springt hin | Jev (choice) |
| Seitensuche | Du beschreibst in eigenen Worten, was auf der aktuellen Seite stehen soll, Tabwerk hebt die Stelle hervor | Auszug: Code, Relevanz und Satz: Jev (noul/choice) |
| Gruppen | Vorschlag für bestehende Gruppen oder neue aus deinen Kategorien, mit Sicherheit pro Tab | Jev (choice) |
| Sortieren | Tabs oder ganze Gruppen nach Priorität, dazu nach Website, zuletzt benutzt, Öffnungszeit oder Titel | Priorität: Jev (score), sonst Code |
| Doppelte | gleiche Adressen finden, pro Eintrag wählen, was zugeht; gleichen Inhalt unter anderer Adresse finden | Adressen: Code, Inhalt: Jev (noul) |
| Wächter | Seite beobachten und melden, wenn eine Bedingung in Alltagssprache eintritt | Vergleich: Code, Bewertung: Jev (noul) |
| Verlauf | sichert nach jeder Änderung, stellt jeden Stand wieder her | Code |
| Aufräum-Vorschlag | markiert alte und unwichtige Tabs zum Schließen | Alter: Code, Wichtigkeit: Jev (score) |
| Einsortieren | neue Tabs landen automatisch in der passenden Gruppe | Regeln: Code, sonst optional Jev |
| Doppel-Schutz | eine schon offene Seite öffnet sich nicht noch einmal, außer du willst es | Code |
| Entladen | inaktive Tabs geben Speicher frei | Code |
| Notizen | Notiz an einen Tab heften, per Rechtsklick, Alt+Umschalt+N oder Schnellsuche | Code |
| Gruppennamen | Gruppen ohne Titel bekommen einen kurzen Namen | Kandidaten: Code, Auswahl: Jev |
| Sitzungen | Fenster unter einem Namen speichern und wieder öffnen | Code |
| Fokus | andere Gruppen einklappen, ablenkende Seiten auf Zeit sperren | Code |
| Schlummern | Tab schließen und zur gewählten Zeit wieder öffnen | Code |
| Linkliste | Tabs als Markdown oder Text kopieren | Code |
| Statistik | Tabs pro Fenster und Website, älteste Tabs, Verlauf der Anzahl | Code |
| Seite aufräumen | blendet Werbung, Cookie-Banner, Aktionen, Newsletter-Kästen, Social-Media-Knöpfe und auf Wunsch Kommentare, Empfehlungen oder eine eigene Regel aus. Einmal pro Seitentyp analysiert, danach ohne Anfrage | Kandidaten und Ausblenden: Code, Einordnung: Jev (choice) |
| Formulare | speichern, ausfüllen, mit Testdaten füllen; geschützte Felder nur mit eigenem Schalter | Code, unbekannte Felder optional Jev |
| Lernen | merkt sich lokal, wo du Jev folgst oder korrigierst: schlägt Regeln vor, passt die Sicherheitsschwelle je Funktion an, gibt frühere Zuordnungen als Beispiele an Jev, Daumen bei Wächtern | Code, Beispiele optional an Jev |
| Kopieren erlauben | hebt Sperren für Kopieren, Einfügen, Markieren und Rechtsklick auf, für einen Tab oder immer für eine Website | Code |
| Export und Import | alles als Datei, Sitzungen auch als Lesezeichen-Datei | Code |
Jede Funktion lässt sich in den Einstellungen einzeln ausschalten. Abhängige Funktionen hängen an der übergeordneten.
Tabwerk spricht Deutsch und Englisch. Es folgt der Sprache des Browsers. In den Einstellungen unter „Sprache“ lässt sich die Sprache fest wählen. Datum, Uhrzeit, Zahlen, Beträge und Mehrzahl formatiert Tabwerk passend zur Sprache über Intl. Testdaten für Formulare gibt es als deutsche und als US-amerikanische Adressen.
Eine neue Sprache anlegen:
_locales/en/messages.json nach _locales/<code>/messages.json kopieren und die Werte von message übersetzen. $1 bis $9 bleiben stehen. Schlüssel mit _one und _other sind Einzahl und Mehrzahl.LANGUAGES in src/lib/i18n.js ergänzen und einen Namen unter lang_<code> in allen Sprachdateien anlegen.npm test prüft, dass alle Sprachen dieselben Schlüssel und Platzhalter haben.Jede Aktion sichert vorher den Stand. „Rückgängig“ im Popup oder Alt+Umschalt+Z springt genau dorthin zurück.
Was Jev gut kann und wo es schwach ist, steht in docs/jev-im-browser.md.
Der Speicherbaustein unter packages/session-codec ist ein eigenständiges ESM-Paket für komprimierte Browserfenster. Tabwerk verwendet dessen Legacy-Einstieg, damit bestehende Verläufe unverändert lesbar bleiben. Die neue API bietet ein versioniertes Format, Inhaltsprüfung und Eingabegrenzen.
Das Paket ist als tabwerk-session-codec auf npm verfügbar. Ein Offline-Beispiel für Tab Session Manager zeigt eine weitere Verwendung mit dessen Exportformat. Die lokale Abnahme beschreibt Paket-, Kompatibilitäts- und Browserprüfungen.
Ein separater experimenteller Delta-Store und Browservergleich untersucht transaktionale Speicherung, Crash-Recovery, Retention und inkrementelle Exporte. Messwerte und Grenzen dokumentieren den Vergleich mit Garrisons Backup-Code. Der Prototyp ist nicht Bestandteil der npm-Version 0.1.0 und keine Integration in Garrison. Security-Meldungen zu diesem Code betreut ebenfalls Manuel Bissinger (DigitalIQ) über die Security Policy.
chrome://extensions öffnen.Tastenkürzel:
| Kürzel | Aktion |
|---|---|
⌘⇧Leertaste (Mac), Strg+Umschalt+Leertaste | Schnellsuche |
Alt+Umschalt+T | Popup |
Alt+Umschalt+N | Notiz zum aktuellen Tab |
Alt+Umschalt+Z | Letzte Tabwerk-Aktion rückgängig |
| frei wählbar | Formular ausfüllen |
| frei wählbar | Seitensuche nach Bedeutung |
Ändern unter chrome://extensions/shortcuts.
Gruppen, Sortieren, Doppelte, Rückgängig und der Verlauf arbeiten im Fenster, in dem du das Popup öffnest. Andere Fenster bleiben unberührt. Doppelte und Verlauf haben ein Häkchen „Alle Fenster“. Finden und Schnellsuche durchsuchen alle Fenster und zeigen Tabs aus dem aktuellen Fenster zuerst.
/t Tabs, /a Aktionen, /b Lesezeichen, /h Verlauf, /n Notizen, /s Sitzungen, /z geschlummerte Tabs, /f Formulare./N öffnet das Notiz-Fenster. /N Text speichert den Text sofort. Eine vorhandene Notiz bekommt ihn als neue Zeile dazu./F Suchtext durchsucht die aktive Seite sofort mit Jev. /F allein öffnet nur die Suchleiste. Ein eigenes Tastenkürzel ist damit nicht nötig./h und ⇧↵ findet Jev Seiten aus dem Verlauf per Beschreibung, etwa „der Artikel über Solarstrom von letzter Woche“.↵ öffnet, ⌘⌫ schließt den gewählten Tab, Esc schließt die Suche.⇧↵ und nur, wenn du das in den Einstellungen einschaltest.Auf normalen Webseiten liegt die Suche über der Seite, der Hintergrund bleibt als Milchglas sichtbar. Auf chrome://-Seiten und im Web Store darf keine Erweiterung etwas einblenden. Dort öffnet sich ein kleines Fenster.
Statt nach einem genauen Wort zu suchen wie mit Strg+F, beschreibst du in eigenen Worten, was auf der Seite stehen soll, etwa „Kosten außer dem angegebenen Preis“ oder „was passiert, wenn ich kündige“. Tabwerk liest die sichtbaren Absätze, Listenpunkte, Überschriften, Zitate und Tabellenzellen der Seite, Jev bewertet jede Stelle und wählt pro Treffer den stärksten Satz aus, ohne einen neuen zu schreiben. Der stärkste Satz erscheint kräftig grün, der Rest der Stelle blass grün. Mit den Pfeilen in der Leiste oder ↵/⇧↵ springst du zwischen den Treffern.
Am schnellsten geht es in der Schnellsuche mit /F Suchtext. Die Suche startet dann sofort. Alternativ: der Knopf „Seite durchsuchen“ im Popup unter „Finden“ oder ein eigenes Tastenkürzel unter chrome://extensions/shortcuts. Ein zweiter Druck auf das Kürzel schließt die Leiste. Die Suche läuft nur auf Aufruf, nicht laufend im Hintergrund, und nur auf der sichtbaren Seite selbst: eingebettete Rahmen fremder Herkunft, der PDF-Betrachter und Inhalte in einem Schatten-DOM bleiben außen vor. Auf chrome://-Seiten und im Web Store öffnet sich ein kurzer Hinweis statt der Leiste. Ohne Schlüssel für Jev zeigt Tabwerk einen Hinweis statt zu suchen.
Nach dem Vorbild von Unclutter von Kitze (MIT-Lizenz, siehe NOTICE), neu geschrieben für Tabwerk.
Ein Wächter prüft eine Seite in festem Abstand: 5 Minuten, 15 Minuten, 1 Stunde, 6 Stunden, 24 Stunden oder individuell im Format hh:mm:ss. Chrome weckt Erweiterungen höchstens alle 30 Sekunden.
Anlegen geht im Popup oder per Rechtsklick auf einer Seite:
Tabwerk vergleicht den Text der Seite im Code. Nur wenn sich etwas geändert hat, fragt es Jev, ob die Änderung zur Bedingung passt. Ist die Seite in einem Tab offen, liest Tabwerk den gerenderten Text aus dem Tab. Sonst lädt es die Seite im Hintergrund.
Tabwerk hört auf jede Änderung an Tabs, Gruppen und Fenstern. Nach 1,5 Sekunden Ruhe legt es eine Sicherung an. Ist der Stand gleich wie zuletzt, entsteht keine neue. Zusätzlich sichert ein Wecker alle 10 Minuten.
Aufbewahrung: die letzten 24 Stunden vollständig (höchstens 400), bis 7 Tage eine pro Stunde, bis 90 Tage eine pro Tag.
Speicherformat: Jedes Fenster liegt als eigener Block, gepackt mit gzip. Der Name eines Blocks ist ein Fingerabdruck (SHA-256) seines Inhalts. Ein Fenster, das sich nicht ändert, liegt deshalb nur einmal im Speicher, egal wie viele Sicherungen darauf zeigen. Auf einem simulierten Tag mit 8 Fenstern, 320 Tabs und 600 Änderungen braucht das 2,2 MB statt 34 MB. Blöcke, auf die keine Sicherung mehr zeigt, löscht Tabwerk beim Aufräumen. Sicherungen im alten Format baut Tabwerk nach dem Update einmal um.
Beim Wiederherstellen nutzt Tabwerk offene Tabs weiter. Fehlende Tabs öffnet es neu. Tabs, die im alten Stand nicht vorkamen, bleiben offen und rücken ans Ende. Vor jedem Wiederherstellen sichert Tabwerk den aktuellen Stand.
Der Verlauf liegt nur lokal in chrome.storage.local. Er ersetzt kein Backup über eine Neuinstallation hinweg.
chrome.storage.local und wird nicht synchronisiert. Jede Erweiterung mit Zugriff auf dein Chrome-Profil könnte ihn lesen. Nutze einen eigenen Schlüssel mit Ausgabenlimit.Die ausführliche Datenschutzerklärung steht in PRIVACY.md.
npm install
npm test # Unit-Tests ohne Browser
npm run e2e # lädt die Extension in Chrome for Testing und klickt alles durch
npm run icons # rendert die Icons neu
npm run pack # baut dist/tabwerk-<version>.zip für den Chrome Web Store
npm run store # erzeugt Store-Bilder aus den Test-Screenshots
npm install schaltet die Git-Hooks in .githooks/ ein. Danach baut jeder Commit das Store-Paket in dist/ neu. Ohne npm install: git config core.hooksPath .githooks.
Texte und Angaben für den Chrome Web Store stehen in store/listing.md und store/review.md.
npm run e2e braucht ein Chrome for Testing aus dem Playwright-Cache oder CHROME_PATH. Jev-Anfragen gehen im Test an einen lokalen Proxy:
| Umgebung | Proxy antwortet mit |
|---|---|
nichts gesetzt oder JEV_OFFLINE=1 | festen Testantworten, ohne Netz |
OPENROUTER_API_KEY | echten Antworten von Jev über OpenRouter |
JEV_HELPER=/pfad/zum/skript | Ausgabe eines eigenen Skripts, das eine Anfrage-Datei an Jev schickt |
Prüfungen, die echte Jev-Antworten brauchen, überspringt der Test offline. Alle Testdaten sind erfunden.
Aufbau:
manifest.json
src/background.js Service Worker, Nachrichten, Ereignisse, Wecker, Kontextmenü
src/lib/jev.js Jev über OpenRouter oder TypeSafe
src/lib/prompts.js Fragen an Jev (reine Funktionen)
src/lib/features.js Finden, Gruppen, Sortieren, Doppelte
src/lib/history.js Verlauf und Wiederherstellen
src/lib/fuzzy.js unscharfe Suche
src/lib/actions.js Aktionen der Schnellsuche
src/lib/watch.js Wächter
src/lib/duration.js Intervalle
src/lib/flags.js Schalter für jede Funktion
src/lib/extras.js Aufräumen, Einsortieren, Doppel-Schutz, Notizen, Sitzungen, Fokus, Schlummern, Statistik
src/lib/formsbg.js Formulare speichern und ausfüllen
src/lib/formstore.js Formulare verschlüsselt ablegen
src/lib/transfer.js Export und Import
src/content/forms.js Funktionen, die in der Seite laufen
src/palette/ Schnellsuche
src/popup/ Popup
src/options/ Einstellungen
src/watch/ Fenster für neue Wächter aus dem Kontextmenü
src/note/ Notiz-Fenster
src/focus/ Seite für gesperrte Websites im Fokus
src/stats/ Statistik
src/offscreen/ HTML zu Text für Wächter
tests/ node --test
scripts/e2e.mjs Ende-zu-Ende-Test
Wenn dir Tabwerk hilft, kannst du mir einen Kaffee spendieren. Tabwerk bleibt so oder so kostenlos.
Tabwerk steht unter der MIT-Lizenz, siehe LICENSE.
Schrift Geist und Geist Mono: SIL Open Font License, siehe assets/fonts/LICENSE-Geist.txt. Icons Phosphor: MIT, siehe assets/icons/LICENSE-Phosphor.txt.