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.1.2
7 files changed
+12−11
README.md+3−3@@ -11,9 +11,9 @@ wiki notification email ──poll──> per-item state ──render──> ONE The board is a single card holding a **table**: a colored STATUS rail column (OPEN green / CLOSED gray) beside a content column, one divider-ruled row per-issue. Every row has the same shape - **page + issue #**, title, then-**actor**, **origination date**, last activity, and a **View link at the end-of the row**. New activity bubbles to the top. (Chat cards have no native+issue. Every row has the same pipe-delimited shape - **page + issue #** |+title, then **actor** | **origination date** | last activity | **View link+at the end of the row**. New activity bubbles to the top. (Chat cards have no native table widget and free-flowing pipe columns wrap unreadably at card width, so the table is two aligned columns with controlled line breaks; set `"style": "blocks"` for the chunkier per-item layout with View buttons.) Open items stay on the board until resolved; when an item
bin/__pycache__/wiki-notify-gchatcpython-312.pyc⋯ 1 unchanged line ⋯
bin/wiki-notify-gchat+7−6@@ -310,14 +310,15 @@ def render_table_widgets(shown, tz): status = (f'<font color="{OPEN_COLOR}"><b>OPEN</b></font>' if is_open else f'<font color="{CLOSED_COLOR}"><b>CLOSED</b></font>') item = it["page"] + (f" #{it['num']}" if it["num"] else "")- title = it["title"][:70] + ("…" if len(it["title"]) > 70 else "")+ max_title = max(24, 84 - len(item))+ title = it["title"][:max_title] + ("…" if len(it["title"]) > max_title else "") title = html_mod.escape(title, quote=False)- meta = [f"by {it['actor']}" if it["actor"] else None,+ meta = [f"by {it['actor']}" if it["actor"] else "by -", f"opened {fmt_date(it['openedAt'], tz)}",- f"last: {EVENT_LABEL.get(it['lastEvent'], it['lastEvent'])} {fmt_datetime(it['lastAt'], tz)}",- f'<a href="{it["url"]}">View</a>' if it["url"] else None]- content = (f"<b>{item}</b> {title}<br>"- f'<font color="#8a94a6">{" · ".join(m for m in meta if m)}</font>')+ f"last {EVENT_LABEL.get(it['lastEvent'], it['lastEvent'])} {fmt_datetime(it['lastAt'], tz)}",+ f'<a href="{it["url"]}">View</a>' if it["url"] else "-"]+ content = (f"<b>{item}</b> | {title}<br>"+ f'<font color="#8a94a6">{" | ".join(meta)}</font>') widgets.append({"columns": {"columnItems": [ {"horizontalSizeStyle": "FILL_MINIMUM_SPACE", "verticalAlignment": "TOP", "widgets": [{"textParagraph": {"text": status}}]},
docs/board.png⋯ 1 unchanged line ⋯
docs/hero.png⋯ 1 unchanged line ⋯
package.json+1−1@@ -2,7 +2,7 @@ "slug": "wiki-notify-gchat", "title": "Wiki Notify for Google Chat", "type": "app",- "version": "1.1.1",+ "version": "1.1.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.1.1",+ "version": "1.1.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",