Repository navigation
Releases: nnemirovsky/grepogram
Releases · nnemirovsky/grepogram
Release list
v0.3.0
New Features
- Claude Code plugin: install with
/plugin marketplace add nnemirovsky/grepogramand/plugin install grepogram@grepogram, then run/grepogram:setup. It adds search and research skills that drive the CLI and a hook that asks before any consent-confirming command #11 @nnemirovsky - Sign in several Telegram accounts at once, and opt-in research that finds chats beyond the indexed ones and joins them only with your approval #8 @nnemirovsky
Improvements
- Move module rules into path-scoped rule files #10 @nnemirovsky
- Add the project review profile and ignore the run archive #9 @nnemirovsky
- File the deleted-message misclassification in extract #7 @nnemirovsky
- Decide the cancelled-join wait by an event, not the clock #6 @nnemirovsky
- Drop the v0.1.x upgrade notes #5 @nnemirovsky
- Install from PyPI #4 @nnemirovsky
Upgrading
index.db migrates in place from schema 6 to 9 on first open, and session.session becomes the default account. v0.2.0 cannot open the migrated index, so don't downgrade.
v0.2.0
New Features
- Photo OCR through macOS Vision — text in a photographed announcement, price list or screenshot is read locally and becomes searchable, in Russian, English and Turkish. Needs the
mediaextra; Russian recognition needs macOS 15. - PDF and DOCX text extraction through the same pass.
grepogram extract— a bounded, resumable pass that reads media after a sync, never inside one, so a slow OCR or a large PDF cannot eat a sync's budget. Media this build cannot read is parked without a single network request.- Reactions as a ranking signal — a bounded bonus that reorders near-ties without letting a popular message outrank a relevant one.
search.reaction_weight = 0disables it. grepogram import <tdesktop export dir>— index a Telegram Desktop export of a chat the account can no longer open.sources prune— drop chats that have left an indexed folder.grepogram prune-deleted— a resumable sweep that removes messages deleted in Telegram.- PyPI publishing, behind a repository variable and trusted publishing (no API token).
Improvements
units.window_max_charsis now a real ceiling. It used to be a floor — a window closed only after passing the cap — so 15.8% of windows overflowed the embedder's 512-token limit and their tails were never vectorised. Existing indexes are re-cut once, automatically.- Deletions are noticed during an ordinary sync, not only by the explicit sweep.
- The one-time re-cut runs a bounded number of whole chats per sync, each in its own transaction and resumable through per-chat markers, so search keeps answering while it works.
threadandcontextshow extracted media text, and a chat can be named by itsimport:<slug>id wherever a chat spec is accepted.
Bug Fixes
grepogram extractresolved no chat at all on a real Telegram account: the client's entity cache starts empty by design and the two new by-id passes never warmed it. Found only by running against a real account — 1,757 tests missed it because the test client resolved any id, which it no longer does.- A search hit for an OCR'd photo linked to the wrong message, because extracted text never reached the message-level index.
- An imported chat's
import:tag could be overwritten by four separate code paths, after whichsources prunewould offer its history for deletion. - A replaced attachment kept the previous file's extracted text forever, unreachable even to
--retry-failed. sources prunere-validates every candidate inside the deletion lock, so a chat imported between the scan and the confirmation is no longer deleted.
Upgrading from v0.1.x
The next grepogram sync re-cuts and re-embeds every unit once — about an hour on a 47k-unit index — a few chats per run, each atomically, with search working throughout. Run grepogram extract afterwards to read the media already in your index.
v0.1.1
What's Changed
- fix(config): answer a config error with a hint instead of a bare message by @nnemirovsky in #2
Full Changelog: v0.1.0...v0.1.1
v0.1.0
What's Changed
- feat: grepogram v1 — local hybrid search over opt-in Telegram chats by @nnemirovsky in #1
New Contributors
- @nnemirovsky made their first contribution in #1
Full Changelog: https://github.com/nnemirovsky/grepogram/commits/v0.1.0