* fix(shortcodes): latest-patch CLI version for cloud-serverless
Add cloud-serverless to the condition that handles cloud products,
and use influxdb.latest directly for CLI version lookups.
Root cause: The shortcode only checked for "cloud" version when
deciding to use the influxdb CLI version. Cloud Serverless pages
have $product="influxdb3" which doesn't exist in products.yml,
causing $latestVersion to be empty.
Fix: Calculate $influxdbLatest directly from products.influxdb.latest
within the CLI block, ensuring cloud products always use the correct
lookup key (v2) for the influx CLI version.
Includes Cypress test covering v2, Cloud, and Cloud Serverless.
Closes#6646
* Restore latest-patch shortcode for cloud-serverless. Revert "hotfix: influxdb (v2) CLI version (#6644)"
This reverts commit 5f792bd47a.
* chore(link-checker): update configs for v1.3.0 severity classification (#6688)
Remove exclusions for sites that return 403/429 (bot protection) and
5xx (server errors) - these are now handled by severity classification:
- 403/401/429 → info (shown but don't fail CI)
- 5xx/timeout → warning (shown but don't fail CI)
- 404/410/DNS → error (fail CI)
Removed exclusions:
- GitHub, Slack, Reddit, StackOverflow
- Docker Hub, Grafana, Microsoft Learn
- Claude.ai, Dremio, Scarf, InfluxData support
Kept exclusions:
- Localhost/local network URLs
- Example/placeholder URLs
- CI-specific workarounds (canonical URLs, file fragments)
Added [severity] configuration section with default thresholds.
* fix(ci): add path offset for PR preview subdirectory baseURL
When PR preview builds use a subdirectory baseURL like
/docs-v2/pr-preview/pr-XXXX/, shortcodes that parse .RelPermalink
to detect product context fail because the path has extra segments.
This fix:
- Adds config/pr-preview/params.yml with prPreviewPathOffset: 3
- Updates workflow to use -e pr-preview environment
- Updates api-endpoint, influxdb/host, and children shortcodes to
use the offset when indexing path segments
- Adds nil-safety with default fallback for placeholder_host
Normal builds are unaffected (offset defaults to 0).
* fix(ci): add path offset to product-name and sidebar for PR previews
Apply the same prPreviewPathOffset fix to product-name.html and
sidebar.html that was applied in the initial PR #6665.
These templates parse RelPermalink to detect product context, but when
baseURL includes a subdirectory path (e.g., /docs-v2/pr-preview/pr-XXXX/),
the path indices shift. This fix uses the configurable offset to skip
extra path segments in PR preview builds.
* fix(ci): skip PR preview for fork PRs and add notice comment
Fork PRs cannot deploy to gh-pages because GITHUB_TOKEN has read-only
access to the base repository. This is a GitHub security feature.
Changes:
- Add condition to skip preview job for fork PRs
- Add fork-notice job to post helpful comment explaining limitation
- Include local preview instructions for contributors
When PR preview builds use a subdirectory baseURL like
/docs-v2/pr-preview/pr-XXXX/, shortcodes that parse .RelPermalink
to detect product context fail because the path has extra segments.
This fix:
- Adds config/pr-preview/params.yml with prPreviewPathOffset: 3
- Updates workflow to use -e pr-preview environment
- Updates api-endpoint, influxdb/host, and children shortcodes to
use the offset when indexing path segments
- Adds nil-safety with default fallback for placeholder_host
Normal builds are unaffected (offset defaults to 0).
* refactor(ci): improve PR preview with products.yml and index page
- Load product prefixes from data/products.yml (single source of truth)
- Build regex pattern dynamically from loaded namespaces
- Fix CSS copying: Hugo outputs fingerprinted CSS at root level
- Generate index.html with clickable links to preview pages
- Add test for influxdb3_explorer namespace
This keeps the URL parser in sync as new products are added and
provides a better preview experience with navigable links.
* fix(ci): set baseURL for preview subdirectory deployment
Hugo generates absolute paths for fingerprinted assets based on baseURL.
When deploying to GitHub Pages subdirectory (pr-preview/pr-XXXX/), assets
were incorrectly resolving to the root instead of the preview path.
This sets --baseURL to the correct preview URL so all asset paths work.
- Load product prefixes from data/products.yml (single source of truth)
- Build regex pattern dynamically from loaded namespaces
- Fix CSS copying: Hugo outputs fingerprinted CSS at root level
- Generate index.html with clickable links to preview pages
- Add test for influxdb3_explorer namespace
This keeps the URL parser in sync as new products are added and
provides a better preview experience with navigable links.
Update link-checker to v1.2.5 which adds --root-dir support for lychee v0.22.0+.
This fixes CI failures caused by lychee v0.22.0 (released Dec 5, 2025)
requiring --root-dir to resolve root-relative links in local files.
The link-checker now automatically sets --root-dir to the Hugo public/
directory when checking local HTML files.
Fixes failures for PRs touching /telegraf/v1 and /influxdb3/explorer paths.
* feat(askai): add Kapa.ai source group filtering for InfluxDB v3
- Add ai_source_group_ids field to all InfluxDB v3 products in data/products.yml
- Add getProductSourceGroupIds() function to retrieve source group IDs from product data
- Enables filtered AI responses using Kapa source groups for documentation pages
- Follows existing pattern for dynamic product configuration
- Implement version-specific config support (__v1, __v2 suffixes)
- Append version hints to example questions for InfluxDB database products only
- Make example questions generic (remove product-specific names)
- Tools (Telegraf, Chronograf, Kapacitor, Flux, Explorer) display questions without version hints
- Pre-fills chat input with [version: /path/] for InfluxDB database products
- Users can easily edit or remove the pre-filled text
- Works for manual opens (Cmd+K) and programmatic opens
- Converts module to TypeScript
* refactor(ask-ai): change version format to 'My version: <product name>'
Use human-readable product names instead of URL paths for better UX.
Example: 'My version: InfluxDB 3 Core' instead of '[version: /influxdb3/core/]'
* fix(ask-ai): restore working Kapa.open() pre-fill implementation
- Replace textarea detection with direct Kapa.open() call
- Add Kapa preinitialization code
- Use click handler on .ask-ai-open button with capture phase
- Handle conversation reset event to re-fill version context
- Remove console logging for cleaner production code
* fix(ask-ai): remove parentheses from example questions for consistency
Make example question format match the pre-fill format:
- Before: 'question (My version: product)'
- After: 'question My version: product'
This ensures users don't think there's a difference between the two formats.
* fix(askai): add Explorer product mapping for Ask AI widget
- Add influxdb3_explorer mapping to getCurrentProductData()
- Add explorer context to getContext() function
- Ensures Explorer pages use correct ai_sample_questions from products.yml
- Reorder Explorer questions with 'install and run' first
This fixes the issue where Explorer Ask AI widget was showing wrong
example questions by properly loading the influxdb3_explorer config.
* test(page-context): add comprehensive e2e tests for product mappings
Add Cypress tests to validate page-context.js correctly identifies:
- Product context values for all InfluxDB products
- Product data from products.yml configuration
- Version information
- AI sample questions and source group IDs
- Placeholder host values
Tests cover:
- InfluxDB 3 (Core, Enterprise, Explorer, Cloud variants, Clustered)
- InfluxDB v2 and v1
- InfluxDB Cloud (TSM)
- Tools (Telegraf, Chronograf, Kapacitor, Flux)
Validates the fix for Explorer Ask AI showing correct example questions.
Related to #jts-askai-group-filters branch work.
* feat(test): add --no-mapping flag to e2e test runner
Allow running functionality tests without requiring content file paths.
The --no-mapping flag skips content-to-URL mapping, making it easier
to run tests that don't depend on specific content files.
Usage:
# With content mapping (for content-specific tests)
node run-e2e-specs.js content/influxdb3/core/_index.md
# Without content mapping (for functionality tests)
node run-e2e-specs.js --spec cypress/e2e/page-context.cy.js --no-mapping
Benefits:
- Simplifies running functionality tests like page-context.cy.js
- Reduces test startup time by skipping unnecessary file mapping
- Makes test commands clearer about their purpose
The page-context test was updated to work correctly with this flag.
* deps: update caniuse and related hook files
* test: Add a `--no-mapping` flag to run tests without specific content files (i.e., test contains all the URLs it needs)
* chore(ask-ai): Format example questions
* test(page-context): add comprehensive e2e tests for all products in products.yml
- Expanded test suite from 6 to 27 tests covering all products
- Added tests for InfluxDB 3 products (Explorer, Core, Enterprise, Cloud Serverless, Cloud Dedicated, Clustered)
- Added tests for InfluxDB v2 and Cloud (TSM)
- Added tests for InfluxDB v1 and Enterprise v1
- Added tests for other products (Telegraf, Chronograf, Kapacitor, Flux)
- Validates page mappings in page-context.js
- Validates AI sample questions configuration in products.yml
- All 27 tests passing
* fix(page-context): correct enterprise_influxdb URL pattern matching
- Changed pattern from /enterprise_v1/ to /enterprise_influxdb/
- Fixes Ask AI example questions not showing correctly for Enterprise v1
- Pattern now matches actual URL structure /enterprise_influxdb/v1/
- All 27 e2e tests passing
* test(page-context): add UI validation for Ask AI widget configuration
- Added 4 tests checking Kapa widget script data attributes
- Tests verify data-modal-example-questions contains correct product-specific questions
- Validates Explorer, Core, Enterprise, and Enterprise v1 configurations
- All 31 tests passing (27 existing + 4 new UI tests)
* feat(ask-ai): add help in Ask AI widget placeholder
- InfluxDB placeholder recommends specifying product and version
- Fix page-context.js to use products.influxdb_cloud instead of products.cloud
- Add UI tests verifying version-specific naming in Kapa widget script tags
* feat(ask-ai): Tailors placeholder for each version/product. Disables "Viewing <product>" in disclaimer note.
* feat(plugins): add automated plugin documentation sync workflow
- Add GitHub Actions workflow for syncing plugin docs from influxdb3_plugins
- Create issue template for triggering sync requests
- Add Node.js transformation script (port_to_docs.js) with ES modules
- Add mapping configuration (docs_mapping.yaml) for all official plugins
- Add npm scripts for plugin sync operations
- Include comprehensive documentation in helper-scripts/influxdb3-plugins/README.md
The workflow provides:
- Issue-triggered automation with no cross-repo secrets required
- Validation of source READMEs against template requirements
- Content transformation with Hugo shortcodes and GitHub URLs
- Screenshot generation for visual validation
- Automatic PR creation with detailed change summaries
* Updated source paths in docs_mapping.yaml to use ./influxdb3_plugins/ instead of ../influxdb3_plugins/ to match what the
GitHub Actions workflow expects when it clones the
repository:
1. GitHub Actions workflow clones to ./influxdb3_plugins/
2. docs_mapping.yaml references
./influxdb3_plugins/influxdata/[plugin]/README.md
3. Local development can manually clone the repo to the same
location for testing
Tupdated all the source paths in
docs_mapping.yaml to use ./influxdb3_plugins/ instead of
../influxdb3_plugins/. This now matches exactly what the
GitHub Actions workflow expects when it clones the
repository.
The paths are now consistent:
1. GitHub Actions workflow clones to ./influxdb3_plugins/
2. docs_mapping.yaml references
./influxdb3_plugins/influxdata/[plugin]/README.md
3. Local development can manually clone the repo to the same
location for testing
This resolves the inconsistency and makes the automation
more reliable. For local development, developers would
just need to run:
git clone
https://github.com/influxdata/influxdb3_plugins.git
From the docs-v2 root directory, and then they can use the
same paths that the automation uses.
* Updated source paths in docs_mapping.yaml to use ./influxdb3_plugins/ instead of ../influxdb3_plugins/ to match what the
GitHub Actions workflow expects when it clones the
repository:
1. GitHub Actions workflow clones to ./influxdb3_plugins/
2. docs_mapping.yaml references
./influxdb3_plugins/influxdata/[plugin]/README.md
3. Local development can manually clone the repo to the same
location for testing
Tupdated all the source paths in
docs_mapping.yaml to use ./influxdb3_plugins/ instead of
../influxdb3_plugins/. This now matches exactly what the
GitHub Actions workflow expects when it clones the
repository.
The paths are now consistent:
1. GitHub Actions workflow clones to ./influxdb3_plugins/
2. docs_mapping.yaml references
./influxdb3_plugins/influxdata/[plugin]/README.md
3. Local development can manually clone the repo to the same
location for testing
This resolves the inconsistency and makes the automation
more reliable. For local development, developers would
just need to run:
git clone
https://github.com/influxdata/influxdb3_plugins.git
From the docs-v2 root directory, and then they can use the
same paths that the automation uses.
* Jmercer/plugin sync test (#6468)
* fix: update workflow branch references from master to main
* fix: update issue template branch references from master to main
- Update sync-plugin-docs.yml description (line 40)
- Update placeholder from 'master' to 'main' (line 41)
- Update default value from 'master' to 'main' (line 42)
- Add influxdb3_plugins/ to .gitignore
- Ensures template matches influxdb3_plugins default branch
* Update .gitignore
---------
Co-authored-by: Jason Stirnaman <stirnamanj@gmail.com>
* Update docs_mapping.yaml
* Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Apply suggestion from @jstirnaman
* Apply suggestion from @jstirnaman
* Apply suggestion from @jstirnaman
* Apply suggestion from @jstirnaman
* Use <docs-root>/.ext/influxdb3_plugins for the source path
---------
Co-authored-by: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Remove contributing.instructions.md build logic and simplify to only
build platform reference from products.yml. Update lefthook to only
trigger on products.yml changes instead of CONTRIBUTING.md.
- Add ODBC driver installation and configuration docs
- Add Power BI Desktop custom connector setup docs
- Configure host, port, and token conditionals for all InfluxDB 3 products
- Set frontmatter with proper metadata and related content
The shared content files (content/shared/influxdb3-query-guides/execute-queries/odbc.md
and content/shared/influxdb3-visualize/powerbi.md) contain product-specific conditionals
for server URLs, ports, and tokens. Each product version sources these shared files.
Next steps: Edit the content/shared files to update any remaining product-specific
instructions in the step-by-step procedures if needed. Server, port, and token
conditionals are already configured throughout the documentation.
Creates an interactive InfluxDB version detector component in TypeScript and a shortcode that generates a button to trigger
the version detector modal.
The shortcode takes a parameter that displays a predefined set of links for results.
- Support URL pattern matching and ping header analysis
- Add questionnaire-based product identification logic
- Adds the shortcode in a note in /influxdb3/core/visualize-data/grafana/
- Set up TypeScript configuration for the project
- Configure automatic TypeScript compilation in pre-commit hooks
- Add to Grafana documentation pages
- Remove last remnants of old Cypress link checker
- Add Cypress tests, but many are still broken
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Apply suggestions from code review
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
Update layouts/shortcodes/influxdb-version-detector.html
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
Update assets/js/influxdb-version-detector.ts
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
Update assets/styles/components/_influxdb-version-detector.scss
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
Fixes:
- Fix Hugo template to include product names in detector config
- Change elimination scores from -100 to -1000 for proper filtering
- Add scoring logic for generic "InfluxDB" product (OSS v2.x)
- Exclude generic "InfluxDB" from results (too vague)
- Add comprehensive test scenario checklist to Cypress tests
- Free license now correctly excludes Enterprise, Clustered, Dedicated
- Self-hosted now correctly excludes all Cloud products
- SQL language now correctly excludes v1 and v2 products
- Results now show only specific products (OSS 1.x, OSS 2.x, etc.)
Changes:
- When users answer "I'm not sure" to all questions, show a helpful
message directing them to the reference table instead of showing
a weak ranking with low confidence.
- Detect when all questionnaire answers are "unknown"
- Display custom message explaining lack of information
- Auto-expand reference table for easy product identification
- Hide ranked results when insufficient information provided
- Make product names clickable in the quick reference table to allow
users to quickly navigate to product documentation after identifying
their InfluxDB version.
- Follow Copilot guidelines for naming instructions files according to the directory they apply to
- Copy instructions files as CLAUDE.md to the relevant directory.
- Update placeholder instructions
- Optimize Copilot instructions
- Remove Claude instructions and reference the Copilot instructions file instead
TODO: update the commit hook script to correctly generate and place the files.
- Add v1.12.2 as first official v1.12.x release (2025-09-15)
- Include all v1.12.0 and v1.12.1 features since they weren't officially released
- Add v1.12.2-specific bug fix for SSH key usage
- Update latest patch version to 1.12.2 in products.yml
- Add reusable PR template for future v1.x releases
- Add span tag for backward compatibility with v1.12.x links
Closesinfluxdata/docs-v2#6381
- Use link-checker-v1.2.3 which includes fix for base URL detection
- Prevents false positives when checking local files for new pages
- Resolves broken link errors for pages that exist locally but not in production yet
Add comprehensive documentation for maintainers on how to:
- Create releases in docs-tooling (automated)
- Manually distribute binaries to docs-v2 (required for private repo)
- Update workflow references when needed
This addresses the missing process documentation for link-checker
binary distribution between the two repositories.
feat(ci): update link-checker to v1.2.2 and add manual sync workflow
- Update pr-link-check.yml to use link-checker-v1.2.2 with latest fixes
- Add sync-link-checker-binary.yml for manual binary distribution
- Improvements in v1.2.2: base URL detection, anchor validation, JSON parsing
The v1.2.2 release fixes the Hugo base URL detection issue and
improves anchor link validation that was tested in this PR.
chore(ci): Replaced PR link validation workflow with new workflow from docs-tooling/link-checker/.github-workflows-link-check.yml
chore: organize .gitignore
test: add content to trigger link-checker workflow
This small change tests the pr-link-check.yml workflow
feat: update link-checker workflow and documentation
- Add production config with corrected User-Agent placement
- Remove old link validation actions (replaced by link-checker)
fix: update link-checker workflow configuration
- Update Node.js version to 20 for dependency compatibility
feat: use pre-built link-checker binary from docs-tooling releases
- Replace building from source with downloading from releases
- Use GitHub API to get latest release and binary
- Maintain same artifact structure for downstream job
fix: improve change detection in pr-link-check workflow
- Use GitHub API for reliable PR file detection
- Add debug output to show all changed files
- Fix conditional logic for when jobs should run
docs: update TESTING.md with binary distribution and automated GitHub Actions integration
- Document pre-built binary download as recommended installation method
- Explain automated PR link checking workflow for docs-v2
- Replace manual GitHub Actions example with automated integration details
- Remove exaggerated language and specify actual exclusion types
fix(ci): download link-checker binary from docs-v2 releases
- Change binary source from private docs-tooling to public docs-v2 releases
- Fixes GitHub Actions permission issues accessing private repos
- Binary is now stored as a release asset on docs-v2 itself
test: add test file with valid links to verify workflow passes
test: remove temporary test file for link checker workflow
The test file was only needed to verify the workflow functionality
and should not be part of the documentation.
docs: update TESTING.md to document docs-v2 binary distribution
- Change primary installation method to download from docs-v2 releases
- Explain that binary distribution enables reliable GitHub Actions access
- Update automated workflow description to reflect docs-v2 release usage
- Maintain build-from-source as alternative option
refactor(ci): combine workflow into single job for cleaner PR display
- Merge detect-changes, build-site, and download-link-checker into single job
- All setup steps now run conditionally within one job
- Cleaner PR display shows only 'Check links in affected files'
- Maintains all functionality with improved UX
fix(ci): exclude problematic URLs from link checking
- Add reddit.com exclusions (blocks bots)
- Add support.influxdata.com exclusion (SSL certificate issues in CI)
- Prevents false positive failures in automated link checking
- Add if: false conditions to all jobs to prevent execution
- Add disabled-check job to indicate the workflow is disabled
- Preserves original conditions in comments for easy re-enabling
To re-enable: Remove the 'if: false' conditions and disabled-check job
- Fix Test Setup Validation to handle edge cases without false failures
- Remove unnecessary Cypress artifacts upload (screenshots/videos)
- Reduce verbose logging while maintaining debugging capability
- Add clear success/failure reporting with actionable messages
- Improve handling of empty test subjects and fallback scenarios
The test now only fails for genuine setup issues, not configuration
edge cases like empty subject lists or cache optimization scenarios.
- Fix GitHub Actions exit logic to only fail when broken links exist
- Improve Cypress test error handling with robust fallback mechanism
- Enhance Test Setup Validation to handle cache scenarios correctly
The workflow was incorrectly failing when generating success comments
with cache statistics, treating any comment generation as broken links.
Now properly distinguishes between success messages and actual failures.
Verification Results
- Direct module loading: ✅ Works perfectly
- Incremental validation: ✅ Processes files correctly
- Subprocess calls: ✅ No EPIPE errors
- Cache functionality: ✅ Operating normally
🔧 Technical Details
- All modules now use CommonJS require() statements
- Proper module.exports for compatibility
- File extensions changed to .cjs to work with type:
module in package.json
- Maintained all existing functionality and error
handling
during execution
- Resource management: Reducing memory pressure in
CI that causes process termination
- Signal handling: Properly cleaning up processes
on unexpected termination
- Timeout adjustments: Giving more time for
operations in CI environments
3. The Test Setup Validation Failure: This was
happening because the before() hook was failing when
it couldn't communicate with a dead Hugo process.
Your health monitoring will catch this earlier and
provide better error messages.
statements inside the async callback to ensure
subjects array is populated before accessing its
length
2. Proper Async Handling: Used
cy.wrap(Promise.all()) to handle multiple async
Cypress tasks correctly
3. Maintained Functionality: All existing GitHub
Actions workflows and Cypress tests will
continue to work
Both naming conventions are appropriate for
their use cases:
- filePathToUrl: Transforms content file paths
to URL paths
- fileURLToPath: Converts ES module file URLs to
file system paths
1. Script execution detection in matrix-generator.js -
Added fileURLToPath import and updated comparison
2. Script execution detection in incremental-validator.js -
Added fileURLToPath import and updated comparison
3. Script execution detection in link-extractor.js - Added
fileURLToPath import and updated comparison
4. Script execution detection in comment-generator.js -
Added fileURLToPath import and updated comparison
Medium Priority Issues (Fixed):
5. Extracted duplicated URL transformation logic - Created
shared utility module and updated both files to use it
6. Fixed cache key strategy - Updated GitHub workflow to
use content-based hashing instead of base SHA
Changes Made:
- 4 JavaScript files: Updated with robust script execution
detection using fileURLToPath
- 1 utility module: Created
/.github/scripts/utils/url-transformer.js for shared logic
- 2 files: Updated to use the shared URL transformation
utility
- 1 workflow file: Improved cache key strategy for better
cache hit rates
- Add GitHub Actions for automated link validation on PRs
- Implement incremental validation with caching (30-day TTL, configurable)
- Add matrix generator for parallel validation strategy
- Create comprehensive TESTING.md documentation
- Add cache manager with configurable TTL via env var or CLI
- Implement smart link extraction and validation
- Add PR comment generator for broken link reports
- Update Cypress tests to use incremental validation
- Consolidate testing docs from CONTRIBUTING.md to TESTING.md
Key improvements:
- Cache-aware validation only checks changed content
- Parallel execution for large changesets
- Detailed PR comments with broken link reports
- Support for LINK_CACHE_TTL_DAYS env var
- Local testing with yarn test:links
- Reduced false positives through intelligent caching