Skip to content

chore: open-source release prep#24

Merged
yousefh409 merged 5 commits into
mainfrom
yousefh409/oss-release-prep
Jul 5, 2026
Merged

chore: open-source release prep#24
yousefh409 merged 5 commits into
mainfrom
yousefh409/oss-release-prep

Conversation

@yousefh409

@yousefh409 yousefh409 commented Jul 5, 2026

Copy link
Copy Markdown
Collaborator

Gets the public repo release-ready. No runtime/source behavior changes beyond two comment edits.

Removed internal artifacts

  • BRIEF.md, docs/superpowers/ (plans + specs), prototypes/ (7 HTML files) — internal dev process, not for a public library face. Still in git history.
  • Fixed the two src/ comments (FlowStagger.tsx, useFlow.ts) that pointed at deleted prototype files, and the README design-spec link.

README reconciled with the shipped 0.5.0 surface

  • Dropped the stale (v0.3) heading; fixed the quick-start snippet (referenced an undefined loading var + Thinking/ChatPanel that weren't imported).
  • Added the 8 primitives missing from the table: Caustics, LiquidCard, MeniscusDivider, LiquidPanel, LiquidTooltip, LiquidText, LiquidDialog, VoiceBall.
  • Purged the removed mercury material; documented the caustics material.
  • Replaced the outdated Roadmap ("v1.0: npm publish" — already shipped) with an honest Release status history.
  • Corrected the bundle-size budget line (14.9 → 36.7 kB).

New primitive docs

Concise pages for the 7 previously-undocumented components, matching the existing docs format and real prop types.

OSS scaffolding

CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md, bug/feature issue templates, PR template.

CI/CD

  • release.yml — publish-on-tag (v*) with npm provenance, tag↔version guard, full guard suite. Needs NPM_TOKEN secret.
  • pages.yml — deploys the playground docs site to GitHub Pages (GITHUB_PAGES=true → vite base: /fluidkit/, local dev unchanged).

Verified locally

typecheck clean · 570/570 tests · build ok · size 31.14 kB / 36.7 kB · gpu-leak ✓ · pack ✓ · build:site emits dist-site/ with /fluidkit/-prefixed assets.

Maintainer follow-up (post-merge)

  • Add NPM_TOKEN repo secret.
  • Enable GitHub Pages (source: GitHub Actions).
  • Push v0.5.0 tag to trigger the publish workflow.

See RELEASE_PREP_NOTES.md.


Open in Devin Review

Summary by cubic

Prepares fluidkit for open-source release by removing internal artifacts, adding OSS docs/templates, and setting up tag-based publish and Pages deploy. No runtime changes; only two comment edits.

  • CI/CD

    • Tag-triggered publish on v* with provenance and tag↔package version guard; runs typecheck, tests, build, size-limit, GPU-leak, and pack checks; needs NPM_TOKEN.
    • Pages workflow builds the docs playground with GITHUB_PAGES=true and deploys dist-site/; vite base switches to /fluidkit/ only in CI.
  • Migration

    • Add NPM_TOKEN repo secret.
    • Enable GitHub Pages (source: GitHub Actions).
    • Push v0.5.0 tag to trigger publish.

Written for commit 3c83d88. Summary will update on new commits.

Review in cubic

@yousefh409 yousefh409 merged commit 656857b into main Jul 5, 2026
6 of 7 checks passed
@yousefh409 yousefh409 deleted the yousefh409/oss-release-prep branch July 5, 2026 06:46

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

Open in Devin Review

Comment on lines +13 to +45
publish:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v5

- uses: actions/setup-node@v5
with:
node-version: 20
cache: npm
registry-url: "https://registry.npmjs.org"

- run: npm ci

- name: Verify tag matches package version
run: |
TAG="${GITHUB_REF_NAME}"
VERSION="v$(node -p "require('./package.json').version")"
if [ "$TAG" != "$VERSION" ]; then
echo "Tag $TAG does not match package version $VERSION"
exit 1
fi

- run: npm run typecheck
- run: npm run test
- run: npm run build
- run: npx size-limit
- run: npm run check:gpu-leak
- run: npm run check:pack

- run: npm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚩 Release workflow runs fewer checks than CI — no React 19 or Node 24 coverage

The CI workflow (.github/workflows/ci.yml) matrices across React 18/19 and Node 20/24 (4 combinations), but the release workflow (.github/workflows/release.yml:14-45) runs only Node 20 with the default React 18. This means a tag push could publish a package that hasn't been validated against React 19 in the release pipeline itself. In practice, the tag commit will usually have passed CI first (since CI runs on pushes to main), but there's no enforcement that CI was green before the tag was pushed — someone could push a tag on a commit that bypassed or failed CI. Consider either adding the React 19 leg to the release workflow, or adding a step that verifies the commit's CI status before publishing.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +33 to +43
- run: npm ci

- run: npm run build:site
env:
GITHUB_PAGES: "true"

- uses: actions/configure-pages@v6

- uses: actions/upload-pages-artifact@v5
with:
path: dist-site

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Info: Pages workflow builds without running tests first

The Pages workflow (.github/workflows/pages.yml:33-43) runs npm ci then npm run build:site and deploys, but does not run tests, typecheck, or any validation before deploying. If a broken commit lands on main (e.g., a force-push or a merge that passes CI but breaks the site build in a way tests don't catch), the Pages deployment proceeds anyway. This is likely acceptable since the site is just the playground/docs and CI already gates PRs, but it's worth noting that the site could deploy from a commit where the library itself is broken.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@greptile-apps

greptile-apps Bot commented Jul 5, 2026

Copy link
Copy Markdown

Greptile Summary

This PR prepares the repository for a public release. The main changes are:

  • Removed internal briefs, planning docs, and prototype HTML files.
  • Updated the README for the current 0.5.0 API, primitive list, materials, release status, and bundle-size budget.
  • Added concise docs for previously undocumented primitives.
  • Added OSS scaffolding for contributing, security reporting, conduct, issues, and pull requests.
  • Added GitHub Actions workflows for Pages deployment and tag-triggered npm publishing.
  • Updated two source comments and the playground Pages base path.

Confidence Score: 5/5

Safe to merge with minimal risk.

Changes are documentation, repository hygiene, source comments, and CI workflow additions. The workflow changes align with existing package scripts and version metadata. The source changes are comment-only and do not alter runtime behavior.

No files require special attention.

T-Rex T-Rex Logs

What T-Rex did

  • The site build completed successfully with exit code 0.
  • The generated HTML includes script and stylesheet tags that reference the asset URLs.
  • The asset summary confirms all asset URLs use the /fluidkit/ prefix.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
.github/workflows/release.yml Adds a tag-triggered npm publishing workflow with a version-tag guard, checks, provenance, and npm token use.
.github/workflows/pages.yml Adds a GitHub Pages deployment workflow that builds the playground site with the Pages base path.
playground/vite.config.ts Sets the playground build base to /fluidkit/ only for GitHub Pages builds.
README.md Refreshes the quick start, primitive table, materials, release status, and development instructions for the current API.
docs/primitives/liquid-dialog.md Adds LiquidDialog docs for controlled usage, focus and close behavior, props, and fallbacks.
docs/primitives/liquid-tooltip.md Adds LiquidTooltip docs covering positioning, interaction behavior, props, and degradation.
docs/primitives/liquid-text.md Adds LiquidText docs for glass and flat text rendering, props, usage, and fallbacks.
CONTRIBUTING.md Adds contributor setup, local checks, PR expectations, and release guardrails.
SECURITY.md Adds supported-version and private vulnerability reporting policy.
src/components/FlowStagger.tsx Updates comments to remove references to deleted prototype files without changing runtime code.
src/hooks/useFlow.ts Updates comments to inline the relevant rise timing description after prototype removal.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant Maintainer
participant GitHub as GitHub Actions
participant Checks as Guard Suite
participant NPM as npm Registry
participant Pages as GitHub Pages

Maintainer->>GitHub: "Push main or v* tag"
alt Push to main
    GitHub->>GitHub: Run Pages workflow
    GitHub->>Checks: npm ci + npm run build:site
    Checks-->>GitHub: dist-site artifact
    GitHub->>Pages: Deploy playground docs site
else "Push v* tag"
    GitHub->>GitHub: Run Release workflow
    GitHub->>Checks: Verify tag matches package.json version
    GitHub->>Checks: typecheck, test, build, size, gpu leak, pack
    Checks-->>GitHub: Guards pass
    GitHub->>NPM: npm publish --provenance --access public
end
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant Maintainer
participant GitHub as GitHub Actions
participant Checks as Guard Suite
participant NPM as npm Registry
participant Pages as GitHub Pages

Maintainer->>GitHub: "Push main or v* tag"
alt Push to main
    GitHub->>GitHub: Run Pages workflow
    GitHub->>Checks: npm ci + npm run build:site
    Checks-->>GitHub: dist-site artifact
    GitHub->>Pages: Deploy playground docs site
else "Push v* tag"
    GitHub->>GitHub: Run Release workflow
    GitHub->>Checks: Verify tag matches package.json version
    GitHub->>Checks: typecheck, test, build, size, gpu leak, pack
    Checks-->>GitHub: Guards pass
    GitHub->>NPM: npm publish --provenance --access public
end
Loading

Reviews (1): Last reviewed commit: "docs: add release prep handoff notes" | Re-trigger Greptile

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.

1 participant