app
Wiki Notify for Google Chat
Public Made by Adomby adom
Turn wiki.adom.inc notification emails into a live Google Chat board. One card, one row per issue - newest first, OPEN/CLOSED status, origination date, actor, and a View link - continuously updated in your own Chat space via your own webhook. Emails are swept out of your inbox (trash, archive, or label). Closed items linger until 6am the next day, then drop off. Delegates all auth to adom-google; the only secret is your webhook URL, kept in your private config.
← Commit history
Publish 1.6.2
5 files changed
+22−8
README.md+8−3@@ -15,9 +15,14 @@ image** (clickable, opens the page - resolved to the public raster blob via `adom-wiki page stats`, since Chat's image proxy cannot render the SVG `/hero/` endpoint). The right column leads with the colored **OPEN/CLOSED status** in the digest's `[new]`/`[updated]` slot, then the **hyperlinked-item ref** (`page #N`, opens the issue), the description, `Created by-<name> on <date> <time>`, `<Event> by <name> on <date> <time>` (Opened /-Commented / Closed / Reopened / Mentioned), and **your involvement** -+item ref** (`page #N`, opens the issue), the description, then three+explicitly labeled roles so nothing is ambiguous:+`Page author: <name>` (who owns the wiki page - not the issue),+`Issue opened by <name> on <date> <time>` (who posted the issue,+authoritative from the wiki DB), and+`Latest: <opened|commented|closed|reopened|mentioned you> by <name> on+<date> <time>` (whose activity triggered the most recent update). Then+**your involvement** - "Drew owns this fix" (assigned) > "Drew opened this" > "Drew owns this page" (you authored the wiki page) > "Drew was mentioned" / "commented on this" > "Drew watches this page" - from the mail's "You're receiving this
bin/__pycache__/wiki-notify-gchatcpython-312.pyc⋯ 1 unchanged line ⋯
bin/wiki-notify-gchat+12−3@@ -263,6 +263,7 @@ def annotate_page_ownership(state, me_full): info = page_info(it["page"], state) it["ownsPage"] = bool(me_full) and info["author"] == me_full it["heroUrl"] = info["hero"]+ it["pageAuthor"] = info["author"] def parse_notification(msg):@@ -476,12 +477,20 @@ def render_table_widgets(shown, tz, me="You"): if it.get("invLabel") == "opened this" and not it.get("metaFetched"): creator = me # footer fallback only until wiki issue metadata arrives actor = it.get("actor") or "-"- event = EVENT_CAP.get(it["lastEvent"], it["lastEvent"] or "Activity") linked_item = f'<a href="{it["url"]}">{item}</a>' if it["url"] else f"<b>{item}</b>"+ ev = it["lastEvent"]+ when = fmt_datetime(it["lastAt"], tz)+ if ev == "mention":+ latest = f"Latest: {actor} mentioned you on {when}"+ else:+ verb = {"opened": "opened", "comment": "commented", "closed": "closed",+ "reopened": "reopened"}.get(ev, "activity")+ latest = f"Latest: {verb} by {actor} on {when}" body = [ title,- dim(f"Created by {creator} on {fmt_datetime(it['openedAt'], tz)}"),- dim(f"{event} by {actor} on {fmt_datetime(it['lastAt'], tz)}"),+ dim(f"Page author: {it.get('pageAuthor') or '-'}"),+ dim(f"Issue opened by {creator} on {fmt_datetime(it['openedAt'], tz)}"),+ dim(latest), ] inv = it.get("invLabel", "") if it.get("ownsPage") and it.get("invRank", 0) < 3:
package.json+1−1@@ -2,7 +2,7 @@ "slug": "wiki-notify-gchat", "title": "Wiki Notify for Google Chat", "type": "app",- "version": "1.6.1",+ "version": "1.6.2", "description": "Turn wiki.adom.inc notification emails into a live Google Chat board. One card, one row per issue - newest first, OPEN/CLOSED status, origination date, actor, and a View link - continuously updated in your own Chat space via your own webhook. Emails are swept out of your inbox (trash, archive, or label). Closed items linger until 6am the next day, then drop off. Delegates all auth to adom-google; the only secret is your webhook URL, kept in your private config.", "tags": [ "cli",
page.json+1−1@@ -2,7 +2,7 @@ "slug": "wiki-notify-gchat", "title": "Wiki Notify for Google Chat", "type": "app",- "version": "1.6.1",+ "version": "1.6.2", "description": "Turn wiki.adom.inc notification emails into a live Google Chat board. One card, one row per issue - newest first, OPEN/CLOSED status, origination date, actor, and a View link - continuously updated in your own Chat space via your own webhook. Emails are swept out of your inbox (trash, archive, or label). Closed items linger until 6am the next day, then drop off. Delegates all auth to adom-google; the only secret is your webhook URL, kept in your private config.", "tags": [ "cli",