Skip to content

feat: Add component attribution and Afterburn developer tool for identifying in-use components #1738

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 14 commits into
base: main
Choose a base branch
from

Conversation

zmdavis
Copy link

@zmdavis zmdavis commented Aug 8, 2025

Screenshot 2025-08-08 at 7 18 50 AM

zmdavis added 9 commits August 7, 2025 15:42
Implements Phase 1 of the Contrail developer tool by adding minimal
data attributes to all LaunchPad components for identification.

**Changes:**
- Add attribution utility in @launchpad-ui/core with single data attribute
- Enhance useLPContextProps to automatically add data-launchpad="ComponentName"
- Update all 48+ components in @launchpad-ui/components to use attribution
- Minimize DOM pollution with single attribute vs multiple attributes

**Technical Details:**
- Components now render: <button data-launchpad="Button">
- Provides essential component identification for Contrail highlighting
- Contrail tool can provide additional metadata (version, docs, etc.)
- Zero performance impact when Contrail is inactive
…omprehensive testing

- Complete @launchpad-ui/contrail package with full feature set
- Add ComponentHighlighter with CSS injection and hover detection
- Add InfoPopover with dark/light theme support and responsive design
- Add comprehensive test coverage (42 tests) for all utilities and components
- Add keyboard shortcut system with cross-platform support (Cmd/Ctrl + L)
- Add metadata generation system scanning 59 components
- Fix all lint and TypeScript errors for clean codebase
- Add Storybook integration with demo page
- Update project documentation with completion status
complete reimplementation of launchpad contrail with:
- css-only highlighting for perfect positioning and performance
- vanilla js contrailcontroller with tooltip system
- advanced ux features: draggable settings, smart component filtering
- comprehensive test coverage with 51 passing tests
- removed old react-based componenthighlighter components
- updated project documentation and implementation status
…atus

Updates project plan document with:
- Phase 2 completion status and latest progress
- Comprehensive test coverage details (51 tests passing)
- Key achievements and implementation milestones
- Phase 3 planning for rename to "afterburn" and code polish
- Architecture review and simplification roadmap
…links

## Major Changes

### Package Rename: contrail → afterburn
- Rename package directory: `packages/contrail` → `packages/afterburn`
- Update package.json: `@launchpad-ui/contrail` → `@launchpad-ui/afterburn`
- Rename main component: `LaunchPadContrail` → `LaunchPadAfterburn`
- Rename controller classes: `ContrailController` → `AfterburnController`
- Update all CSS classes: `contrail-*` → `afterburn-*`
- Rename CSS file: `contrail.css` → `afterburn.css`

### Documentation Link Fixes
- **Remove broken storybook functionality** - eliminate 404 links
- **Fix URL generation** with proper category mapping based on actual Storybook structure:
  - Button: `components-buttons-button--docs` ✅
  - TextField: `components-forms-textfield--docs` ✅
  - Modal: `components-overlays-modal--docs` ✅
  - Alert: `components-status-alert--docs` ✅
- **Comprehensive category mapping** for 50+ components across 9 categories
- **Simplified tooltip UI** - single "📖 Documentation" link

### Enhanced Settings Panel
- **Added GitHub repository link** - 🔗 Links to repo
- **Added Storybook link** - 📚 Links to component library
- **Improved styling** with proper hover states and dark mode support

## Quality Assurance
- ✅ All 53 tests passing (updated for new URL patterns)
- ✅ Code formatted and linted with Biome
- ✅ TypeScript compilation successful
- ✅ Comprehensive test coverage for URL generation

## Breaking Changes
- Package name changed: `@launchpad-ui/contrail` → `@launchpad-ui/afterburn`
- Component name changed: `LaunchPadContrail` → `LaunchPadAfterburn`
- Removed `storybookUrl` prop (no longer needed)

The "afterburn" creates a visible highlighting effect on components, like the
trail left by a rocket engine. All documentation links now work correctly with
the actual Storybook structure.
Clean up the old contrail package directory and files after successful
rename to afterburn. All functionality has been preserved and enhanced
in the new afterburn package.
Updates the project plan document to reflect completed work:

## Phase 3.1 Completion Status
- ✅ Complete package rename: contrail → afterburn
- ✅ Fixed documentation links with proper URL generation
- ✅ Removed broken storybook functionality
- ✅ Enhanced settings panel with repo and storybook links
- ✅ All 53 tests passing with comprehensive coverage

