Skip to content

Commit 9cfae96

Browse files
CopilotStan2032
andcommitted
Session 263: Add Tibetan Uprising Day & China-Canada sanctions data, update docs and agent files
Co-authored-by: Stan2032 <68326386+Stan2032@users.noreply.github.com>
1 parent a14c48d commit 9cfae96

11 files changed

Lines changed: 450 additions & 227 deletions

ARCHITECTURE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ src/data/
6565
├── sanctioned_officials_research.json # 34 CCP officials under international sanctions
6666
├── forced_labor_companies_research.json # 30 companies linked to forced labor
6767
├── detention_facilities_research.json # 11 facilities with coordinates, capacity
68-
├── timeline_events.json # 36 events from 1989–2026
68+
├── timeline_events.json # 38 events from 1989–2026
6969
├── security_center_data.json # Security tools and recommendations
7070
├── data_sources.json # RSS sources and source categories
7171
├── academic_experts_research.json # Expert researchers

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ All structured content lives in `src/data/` as JSON files:
115115
| `detention_facilities_research.json` | 11 facilities with coordinates | DetentionFacilities component |
116116
| `sanctioned_officials_research.json` | 34 CCP officials tracked | CCPOfficials component |
117117
| `forced_labor_companies_research.json` | 30 companies linked to forced labor | ForcedLaborTracker component |
118-
| `timeline_events.json` | 36 events (1989–2026) | InteractiveTimeline component |
118+
| `timeline_events.json` | 38 events (1989–2026) | InteractiveTimeline component |
119119
| `legal_cases_research.json` | Legal cases data | LegalCaseTracker component |
120120
| `security_center_data.json` | Security tools & recommendations | SecurityCenter page |
121121
| `data_sources.json` | 11 RSS sources + 4 source categories | DataSources page |

_agents/AGENT_HANDOFF.json

Lines changed: 114 additions & 114 deletions
Large diffs are not rendered by default.

_agents/TODO.md

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Global Anti-CCP Resistance Hub — Active To-Do List
22

