PINGBO · CONTACT PAGE — UNIFIED ADAPTIVE
同一個頁面殼。section 按事實顯隱:內容 section 看「有沒有那個內容」,動作看「有沒有那個內容/能力」。沒有路由、沒有判斷「你是誰」。
Header恆顯,可點avatar · 名字 · role·org(如有)+ primary email(恆顯 — compose 目標必須可見,不然像盲聯繫);點開 → contact info sheet
Unsubscribe有 RFC-8058 one-click能力動作 — 能退才顯,顯了必能用
Compose隱藏僅當 one-click ✓ 且 outbound ✗廣播證據成立且無通信反證才藏。首次來信的陌生人有 Compose(純 has-outbound 有雞生蛋漏洞);全滿體有;純刊物/no-reply 機器沒有
Contact infoheader 可點 → sheetaddresses(含電話)、rhythm 是 contact 的檔案,不是頁面內容——facet bar 之下屬於 facet,檔案住 header 點開的 info sheet(iOS Messages/Mail 慣例);多長都不礙事
Facet pills≥2 個 facet 才出 bar[Lines n] [Unread n] [Past n] — 每個 facet 非空才出 pill;只有一個 facet 時不出 bar、直接顯內容
  Lines有 linesBetween you 的行,lines + tasks 同 facet,truth = line/task state(case-file lens)
  Unread / Past有 unread / read 郵件= 這個 contact 郵件的 record unread/read 位(和 Gmail 雙向鏡像)。對刊物退化成 issues,數字不變;對人,Past = 全部歷史往來(raw lens,同一封信可同時在 line 裏)。Unread 平時 0 → pill 不渲染
TG
The Generalist
hello@thegeneralist.com
Unsubscribe
Unread12 Past40
TG
The Generalist2h
The rise of solo capitalists
A new class of investor is emerging, armed with…
TG
The GeneralistTue
Anduril: the arsenal company
Defense tech's most consequential startup…
TG
The GeneralistJul 12
Letters to a young founder
Advice I wish I'd received before starting…

純刊物 SUBSCRIPTIONS
one-click ✓ · reading ✓ · lines ✗ · outbound ✗
= 今天的 subscriber page + 退訂鈕。刊物是泛化語義的特例:它的「郵件」就是 issues,Unread/Past 數字一個不變。無 Compose(沒 outbound)。

ZS
Zhang San
CTO · Acme ›
zhangsan@acme.com
✉ Compose
Lines3 Past38
Acme partnership terms
ball with you · 2d quiet
Q3 invoice
waiting on Zhang · 5d
Updated MSA to sign task
due Friday

純人 DIRECT
one-click ✗ · reading ✗ · lines ✓ · outbound ✓
泛化後長出 bar:[Lines 3][Past 38](lines + tasks 同 facet)。Past = 和他的全部往來,按時間可翻——contact 全歷史的家。信都讀過 → Unread 0 → pill 不渲染。主頁只剩活內容;檔案(addresses/rhythm)搬進 header(›)點開的 sheet →

ZS
Zhang San
CTO · Acme
Addresses
zhangsan@acme.com primary
zs.hobby@gmail.com
Phone
+86 138 0013 8000
Rhythm
38 received · 41 sent · last exchange 2d ago

Contact info sheet(header 點開)
檔案資料的家:addresses(含電話)+ rhythm,iOS Messages/Mail 同款慣例。每行地址帶 ✉ 直接 compose 到該地址(主頁大按鈕走 primary)。多長都不礙事——Ping-Lin 那種 4 email + 2 電話照放。Rhythm 仍按「有過 outbound」才顯。

