# Telegram Web Archiver

> Log into Telegram Web with a dedicated profile stored inside the plugin folder, archive private and group message history locally, then summarize or ask questions about your groups.

| | |
|---|---|
| Version | 1.0.2 |
| Category | Productivity |
| Permissions | network.remote, filesystem.write, process.spawn |

# Telegram Web Archiver

Log into Telegram Web with a dedicated profile stored inside the plugin folder, archive private and group message history locally, then summarize or ask questions about your groups.

**Type:** `backend` — see `.claude/skills/kazuo-create-plugin/references/plugin-examples.md`

## Files

- `manifest.json` — metadata, `defaultSettings`, `defaultWidgetConfig`
- `widget.html` / `js/widget.js` / `css/widget.css` — main UI
  - has its own "⚙" button + settings overlay built into widget.html/widget.js (host no longer provides a per-widget gear icon — see references/plugin-runtime-api.md section 1b)
- `settings.html` / `js/settings.js` / `css/settings.css` — same fields as the widget overlay (intentionally duplicated), used by the Plugin Manager screen and the pop-out window
- `locales/en.json5` / `locales/vi.json5` — UI strings, `widget.*`/`settings.*` namespaces (REQUIRED, same key set in both)
- `main/index.ts` (+ compiled `main/index.js`) — runs in the Electron main process; `activate`/`deactivate` + optional `getMcpTools` (exposed to ai-chat's AI agent, Dev Mode only)
- `main/navigation.ts` (+ compiled `main/navigation.js`) — deterministic `/k/` navigation layer (viewport/window state, safe click primitives, chat/topic entry by name); see `.claude/features/telegram-web-archiver.md` for the full design and current verification status
- `test/navigation.test.ts` — pure-logic unit tests for `navigation.ts` (`node --test`)
- `tools/verify-navigation.ts` — live verification harness for the navigation layer (needs a real Telegram login; not yet run — see the feature doc)

## Default settings

- `exampleSetting` — default: `""`

## Test

Open Kazuo AI → Plugin Manager — this plugin appears automatically (the host scans `plugins-library/` on its own, no registration needed) → Install → Enable.

## Accessibility + i18n

This plugin must keep the i18n + accessibility contract in `.claude/skills/kazuo-create-plugin/references/a11y-i18n-checklist.md`: both locale files present with the same keys, no hardcoded user-visible strings (aria-label included), a name on every icon-only button, a <label for> on every field, keyboard reachable controls with a visible focus ring, and a live region for status text. The scaffold ships all of that — keep it when you extend the UI.

After editing `main/index.ts`, recompile before testing: `npx tsc -p tsconfig.plugins.json` (run from the project root).
