Skip to content

chore(release): 0.6.0 — Phase 7 frontend (GraphQL, push channels, Next.js server data)#64

Merged
officialCodeWork merged 7 commits into
mainfrom
chore/release-0.6.0
Jul 20, 2026
Merged

chore(release): 0.6.0 — Phase 7 frontend (GraphQL, push channels, Next.js server data)#64
officialCodeWork merged 7 commits into
mainfrom
chore/release-0.6.0

Conversation

@officialCodeWork

Copy link
Copy Markdown
Owner

Release 0.6.0 — Phase 7, frontend half

Bumps all packages + generator/CLI/MCP version strings 0.5.0 → 0.6.0 and folds the three frontend Phase 7 steps (merged to development since 0.5.0) into main.

What's in it

Wider data-source coverage — the graph now sees the ways modern React apps actually fetch, beyond REST calls in the component body:

  • 7.1 GraphQL (C4) — Apollo/urql operations become data sources, keyed by operation name and typed by operation (query/mutation/subscription). Inline gql tag or an imported/co-located gql const (resolved across files); disambiguated from react-query, which shares the useQuery/useMutation hook names.
  • 7.3 Push channels (C8) — new WebSocket(url) / new EventSource(url) become websocket / sse data sources, so a component fed by a live channel shows it in its lineage.
  • 7.2 Next.js server data (C9) — a page's server-side fetching is attributed to the page even when it isn't in the component body: pages-router getServerSideProps/getStaticProps/getStaticPaths, alongside app-router async RSC server components.

Verification

  • 7 packages build clean; full unit suite green; eval 341/0/0 · determinism 1.000; typecheck + lint clean.
  • npm packui-lineage-0.6.0.tgz (21 files, both bins run, --version 0.6.0, generator: ui-lineage@0.6.0, no runtime @coderadar/* leakage).
  • All three new extractors smoke-tested through the packed binary (graphql query/mutation/subscription · websocket + sse · three Next.js pages attributed).

Publish (npm publish) is intentionally left to the maintainer (needs npm credentials).

Backend parsers (7.4 Python · 7.5 Go · 7.6 federation) remain — still sketch-level, best held until this release's feedback confirms priority.

🤖 Generated with Claude Code

DeepCodeWork and others added 7 commits July 17, 2026 03:46
Recognize the GraphQL a component runs and treat each operation as a data source,
reusing the existing data-source node + fetches-from wiring (no schema change —
`graphql` was already a DataSourceKind).

- New graphql.ts: parseGraphqlOperation reads operation type/name (+ root fields
  as an anonymous-op fallback) from a gql document; graphqlOperationFromArg
  resolves a hook argument to an operation — inline gql/graphql tagged template,
  or an identifier followed via getDefinitionNodes() so an imported/co-located
  gql const resolves cross-file.
- detectDataSource gains a GraphQL branch before the react-query branch (Apollo/
  urql reuse useQuery/useMutation, so it only claims the call when the argument
  is an actual gql document, else falls through). Emits sourceKind "graphql",
  method = query/mutation/subscription, endpoint = operation name (the value
  federation/attribution join on).
- New fixture c4-graphql (imported-const useQuery/useMutation + inline
  useSubscription); 9 unit tests incl. react-query disambiguation on c5.

eval 326/0/0/0, determinism 1.000, all metrics 1.000; parser-react 160 tests,
typecheck + lint clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…raphql-adapter

feat(graphql): GraphQL operations as data sources (7.1, C4)
Server-push channels are long-lived data sources, not request/response fetches.

- New `sse` DataSourceKind (schema regenerated); new pushchannels.ts:
  detectPushChannel matches `new WebSocket(url)` / `new EventSource(url)` by
  constructor name (allowing a window./self. qualifier — low false-positive
  set) and resolves the URL through the existing resolveEndpoint.
- extractBodyFacts gains a NewExpression pass emitting the data-source node +
  fetches-from edge, mirroring the fetch path (skipped inside API wrappers).
  websocket for WebSocket, sse for EventSource; transport in method (WS/SSE).
- New fixture c8-push-channels (WebSocket wss:// + SSE /api/.../stream); 4 unit
  tests.

eval 332/0/0/0, determinism 1.000, all metrics 1.000; parser-react 164 tests,
schema drift gate green, typecheck + lint clean. socket.io deferred (needs
import-aware detection).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ush-channels

feat(push-channels): WebSocket/SSE as data sources (7.3, C8)
Server-side data fetching feeds a page even when the fetch isn't in the
component body.

- RSC async server components already worked (inline await fetch is caught by
  the body walk) — locked with a test.
- Pages-router getServerSideProps/getStaticProps/getStaticPaths are top-level
  exported functions, not components/hooks, so their fetches were never scanned.
  The main loop now collects those functions per file and runs data-source
  extraction on their bodies attributed to the file's default-export page
  component (fetches-from).
- New fixture c9-nextjs-server-data (async RSC + getServerSideProps +
  getStaticProps); 4 unit tests.

eval 341/0/0/0, determinism 1.000, all metrics 1.000; parser-react 168 tests,
typecheck + lint clean. Server actions deferred.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…extjs-server-data

feat(nextjs): attribute Next.js server-side data to its page (7.2, C9)
Bump all packages to 0.6.0 and the generator / CLI / MCP version strings. Folds
in the frontend half of Phase 7 (all merged to development since 0.5.0) —
widening data-source coverage beyond REST calls in the component body:
- 7.1 GraphQL operations as data sources (C4)
- 7.3 WebSocket/SSE push channels (C8)
- 7.2 Next.js server data: RSC async + getServerSideProps/getStaticProps (C9)

README changelog and the "what it understands" summary updated.

Verified: 7 packages build clean, full unit suite, eval 341/0/0 + determinism
1.000, typecheck + lint clean, npm pack -> ui-lineage-0.6.0.tgz (both bins,
--version 0.6.0, generator ui-lineage@0.6.0, no runtime @coderadar/* leakage),
and all three new extractors smoke-tested through the packed binary.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@officialCodeWork
officialCodeWork merged commit 36460c3 into main Jul 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants