Repository navigation
Audit: complete the Fumadocs migration, correct the docs, repo hygiene - #11
Merged
Merged
Conversation
…orrected docs The previous commit adopted fumadocs-ui as chrome only: content stayed in hand-written TSX with a hand-built page tree, hand-maintained TOCs, title-only search, and no syntax highlighting. Move the 14 docs pages to content/docs/*.mdx sourced through fumadocs-mdx, so navigation, TOCs, full-text search (Orama via /api/search), and shiki highlighting are all derived from one content source. llms.txt and llms-full.txt are now generated from the same source instead of hand-maintained strings, and the sitemap derives from source.getPages(). Content corrections found by the code audit are folded in: GitHub label pass-through and issue-type (kind) support documented truthfully, Linear create/teamId semantics fixed, missing adapter options (apiBaseUrl, accessToken, endpoint, issueType, priorityNameByCanonical, fetch) and the testing recording API documented, GitLab added to reference enumerations, error.code documented as the CJS-safe discriminator, and the guide article's Linear/Jira concurrency descriptions corrected. RootProvider moves to the root layout with a static dark class on <html>, and globals.css sets explicit heading/list defaults so pages outside /docs render identically whether or not Tailwind's preflight has been loaded. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Add the missing 0.5.0 and 0.3.1 entries to the root CHANGELOG.md - Make docs/idempotency.md version-neutral instead of pinned to v0.4 - Remove the duplicate .vercel entry in .gitignore - Drop the dead minimumReleaseAgeExclude list (no minimumReleaseAge is set) - Ignore private example/app packages in the changesets config - Remove an unused WorkItemPriority import in the GitHub adapter Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
# Conflicts: # apps/web/components/copy-button.tsx # apps/web/components/docs-search.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Context
A full multi-agent audit of the repo ran across six dimensions (public API design, provider-adapter consistency, internal cleanliness, package/repo hygiene, docs accuracy, docs-stack choice), with every finding adversarially verified against the source. This PR ships the docs and hygiene outcomes; the SDK behavior findings are listed below as follow-ups so they can be reviewed on their own.
Note: this branch builds on
codex/fumadocs-docs(the "Use Fumadocs for documentation UI" commit), so that commit is included here.Questioning the docs choice: verdict
Fumadocs is the right tool — but the previous commit adopted it as a UI skin only. For a small TS SDK with docs inside an existing Next.js app on Vercel, Docusaurus/Starlight (second framework) and Mintlify (hosted) are worse fits, and Fumadocs is the best-maintained Next-native option. However, the migration had kept hand-written TSX content, a hand-built page tree, hand-maintained per-page TOCs, title-only search over 14 hardcoded links, and no syntax highlighting — full dependency cost, none of the content-tooling benefit. The audit's verdict: either complete the migration or revert; the half-adopted state was strictly worse than both. This PR completes it.
What this PR does
Docs stack — real Fumadocs content pipeline
content/docs/*.mdxsourced viafumadocs-mdx(source.config.ts+loader()+ catch-all route); original URLs and anchor ids are preservedcreateFromSource+ the default search dialog (was: title-only filter over 14 links, with deadlinksconfig)llms.txt/llms-full.txtare generated from the MDX source instead of hand-maintained strings that could silently driftRootProvidermoves to the root layout with a staticdarkclass on<html>(portaled UI now inherits the theme); explicit heading/list defaults inglobals.cssso non-docs pages render identically whether or not Tailwind's preflight has loadeddocs-shell.tsx,docs-search.tsx,lib/docs.ts, 14 TSX pagesDocs content corrections (each verified against the SDK source)
kind) read/write support was understated;apiBaseUrl(GitHub Enterprise Server) andfetchoptions were undocumentedinput.project" was false —teamIdis required,input.projectonly assigns a project;accessToken/endpointoptions and thecanceledstate mapping documentedaccessToken,issueType,priorityNameByCanonicaloptions documentedcalls,seed,clearCalls,workCommentFixture,fullWorkCapabilities, capability overrides) documentedgitlabadded to provider enumerations;error.codedocumented as the discriminator that stays reliable in CJS/mixed module graphsRepo hygiene
CHANGELOG.md: missing 0.5.0 and 0.3.1 entries added;docs/idempotency.mdno longer pinned to v0.4minimumReleaseAgeExcludelist removed (nominimumReleaseAgeis set); duplicate.vercelgitignore entry removed; private example/app packages ignored in changesets; unusedWorkItemPriorityimport removedVerification
pnpm --filter work-sdk build && test: 186/186 passapps/web:tsc --noEmitclean,next buildclean (all 14 docs paths SSG), 11/11 site tests passllms.txt/llms-full.txtgeneratedFollow-ups from the audit (not in this PR — SDK behavior changes)
High severity:
tsup.config.ts):instanceof WorkConflictErrorsilently fails for CJS/mixed consumers because everydist/*.cjsinlines its ownWorkErrorcopy. Fix: share one errors chunk in CJS or export type guardsclient.ts:200): a plan prepared against GitHub repo A commits through repo B's client; the idempotency store key has the same gap. Fix: add ascopeidentity toWorkAdapter, verify it incommit(), include it in store keyslist({state})post-filter uses states the read mapping can never produce on GitHub/GitLab/Jira → permanently empty pages for some filtersacceptWarningscontract broken for GitHub/GitLab: adapters hard-throw on fields the client only warns aboutretryAfterMsreported as 0 when the rate-limit header is absent (Jira/Linear/Azure) — callers that sleepretryAfterMsbusy-loopMedium: memory adapter
update()maps every state to"unknown"(breaks parity with real adapters);requestJsoninhttp.tsis dead code while five adapters hand-duplicate error translation with drift; write types accept priority"unknown"that every adapter rejects; five divergent auth option shapes;verifyAppliedexists in only 3/5 adapters; GitLab silently collapsescanceled→completedon write; two divergent npm publish workflows (tag-triggered one bypasses the protectednpmenvironment);MemoryIdempotencyStoreshares mutable receipt references; AzurestateForWriteself-defeating lowercase map lookup.🤖 Generated with Claude Code