jcfischer / jcfischer/supertag-cli

Playwright-free full export via Local API (sync export --full)

Open
#90 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
49
Forks
7
PR merge metrics
No merged PRs in 30d

Description

Context

Reported by a user (Ryan, via Claude Code) running supertag-cli under Daniel Miessler's PAI. Two related constraints make the current browser-based supertag-export a non-starter in that environment:

  1. Packaging — the supertag-export standalone binary couldn't even load Playwright (--external resolves from /$bunfs/root). Partial fix landed in fix/watch-snapshot-column-and-export-load (lazy import so --help works + clear error), but it does not make export function without Playwright.
  2. Policy — PAI's constitution bans Playwright outright (CDP is detectable, headless misses real rendering). So any Playwright-dependent path is disallowed regardless of packaging.

The opportunity

The reporter built a complete 854k-node index — attachments, references, fields, supertag schema — with the browser export never having run (sync status: Latest export: None found). Delta-sync from an empty DB effectively performs a full backfill straight from the Tana Local API.

So a browser may not be needed for full export at all.

Proposal

Add supertag sync export --full (or index --full) that pages the entire graph from the Local API to a point-in-time JSON snapshot — no Playwright, no headless Chrome, works under PAI. This would:

  • give users the legitimate snapshot file the old browser export produced, without a browser
  • make supertag-export optional / deprecatable
  • sidestep both the packaging bug and the PAI policy ban in one move

If a true browser flow is ever required again, the PAI-compatible route is Interceptor (real Chrome), not Playwright — but the Local API already exposing the full dataset suggests the browser is avoidable.

Scope / open questions

  • Snapshot format: match existing Tana JSON export schema (the schema registry already handles storeData wrapping) so downstream indexing is unchanged?
  • Paging strategy + watermark interaction with delta-sync.
  • CLI + MCP surface.
  • Deprecation path for supertag-export.

Filed from external bug report, 2026-06-08.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the existing sync and browser export entry points, then read the schema registry that handles storeData wrapping. Clarify the snapshot format, paging and watermark behavior, CLI and MCP surfaces, and the deprecation path before implementation; done means a full Local API export produces the expected snapshot without Playwright.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, cli, data
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.