A source-backed view of public Notability issues, fixes, feature requests, roadmap stages, and releases.
Independent community project. Not affiliated with Notability or Ginger Labs.
Notability Tracker collects public information that would otherwise be spread across support pages, release notes, the public feature board, and GitHub. It keeps the original source close to every item instead of presenting speculation as product news.
| Track | Browse | Verify |
|---|---|---|
| Known issues and documented fixes | Feature requests by published roadmap stage | Original links and collection health |
| iOS release notes | Recent public development updates | Observed status history |
| Locally saved records | Searchable and filterable lists | Snapshot fallback during source outages |
| Search, filter, save, and inspect source evidence. | Responsive navigation and dashboard. |
flowchart LR
A[Public sources] --> B[Scheduled collector]
B --> C[Validated JSON snapshot]
D[Optional Supabase records] --> E[Merge and sanitize]
C --> E
E --> F[React application]
scripts/collect.mjsfetches public sources and parses them withscripts/parsers.mjs.- The collector writes the validated snapshot to
public/data/public-feed.json. src/data/live.tsxloads the snapshot, optionally merges public Supabase records, and exposes a normalized data model to the interface.- GitHub Actions tests, refreshes, builds, and deploys the site every six hours.
The committed snapshot keeps the tracker readable when an upstream service is temporarily unavailable. Snapshot records take precedence when duplicate records are found.
| Source | Data | Collection method |
|---|---|---|
| Notability Support | Public English support articles | Paginated Zendesk API |
| Recently Reported Issues | Ongoing and fixed issues | Structured article parsing |
| Latest iOS App Updates | Versions, changes, and explicit fixes | Structured article parsing |
| Notability Feature Board | Public cards, stages, and updates | Embedded public board data |
| Ginger Labs on GitHub | Repositories with explicit Notability relevance | GitHub public API |
Collection time, upstream modification time, and release date remain separate values. A status-history record means the tracker observed a change between snapshots; it does not establish the exact time that the source changed.
| Layer | Technology |
|---|---|
| Interface | React 18, TypeScript, React Router |
| Data | TanStack Query, Supabase, committed JSON snapshot |
| Collection | Node.js, Cheerio, Marked |
| Tooling | Vite, ESLint, Vitest, Testing Library |
| Delivery | GitHub Actions, GitHub Pages |
Node.js 22 or newer is required.
git clone https://github.com/pxnami/Notability-Tracker.git
cd Notability-Tracker
npm ci
npm run devNo credentials are required because the repository includes the latest public snapshot. To include public database records, copy config/.env.example to .env.local and provide:
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-public-keyNever expose a Supabase service-role or secret key to the frontend.
npm run collect # Refresh public source data
npm run lint # Check code quality
npm run typecheck # Check TypeScript
npm test # Run the test suite
npm run build # Create a production build
npm run preview # Preview the production buildpublic/data/ Generated public snapshot
config/ Build, lint, TypeScript, and environment templates
scripts/ Collection, parsers, and parser tests
src/components/ Shared interface components
src/data/ Loading, validation, and merge boundary
src/lib/ Supabase and local preference utilities
src/pages/ Route-level views
supabase/functions/ Optional support importer
supabase/migrations/ Database schema and access policies
.github/workflows/deploy.yml runs on pushes to main, manual dispatches, and a six-hour schedule. It validates the project, refreshes the public data, builds the Vite application, and deploys it to GitHub Pages. A snapshot commit is created only when source content or status changes.
The optional .github/workflows/sync.yml workflow calls the Supabase importer. It requires SUPABASE_SYNC_URL as a repository variable and SUPABASE_SYNC_TOKEN as a repository secret.
- Only publicly available information is collected; the tracker has no access to private Notability development activity.
- Productboard stages are reproduced as published and are not delivery commitments.
- Release dates remain unspecified when the source does not publish one.
- Reddit data is unavailable until authorized API access is configured.
- Saved records live in the browser and do not synchronize between devices.
Bug reports and focused improvements are welcome. Read CONTRIBUTING.md before changing collectors or source-handling behavior; source wording, attribution, and data integrity must be preserved.
No software license is currently provided. The repository is publicly readable, but no permission to copy, modify, or redistribute its contents is granted by default.
Notability is a trademark of Ginger Labs. Its name and icon are used only to identify the product being tracked. Interface symbols are from the Icons8 Apple SF Symbols family. Paytone One, Nunito Sans, and Source Serif 4 are distributed through Fontsource under their included upstream licenses.