ZS
Zhang San
CTO · Acme ›
zhangsan@acme.com
✉ Compose
Lines3 Past38
ZS
Zhang Sanline2d
Re: Acme partnership terms
我們對 clause 3 的意見如下,先抄給法務…
ZS
Zhang Sanline5d
Q3 invoice
附件是 Q3 的發票,請查收。
ZS
Zhang Santask3d
Updated MSA to sign
最新版 MSA 在附件,麻煩簽回。
ZS
Zhang SanJun 30
Intro — our new CFO
介紹一下剛加入的 CFO Anna,之後帳務對接…
ZS
Zhang SanJun 21
Re: dinner next week?
下週三晚上可以,老地方見。

純人 · 點 Past
同一個 ReadingRowView 元件(avatar + 名·時間 + subject + snippet),不是新模板——通信郵件只是換數據映射。line/task 內的信也在列(小 tag 標容器歸屬,可選 polish),不搞排除。點 Unread 同構,只是列 unread 位的信。

Re: Acme partnership terms
ZS
Zhang San
to you · 2d ago
◉ Part of line: Acme partnership terms ›

Xiaofei,

我們對 clause 3 的意見如下,先抄給法務同步。分成兩塊:排他期的範圍,以及 milestone 付款的觸發條件。

排他期我們希望縮到 90 天,對應的補償條款可以談。milestone 那邊,建議把 acceptance 的判定標準寫進 SOW 附件,免得後面扯皮。

— Zhang

點開一封信 = 現有 ConversationView
app 已有的 email surface,自帶雙模式:普通通信 → thread cards(此圖為單卡示意,真實是整條 thread 的卡片流),newsletter → 文章排版——resolve 自動判,零新 surface。純閱讀面:無內嵌 Reply(回覆走 line verb / Compose,conversation 內回覆歸 reply-threading 軌道)。唯一新元素是 Part-of chip(line 或 task,跳容器)。打開即標讀 → write-back 清 Gmail 粗體;從 Unread 點開的,計數自動挪去 Past。

WC
Wei-Lin Chen
weilin@ntu.edu.tw
✉ Compose
Lines1 Unread1 Past11
NTU visit coordination
ball with you · fresh

混合體(NTU 朋友) DIRECT
one-click ✗ · reading ✓ · lines ✓ · outbound ✓
facet bar 一條切三面:Lines(選中)/ Unread / Past。Past 11 = 全部通信(newsletter + 普通往來),不再只數 reading。無退訂鈕(沒 one-click)。

GH
GitHub
notifications@github.com
Unsubscribe
Lines2 Unread4 Past156
ci: nightly build failing
watched · 6h
Review requested: PR #302
ball with you · 1d

通知機器人 SUBSCRIPTIONS
one-click ✓ · reading ✗ · lines ✓ · outbound ✗
泛化後也有 Unread/Past(通知流水,Past 156 = 歷史通知檔案)。退訂鈕真的能用。無 Compose(沒 outbound)。

WS
Web Summit
team@websummit.com
Unsubscribe ✉ Compose
Lines1 Unread2 Past29
Speaker slot — AV requirements
ball with you · 2d

全滿體(大會主辦方) SUBSCRIPTIONS
one-click ✓ · reading ✓ · lines ✓ · outbound ✓
四格全開:facet bar 三面 + Unsubscribe + Compose 同屏(dossier 在 header sheet)。歸 Subscriptions(有 one-click),但頁面照樣長出 Lines——scope 答「能不能退訂」,頁面答「我們之間有什麼」。

Contacts
Direct 132 Subscriptions 18
TG
The Generalist
hello@thegeneralist.com
12 unread
ST
Stratechery
email@stratechery.com
3 unread
LN
Lenny's Newsletter
lenny@substack.com
7 unread
GH
GitHub
notifications@github.com
UB
Uber Eats
promo@uber.com
一個 Contacts 目錄,兩個 scope:Direct(默認)= 其餘所有 contact;Subscriptions = 帶 one-click 退訂能力的寄件者(backend 只有一個 isSubscriber bool,不是 type)。unread 數只有 reading source 才有;「—」= 無 reading 內容。已退訂的行沉到底部。

More → Contacts — 單一目錄 + scope pills,不再分兩個入口。
點任何一行 → 同一張自適應 contact page。