## Documentation Updates
- Updated consumer usage examples (removed deprecated storybookUrl)
- Updated metadata interface (removed storybookUrl field)
- Added comprehensive Phase 3.1 completion summary
- Documented breaking changes and migration path
- Updated key achievements to include working documentation links

The plan now accurately reflects the current state with Phase 3.1
complete and optional Phase 3.2 (code review & simplification) pending.
Create dedicated @launchpad-ui/attribution package and implement data
attributes across all component packages to enable universal component
identification for developer tools like Afterburn.

**New Package:**
- @launchpad-ui/attribution: Minimal attribution utilities with
  addLaunchPadAttribution() function

**Attribution Coverage:**
- Enhanced: @launchpad-ui/components (50+ components)
- Added: @launchpad-ui/drawer, @launchpad-ui/dropdown, @launchpad-ui/filter
- Added: @launchpad-ui/form, @launchpad-ui/menu, @launchpad-ui/modal
- Added: @launchpad-ui/navigation, @launchpad-ui/overlay, @launchpad-ui/popover
- Added: @launchpad-ui/table, @launchpad-ui/tooltip
- Updated: @launchpad-ui/afterburn (uses new attribution package)

**Migration:**
- Moved attribution utilities from @launchpad-ui/core to dedicated package
- All components now render data-launchpad="ComponentName" attributes
- Enables universal component highlighting and identification

**Technical Benefits:**
- Universal developer tool support across all LaunchPad components
- Minimal DOM pollution (single data attribute per component)
- Zero performance impact when developer tools inactive
- Consistent attribution pattern across 15+ packages
@zmdavis zmdavis requested a review from a team as a code owner August 8, 2025 14:18
Copy link

changeset-bot bot commented Aug 8, 2025

🦋 Changeset detected

Latest commit: 4ba66cf

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 16 packages
Name Type
@launchpad-ui/attribution Minor
@launchpad-ui/components Minor
@launchpad-ui/navigation Minor
@launchpad-ui/dropdown Minor
@launchpad-ui/overlay Minor
@launchpad-ui/popover Minor
@launchpad-ui/tooltip Minor
@launchpad-ui/button Minor
@launchpad-ui/drawer Minor
@launchpad-ui/filter Minor
@launchpad-ui/modal Minor
@launchpad-ui/table Minor
@launchpad-ui/form Minor
@launchpad-ui/menu Minor
@launchpad-ui/afterburn Minor
@launchpad-ui/core Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link
Contributor

@nhironaka nhironaka left a comment

Choose a reason for hiding this comment

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

nice

since launchpad is a public repo, are there any security concerns for us exposing this?

@apucacao
Copy link
Contributor

apucacao commented Aug 8, 2025

Add rootDir to tsconfig.build.json to ensure declaration files are generated
at dist/index.d.ts instead of dist/src/index.d.ts, fixing build errors in
consuming packages.
Copy link

pkg-pr-new bot commented Aug 8, 2025

yarn add https://pkg.pr.new/@launchpad-ui/[email protected]
yarn add https://pkg.pr.new/@launchpad-ui/[email protected]
yarn add https://pkg.pr.new/@launchpad-ui/[email protected]

commit: 8552ba4

@zmdavis
Copy link
Author

zmdavis commented Aug 8, 2025

nice

since launchpad is a public repo, are there any security concerns for us exposing this?

I can't think of any? It's an opt-in and doesn't expose anything that isn't already publicly available.

zmdavis added 4 commits August 8, 2025 07:45
The @launchpad-ui/attribution package was missing its built distribution files,
causing TypeScript import errors in CI. This adds the generated dist files
to resolve the module resolution issues.
Remove @launchpad-ui/core dependency from button package to resolve
circular build dependency: navigation → dropdown → button → core → button
…m coverage

- Add comprehensive test coverage for afterburn package exports and functionality
- Add package-specific vitest config with 70% coverage threshold
- Exclude generated files from coverage checks globally
- Fix CI test failures by achieving sufficient coverage for all afterburn functionality
- Replace private API testing with proper public API testing
- Update test to focus on keyboard shortcut behavior rather than double-click
- Remove test dependency on double-click event which wasn't working properly in test environment
@@ -0,0 +1,12 @@
/**
Copy link
Contributor

Choose a reason for hiding this comment

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

Is checking in these dist files intentional?

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.

4 participants