Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions src/common/enums/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,12 @@ type ROUTE_KEY =
| 'COMMUNITY'
| 'TOS'
| 'RECOMMENDATION'
| 'APPEALS'
| 'TRANSPARENCY'
| 'TRANSPARENCY_REPORT_2026_H1'
| 'TRANSPARENCY_AUTOMATION'
| 'TRANSPARENCY_RECOMMENDATIONS'
| 'TRANSPARENCY_DIGITAL_LITERACY'

export const PROTECTED_ROUTES: {
key: ROUTE_KEY
Expand Down Expand Up @@ -170,6 +176,23 @@ export const ROUTES: {
// experient page for recommendation engine testing
{ key: 'RECOMMENDATION', pathname: '/recommendation' },

// Compliance and transparency
{ key: 'APPEALS', pathname: '/appeals' },
{ key: 'TRANSPARENCY', pathname: '/transparency' },
{
key: 'TRANSPARENCY_REPORT_2026_H1',
pathname: '/transparency/2026-h1',
},
{ key: 'TRANSPARENCY_AUTOMATION', pathname: '/transparency/automation' },
{
key: 'TRANSPARENCY_RECOMMENDATIONS',
pathname: '/transparency/recommendations',
},
{
key: 'TRANSPARENCY_DIGITAL_LITERACY',
pathname: '/transparency/digital-literacy',
},

// Tag
{ key: 'TAGS', pathname: '/tags' },
{ key: 'TAG_DETAIL', pathname: '/tags/[tagId]' },
Expand Down
3 changes: 3 additions & 0 deletions src/pages/appeals.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import Appeals from '~/views/Appeals'

export default Appeals
3 changes: 3 additions & 0 deletions src/pages/transparency.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import Transparency from '~/views/Transparency'

export default Transparency
3 changes: 3 additions & 0 deletions src/pages/transparency/2026-h1.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import TransparencyReport2026H1 from '~/views/TransparencyReport/Report2026H1'

export default TransparencyReport2026H1
3 changes: 3 additions & 0 deletions src/pages/transparency/automation.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import TransparencyAutomation from '~/views/TransparencyAutomation'

export default TransparencyAutomation
3 changes: 3 additions & 0 deletions src/pages/transparency/digital-literacy.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import DigitalLiteracy from '~/views/DigitalLiteracy'

export default DigitalLiteracy
3 changes: 3 additions & 0 deletions src/pages/transparency/recommendations.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import RecommendationTransparency from '~/views/RecommendationTransparency'

export default RecommendationTransparency
183 changes: 183 additions & 0 deletions src/views/Appeals/content.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
const zh_hant = `
本頁整理 Matters 使用者在檢舉、申訴、個人資料權利、著作權與其他平台處理情境下,可以使用的管道與準備資料。第一版先提供公開說明與 email 流程,尚未提供自動案件查詢。

## 處理時限

- 收到申訴或請求後,原則上會在 3 個工作天內確認收件。
- 一般案件原則上會在 7 個工作天內提供初步回覆。
- 需要查核紀錄、工程協助或法律判斷的案件,原則上會在 14 個工作天內提供處理結果或進度說明。
- 若案件涉及帳號安全、法令限制、他人個資、平台安全或濫用風險,回覆內容可能會受限。

## 檢舉內容

若你看到疑似違反規則的文章、留言或動態,請優先使用內容旁的檢舉功能。送出檢舉時,請選擇最接近的理由,例如侵權、非法廣告、歧視侮辱仇恨、兒少色情、色情廣告、濫發廣告或其他。

若你無法使用站內檢舉,請寄信到 [hi@matters.town](mailto:hi@matters.town),並附上內容網址、內容類型、檢舉理由、相關截圖或補充說明。

## 申訴 Community Watch 處理

若你的留言被 Community Watch 處理,請寄信到 [hi@matters.town](mailto:hi@matters.town),並附上留言 ID 或公開紀錄連結。

你可以補充以下資料。

- 你認為該留言不屬於色情廣告或濫發廣告的理由。
- 原留言所在文章或動態的討論脈絡。
- 任何能協助判斷的截圖、連結或說明。

站方覆核後,可能維持原處理、恢復留言、調整理由、標記申訴狀態、清除原留言內容,或暫停相關隊員資格。

## 申訴內容或帳號限制

若你的內容被隱藏、留言被收合或帳號受到限制,請寄信到 [hi@matters.town](mailto:hi@matters.town)。請附上帳號名稱、內容連結、收到的通知截圖、你認為應重新檢視的理由,以及必要的背景說明。

可申請的救濟結果包含恢復內容、解除限制、調整處理理由、說明維持原處理的原因,或提供下一步可補充的資料。

## 行使個人資料權利

若你要查詢、閱覽、請求複製本、補充或更正個人資料,請寄信到 [ask@matters.town](mailto:ask@matters.town)。若你要請求停止蒐集、處理、利用或刪除個人資料,也可以寄信到 [hi@matters.town](mailto:hi@matters.town)。

為了保護帳號安全,Matters 可能需要確認你的身分。若資料已被去識別化、依法需保留、涉及爭議處理、或已寫入 Matters 無法單方控制的分散式網路,處理方式可能受到限制。

## 著作權或其他權利申訴

若你認為 Matters 上的內容侵害你的著作權或其他權利,請寄信到 [hi@matters.town](mailto:hi@matters.town)。請附上被申訴內容網址、權利歸屬說明、侵害理由、可聯絡方式,以及你希望平台採取的處置。

## 政府或公部門要求

若你想了解 Matters 如何處理政府、法院或執法機關要求,請寄信到 [hi@matters.town](mailto:hi@matters.town)。Matters 將在適用法律允許範圍內處理、記錄並彙整此類要求。聚合統計會納入透明度報告。

## 重大服務故障

若你遇到無法登入、無法發文、支付或資料存取異常等重大服務問題,請寄信到 [hi@matters.town](mailto:hi@matters.town),並附上發生時間、瀏覽器或裝置、錯誤訊息與截圖。若事件影響範圍較大,Matters 會視情況透過站內公告或官方渠道更新狀態。

## 相關頁面

- [透明度中心](/transparency)
- [使用者協議與隱私政策](/tos)
- [Community Watch 公開紀錄](https://community-watch.matters.town/)
- [Community Watch 規則](https://community-watch.matters.town/rules/)
`

const zh_hans = `
本页整理 Matters 使用者在举报、申诉、个人资料权利、著作权与其他平台处理情境下,可以使用的管道与准备资料。第一版先提供公开说明与 email 流程,尚未提供自动案件查询。

## 处理时限

- 收到申诉或请求后,原则上会在 3 个工作天内确认收件。
- 一般案件原则上会在 7 个工作天内提供初步回复。
- 需要查核记录、工程协助或法律判断的案件,原则上会在 14 个工作天内提供处理结果或进度说明。
- 若案件涉及帐号安全、法令限制、他人个资、平台安全或滥用风险,回复内容可能会受限。

## 举报内容

若你看到疑似违反规则的文章、留言或动态,请优先使用内容旁的举报功能。送出举报时,请选择最接近的理由,例如侵权、非法广告、歧视侮辱仇恨、儿少色情、色情广告、滥发广告或其他。

若你无法使用站内举报,请寄信到 [hi@matters.town](mailto:hi@matters.town),并附上内容网址、内容类型、举报理由、相关截图或补充说明。

## 申诉 Community Watch 处理

若你的留言被 Community Watch 处理,请寄信到 [hi@matters.town](mailto:hi@matters.town),并附上留言 ID 或公开记录连结。

你可以补充以下资料。

- 你认为该留言不属于色情广告或滥发广告的理由。
- 原留言所在文章或动态的讨论脉络。
- 任何能协助判断的截图、连结或说明。

站方复核后,可能维持原处理、恢复留言、调整理由、标记申诉状态、清除原留言内容,或暂停相关队员资格。

## 申诉内容或帐号限制

若你的内容被隐藏、留言被收合或帐号受到限制,请寄信到 [hi@matters.town](mailto:hi@matters.town)。请附上帐号名称、内容连结、收到的通知截图、你认为应重新检视的理由,以及必要的背景说明。

可申请的救济结果包含恢复内容、解除限制、调整处理理由、说明维持原处理的原因,或提供下一步可补充的资料。

## 行使个人资料权利

若你要查询、阅览、请求复制本、补充或更正个人资料,请寄信到 [ask@matters.town](mailto:ask@matters.town)。若你要请求停止搜集、处理、利用或删除个人资料,也可以寄信到 [hi@matters.town](mailto:hi@matters.town)。

为了保护帐号安全,Matters 可能需要确认你的身分。若资料已被去识别化、依法需保留、涉及争议处理、或已写入 Matters 无法单方控制的分散式网络,处理方式可能受到限制。

## 著作权或其他权利申诉

若你认为 Matters 上的内容侵害你的著作权或其他权利,请寄信到 [hi@matters.town](mailto:hi@matters.town)。请附上被申诉内容网址、权利归属说明、侵害理由、可联络方式,以及你希望平台采取的处置。

## 政府或公部门要求

若你想了解 Matters 如何处理政府、法院或执法机关要求,请寄信到 [hi@matters.town](mailto:hi@matters.town)。Matters 将在适用法律允许范围内处理、记录并汇整此类要求。聚合统计会纳入透明度报告。

## 重大服务故障

若你遇到无法登入、无法发文、支付或资料存取异常等重大服务问题,请寄信到 [hi@matters.town](mailto:hi@matters.town),并附上发生时间、浏览器或装置、错误讯息与截图。若事件影响范围较大,Matters 会视情况透过站内公告或官方渠道更新状态。

## 相关页面

- [透明度中心](/transparency)
- [使用者协议与隐私政策](/tos)
- [Community Watch 公开记录](https://community-watch.matters.town/)
- [Community Watch 规则](https://community-watch.matters.town/rules/)
`

const en = `
This page collects the current Matters channels for reports, appeals, privacy requests, copyright complaints, and other platform decisions. This first version provides public guidance and email-based handling. Automatic case tracking is not available yet.

## Response timeline

- We aim to acknowledge requests within 3 business days.
- We aim to provide an initial response for ordinary cases within 7 business days.
- Cases that require record review, engineering support, or legal review may take up to 14 business days for an outcome or progress update.
- Responses may be limited when account security, legal restrictions, personal data, platform safety, or abuse risks are involved.

## Report content

If you see an article, comment, or moment that may violate the rules, please use the in-product report action first. Choose the closest reason, such as infringement, illegal advertising, discrimination or hate, child sexual content, porn ads, spam ads, or other.

If you cannot use the in-product report action, email [hi@matters.town](mailto:hi@matters.town) with the URL, content type, reason, screenshots, and context.

## Appeal a Community Watch action

If your comment was handled by Community Watch, email [hi@matters.town](mailto:hi@matters.town) with the comment ID or public record link.

Please include why the comment is not a porn ad or spam ad, the discussion context, and any helpful screenshots or links.

After review, Matters may uphold the action, restore the comment, adjust the reason, update the appeal status, clear the original content, or suspend a watcher role.

## Appeal content or account restrictions

If your content was hidden, your comment was collapsed, or your account was restricted, email [hi@matters.town](mailto:hi@matters.town). Please include your account name, content link, notice screenshot, reason for review, and relevant context.

Possible remedies include restoring content, lifting restrictions, adjusting the reason, explaining why the action is upheld, or requesting more context.

## Personal data rights

For access, copy, correction, or supplementation requests, email [ask@matters.town](mailto:ask@matters.town). For requests to stop collection, processing, use, or delete personal data, you may also email [hi@matters.town](mailto:hi@matters.town).

To protect account security, Matters may need to verify your identity. Handling may be limited for de-identified data, legally retained data, dispute records, or records written to distributed networks outside Matters' sole control.

## Copyright or other rights complaints

If you believe content on Matters infringes your copyright or other rights, email [hi@matters.town](mailto:hi@matters.town). Include the content URL, rights ownership, reason, contact information, and requested action.

## Government or public-sector requests

To ask how Matters handles government, court, or law-enforcement requests, email [hi@matters.town](mailto:hi@matters.town). Matters will handle, record, and aggregate these requests where legally permitted. Aggregated statistics will be included in transparency reporting.

## Major service incidents

For login, publishing, payment, or data-access incidents, email [hi@matters.town](mailto:hi@matters.town) with time, device, browser, error messages, and screenshots. If an incident has broader impact, Matters may update users through in-product notices or official channels.

## Related pages

- [Transparency Center](/transparency)
- [Terms and Privacy Policy](/tos)
- [Community Watch records](https://community-watch.matters.town/)
- [Community Watch rules](https://community-watch.matters.town/rules/)
`

const content = {
zh_hant,
zh_hans,
en,
}

export default content
23 changes: 23 additions & 0 deletions src/views/Appeals/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import ComplianceDoc from '~/views/ComplianceDoc'

import content from './content'

const title = {
zh_hant: '申訴與救濟中心',
zh_hans: '申诉与救济中心',
en: 'Appeals and Remedies',
}

const description = {
zh_hant:
'整理 Matters 使用者的檢舉、申訴、個人資料權利、著作權與平台處理救濟管道。',
zh_hans:
'整理 Matters 使用者的举报、申诉、个人资料权利、著作权与平台处理救济管道。',
en: 'Report, appeal, privacy, copyright, and remedy channels for Matters users.',
}

const Appeals = () => (
<ComplianceDoc title={title} description={description} content={content} />
)

export default Appeals
43 changes: 43 additions & 0 deletions src/views/ComplianceDoc/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { useContext } from 'react'
import ReactMarkdown from 'react-markdown'

import { captureClicks } from '~/common/utils'
import { Head, LanguageContext, Layout } from '~/components'

type LocalizedContent = {
zh_hant: string
zh_hans: string
en: string
}

type ComplianceDocProps = {
title: LocalizedContent
description: LocalizedContent
content: LocalizedContent
}

const pickContent = (content: LocalizedContent, lang?: string | null) =>
content[lang as keyof LocalizedContent] || content.zh_hant

const ComplianceDoc = ({ title, description, content }: ComplianceDocProps) => {
const { lang } = useContext(LanguageContext)
const pageTitle = pickContent(title, lang)

return (
<Layout.Main>
<Layout.Header
left={<Layout.Header.Title>{pageTitle}</Layout.Header.Title>}
/>

<Head title={pageTitle} description={pickContent(description, lang)} />

<Layout.Main.Spacing>
<section className="u-content-article" onClick={captureClicks}>
<ReactMarkdown>{pickContent(content, lang)}</ReactMarkdown>
</section>
</Layout.Main.Spacing>
</Layout.Main>
)
}

export default ComplianceDoc
Loading
Loading