Hugo-native templates for API
reference documentation. Operations render as server-side HTML instead
of client-side Redoc, providing faster page loads, full SEO
indexability, and consistent styling.
Architecture:
- Tag-based navigation: operations grouped by OpenAPI tag, accessed
via tag pages only (no individual operation URLs)
- Generation script auto-discovers products from .config.yml files,
deriving Hugo paths and menu keys from directory structure
- Per-tag JSON/YAML chunks for fast Hugo template rendering
- Inline curl examples generated from OpenAPI specs at build time
Templates (layouts/api/, layouts/partials/api/):
- tag-renderer.html: renders all operations for a tag
- operation.html: individual operation with parameters, request body,
responses, and schema rendering
- code-sample.html: curl examples with Ask AI integration
- section-children.html: tag listing on section index pages
- all-endpoints-list.html: all operations sorted by path
Generation (api-docs/scripts/generate-openapi-articles.ts):
- Auto-discovery from .config.yml replaces hardcoded productConfigs
- Each API section generates independently (no cross-spec merging)
- Frontmatter-driven template data (specDownloadPath, articleDataKey)
- Link transformation: /influxdb/version/ placeholders resolved to
product-specific paths
Removed:
- Redoc renderer, JavaScript components, and CSS
- Shadow DOM test infrastructure (~160 lines)
- Operation page generation (dead generatePathPages function)
- mergeArticleData() and slugifyDisplayName()
Styles (assets/styles/layouts/_api-*.scss):
- 3-column layout: sidebar, content, sticky TOC
- Theme-aware code blocks for curl examples
- Method badges (GET/POST/PUT/DELETE) with color coding
- Collapsible schema sections with depth tracking
Tests (cypress/e2e/content/api-reference.cy.js):
- Tag page rendering with operation structure
- Download button verification per section
- All-endpoints page with operation cards
- Related links from x-related OpenAPI extension
- Code sample and Ask AI link validation
* Revert "InfluxDB 1.12.3 release (#6872)"
This reverts commit 14e021aa26.
* fix(v1): split v1.12.3 release — publish OSS, defer Enterprise pending GA
Revert the combined InfluxDB 1.12.3 release commit and re-add only
OSS v1.12.3 documentation. Enterprise v1.12.3 docs will be published
in a separate PR once the release artifact is GA in the portal.
Also adds FUTURE/PAST LIMIT ordering caution for users on versions
prior to v1.12.3 (from copilot/restore-ordering-warning-influxql).
* chore: document separate OSS/Enterprise PR workflow for v1 releases
Update the influxdb1-tech-writer agent, v1 release PR template, and
prepare-release-notes command to enforce the practice of always creating
separate PRs for OSS v1 and Enterprise v1 releases. Enterprise must wait
for GA in the portal before merging.
* fix(enterprise): restore FUTURE/PAST LIMIT grammar productions in InfluxQL spec
The revert of the combined v1.12.3 commit removed grammar production
definitions (retention_future_limit, retention_past_limit) that document
existing InfluxQL syntax, not v1.12.3-specific features. Restore them
so the grammar is complete.
* Revert "fix(enterprise): restore FUTURE/PAST LIMIT grammar productions in InfluxQL spec"
This reverts commit c497f136a1.
* fix(v1): remove incorrect FUTURE/PAST LIMIT ordering caution from OSS spec
The caution stated that prior to v1.12.3, PAST LIMIT must appear before
FUTURE LIMIT. This is incorrect — the correct syntax has always been
FUTURE LIMIT before PAST LIMIT. The v1.12.3 fix addresses Enterprise
meta-node recording of limits, not parser syntax order.
* feat: [meta] https-insecure-certificate configuration (#6850)
Add documentation for meta node's `[meta] https-insecure-certificate` configuration.
This configuration is available in >= 1.12.3.
* feat: https-insecure-certificate configuration (#6847)
Add documentation for `https-insecure-certificate` configuration in `[cluster]` and `[http]` sections.
* feat: [tls] advanced-expiration configuration (#6849)
Add `[tls] advanced-expiration` setting for data nodes.
* feat: add compression options to influxd-ctl backup (#6717)
* feat: add compression options to influxd-ctl backup
Added new flags for backup compression and performance tuning.
* feat: Update backup.md
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
* Update content/enterprise_influxdb/v1/tools/influxd-ctl/backup.md
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
---------
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
* fix(enterprise): correct typos and inconsistencies in v1.12.3 release docs
Fix grammar, formatting, and accuracy issues across the new v1.12.3
configuration and backup compression documentation.
* fix(influxdb-v1): correct FUTURE LIMIT and PAST LIMIT clause order and add to ALTER RETENTION POLICY (#6591)
* fix(influxdb-v1): correct FUTURE LIMIT and PAST LIMIT clause order and add to ALTER RETENTION POLICY
- Fix clause order: FUTURE LIMIT must appear before PAST LIMIT (parser requirement)
- Add FUTURE LIMIT and PAST LIMIT clauses to ALTER RETENTION POLICY syntax
- Add grammar definitions for retention_future_limit and retention_past_limit
- Add explicit note clarifying the required clause order
- Fix "There are" style issue in spec.md
closes#6590
* style(influxdb-v1): clean up InfluxQL spec formatting
influxdb/v1:
- Simplify introduction and use relative anchor links
- Convert notes to GitHub-style callout syntax
- Fix heading hierarchy (Letters/digits, Identifiers, Keywords, Literals as h3)
- Standardize Duration units table heading
- Fix "keywords" typo
- Reword "See FAQ" to "For more information, see"
- Simplify KILL QUERY section
- Fix SHOW MEASUREMENT CARDINALITY heading level
- Replace "There are" with active voice
enterprise_influxdb/v1:
- Add related links to frontmatter
- Simplify introduction and use relative anchor links
- Convert notes to GitHub-style callout syntax
- Add Characters and Letters/digits to TOC
- Standardize Duration units table heading
- Fix "keywords" typo
- Reword "See FAQ" to "For more information, see"
- Simplify KILL QUERY section for Enterprise clusters
- Update SHOW TAG KEYS grammar to include with_key_clause
- Remove backticks from SHOW STATS headings
* fix(influxdb-v1): address review issues in InfluxQL spec pages (#6931)
* fix(influxdb-v1): address review issues in InfluxQL spec pages
- Fix Enterprise KILL QUERY: restore proper EBNF grammar with optional
ON clause and include both local and cluster examples
- Fix duplicate "Durations" heading in both spec files
- Fix list item spacing in Enterprise spec
- Revert OSS heading level changes to maintain consistency with Enterprise
- Restore Comments section to original location under Other in OSS spec
* fix(influxdb-v1): move Comments section outside Other in OSS spec
Match Enterprise spec structure: Comments is a top-level section
before Other, not nested inside it.
* fix(influxdb-v1): restore Comments link in OSS spec TOC
* fix(influxdb-v1): rewrite KILL QUERY with clear Syntax and Examples sections
Use text-typed code block for syntax notation and Syntax heading.
Keep both local and cluster examples in sql-typed block.
* feat(enterprise,v1): add v1.12.3 release notes and missing OSS config options
Add release notes for InfluxDB v1.12.3 (OSS and Enterprise) with links
to documented features. Add missing https-insecure-certificate and
advanced-expiration config options to OSS docs. Fix backup example
gzipBlockSize typo (10048576 → 10485760) and document the default.
* fix(enterprise,v1): fix broken links in release notes and spec pages
Fix 30+ broken links across v1 release notes and InfluxQL spec pages:
- Correct config paths (configuration/ → configure/)
- Fix fragment anchors (remove default values from anchors)
- Update relocated pages (cluster-commands → tools/influxd-ctl)
- Fix cross-product links (Enterprise → OSS for shared content)
- Remove dead links (flux/v0.36, whats_new)
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* fix(enterprise,v1): move FUTURE/PAST LIMIT fix from Features to Bug fixes
The clause order correction is a bug fix, not a new feature.
* fix(v1): correct spec typos and KILL QUERY placeholder in v1.12.3 docs (#6932)
* Initial plan
* fix(v1): correct typos, grammar references, and example inconsistencies in spec and backup docs
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* revert(enterprise/v1): restore gzipBlockSize and gzipBlockCount in backup example
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* revert(v1): restore with_key_clause in spec grammar for show_tag_keys, show_tag_values_cardinality, and exact_cardinality statements
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* fix(influxdb-v1): fix broken cross-references in meta-nodes config and OSS config
- Fix meta-internal-shared-secret links in config-meta-nodes.md to point
to config-data-nodes where the heading exists
- Update MDN security headers URL to current location
* chore(influxdb-v1): bump OSS and Enterprise latest patch to 1.12.3
* docs: tag v1.12.3-only config and backup updates (#6936)
* Initial plan
* docs(metadata): mark v1.12.3 additions
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
---------
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: Geoffrey Wossum <gwossum@influxdata.com>
Co-authored-by: WeblWabl <devandbenz@gmail.com>
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Initial plan
* fix(vale): add missing Google.Units=NO to product-specific .vale.ini files
Duration literals like 7d, 24h, 30d were being flagged as errors when
running Vale with product-specific configs because those configs were
missing Google.Units = NO. Also adds Vale.Terms = NO,
write-good.TooWordy = NO, and TokenIgnores to match the root .vale.ini.
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
---------
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>
* feat: add doc review pipeline implementation plan
Detailed plan for two interconnected systems:
1. Label system overhaul (22 automation-driven labels replacing 30+ inconsistent ones)
2. Doc review workflow (Claude visual review + Copilot structural review with screenshots)
This is a plan document only — no implementation changes.
https://claude.ai/code/session_01D5rLaHdQv9iBL55UEsdQFt
* fix: split product:v3 into v3-monolith and v3-distributed labels
- product:v3-monolith: Core, Enterprise (single-node / clusterable)
- product:v3-distributed: Cloud Serverless, Cloud Dedicated, Clustered
- Updated auto-label path mappings to match content directory structure
- Updated migration mapping and label count (22 → 23)
https://claude.ai/code/session_01D5rLaHdQv9iBL55UEsdQFt
* feat: define agent instruction file architecture in Phase 3
- One CLAUDE.md (pointer) → role-specific files in .claude/agents/
- doc-triage-agent.md: label taxonomy, path mapping, priority rules
- doc-review-agent.md: review scope, severity classification, output format
- Prompt file (.github/prompts/) references agent file, stays workflow-specific
- Updated file summary and implementation order
https://claude.ai/code/session_01D5rLaHdQv9iBL55UEsdQFt
* feat: move visual/screenshot review from Claude to Copilot
Claude now handles diff-only Markdown review (frontmatter, shortcodes,
style, terminology). Copilot handles visual review by analyzing
screenshots posted as images in PR comments.
Key changes:
- Job 3 (Claude) runs in parallel with Jobs 1→2→4 (diff-only, no screenshots)
- Job 4 (Copilot) analyzes screenshots via @copilot PR comment mentions
- Two prompt files: doc-review.md (Claude), copilot-visual-review.md (Copilot)
- doc-review-agent.md scoped to diff-only (no screenshot analysis)
- Q1 resolved: screenshots delivered to Copilot via PR comment images
- Reduced Claude API cost (no image processing)
- Added Copilot failure handling (fallback to human review of artifacts)
https://claude.ai/code/session_01D5rLaHdQv9iBL55UEsdQFt
* chore: resolve all open questions in doc review pipeline plan
Convert Q2–Q5 from open recommendations to resolved decisions:
- Q2: Advisory only (no required status checks) until false-positive rate confirmed
- Q3: Playwright for CI screenshots, Puppeteer for local debugging
- Q4: Poll preview URL with 15s interval and 10-min timeout
- Q5: Cost acceptable with existing mitigations (path filters, skip-review, concurrency)
Rename section from "Open Questions" to "Decisions (Resolved)".
https://claude.ai/code/session_01D5rLaHdQv9iBL55UEsdQFt
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fix label naming inconsistency and document workflow migration requirements (#6893)
* Initial plan
* fix: resolve label naming inconsistency and document workflow updates
- Rename review:approved to approval:codeowner to avoid confusion with review/* labels
- Add note explaining the distinct prefix to prevent implementor confusion
- Document required workflow updates for sync-plugin-docs label migration
- Specify exact files and line numbers that need updating
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* feat(ci): add doc review pipeline and deduplicate instruction files
Add Phase 2-3 pipeline components: doc-review workflow (3-job
architecture), Claude/Copilot review prompts, URL resolver script,
triage and review agents, and label guide.
Deduplicate AGENTS.md (254→96 lines) by removing content available
in referenced docs. Remove duplicate sections from
copilot-instructions.md (264→221 lines). AGENTS.md now contains
only high-signal guidelines loaded every session: commands,
constraints, style rules, product paths, and reference pointers.
* task: updated PR pipeline plan
* task: remove old cli plan
* task: products file now contains content path mappings and (GitHub) label groups for each product. Product group labels will be used to assign reviewers and help with content checks.
* feat(ci): add auto-label workflow for PR product detection
Add auto-label workflow that applies product and source labels to
PRs based on changed file paths, using data/products.yml as the
source of truth. Add workflow-utils.js shared helper for product
path matching.
* refactor(ci): extract shared label and review format definitions
Consolidate duplicated label definitions and review comment format
into shared source-of-truth files to prevent context drift.
New files:
- data/labels.yml: source, waiting, workflow, review, and
product:shared label definitions (names, colors, descriptions)
- .github/templates/review-comment.md: severity levels, comment
structure, result rules, and result-to-label mapping
Updated consumers to reference shared files instead of inline copies:
- .claude/agents/doc-review-agent.md
- .claude/agents/doc-triage-agent.md
- .github/prompts/copilot-visual-review.md
- .github/LABEL_GUIDE.md
Workflow fixes:
- Pin all GitHub Actions to SHA hashes
- Fix fromJson() for url-count comparison in doc-review.yml
- Fix fallback handler to remove all review:* labels before re-adding
* refactor(ci): replace Claude review with Copilot native code review
- Remove claude-code-action job, use `copilot-reviews` reviewer instead
- Extract review criteria to .github/instructions/content-review.instructions.md
- Simplify copilot-instructions.md by removing duplicated content
- Harden auto-label workflow (scoped permissions, pagination, concurrency)
- Upsert visual review comments instead of creating duplicates
- Delete unused .github/prompts/doc-review.md
* Update .github/workflows/doc-review.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update .github/DOC-REVIEW-PIPELINE-PLAN.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* task: update review pipeline plan
* task: add label-migration scripts. These are one-use scripts that we'll remove after the label migration
* Update .github/workflows/doc-review.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update .github/workflows/doc-review.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update .github/workflows/auto-label.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* style: remove unnecessary escape in regex character class
* feat(ci): add workflow_dispatch to auto-label and doc-review workflows
- Add workflow_dispatch with pr_number input to both workflows for
manual testing and on-demand re-runs
- Migrate sync-plugin-docs label references to source:sync
- Add area:agents, area:ci, area:links, release:*, good-first-issue,
source:feedback, waiting:pr to labels.yml
- Update products.yml: influxdb_cloud label_group v2 -> v2-cloud
- Track label renames and deletions in LABEL_GUIDE.md
* fix(ci): replace npm ci with targeted js-yaml install in auto-label
npm ci fails in sparse checkout because package-lock.json is not
included. The workflow only needs js-yaml for YAML parsing.
* fix(ci): add --legacy-peer-deps to auto-label npm install
* task: updated labels for migration
* docs: update pipeline plan with test results and completion status
* test: reapply reverted serve.md changes for e2e pipeline test
Reverse the revert from 2f8efd6 to provide content changes that
exercise the auto-label and doc-review workflows end-to-end.
* fix(ci): fix preview URL polling in doc-review visual review
curl --head outputs response headers before the status code from -w,
so STATUS contained "HTTP/2 200 ...200" instead of just "200".
Drop --head and add -o /dev/null to capture only the status code.
* fix: correct broken fragment links in InfluxDB 3 serve.md files (#6910)
* Initial plan
* fix: correct broken links in serve.md files for enterprise config-options
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* Update content/influxdb3/enterprise/reference/cli/influxdb3/serve.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>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* Initial plan
* Remove line separation between influxdb3 and CLI in write-data page
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* Release Chronograf v1.11.0
* fix: warning format
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
* Initial plan
* Fix 6 broken links in Chronograf release notes
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* Fix all 6 broken links in Chronograf release notes with correct fragment IDs
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
---------
Co-authored-by: Jakub Bednář <jakub.bednar@gmail.com>
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* chore(spell-check): improve Vale spell checking for code comments
- Enable spell checking in code blocks by removing ~code exclusion from InfluxDataDocs Spelling rule
- Add comprehensive filters to avoid false positives from:
- camelCase and snake_case identifiers
- hexadecimal values and version numbers
- URL paths and URLs
- shortcode attributes
- code punctuation and symbols
- Fix spelling errors in code comments:
- "includimng" → "including" in 3 files
- "continously" → "continuously" in 5 files
This allows Vale to catch typos and spelling mistakes in code comments and documentation strings while avoiding false positives on actual code syntax and identifiers.
https://claude.ai/code/session_01TYWR7wb5MUkzjVsK4mtNjA
* chore(spell-check): add codespell configuration
- Add .codespellrc with 'clear' builtin dictionary to catch unambiguous spelling errors
- Add .codespellignore for technical terms and product names
- Configuration prevents false positives while enabling comprehensive spell checking for code comments
This enables codespell for automated spell checking via CI/CD, complementing the Vale configuration.
https://claude.ai/code/session_01TYWR7wb5MUkzjVsK4mtNjA
* fix(reference): correct 6 spelling errors across reference pages
Fixes identified through codespell analysis of reference documentation:
- influxdb/v2/config-options: useable → usable
- influxdb3/clustered/release-notes: provid → provide, certficate → certificate, memeory → memory, Geting → Getting
- kapacitor/v1/release-notes: auotmatically → automatically
Note: "invokable" is excluded as a branding term; "fpr" in GPG code is a legitimate field name.
https://claude.ai/code/session_01TYWR7wb5MUkzjVsK4mtNjA
* docs(spell-check): improve validation rules and documentation
Core improvements to spell-checking rules:
CODESPELL CONFIGURATION (.codespellrc):
- Use only 'clear' dictionary (removes 'rare', 'code' for fewer false positives)
- Add 'api-docs' to skip list (avoids false positives in generated specs)
- Add 'invokable' to ignore list (product branding term)
- Remove unclear 'tage' term
- Add documentation explaining each setting
VALE CONFIGURATION (Spelling.yml):
- Expand scope documentation explaining why code blocks are included
- Add comprehensive comments for each filter pattern
- Include examples for each regex pattern
- Document limitations and edge cases
- Organize filters by category (branding, URLs, code, literals)
NEW DOCUMENTATION (SPELL-CHECK.md):
- Tool comparison and use cases
- Detailed explanation of each filter pattern
- Troubleshooting guide
- Running instructions for both tools
- Contribution guidelines
- References and related files
These changes ensure:
✅ Minimal false positives (8.5-9/10)
✅ Strong true positive detection (8.5-9.5/10)
✅ Clear, maintainable rules
✅ Easy to extend and modify
✅ Well-documented for team use
https://claude.ai/code/session_01TYWR7wb5MUkzjVsK4mtNjA
* refactor(spell-check): consolidate ignore words to single source
Consolidate duplicate ignored words configuration:
BEFORE:
- .codespellignore: AKS, aks, invokable, tagE
- .codespellrc: inline ignore-words-list = aks,invokable
- Problem: Maintenance duplication and confusion
AFTER:
- .codespellignore: authoritative list (aks, AKS, invokable with docs)
- .codespellrc: references .codespellignore via 'ignore-words' config
- Benefit: Single source of truth, cleaner configuration
Also removed:
- 'tagE' from ignore list (unclear, possibly a typo)
- Inline word list from .codespellrc (now external)
This follows codespell best practices and reduces maintenance burden.
https://claude.ai/code/session_01TYWR7wb5MUkzjVsK4mtNjA
* docs(spell-check): correct version number regex documentation
Fix incorrect limitation note in SPELL-CHECK.md:
The regex pattern \d+\.\d+(?:\.\d+)* actually DOES match
4-part versions like 1.2.3.4 (and any number of parts).
The (?:\.\d+)* part is a repeating group that matches
zero or more additional dot-separated version components.
Updated documentation to clarify that the pattern handles
any number of version parts, not just 2-3 part versions.
https://claude.ai/code/session_01TYWR7wb5MUkzjVsK4mtNjA
* Update SPELL-CHECK.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix(spell-check): tighten camelCase regex to prevent false negatives
The original camelCase regex pattern was too permissive and would match
any word starting with lowercase (e.g., 'provide', 'database', 'variable'),
causing Vale to skip spell-checking normal prose words.
Improved pattern now requires:
- camelCase: at least one uppercase letter (myVariable ✓, provide ✗)
- snake_case: at least one underscore (my_variable ✓, variable ✗)
This prevents common prose words from being silently excluded from
spell-checking while still properly handling code identifiers.
Combined pattern: (?:_*[a-z]+(?:[A-Z][a-z0-9]*)+(?:[A-Z][a-zA-Z0-9]*)*|[a-z_][a-z0-9]*_[a-z0-9_]*)
Updated files:
- SPELL-CHECK.md: Added detailed explanation and test cases
- .ci/vale/styles/InfluxDataDocs/Spelling.yml: Updated filter pattern
https://claude.ai/code/session_01TYWR7wb5MUkzjVsK4mtNjA
* fix(spell-check): expand URL scheme pattern to match documentation comment
The comment said the URL filter ignores 'http, https, ftp, etc.' but the
regex only matched http and https. Expanded the pattern to match:
- http/https (as before)
- ftp/ftps (file transfer protocols)
- ssh (secure shell)
- file (local file URLs)
Updated pattern: (?:https?|ftp|ftps|ssh|file)://[^\s\)\]>"]+
This ensures the filter matches the documented behavior.
https://claude.ai/code/session_01TYWR7wb5MUkzjVsK4mtNjA
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: link resource terms
* chore(aagents): Allow use of yq and htmlq for parsing.
* chore(deps): yarn upgrade
* chore(deps): remove unused @vvago/vale npm package
Vale linting uses Docker (jdkato/vale:latest) via .ci/vale/vale.sh,
not the npm package. Update VS Code setup docs to use system Vale.
* docs(skill): update content-editing skill for hosted MCP server
Replace local InfluxData MCP server references with the hosted kapa.ai
documentation MCP server (https://influxdb-docs.mcp.kapa.ai).
Changes:
- Update MCP configuration from local stdio server to hosted URL
- Replace kapa_query() examples with natural language prompts
- Add rate limit info (40/hour, 200/day per Google OAuth user)
- Standardize Hugo commands to use yarn (yarn hugo --quiet)
- Fix E2E test command (node cypress/support/run-e2e-specs.js)
- Use .ci/vale/vale.sh consistently for Vale linting
- Remove VS Code-specific instructions for agent focus
- Move TODOs to GitHub issue #6853
* chore(deps): yarn upgrade
* Apply suggestions from code review
* Update .claude/skills/content-editing/SKILL.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update .claude/skills/content-editing/SKILL.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix(ci): fix Vale linting setup and add dependency update checks
The vale Compose service was removed in 922e4818 but docs still
referenced `docker compose run -T vale`, which fails.
Vale linting now works as follows:
- If vale is installed locally (v3+), .ci/vale/vale.sh uses it directly.
Contributors can install via `brew install vale` for faster linting
without Docker.
- Otherwise, the script falls back to Docker with a pinned image tag
(jdkato/vale:v3.13.1) instead of :latest.
- If the local version is incompatible (pre-v3), the script warns and
falls back to Docker.
Docker is no longer required for pre-commit hooks that only run Vale.
Also adds a weekly GitHub Actions workflow (check-pinned-deps.yml) that
compares pinned dependency versions against upstream releases and opens
a PR when updates are available.
* Update .ci/vale/vale.sh
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update .github/workflows/check-pinned-deps.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: resolve code review findings for PR #6885
- vale.sh: make version-detection grep non-fatal so Docker fallback works
- check-pinned-deps: add set -euo pipefail, auth header, and null guards
- DOCS-CONTRIBUTING: fix broken links to DOCS-TESTING.md
- DOCS-TESTING: rename VS Code section heading per review suggestion
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* chore: add .worktrees to gitignore
* refactor: replace URL-parsing in shortcodes with cascade product data
Replace duplicated URL-parsing logic across 28 shortcodes with Hugo's
cascade frontmatter. Each product section's _index.md now cascades
`product` (data key) and `version` (URL segment) to all descendants.
Key changes:
- Add cascade frontmatter to 15 product _index.md files
- Create layouts/partials/product/get-data.html shared partial
- Refactor 28 shortcodes to use the partial instead of parsing URLs
- Add version_label, limits, and distributed_architecture metadata
to data/products.yml to eliminate hardcoded dicts in shortcodes
- Fix lefthook lint-markdown-instructions glob format (YAML array)
- Fix pre-existing Vale exclamation point errors in cloud and v2
* fix: prevent remark-lint from escaping Hugo template syntax in shortcodes
Lefthook's glob option only triggers whether a command runs — it does
not filter {staged_files}. This caused remark-lint to process .md
shortcode files in layouts/, escaping underscores, brackets, and
parentheses that are valid Hugo template syntax.
Add layouts/ exclusion to the existing content/ filter in the
lint-markdown-instructions run command. Also fix the 3 shortcode files
that were damaged by remark-lint in the previous commit.
* test: add E2E tests for cascade product shortcodes
Add Cypress tests validating all refactored shortcodes across 14
product/version combos (82 tests). Test expectations are derived
from products.yml at runtime via cy.task('getData').
Fix the product links test to iterate actual home page links
instead of all products.yml entries.
Create _test/shortcodes.md pages in each product section
exercising product-name, product-key, current-version,
influxdb/host, and InfluxDB3-specific shortcodes.
* test: expand E2E coverage to 27 of 28 cascade shortcodes
Add shortcode invocations to all 14 test pages and corresponding
Cypress assertions for version lookups, namespace URLs, product
name text, placeholder_host, version visibility, CTA links, and
site-level data.
Add shortcodes-real-pages.cy.js for 6 shortcodes that require real
page context (cli/mapped, children, flux/list-all-functions,
telegraf/plugins, html-diagram/sso-auth-flow, cli/influxd-flags).
Suppress Vale on test pages — they contain only shortcode syntax,
not prose.
163 tests total, all passing.
* refactor(test): rename _test dirs to __tests__ and add noindex
Rename test page directories from _test to __tests__ to align with
JS testing conventions. Add noindex: true to all 14 test page
frontmatter to prevent search engine indexing in production.
Update Cypress URL pattern to match new paths.
* chore: add release notes for InfluxDB 3.8.3
Added release notes for version 3.8.3, including a bug fix for the WAL Buffer.
* Apply suggestion from @sanderson
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
* chore: add release notes for InfluxDB 3.8.3 (#6879)
* Initial plan
* chore: bump core and enterprise to 3.8.3 in products.yml
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
---------
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>
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* docs(influxdb3): document how to disable Processing Engine
Add documentation for disabling the Processing Engine in Docker and
systemd deployments. Key points:
- Processing Engine is enabled by default in Docker images and DEB/RPM
- Empty string does not disable — must unset or remove config
- Enterprise: use INFLUXDB3_UNSET_VARS feature
- Core Docker: requires custom entrypoint workaround
- systemd: comment out or remove plugin-dir from TOML config
closesinfluxdata/DAR#590
* docs(influxdb3): add cross-references for Processing Engine defaults
Add notes and cross-references explaining that the Processing Engine
is enabled by default in Docker and DEB/RPM installations:
- plugins/_index.md: Add deployment behavior table and link to disable docs
- get-started/processing-engine.md: Add note with cross-reference
* docs(influxdb3): clarify Processing Engine vs process mode distinction
Add notes explaining that --plugin-dir (Processing Engine activation) and
--mode=process (cluster node specialization) are independent configurations.
* docs(influxdb3): document --plugin-dir auto-enables process mode
- Update clustering, get-started, plugins, and reference pages
- Add example for enabling Processing Engine without --mode=process
- Clarify --mode=process is only needed for dedicated process-only nodes
- Synthesize notes into inline content for better flow in guides
* Update content/shared/influxdb3-reference/influxdb3-processing-engine.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update content/shared/influxdb3-cli/config-options.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix(influxdb3): update to v3.8.2, add --tls-no-verify and release notes
- Update latest_patch to 3.8.2 for Core and Enterprise in products.yml
(3.8.1 was internal-only)
- Add --tls-no-verify and INFLUXDB3_TLS_NO_VERIFY env var to all
remaining CLI pages (query, write, show, enable, disable, update,
test, stop, create/delete cache and file_index commands)
- Add safety disclaimer: "Not recommended in production" per review
- Standardize --tls-ca description across all CLI pages
- Add v3.8.2 release notes for Core and Enterprise
Addresses review feedback from hiltontj and jstirnaman on PR #6774.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore(influxdb3): remove PachaTree references from documentation
Remove all PachaTree-related content that is not yet ready for
public documentation:
- Remove --use-pacha-tree from Enterprise serve CLI reference
- Replace influxdb3_pacha_tree log filter example with influxdb3_enterprise
- Remove influxdb3_pacha_tree from component names table
- Remove PachaTree storage engine entry from v3.7.0 release notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update content/shared/v3-core-enterprise-release-notes/_index.md
* Apply suggestions from code review
---------
Co-authored-by: peterbarnett03 <peter.barnett03@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
* Release Chronograf v1.11.0
* fix: warning format
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
---------
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
- Add FLOAT and REAL to numeric types table
- Document precision differences (~7 vs ~15 significant digits)
- Add warning about precision loss when casting to FLOAT
- Note PostgreSQL behavior difference
Note: DAR-584 referenced Cloud Dedicated, but this behavior is shared
across all InfluxDB 3 products via DataFusion SQL engine.
Closes DAR-584
* fix(ent3): Add link target and experimental caution for PachaTree option.
* feat(ent3): add experimental badge for --use-pacha-tree
Document the experimental PachaTree storage engine option with a
styled badge and caution callout. Add reusable .badge.experimental
class using the existing caution color palette for light/dark modes.
- Add experimental badge to serve options table and config-options
- Add badge theme variables referencing $article-caution-* colors
- Use custom heading ID to preserve #use-pacha-tree anchor
* Initial plan
* feat: add Documentation MCP server pages to chronograf, kapacitor, flux, and explorer
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* fix: update MCP page descriptions to include product names
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* fix: resolve product-name shortcode for v1/v0 versioned products
The shortcode previously only checked the second URL path segment to
identify products, which works for InfluxDB 3 (/influxdb3/core/) but
fails for older products where the second segment is a version number
(/chronograf/v1/, /flux/v0/).
Add namespace extraction (first path segment) and conditional logic to
look up products by namespace when the version is v1 or v0. This fixes
empty product names in meta descriptions for Chronograf, Telegraf,
Kapacitor, Flux, and InfluxDB Enterprise v1.
* feat: relocate v2/cloud MCP pages and add alt_links for cross-product navigation
- Move MCP server pages from reference/ to tools/ for InfluxDB v2 and Cloud
- Add alt_links frontmatter to all MCP pages for cross-product navigation
- Use product-name shortcode in descriptions for consistency
- Convert code-placeholders shortcode to fenced code block attributes
- Update shared content to use version-agnostic URLs
* Add multi-assistant installation instructions for documentation MCP server (#6836)
* Initial plan
* feat(mcp): add installation instructions for multiple AI assistants
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* refactor(mcp): replace Cline and Windsurf with GitHub Copilot and OpenCode
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
---------
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: 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>
* chore(deps): update yarn dependencies
Run yarn to update lockfile with latest compatible versions.
* fix(influxdb3): correct Quix Streams guide for Cloud Dedicated
Extract downsample-quix content to shared file and fix product-specific
terminology, links, and prerequisites for Cloud Dedicated and Clustered.
- Use "database" terminology for Cloud Dedicated/Clustered
- Remove Docker from prerequisites (not used in guide)
- Add alt_links for cross-product navigation
- Fix broken TOC anchor links
- Add links to admin pages for tokens and databases
- Remove incorrect /reference/regions link for Cloud Dedicated
- Add lint rules for deprecated code-placeholders and py fence
Closes#6825
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix(influxdb3): fix broken code blocks in Quix Streams guide
Code blocks inside show-in shortcodes were missing closing fences,
causing the markdown to render incorrectly. Added proper fence
boundaries and placeholder key documentation for each code section.
Also adds TODO to content-editing skill about improving automation
for code-placeholder-key workflow.
* Docs v2 docs v2 pr6828 (#6829)
* fix(influxdb): Rename to match other pages. Remove alt_links
* chore(deps): bump ESLint to 10.0.0
* Update content/shared/v3-process-data/downsample/quix.md
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix(influxdb3): Mark disabled field as required in processing engine trigger API specs
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* Add HTTP API examples to Processing Engine plugin documentation (#6789)
- Add disabled field and api-ref to API examples per review feedback
- Add api-ref to upload plugin endpoint and remove duplicate link sentence
- Convert {{% code-placeholders %}} shortcode to placeholders code block
attribute for cleaner syntax
- Add second argument to token-link shortcodes for admin tokens to
ensure consistent linking to /admin/tokens/admin/ path
- Follows PR 6789 review feedback for processing engine documentation
fix(influxdb3): update placeholder and token-link syntax in get-started
- Convert code-placeholders wrapper shortcodes to code block attributes
* fix(influxdb3): Fix broken trigger anchor links in plugin documentation
Rename "Set up a trigger" heading to "Create a trigger" and update
all internal anchor references to match.
---------
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>
* docs(influxdb3): document trigger logging behavior
Add processing_engine_logs table documentation to system data reference,
explaining that logs are stored in both the trigger's database (primary)
and _internal. Update plugins error handling to specify trigger's database.
* Update content/shared/influxdb3-plugins/_index.md
* chore(ci): upgrade link-checker to v1.3.1 and improve reporting
- Update workflow to use link-checker v1.3.1
- Fix heredoc bug that prevented template variable evaluation
- Improve broken link reporting with:
- Severity indicators (error vs warning)
- Table format for better readability
- Content file path mapping for easier fixing
- Collapsible troubleshooting tips
- Add fallback parsing for different JSON output structures
- Update config file comments to reference v1.3.1
https://claude.ai/code/session_015JNkhFiwJnoAxJLBP7AiyZ
* fix(ci): fix sync-link-checker-binary workflow
- Add missing checkout step (gh release requires a git repo)
- Use DOCS_TOOLING_TOKEN secret for cross-repo private access
- Use GitHub API to fetch release info instead of direct URL
- Add binary size validation to catch failed downloads
- Handle optional checksums.txt gracefully
* fix(ci): align workflow JSON parsing with link-checker v1.3.1 output
Tested link-checker v1.3.1 locally and discovered the actual JSON
structure differs from what the workflow assumed:
- summary.error_count (not broken_count)
- errors[]/warnings[]/info[] arrays (not files[] or broken_links[])
- Each entry: {url, status, error, file, line, severity}
Changes:
- Fix summary field names to match v1.3.1 JSON schema
- Parse .errors[] and .warnings[] arrays correctly
- Show warnings in collapsible section (don't fail CI)
- Map public/ paths to content/ paths for GitHub annotations
- Handle missing line numbers gracefully
- Cap warnings display at 20 with note about artifacts
* fix: broken links from issues #6682, #6461
- Fix wrong path /influxdb/v2/upgrade/v2-beta-to-v2/ →
/influxdb/v2/install/upgrade/v2-beta-to-v2/ (#6682)
- Fix fragment mismatch: #disable-the-internal-database →
#disable-the-_internal-database (Hugo renders backtick `_internal`
with underscore in anchor) (#6461)
- Fix dead links to /flux/v0/stdlib/universe/from →
/flux/v0/stdlib/influxdata/influxdb/from/ (from() moved from
universe to influxdata/influxdb package) (#6682)
closes#6682, closes#6461
* Update content/influxdb/v1/flux/get-started/_index.md
Force error to test workflow
* fix(ci): reclassify file-not-found warnings as errors in link checker
link-checker v1.3.1 classifies missing local files as warnings because
they have no HTTP status code and don't match error_codes=[404,410].
This meant broken internal links (like /flux/v0/stdlib/influxdata/influxdbfrom/)
were reported as warnings but didn't fail CI.
Fix by post-processing link-check-results.json to move "Cannot find file"
entries from warnings to errors before evaluating the check result.
Also reverts the intentional test bug in influxdb/v1/flux/get-started/_index.md.
* test(ci): intentionally broken fragment to test link-checker detection
Introduces broken heading anchor #tools-for-working-with-fluxxx (extra x)
to verify whether link-checker/lychee validates fragment anchors on local
files. Also documents the known gap: lychee doesn't validate fragments on
local file URLs (it checks file existence but doesn't open index.html to
verify heading anchors exist).
This commit should be reverted after testing.
* fix(ci): revert test fragment, document fragment checking limitation
Reverts the intentional broken fragment test. Workflow confirmed that
lychee does not validate heading anchors on local file URLs — it checks
file/directory existence but doesn't open index.html to verify fragments.
The ^file://.*# exclusion must remain to prevent false positives from
Hugo pretty URL resolution (lychee resolves /page#frag as file:///page
instead of file:///page/index.html).
Updated config comments to document this known gap clearly.
* chore(ci): update link-checker to v1.4.0
* Update link-checker to v1.5.0 in PR workflow
* fix(platform): broken link
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix(version-detector): use centralized getGrafanaLink for all Grafana URLs
Refactor handleAuthorizationHelp to use getGrafanaLink() instead of
hardcoded URLs, ensuring all Grafana links come from a single source.
Also fix incorrect URLs in getGrafanaLink mapping:
- InfluxDB OSS 2.x: /visualize-data/ → /tools/
- InfluxDB Enterprise: /influxdb/enterprise/ → /enterprise_influxdb/v1/
- InfluxDB Cloud (TSM): /visualize-data/ → /tools/
- InfluxDB Cloud v1: now links to Enterprise v1 docs (Cloud v1 is
Enterprise under the hood)
* refactor(version-detector): DRY up localhost:8086 references
Extract HOST_EXAMPLES to a class-level constant and add DEFAULT_HOST
and DEFAULT_HOST_PORT constants to eliminate duplicate localhost:8086
strings throughout the code.
- Move hostExamples from local variable to class constant
- Use DEFAULT_HOST for URL placeholder and comparison checks
- Use DEFAULT_HOST_PORT for docker curl command examples
* feat(ask-ai): Support source group IDs in Ask AI trigger links
* feat(version-detector): Present context-aware links
- Add ai_source_group_ids fields to ProductConfig interface
- Improve SCSS for doc and Ask AI links
- Update Grafana docs to add aliases and context param for detector
- Update modal partial to include AI source group IDs in config
- Remove custom Cypress commands for version detector
- Update E2E tests to use direct Cypress commands
* Revise release notes for InfluxDB 3 catalog path structure
Updated release notes to reflect operational and security improvements, including changes to catalog path structure and log verbosity.
* Clarify file vs directory distinction in catalog v2 path structure (#6740)
* Initial plan
* Clarify that snapshot is a file and logs is a directory
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
---------
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: Copilot <198982749+Copilot@users.noreply.github.com>
- Updates identify-version guide and Core/Ent3 API specs
- Use GET. HEAD `/ping` responds with `404`
- Specify default auth requirement for Enterprise
- Tested with Core and Ent v3.8.0