Commit Graph

83 Commits (8533d21d0ab0dec8a2ea65ec3fea899bc7daf759)

Author SHA1 Message Date
Jason Stirnaman b8418d9788
fix(shortcodes): latest-patch CLI version for cloud-serverless (#6655)
* 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.
2026-01-02 12:47:12 -06:00
Jason Stirnaman 0fbf9e5e9b
fix(ci): complete PR preview path offset and fork PR handling (#6667)
* 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
2025-12-22 15:30:26 -06:00
Jason Stirnaman 74c33e9483
fix(ci): add path offset for PR preview subdirectory baseURL (#6662)
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).
2025-12-22 10:03:27 -06:00
Jason Stirnaman 61a88db39b
fix(ci): set baseURL for PR preview subdirectory deployment (#6658)
* 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.
2025-12-19 18:31:37 -06:00
Jason Stirnaman e03e7874fc
refactor(ci): improve PR preview with products.yml and index page (#6656)
- 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.
2025-12-19 12:12:20 -06:00
Jason Stirnaman e203482b62
feat(ci): add PR preview system for GitHub Pages (#6636)
* docs(ci): add PR preview system design

Document the design for GitHub Pages PR previews including:
- Selective deployment of changed pages only
- Reuse of existing content-utils.js change detection
- URL parsing from PR descriptions for layout/asset changes
- Automatic cleanup on PR close
- Storage budget management

* docs(ci): add PR preview implementation plan

Detailed task-by-task implementation plan including:
- 8 tasks with complete code and exact file paths
- Reuses existing content-utils.js for change detection
- Scripts for URL parsing, change detection, file staging
- Main workflow and cleanup workflow
- Setup documentation and testing steps

* feat(ci): add PR URL parser for preview page detection

* fix(ci): harden PR URL parser against malicious input

- Add path validation to reject path traversal attacks (..)
- Add validation to reject HTML/script injection attempts
- Add validation to reject URL-encoded characters
- Update regex to capture markdown link paths: [text](/path/)
- Add comprehensive test suite with 27 security and functionality tests

Security improvements:
- Reject paths containing '..' to prevent directory traversal
- Reject paths with suspicious characters: <, >, |, {, }, `, etc.
- Reject URL-encoded characters to prevent encoding attacks
- Validate all paths against known product prefixes

Functionality improvements:
- Support markdown link syntax: [text](/influxdb3/core/)
- Support reference-style markdown links
- Maintain existing support for production URLs, localhost URLs, and relative paths

* feat(ci): add change detection script for PR previews

* fix(ci): remove unused import from detect-preview-pages.js

* feat(ci): add preview file staging script for selective deployment

* fix(ci): add input validation to preview file staging script

- Add path traversal validation to urlToHtmlPath() to reject paths containing '..'
- Add array validation at start of preparePreviewFiles() with clear error message
- Fix copiedCount to only increment when safeCopy() actually succeeds
- Add return value to copyPage() to track success/failure

Addresses security vulnerabilities and improves accuracy of preview stats.

* feat(ci): add preview comment manager for sticky PR comments

* fix(ci): sanitize user input in preview comments to prevent XSS

* feat(ci): add PR preview workflow for GitHub Pages deployment

* fix(ci): correct environment variables and checkout in PR preview workflow

* feat(ci): add weekly stale preview cleanup workflow

* docs(ci): add PR preview setup guide

* Delete docs/plans/2025-12-16-pr-preview-design.md

* Delete docs/plans/2025-12-16-pr-preview-implementation.md

* fix(ci): add input validation for PR preview security

- Add single quote to rejected characters in URL path validation
  to prevent JavaScript injection in workflow string interpolation
- Add BASE_REF validation regex to prevent command injection,
  allowing slashes for feature branches (e.g., feature/new-auth)
- Add PR_NUM numeric validation in cleanup workflow
- Add tests for single quote handling and BASE_REF validation
2025-12-18 13:44:14 -06:00
Copilot 7a1ceb439f
Configure GitHub Copilot instructions and navigation system (#6628)
* Initial plan

* feat: enhance Copilot instructions with style guidelines and navigation

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* fix: correct .claude/agents link in INSTRUCTIONS.md

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* refactor: remove duplication and app-specific references from instructions

- Simplified INSTRUCTIONS.md from 118 to 76 lines by removing duplicate content
- Changed "Claude Desktop app" to "Claude with MCP" throughout
- Removed file pattern table (already in copilot-instructions.md)
- Removed specialist agents table (already in copilot-instructions.md)
- Removed general documentation table (already in copilot-instructions.md)
- INSTRUCTIONS.md now serves as simple navigation guide without duplication

Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>

* Update README.md

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
2025-12-15 12:43:34 -06:00
Jason Stirnaman ebbb0d4721
chore(ci): update link-checker to v1.2.5 (#6602)
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.
2025-12-10 09:52:51 -06:00
Jameelah Mercer ffef19f60b
Merge branch 'master' into jmercer/complete-plugin-sync-fix 2025-11-18 16:57:38 -08:00
Jason Stirnaman f084fe3a31
Ask AI group filters (#6529)
* 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.
2025-11-18 16:43:02 -06:00
meelahme 3c30f19436 Disable screenshot generation for MVP 2025-11-17 13:30:01 -08:00
meelahme e0d56ad41e fix: added npm install playwrite 2025-11-14 13:25:54 -08:00
meelahme 930bb7091b fix: correct relative path to influxdb3_plugins dir 2025-11-14 10:53:57 -08:00
meelahme e18e2a1daf debug: add file structure inspection to identify path issue 2025-11-14 10:28:02 -08:00
meelahme df8d5f8378 fix: combine PAT and path fixes for plugin sync 2025-11-10 10:00:39 -08:00
meelahme d645e75215 fix: use PAT for reading from influxdb3_plugins 2025-11-10 09:42:50 -08:00
Jason Stirnaman 20562d5bb6
Automate plugin documentation sync workflow between influxdb3_plugins and docs-v2 (#6329)
* 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>
2025-10-20 17:18:34 -05:00
Jason Stirnaman 1ea96437cb
Update .github/instructions/content.instructions.md
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
2025-10-09 10:49:01 -05:00
Jason Stirnaman 9e40ccb02a
Update .github/instructions/content.instructions.md
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
2025-10-09 10:48:39 -05:00
Jason Stirnaman 3a857320e8 chore(instructions): restructure agent instructions build process
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.
2025-10-08 16:15:30 -05:00
Jason Stirnaman 189d86fcda chore(instructions): restructure contributing instructions for humans and assistants 2025-10-08 15:48:44 -05:00
Jason Stirnaman 96c5fa3a72 feat(influxdb3): add ODBC and Power BI documentation with product-specific examples
- 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.
2025-10-06 17:43:54 -05:00
Jason Stirnaman e93e78be0a feat(influxdb): Version detector shortcode triggers a modal
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.
2025-09-30 19:01:21 -05:00
Jason Stirnaman f4a93cba38 chore(qol): Instruction to use /version/ in shared links 2025-09-25 11:59:51 -05:00
Jason Stirnaman 5ccbb42139
Update .github/instructions/shortcodes-reference.instructions.md 2025-09-23 10:47:00 -05:00
Jason Stirnaman 241b915a9c
Update .github/instructions/shortcodes-reference.instructions.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-23 10:44:11 -05:00
Jason Stirnaman 673e0bbd4a
Update .github/instructions/shortcodes-reference.instructions.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-23 10:41:00 -05:00
Jason Stirnaman 3e4864a836 Instructions files cleanup:
- 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.
2025-09-23 10:37:10 -05:00
Jason Stirnaman 2d13650387 docs(enterprise): add v1.12.2 release notes
- 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

Closes influxdata/docs-v2#6381
2025-09-12 16:54:45 -05:00
Jason Stirnaman 33549bed68 chore(ci): update link-checker to v1.2.4
- Update GitHub Actions workflow to use link-checker v1.2.4
- Ensures CI uses latest link validation tooling with improvements and bug fixes
2025-09-12 16:46:48 -05:00
Jason Stirnaman 55017154fb feat(influxdb3): add install package command documentation
- Create shared CLI documentation for install package command
- Add Enterprise and Core frontmatter files referencing shared content
- Add --node-spec option to create trigger command for Enterprise
- Update code-placeholders to use new fenced code block syntax

Closes influxdata/DAR#6301
2025-09-11 16:23:39 -05:00
Jason Stirnaman 194bf0446d fix(ci): update link-checker to v1.2.3 to fix false positives for new content
- 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
2025-08-22 17:30:36 -05:00
Jason Stirnaman 92210137b2 chore(qol): Make agents more collaborative and not automatically agreeable. 2025-08-19 09:54:10 -05:00
Jason Stirnaman cba3b21f1c docs(testing): document link-checker binary release process
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.
2025-08-18 18:02:44 -05:00
Jason Stirnaman e10340b6ec chore(ci): Add config for new link validation tool (docs-tooling/link-checker)
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
2025-08-16 22:14:27 -05:00
Jason Stirnaman 3b5385812a
Apply suggestions from code review 2025-08-15 10:14:29 -05:00
copilot-swe-agent[bot] 97c02baf20 Complete comprehensive GitHub Copilot instructions with validated build and test processes
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
2025-08-13 14:40:54 +00:00
Jason Stirnaman 89739cd792 chore(ci): temporarily disable link validation workflow
- 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
2025-07-29 23:09:00 -05:00
Jason Stirnaman 0c59fdd7c0 fix(ci): improve link validation test robustness and reduce noise
- 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.
2025-07-28 23:10:21 -05:00
Jason Stirnaman 02efdb262b fix(ci): resolve link validation workflow false failures
- 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.
2025-07-28 22:39:40 -05:00
Jason Stirnaman 660170435f ci: convert cypress scripts to CommonJS:
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
2025-07-28 21:58:09 -05:00
Jason Stirnaman eac1acfdf8 ci: fix timeout command, set timeout options, enhance logging:
1. Timeout Handling: Proper timeout command syntax
  with specific timeout error detection
  2. Process Management: Environment variable for Hugo
   shutdown timeout
  3. Debugging: Enhanced log collection and artifact
  uploads
  4. Error Context: Better error messages that help
  identify root causes (EPIPE, timeouts, etc.)
  5. Resource Constraints: Memory limits and
  CI-specific optimizations
2025-07-28 21:03:31 -05:00
Jason Stirnaman da2ef476c1 Update .github/actions/validate-links/action.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-28 17:41:57 -05:00
Jason Stirnaman 215ecfb7f9 ci: improve Hugo process management to address EPIPE errors in Github Actions. - Proactive monitoring: Detecting when Hugo dies
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.
2025-07-28 17:41:57 -05:00
Jason Stirnaman 891553ac33 Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-28 16:24:24 -05:00
Jason Stirnaman 27c358037a fix: resolve code review findings:1. Fixed Cypress Race Condition: Moved logging
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
2025-07-28 16:24:24 -05:00
Jason Stirnaman d762e7800e fix: apply code review suggestions: High Priority Issues (Fixed):
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
2025-07-28 16:24:24 -05:00
Jason Stirnaman 6a4e8827eb feat(testing): add link validation automation and improvements
- 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
2025-07-28 16:24:24 -05:00
Jason Stirnaman 2ef37361a4 chore(qol): Add a tag to extract a CONTRIBUTING.md section into a separate file--for example, frontmatter-reference--and reduce the size of `contributing.instructions.md` 2025-07-10 08:52:22 -05:00
Jason Stirnaman fb743d70e3 chore(qol): Restructure CONTRIBUTING.md and improve agent instructions:
- control what content gets processed by adding the
  appropriate tags in CONTRIBUTING.md--for example:\

  - <!-- agent:instruct: essential --> - Keep all content
  - <!-- agent:instruct: condense --> - Summarize to key points
  - <!-- agent:instruct: remove --> - Skip entirely

- rename and move script to helper-scripts
2025-07-09 15:39:51 -05:00