3-
> Last Updated: March 8, 2026 (Session 239)
3+
> Last Updated: March 10, 2026 (Session 263)
44
>
55
> **Location:** `_agents/TODO.md` — Active tasks only.
66
> **Completed tasks:** See `_agents/TODO_COMPLETED.md` for full archive.
@@ -36,11 +36,25 @@
3636
- [x] **Monitor Joshua Wong case** — ✅ Updated Session 150
3737
- ✅ Jun 6, 2025: New foreign collusion charge filed (max: life imprisonment)
3838
- ✅ Feb 14, 2026: HK47 appeal dismissed — 4yr 8mo sentence upheld
39-
- Subtask: Monitor foreign collusion trial proceedings
39+
- ✅ Mar 6, 2026: Foreign collusion case transferred to High Court (hearing held)
40+
- Subtask: Monitor foreign collusion trial proceedings — awaiting High Court hearing outcome
41+
- Subtask: Check for post-hearing developments from HKFP, Amnesty, HRW
4042
- [x] **Add Kwok Yin-sang case** — ✅ Session 150
4143
- First family member prosecuted under Article 23 (Feb 26, 2026)
4244
- Father of US-based activist Anna Kwok, sentenced 8 months
4345
- Added to political_prisoners_research.json + emergency_alerts.json
46+
- [x] **Tibetan Uprising Day data** — ✅ Session 263 (March 10, 2026)
47+
- Added timeline event #38: 67th anniversary of Tibetan National Uprising (2026-03-10)
48+
- Added news item: global solidarity protests, 400+ German municipalities raised Tibetan flag
49+
- Sources: Tibet Post International, Committee for Free HK Foundation, HRW
50+
- [x] **China-Canada sanctions data** — ✅ Session 263 (March 10, 2026)
51+
- Added timeline event #37: China retaliates against Canadian human rights organizations (2026-03-08)
52+
- Added news item: asset freezes, entry bans on Canadian orgs/individuals for Uyghur/Tibet work
53+
- Sources: ICIJ, HRW, Amnesty International
54+
- New `international` category added to timeline and test validator
55+
- [x] **HRW World Report 2026** — ✅ Session 263 (March 10, 2026)
56+
- Added news item: "China Repression Deepens, Extends Abroad" (2026-02-04)
57+
- Direct source URL: https://www.hrw.org/news/2026/02/04/china-repression-deepens-extends-abroad
4458
- [x] **Simulated Data Phase 2**: ✅ ALL COMPLETE (5/5 fully migrated to JSON)
4559
- ✅ PoliticalPrisoners page → political_prisoners_research.json (DONE)
4660
- ✅ ForcedLaborTracker → forced_labor_companies_research.json (DONE)
@@ -519,28 +533,20 @@
519533
5. **AGENT_HANDOFF.json** — Machine-readable state snapshot
520534
6. **thoughts/** — Session-by-session decision logs
521535

522-
### Current State Summary (as of Session 179, Mar 4, 2026)
523-
- **Frontend:** React 19 + Vite 7 + Tailwind, 10 pages + 15 profiles, 80 components, 2051 tests (137 files, all passing)
524-
- **Design:** Terminal/ASCII aesthetic 100% applied. Typography cleanup complete. Design system compliance (9 automated checks) + URL health tests. ALL non-terminal accent colors standardized. Contrast overhaul: ALL decorative text-[#1c2a35] replaced with visible text-slate-600/700 (Session 168). ALL text-gray-* standardized to text-slate-* (Session 168). ALL readable labels upgraded from text-slate-500 to text-slate-400 across 72+ files (Session 169, 178). ALL top-level containers use space-y-8 (Session 169). Session 178: Automated text-slate-500 enforcement test added — catches future violations.
525-
- **Navigation:** Simplified from 11→7 items (Session 136). Sidebar w-56. Breadcrumb navigation on all sub-pages (Session 161). Back to Top floating button (Session 161). Keyboard shortcuts for power users: `/` search, `?` help, `g+d/i/p/r/t/e/s` navigation (Session 164). Dashboard section jump navigation bar (Session 171). Pages /directory, /community, /resources, /data-sources still routable but not in nav. Mobile nav tested (13 tests, Session 149).
526-
- **Intelligence Feeds (Session 171):** Per-source progressive loading with real progress bar (X/9 sources). onSourceDone callback in fetchFeedsProgressively(). loadedSources tracking in useLiveFeeds hook. Dashboard intelligence overview now imports actual FEED_SOURCES (9 sources, was hardcoded 4).
527-
- **Emergency Alerts (Session 172-175):** EventCountdown component integrated — alerts with eventDate field show live countdown (days/hours/minutes/seconds). Joshua Wong hearing countdown active. calculateTimeLeft() utility in dateUtils.js. Shows "Event today" with pulsing red on event day. Session 173: Share/Copy button on each alert — copies formatted text to clipboard. formatAlertForSharing() utility generates clean social media text. Session 174: All hashtags removed per human request (considered performative activism). Share functionality preserved without hashtags. Session 175: Alerts now sorted by severity (critical → warning → info). Taiwan PLA alert deactivated (expired). UrgentCaseTimer enhanced with role="timer" ARIA attributes and "Detained since" formatted dates.
528-
- **Data Freshness (Session 173):** New DataFreshnessIndicator component shows color-coded "Verified X days ago" badges (green ≤7d, yellow 8-30d, red >30d). daysSince() and getFreshnessInfo() utilities in dateUtils.js. Integrated into PoliticalPrisoners page header.
529-
- **Page Simplification:** ALL pages simplified + data extracted + components redistributed. CommunitySupport fully merged: EventCalendar+SurvivorStories→Education, VolunteerSignup+DiasporaSupport→TakeAction, ReportSighting+ContactForm→Security (Session 149). EmergencyAlerts→JSON with auto-expiry (Session 149-150).
530-
- **Usability (Sessions 160-175):** Emergency alerts collapse (top 2 shown, rest behind "show more"). QuickStartGuide is non-blocking toast (was full-screen modal). Duplicate hardcoded Jimmy Lai alert removed. Breadcrumbs auto-generated from URL. Back to Top button after 400px scroll. Keyboard shortcuts with `?` help modal (Session 164). PrintableReport component for offline activist distribution (Session 165). RecentUpdates changelog widget on Dashboard (Session 166). Region filter tabs on Profiles page (Session 167). Session 168: Dashboard section label headers, colored stat card borders, tab bar improvements, resource/modal/contact borders, all decorative text visibility fixed. Session 169: Deep pass — 46 components/pages upgraded to space-y-8, 72 files upgraded readable labels text-slate-500→text-slate-400, breadcrumbs text improved. Session 172: EventCountdown live timer on emergency alerts. Session 173: Alert share buttons + data freshness indicators. Session 174: Hashtags removed from all social sharing (20 files). Session 175: Alert severity sorting, Taiwan alert deactivated, UrgentCaseTimer ARIA + detained-since dates.
531-
- **ESLint:** 0 errors, 0 warnings. LanguageSelector→languageUtils.js+LanguageContext.jsx. ThemeContext→themeUtils.js+ThemeContext.jsx. useGlobalSearch extracted to hooks/ (S147). Session 172: Fixed 3 errors from Session 171.
532-
- **framer-motion:** COMPLETELY REMOVED (Session 144). Dependency uninstalled. vendor-motion bundle eliminated (was 116KB/38KB gzip). Zero framer-motion in any source file.
533-
- **Mobile:** WCAG 2.5.5 touch targets (44px), mobile font bumps, iOS zoom prevention, responsive grids. Hamburger menu tested (13 tests).
534-
- **Accessibility:** All role="button" divs → semantic buttons. 208+ ARIA attributes across 53+ files. Heading hierarchy, SkipLinks i18n (8 languages). WCAG AA contrast. EventCountdown uses role="timer" + aria-labels (Session 172).
535-
- **Backend:** Supabase client + service layer integrated. All 4 forms wired. Email service DEFERRED. Backend socket.io fully removed. Supabase Auth: login/logout/admin check (Session 157). Service_role key detection guard (Session 158).
536-
- **Bundle:** Main bundle 308KB (99KB gzip). Vendor splitting (react, router). No more framer-motion vendor chunk.
537-
- **Profile Pages:** 15/15 built (0 coming soon). Region filter tabs: Hong Kong, Mainland China, Uyghur & Tibet, Cross-Border (Session 167).
538-
- **Data:** 63 political prisoners (incl Kwok Yin-sang), 47 sanctioned entities, 34 officials, 30 forced labor companies, 155+ total entries. All data→JSON migrations complete. 23 total JSON data files (incl live_statistics.json). EmergencyAlerts: 6 alerts with auto-expiry + eventDate countdown + share support — no hashtags (incl Joshua Wong Mar 6 hearing alert, Session 164/172/174). Joshua Wong profile updated through Feb 2026 appeal dismissal. 25 recent news items. 12 centralized statistics (incl HK NSL arrests, UFLPA entity list). Political prisoners count updated to 63 across all components (Session 165).
539-
- **Content:** Sanctions verified current as of Mar 2026. Joshua Wong HK47 appeal dismissed Feb 2026, new foreign collusion charge ongoing (next hearing Mar 6, 2026). Joshua Wong hearing CRITICAL alert with live countdown added (Session 164/172). Kwok Yin-sang case added (first family prosecution under Art 23). Gao Zhisheng profile enriched with wife's Capitol Hill appeal Aug 2025. UN forced labor report Jan 2026 added to news.
536+
### Current State Summary (as of Session 263, Mar 10, 2026)
537+
- **Frontend:** React 19 + Vite 7 + Tailwind, 10 pages + 15 profiles, 108+ components, 3602 tests (192 files, all passing). **100% TypeScript** — 360+ .ts/.tsx files, 0 .js/.jsx.
538+
- **Build:** 310KB (99KB gzip), ~5.7s build time. 0 TSC errors, 0 ESLint errors, 0 npm vulnerabilities, 0 CodeQL alerts.
539+
- **Design:** Terminal/ASCII aesthetic 100% applied. 10+ automated design system compliance checks. Square corners only, terminal green (#4afa82), WCAG AA contrast throughout.
540+
- **Navigation:** 7 nav items (Dashboard, Intelligence, Political Prisoners, Profiles, Take Action, Education, Security). Sidebar w-56. Breadcrumbs, Back to Top, keyboard shortcuts (`/` search, `?` help).
541+
- **Data:** 63 political prisoners, 47 sanctions, 34 officials, 30 forced labor companies, 38 timeline events, 31 news items, 65 recent updates. 20 JSON data files. All data verified with Tier 1-2 sources.
542+
- **Analytical Tools:** 15+ major components built (LegalCaseTracker, SanctionImpactAnalyzer, TransnationalRepressionTracker, DiasporaSecurityAdvisor, MediaNarrativeTracker, GenocideLegalFramework, DiplomaticCoercionTracker, CensorshipCircumventionGuide, EconomicImpactAnalyzer, WhistleblowerGuide, PolicyBriefGenerator, and more).
540543
- **Languages:** 8 locales (en, zh-CN, zh-TW, vi, ko, ja, ug, bo)
541-
- **Security:** 9 headers. 0 npm vulns. 0 CodeQL alerts. Service_role key detection in supabaseClient.js.
542-
- **Lint:** 0 errors, 0 warnings. 0 npm vulnerabilities.
543-
- **Test Coverage:** ALL 80 components tested. All 23 JSON data files, all 4 Supabase forms, all 5 hooks tested. 0 untested components remain. 2051 tests across 137 files. exportUtils.js: 25 tests (extractRecords, recordsToCsv, recordsToMarkdown + real data integration). Design system: 9 automated compliance checks (Session 178). URL validation: 6 tests across all 19 JSON data files (Session 179).
544+
- **Security:** 9 headers. Supabase Auth admin login. Service_role key detection. WebRTC leak check.
545+
- **Profile Pages:** 15/15 built with 5-tab layout each. Region filter tabs.
546+
- **Emergency Alerts:** 5 active (Jimmy Lai 20yr, Joshua Wong collusion, HK47, Kwok family, Uyghur forced labor). Auto-expiry, event countdown, severity sorting.
547+
- **API:** REST API via Cloudflare Workers (13 endpoints, rate limiting). Client-side dataApi module.
548+
- **Offline:** Service worker v3 with multi-strategy caching.
549+
- **Content (Mar 10):** Tibetan Uprising Day data added. China-Canada sanctions added. HRW World Report 2026 added. Joshua Wong hearing (Mar 6) — monitoring for outcome.
544550

545551
---
546552

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Session 263 Thoughts — Perpetual Improvement, Tibetan Uprising Day, Data Refresh
2+
3+
**Date:** March 10, 2026 (Tibetan National Uprising Day)
4+
**Agent:** Claude Sonnet 4
5+
**Task:** Continue perpetual autonomous work; update data, documentation, and TODO
6+
**Previous Session:** Session 261 (AGENT_HANDOFF.json v20.0)
7+
8+
---
9+
10+
## ✅ Phase 1: Alignment & Verification (COMPLETE)
11+
12+
### Documentation Read
13+
-`_agents/AGENTS.md` — Agent roles, protocols, 13-domain capability matrix
14+
-`_agents/TODO.md` — 547 lines, comprehensive task list with session history
15+
-`_agents/QUESTIONS_FOR_HUMANS.md` — Q12 pending (custom domain), 5 standing instructions
16+
-`_agents/STYLE_GUIDE.md` — Terminal design system, color palette, emoji policy
17+
-`_agents/AGENT_HANDOFF.json` v20.0 — 261 sessions, HIGH trust
18+
-`_agents/thoughts/SESSION_211_THOUGHTS.md` — Previous session context
19+
-`_agents/NEXT_AGENT_PROMPT.md` — Full onboarding prompt
20+
21+
### Build & Test Verification
22+
- ✅ Build: 5.67s, 310KB (99KB gzip)
23+
- ✅ Tests: 3602 passed, 192 files, 0 failures
24+
- ✅ TypeScript: 100% (360+ .ts/.tsx, 0 .js/.jsx)
25+
- ✅ ESLint: 0 errors, 0 warnings
26+
- ✅ npm audit: 0 vulnerabilities
27+
- ✅ LanguageContext.tsx: NO `any` types — uses `unknown` + explicit casts (previous memory was outdated)
28+
29+
---
30+
31+
## 🚀 Phase 2: Data Refresh (COMPLETE)
32+
33+
### Significant Date: March 10, 2026 — Tibetan National Uprising Day
34+
The 67th anniversary of the 1959 Tibetan uprising against Chinese occupation. Global solidarity protests held worldwide, with 400+ German municipalities raising the Tibetan Snow Lion flag.
35+
36+
### New Timeline Events Added (36 → 38):
37+
1. **ID 37 (2026-03-08):** China Retaliates Against Canadian Human Rights Organizations
38+
- Sources: ICIJ, HRW, Amnesty International
39+
- Category: `international` (new category added to test validator)
40+
- Significance: Escalation of CCP transnational repression
41+
42+
2. **ID 38 (2026-03-10):** 67th Anniversary of Tibetan National Uprising Day
43+
- Sources: Tibet Post International, Committee for Free HK Foundation, HRW
44+
- Category: `tibet`
45+
- Key details: 400+ German municipalities raised Tibetan flag, boarding school crisis
46+
47+
### New News Items Added (28 → 31):
48+
1. **China-Canada sanctions (2026-03-08):** China sanctions Canadian orgs/individuals for Uyghur/Tibet advocacy (ICIJ source)
49+
2. **Tibetan Uprising Day (2026-03-10):** Global protests, 400+ German municipalities, cultural erasure (Tibet Post International)
50+
3. **HRW World Report 2026 (2026-02-04):** China chapter — repression deepens, extends abroad (HRW direct link)
51+
52+
### Test Updates:
53+
- `timeline-events-data.test.ts`: Added `international` to valid categories
54+
- `InteractiveTimeline.test.tsx`: Updated event count references (36 → 38)
55+
- `DataExport.test.tsx`: Updated timeline record count (36 → 38)
56+
57+
### Data Integrity Verified:
58+
- All data tests pass (timeline, consistency, recent news)
59+
- Chronological order maintained
60+
- No CCP sources cited
61+
- All source URLs are Tier 1-2 verified
62+
63+
---
64+
65+
## 💡 Session 263 Decisions & Reasoning
66+
67+
### Decision 1: Prioritize Tibetan Uprising Day Data
68+
**Rationale:** March 10 is one of the most significant dates on the Tibetan freedom calendar. Adding this event while it's happening is a core mission activity — real-time documentation of resistance.
69+
70+
### Decision 2: Add China-Canada Sanctions as `international` Category
71+
**Rationale:** This event doesn't fit neatly into existing categories (mainland/hongkong/uyghur/tibet/falungong/global). It's about transnational repression — China targeting foreign organizations. Created `international` category and updated test validator. This is consistent with the project's expanding coverage of CCP's global operations.
72+
73+
### Decision 3: Add HRW World Report 2026 to News
74+
**Rationale:** This is a Tier 1 source (HRW) providing the most comprehensive annual assessment of China's human rights situation. Direct URL to HRW press release. Essential reference document.
75+
76+
### Decision 4: Use `getAllByText` for Duplicate Statistics
77+
**Rationale:** The InteractiveTimeline component renders the total event count in multiple places (stat cards). Using `getAllByText` instead of `getByText` prevents "multiple elements found" errors when the count changes.
78+
79+
---
80+
81+
## 📊 Updated Project State (Session 263)
82+
83+
### Metrics
84+
- **Build:** 310KB (99KB gzip), 5.67s
85+
- **Tests:** 3602+ passing, 192 files
86+
- **Timeline Events:** 38 (was 36)
87+
- **News Items:** 31 (was 28)
88+
- **Recent Updates:** 65 entries
89+
- **Categories:** 7 (mainland, hongkong, uyghur, tibet, falungong, global, international)
90+
- **Components:** 108+ active
91+
- **TypeScript:** 100% (0 .js/.jsx)
92+
- **Sessions:** 263
93+
94+
### Standing Instructions Verified
95+
1. ✅ "CCP" terminology used throughout (never "CPC")
96+
2. ✅ No CCP state media sources cited
97+
3. ✅ All sources Tier 1-2 (HRW, Amnesty, ICIJ, Tibet Post International)
98+
4. ✅ Dates verified with 2+ independent sources
99+
5. ✅ Agent working autonomously with questions in QUESTIONS_FOR_HUMANS.md
100+
101+
---
102+
103+
## 🎯 Recommended Next Steps
104+
105+
### Immediate (This Session / Next Session):
106+
1. Update AGENT_HANDOFF.json to session 263
107+
2. Update TODO.md with new subtasks and completed items
108+
3. Run full test suite to verify no regressions
109+
4. Consider adding Hong Kong filter to InteractiveTimeline for `international` category display
110+
111+
### Short-term:
112+
1. Add more recent news items (Joshua Wong March 6 hearing outcome?)
113+
2. Check for any tests referencing old counts
114+
3. Consider adding a Tibetan boarding school crisis as a dedicated data entry
115+
116+
### Medium-term (from TODO.md):
117+
1. JSDoc documentation for all components
118+
2. Backup system for content
119+
3. Load testing
120+
4. Discussion forums concept
121+
122+
### Perpetual:
123+
1. Monitor news for breaking developments
124+
2. Update data files with verified events
125+
3. Maintain test coverage as data grows
126+
4. Update agent documentation each session
127+
128+
---
129+
130+
**Status:** ✅ Data refresh complete, tests passing, perpetual work mode active
131+
**Next Agent:** Continue from Session 263 progress. Check this thoughts file + TODO.md for context.

0 commit comments

Comments
 (0)