Update install steps - #2
Merged
Merged
Conversation
✅ Deploy Preview for cosmic-klepon-3c693c ready!
To edit notification comments on pull requests, go to your Netlify site settings. |
abrichr
reviewed
May 9, 2023
| <div className="relative flex items-center justify-center mb-2 mx-2 md-12"> | ||
| <div className="grid grid-cols-1 break-words"> | ||
| <h2 id="start" className="text-2xl mt-10">Getting Started</h2> | ||
| <ol className="list-decimal list-inside"> |
Member
Collaborator
Author
There was a problem hiding this comment.
They are required but they are in the install script. Perhaps I misunderstood, I thought we were going to remove those steps from getting started after they were added to the install script.
Member
There was a problem hiding this comment.
That is indeed the goal! I didn't realize they were included in the script.
abrichr
added a commit
that referenced
this pull request
Jan 18, 2026
…I download charts This commit addresses two critical issues with the PyPI download charts: 1. DATA VERIFICATION (Issue #1) - Verified all data is authentic and sourced from pypistats.org API - Confirmed chronological order: openadapt (2023) is earliest package - No mock data or hardcoded values found - Added DATA_VERIFICATION_REPORT.md with complete audit trail 2. COLORBLIND ACCESSIBILITY (Issue #2 - CRITICAL) - Implemented Tol Bright color scheme (scientifically designed for all types of colorblindness) - Added unique line patterns for each package (solid, dashed, dotted, dash-dot, etc.) - Varying line widths (2-3px) for additional visual differentiation - Interactive legend with click-to-toggle package visibility - Enhanced tooltips showing package names, counts, and totals - Hover highlighting: active line emphasized, others fade to 20% opacity - Added ACCESSIBILITY_IMPROVEMENTS.md with implementation details - Added COLORBLIND_TESTING_GUIDE.md for QA testing ACCESSIBILITY FEATURES: - Color + Pattern + Width = Triple redundancy (no reliance on color alone) - Works for protanopia, deuteranopia, tritanopia, and achromatopsia - Meets WCAG 2.1 Level AA standards (Use of Color 1.4.1) - Interactive legend allows isolating specific packages - Enhanced tooltips provide clear identification - Hover effects make line tracing easy TESTING INSTRUCTIONS: - Use Chrome DevTools > Rendering > Emulate vision deficiencies - Test all 4 colorblind modes (protanopia, deuteranopia, tritanopia, achromatopsia) - Verify lines are distinguishable by pattern alone (without color) - Test legend click-to-toggle functionality - Verify hover highlighting works correctly FILES CHANGED: - components/PyPIDownloadChart.js: Complete accessibility overhaul - ACCESSIBILITY_IMPROVEMENTS.md: Comprehensive documentation - COLORBLIND_TESTING_GUIDE.md: Testing procedures for QA - DATA_VERIFICATION_REPORT.md: Data authenticity audit Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
abrichr
added a commit
that referenced
this pull request
Jan 18, 2026
* Hide broken social feeds section
Temporarily disable SocialSection component until feeds are confirmed working.
Currently showing empty/broken feeds (Reddit, Twitter, GitHub activity).
Related: Stats showing 0s for today/week/month despite 5.4k total downloads.
* fix: Use Promise.allSettled for robust stats loading
Replaces Promise.all() with Promise.allSettled() when fetching recent
download stats, GitHub stats, and version history. This ensures that if
any one of these API calls fails, the others will still complete and
display their data correctly.
Previously, if GitHub stats or version history failed to load, the entire
Promise.all() would reject, causing recent stats (Today/This Week/This Month)
to never be set, resulting in them not being displayed at all.
With Promise.allSettled(), each promise is handled independently:
- If recent stats load successfully, they will be displayed
- If GitHub stars fail to load, they won't be shown but other stats will
- If version history fails, tooltips won't show versions but charts will
This also adds better error logging to help diagnose issues in production.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: Use Promise.allSettled in getRecentDownloadStats too
The component was fixed to use Promise.allSettled, but the underlying
getRecentDownloadStats() function still used Promise.all. This caused
stats to show 0s if ANY package fetch failed.
Now both levels use Promise.allSettled for robust error handling.
* fix: Remove non-existent PyPI packages causing API errors
Remove openadapt-tray and openadapt-telemetry from package lists as they
don't exist on PyPI yet. These were causing API 404 errors and being logged
as "package not found" in console.
Also fix packageCount calculation bug in getRecentDownloadStats - was trying
to filter by r.recent instead of r.status === 'fulfilled' && r.value?.recent.
Updated cache buster to force fresh Netlify deployment and clear any cached
API functions.
Changes:
- Comment out openadapt-tray and openadapt-telemetry in all package lists
- Fix packageCount calculation to properly check Promise.allSettled results
- Update CACHE_BUSTER to force fresh build
- Packages can be uncommented once published to PyPI
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* feat: Auto-discover openadapt-* packages from PyPI
Previously, package lists were hardcoded in multiple files requiring manual
updates whenever new packages were published. This change implements automatic
package discovery via PyPI's JSON API.
Changes:
- Add /api/discover-packages endpoint to check for all openadapt-* packages
- Update utils/pypistatsHistory.js to fetch packages dynamically
- Update utils/pypiStats.js to fetch packages dynamically
- Update pages/api/pypistats.js to validate against discovered packages
- Implement multi-layer caching (server + client) with 24h TTL
- Add graceful fallback to known packages if discovery fails
Benefits:
- New packages automatically appear on website when published to PyPI
- No manual code updates needed for new packages
- Maintains security by validating package name patterns
- Resilient with fallback list if PyPI is unreachable
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Refactor: Establish single source of truth for package lists
Consolidate all package list definitions to use the discover-packages API
as the single source of truth. This eliminates duplication and ensures
consistency across the codebase.
Changes:
- pages/api/discover-packages.js: Enhanced documentation marking it as
the single source of truth for package lists
- pages/api/pypistats.js: Removed duplicate fallback list, now relies
entirely on discover-packages API with improved error handling
- utils/pypiStats.js: Removed duplicate fallback list, uses stale cache
as fallback if API unavailable
- utils/pypistatsHistory.js: Removed duplicate fallback list, uses stale
cache as fallback if API unavailable
- PACKAGE_LIST_ARCHITECTURE.md: Added comprehensive documentation of the
package list architecture and design decisions
Benefits:
- Single place to update package lists
- No more inconsistencies between files
- Better error handling with stale cache fallback
- Clear documentation of data flow
The discover-packages API now serves as the authoritative source for all
package lists, with all other code fetching from this endpoint. If the API
is unavailable, client code falls back to stale cache, and the API itself
has its own fallback list for complete PyPI failures.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: Extract package discovery logic to shared utility module
Fixes 500 errors in /api/pypistats by eliminating HTTP calls between
serverless functions, which are unreliable in edge environments.
Root Cause:
The pypistats API was attempting to call the discover-packages API via
HTTP (fetch). In serverless/edge environments (Netlify/Vercel), this
causes 500 errors because:
1. API routes can't reliably call each other via HTTP
2. The VERCEL_URL construction was error-prone in preview deployments
3. Serverless functions may not be able to make HTTP calls to themselves
Solution:
Created utils/packageDiscovery.js as a shared utility module that both
API endpoints import directly. This eliminates all HTTP calls between
serverless functions while maintaining the single source of truth
architecture.
Changes:
- utils/packageDiscovery.js: New shared module containing all package
discovery logic, caching, and fallback handling
- pages/api/discover-packages.js: Refactored to use shared utility,
now just provides HTTP interface to the discovery logic
- pages/api/pypistats.js: Replaced HTTP fetch to discover-packages
with direct import of shared utility module
Benefits:
- No HTTP calls between serverless functions
- Maintains single source of truth architecture
- Better error handling and resilience
- Works reliably in all deployment environments
- Faster execution (no HTTP overhead)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: Disable Netlify CDN caching for pypistats API to fix per-package stats
CRITICAL BUG FIX: The pypistats API endpoint was returning the same cached
data for all packages because Netlify's CDN caches based on URL path only,
not query parameters. This caused all packages to show openadapt's stats.
Root Cause:
- Cache-Control header with s-maxage enabled Netlify CDN caching
- Netlify CDN cache key = URL path only (/api/pypistats)
- Query params (?package=X&endpoint=Y) were NOT part of cache key
- First request cached, all subsequent requests got same response
Fix:
- Set Netlify-CDN-Cache-Control: no-store to disable CDN caching
- Keep browser caching with Cache-Control: public, max-age=3600
- Add Cache-Tag header for potential selective cache purging
- Updated CACHE_BUSTER to force fresh deployment
Testing:
External API returns different data per package:
- openadapt: {last_day: 244, last_week: 254, last_month: 575}
- openadapt-ml: {last_day: 9, last_week: 29, last_month: 130}
- openadapt-capture: {last_day: 54, last_week: 73, last_month: 88}
After fix, each package should get its own unique data.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Implement comprehensive colorblind accessibility improvements for PyPI download charts
This commit addresses two critical issues with the PyPI download charts:
1. DATA VERIFICATION (Issue #1)
- Verified all data is authentic and sourced from pypistats.org API
- Confirmed chronological order: openadapt (2023) is earliest package
- No mock data or hardcoded values found
- Added DATA_VERIFICATION_REPORT.md with complete audit trail
2. COLORBLIND ACCESSIBILITY (Issue #2 - CRITICAL)
- Implemented Tol Bright color scheme (scientifically designed for all types of colorblindness)
- Added unique line patterns for each package (solid, dashed, dotted, dash-dot, etc.)
- Varying line widths (2-3px) for additional visual differentiation
- Interactive legend with click-to-toggle package visibility
- Enhanced tooltips showing package names, counts, and totals
- Hover highlighting: active line emphasized, others fade to 20% opacity
- Added ACCESSIBILITY_IMPROVEMENTS.md with implementation details
- Added COLORBLIND_TESTING_GUIDE.md for QA testing
ACCESSIBILITY FEATURES:
- Color + Pattern + Width = Triple redundancy (no reliance on color alone)
- Works for protanopia, deuteranopia, tritanopia, and achromatopsia
- Meets WCAG 2.1 Level AA standards (Use of Color 1.4.1)
- Interactive legend allows isolating specific packages
- Enhanced tooltips provide clear identification
- Hover effects make line tracing easy
TESTING INSTRUCTIONS:
- Use Chrome DevTools > Rendering > Emulate vision deficiencies
- Test all 4 colorblind modes (protanopia, deuteranopia, tritanopia, achromatopsia)
- Verify lines are distinguishable by pattern alone (without color)
- Test legend click-to-toggle functionality
- Verify hover highlighting works correctly
FILES CHANGED:
- components/PyPIDownloadChart.js: Complete accessibility overhaul
- ACCESSIBILITY_IMPROVEMENTS.md: Comprehensive documentation
- COLORBLIND_TESTING_GUIDE.md: Testing procedures for QA
- DATA_VERIFICATION_REPORT.md: Data authenticity audit
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add comprehensive documentation for accessibility improvements
Added two additional reference documents:
- IMPLEMENTATION_SUMMARY.md: High-level overview and quick reference
- VISUAL_REFERENCE.md: Visual guide to package identification
These documents complement the existing:
- ACCESSIBILITY_IMPROVEMENTS.md: Technical implementation details
- COLORBLIND_TESTING_GUIDE.md: QA testing procedures
- DATA_VERIFICATION_REPORT.md: Data authenticity audit
Together, these five documents provide complete coverage of the
accessibility improvements and data verification process.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
abrichr
added a commit
that referenced
this pull request
Jul 20, 2026
…234) Overhaul the homepage for conversion and a differentiated "wow" hero, keeping all target-state copy guards green. Hero (ReplayHero): - Keep the differentiated governed-replay trace; make it visually richer. - Substrate strip (Browser/Windows/macOS/RDP/Citrix + "one loop") cycles each play so the SAME governed loop reads as running across every interface — target-state, all first-class. - App/browser chrome, a scan-sweep on the drift beat, an amber drift-flash, and a spring "VERIFIED · 0 MODEL CALLS" stamp punch-in as the emotional peak; 0 model calls / $0.00 punchline retained. - Paired with a REAL OpenAdapt Cloud screenshot (reuses DashboardShowcase footage) as shipping-product proof, in its own product chrome with an "Effect verified" pill and a link into the Cloud section. - Pure DOM/CSS/SVG, theme-aware via tokens, responsive (two-up collapses to one column; no horizontal overflow at 375/320), reduced-motion safe. Elevate OpenAdapt Cloud: - New accent "Start with OpenAdapt Cloud" CTA in the hero next to the primary evaluation CTA. - Move DashboardShowcase (the hosted-product teaser) to UPPER-MIDDLE, right after the reference-workflow sections; full Pricing stays lower. Qualification: - Move the "use APIs first / UI-only last mile" section from #2 to LOW, next to the /compare link it feeds. A brief, confident positive-fit line now leads in the hero. Paper: - Add a /paper route (placeholder linking the canonical openadapt-flow paper source and a defensive PDF path) and link it from the hero. Tests: update cypress/e2e/basic.cy.js for the new hero + order; npm test (93 honesty guards) and next build both green. Claude-Session: https://claude.ai/code/session_01NyCHrzA1psrKMFfroYbzaM Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.

No description provided.