* chore(docs): Add content/create.md tutorial page for the How to create your own documentation tutorial
chore(scripts): docs:create and docs:edit scripts for content creation and editing
Major improvements to docs:create UX for both Claude Code and external tool integration:
**New `docs` CLI command:**
- Add scripts/docs-cli.js - main CLI with subcommand routing
- Add bin field to package.json for `docs` command
- Usage: `docs create` and `docs edit` (cleaner than yarn commands)
**Smart piping detection:**
- Auto-detect when stdout is piped (\!process.stdout.isTTY)
- When piping: automatically output prompt text (no flag needed)
- When interactive: output prompt file path
- --print-prompt flag now optional (auto-enabled when piping)
**Specify products:**
- simplify link following behavior - treat relative paths as local files, all HTTP/HTTPS as external
- stdin now requires --products flag with product keys
- --products now accepts keys from products.yml (influxdb3_core, telegraf, etc.)
Examples:
--products influxdb3_core
--products influxdb3_core,influxdb3_enterprise
--products telegraf
**Usage examples:**
# Inside Claude Code - automatic execution
docs create drafts/new-feature.md
# Pipe to external AI - prompt auto-detected
docs create FILE --products X | claude -p
docs create FILE --products X | copilot -p
# Pipe from stdin
echo 'content' | docs create --products X | claude -p
Benefits:
- Cleaner syntax (no yarn --silent needed)
- No manual --print-prompt flag when piping
- Consistent with industry tools (git, npm, etc.)
- Backward compatible with yarn commands
WIP: docs:create usage examples
- Redesign of the docs CLI tools for creating and editing content
- Cleaner interface works better for piping output to agents and downstream utilities
- Updates README.md and other authoring docs
This repository includes a `docs` CLI tool for common documentation workflows:
```sh
npx docs create drafts/new-feature.md --products influxdb3_core
npx docs edit https://docs.influxdata.com/influxdb3/core/admin/
npx docs placeholders content/influxdb3/core/admin/upgrade.md
npx docs --help
```
**Run test cases:**
```sh
npx docs test
```
* Update content/create.md
* Update content/create.md
* Update content/create.md
* Update content/create.md
* Update scripts/templates/chatgpt-prompt.md
* Update DOCS-SHORTCODES.md
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.
- **Environment variable formatting** - Updated environment variable configuration from array format to object format to comply with Lefthook schema validation requirements.
- **Unified link testing** - Consolidated multiple product-specific link testing commands into a single `e2e-links` command that processes all staged Markdown and HTML files across content directories.
- **Package script integration** - Modified commands to use centralized yarn scripts instead of direct execution, improving maintainability and consistency.
- **Source information extraction** - Enhanced to correctly extract and report source information from frontmatter.
- **URL and source mapping** - Improved handling of URL to source path mapping for better reporting.
- **Ignored anchor links configuration** - Added proper exclusion of behavior-triggering anchor links (like tab navigation) to prevent false positives.
- **Request options correction** - Fixed Cypress request options to ensure `failOnStatusCode` is properly set when `retryOnStatusCodeFailure` is enabled.
- **Improved error reporting** - Enhanced error reporting with more context about broken links.
- **New test scripts added** - Added centralized testing scripts for link checking and codeblock validation.
- **Product-specific test commands** - Added commands for each product version (InfluxDB v2, v3 Core, Enterprise, Cloud, etc.).
- **API docs testing** - Added specialized commands for testing API documentation links.
- **Comprehensive test runners** - Added commands to run all tests of a specific type (`test:links:all`, `test:codeblocks:all`).
- Fix Docker build command and update CONTRIBUTING.
chore(js): JavaScript QoL improvements:
- Refactor main.js with a componentRegistry object and clear initialization of components and globals
- Add a standard index.js with all necessary exports.
- Update javascript.html to use the index.js
- Remove jQuery script tag from header javascript.html (remains in footer)
- Update package file to improve module discovery.
- Improve Hugo and ESLint config for module discovery and ES6 syntax
- Adds basic support for core and enterprise in getswagger.sh
- Adds custom OpenAPI info for Core and Enterprise
- Validates as OpenAPI 3.0 (using Spectral)
- operationId
- tags
- Revises use of Legacy, v2
- TODO: need to check and validate in UI, adjust tags if nec.
- Add and remove components
- Update parameters
- Add examples
- Add tests for Core
- Adds Cypress and a few basic tests for the global topnav, the home page, and link-checking.
- For link-checking, pass a comma-delimited list of URLs in an exported cypress_test_subjects environment variable. For examples, see the convenience commands in package.json
Continue refactoring JavaScript into a component pattern and ESM.
Replaces some jQuery with native DOM API.
chore(ai): reference documentation and instructions for training AI
chore(ai): implement Kapa AI chat widget
- Move script tag to HTML template to make it obvious.
- Cleanup javascript to make it more component-like
- Set Kapa attributes, support setting userid
chore(js): add JS dependencies, previously referenced in script tags, to package.json for JS builds.
fix(api): indents
chore(js): package Mermaid diagram library
chore(js): refactor JS for AIChat and Theme as examples of using the component pattern for HTML/CSS/JS
chore(js): Use the new local-storage API in refactored module code and in code not yet ported. Cleanup syntax in local-storage and make functions available from window.LocalStorageAPI.
fix(js): theme.js name-change
chore(js): fix ai-chat.js file name
fix(js): refactor:
- componentNames are snakecase in HTML
- replace DOM selection method and jQuery eventhandler assignment
- remove old theme.js references
chore(ai): configure chat window overlay, size, and position:
- removes overlay and scroll lock
- positions chat to the right and bottom
- expands sample question width to 12 cols
chore(ai): edit disclaimer
fix(ai): size and position
chore(js): make ai-chat specific to configuration and and setting userid (for testing and future use).
fix(js): copy referrerHost variable to v3-wayfinding instead of relying on influxdb-url to assign it.
chore(ai): add a footer div at page bottom to contain modal triggers for custom-time and ask-ai. Still needs some CSS help. Moves tooltip text from CSS to HTML data attribute.
chore(ai): dynamically load AI script tag after DOMContentLoaded to avoid race conditions. Call initialization from the modal trigger module and pass the show trigger function to the onload handler.
fix(ai): fix modal triggers to viewport
fix(modal-triggers): stack the triggers into a single column.
restyle footer widgets
updated time selector modal to use correct storage term
minor style update
WIP(ai-chat): get product data
chore(js): Factor out pageContext module from influxdb-url.js
chore(js): Refactor helpers.js out of inflluxdb-url.js
WIP: refactor influxdburl - minimal changes for module conversions
feat(ai): Custom AI chat example questions product and version.
Ask AI example questions:
- Adds support for customizing example Ask AI questions per product or version.
- Configure questions in site `data/products.yml`; otherwise, it uses default questions from `ask-ai.js`
Context, page, and product data:
- Adds sample URLs for remaining versions in influxdb_urls
- `page-context.js` consolidates and exports constants for page context (protocol, host, path, referrer) and path-to-data mappings for product and influxdb_url site data
Module refactor:
- Refactors some JavaScript into ES6 modules, and refactors some of those further into a Component pattern--just vanilla JS and no shadow DOM stuff. The Component pattern that uses data attributes to "bind" JavaScript modules with CSS and HTML is a popular approach in modern web development. This pattern enhances modularity, reusability, and maintainability by associating behavior (JavaScript), structure (HTML), and style (CSS) through the use of data attributes.
- `assets/main.js` is the entrypoint
- Passes pageParams from the Hugo page to modules that import `@params`.
- Moves most external dependencies out of `script` tags and into package.json to be managed with `yarn`.
- Adds `eslint`.
- For modules that aren't yet components, wraps execution statements inside an `initialize()` function and calls the function from `main.js` on `DOMContentLoaded`.
- For components, if the page contains the `data-component="<component-name>"`, the matching element is passed to the component function on `DOMContentLoaded`.
- I tried to avoid changing logic where it wasn't necessary.
Update DOC_GPT_PROFILE.md
customize ai chat modal styles
fix(influxdb-url): Rename to cloud_dedicated in influxdb_urls.yml, remove newly added placeholder URL and use the extant default, refactor
- Rename to in influxdb_urls.yml
- Fix influxdb-url.js and data provision in local-storage.js to use the new name, mapping it to to retain the existing local storage key
chore(api-lib): Use local-storage import instead of window global
chore(js): cleanup
fix(js): Ensure feature-callout initializes on page load
fix(theme): Load preferred theme before making the page visible. Execute a predefined function by specifying the function name in data-theme-callback
fix(search-toggle): Restores toggling the search field when sidebar is collapsed. Moves the event handler to a new search-button component
fix(ai): Fix custom attribute assignment. Rename property to ai_example_questions
Include the word `Bearer` or `Token`, a space, and your **token** value (all case-sensitive). Fix TOC links.
Fixes#5781
fix(api-docs): Update API reference directories and generation script for influxdb3 URL paths, update links and names in reference content
fix(api-ref): Update getswagger.sh destination paths to use the new directory structure when fetching spec files. Update the redocly plugin module path.
hotfix: fix hlevel bug in children shortcode
Remove underline from custom time widget
add color to custom time widget styling
- Adds Cypress and a few basic tests for the global topnav, the home page, and link-checking.
- For link-checking, pass a comma-delimited list of URLs in an exported cypress_test_subjects environment variable. For examples, see the convenience commands in package.json
Continue refactoring JavaScript into a component pattern and ESM.
Replaces some jQuery with native DOM API.
chore(ai): reference documentation and instructions for training AI
chore(ai): implement Kapa AI chat widget
- Move script tag to HTML template to make it obvious.
- Cleanup javascript to make it more component-like
- Set Kapa attributes, support setting userid
chore(js): add JS dependencies, previously referenced in script tags, to package.json for JS builds.
fix(api): indents
chore(js): package Mermaid diagram library
chore(js): refactor JS for AIChat and Theme as examples of using the component pattern for HTML/CSS/JS
chore(js): Use the new local-storage API in refactored module code and in code not yet ported. Cleanup syntax in local-storage and make functions available from window.LocalStorageAPI.
fix(js): theme.js name-change
chore(js): fix ai-chat.js file name
fix(js): refactor:
- componentNames are snakecase in HTML
- replace DOM selection method and jQuery eventhandler assignment
- remove old theme.js references
chore(ai): configure chat window overlay, size, and position:
- removes overlay and scroll lock
- positions chat to the right and bottom
- expands sample question width to 12 cols
chore(ai): edit disclaimer
fix(ai): size and position
chore(js): make ai-chat specific to configuration and and setting userid (for testing and future use).
fix(js): copy referrerHost variable to v3-wayfinding instead of relying on influxdb-url to assign it.
chore(ai): add a footer div at page bottom to contain modal triggers for custom-time and ask-ai. Still needs some CSS help. Moves tooltip text from CSS to HTML data attribute.
chore(ai): dynamically load AI script tag after DOMContentLoaded to avoid race conditions. Call initialization from the modal trigger module and pass the show trigger function to the onload handler.
fix(ai): fix modal triggers to viewport
fix(modal-triggers): stack the triggers into a single column.
restyle footer widgets
updated time selector modal to use correct storage term
minor style update
WIP(ai-chat): get product data
chore(js): Factor out pageContext module from influxdb-url.js
chore(js): Refactor helpers.js out of inflluxdb-url.js
WIP: refactor influxdburl - minimal changes for module conversions
feat(ai): Custom AI chat example questions product and version.
Ask AI example questions:
- Adds support for customizing example Ask AI questions per product or version.
- Configure questions in site `data/products.yml`; otherwise, it uses default questions from `ask-ai.js`
Context, page, and product data:
- Adds sample URLs for remaining versions in influxdb_urls
- `page-context.js` consolidates and exports constants for page context (protocol, host, path, referrer) and path-to-data mappings for product and influxdb_url site data
Module refactor:
- Refactors some JavaScript into ES6 modules, and refactors some of those further into a Component pattern--just vanilla JS and no shadow DOM stuff. The Component pattern that uses data attributes to "bind" JavaScript modules with CSS and HTML is a popular approach in modern web development. This pattern enhances modularity, reusability, and maintainability by associating behavior (JavaScript), structure (HTML), and style (CSS) through the use of data attributes.
- `assets/main.js` is the entrypoint
- Passes pageParams from the Hugo page to modules that import `@params`.
- Moves most external dependencies out of `script` tags and into package.json to be managed with `yarn`.
- Adds `eslint`.
- For modules that aren't yet components, wraps execution statements inside an `initialize()` function and calls the function from `main.js` on `DOMContentLoaded`.
- For components, if the page contains the `data-component="<component-name>"`, the matching element is passed to the component function on `DOMContentLoaded`.
- I tried to avoid changing logic where it wasn't necessary.
Update DOC_GPT_PROFILE.md
customize ai chat modal styles
fix(influxdb-url): Rename to cloud_dedicated in influxdb_urls.yml, remove newly added placeholder URL and use the extant default, refactor
- Rename to in influxdb_urls.yml
- Fix influxdb-url.js and data provision in local-storage.js to use the new name, mapping it to to retain the existing local storage key
chore(api-lib): Use local-storage import instead of window global
chore(js): cleanup
fix(js): Ensure feature-callout initializes on page load
fix(theme): Load preferred theme before making the page visible. Execute a predefined function by specifying the function name in data-theme-callback
fix(search-toggle): Restores toggling the search field when sidebar is collapsed. Moves the event handler to a new search-button component
fix(ai): Fix custom attribute assignment. Rename property to ai_example_questions
Include the word `Bearer` or `Token`, a space, and your **token** value (all case-sensitive). Fix TOC links.
Fixes#5781
fix(api-docs): Update API reference directories and generation script for influxdb3 URL paths, update links and names in reference content
fix(api-ref): Update getswagger.sh destination paths to use the new directory structure when fetching spec files. Update the redocly plugin module path.
hotfix: fix hlevel bug in children shortcode
Remove underline from custom time widget
add color to custom time widget styling
- Pre-commit hook:
- Redo test harness so commands can run in parallel
- Cleanup Vale command args
- Replace lint-staged and husky with Lefthook.
- Pre-push hook:
- Scan for package vulnerabilities
- Tests
- Run tests on demand, in parallel, or debugged using docker compose up, run, exec, etc.
- Each test container (service) runs the prepare-content script before running tests.
- Return to using Python instead of Docker to provide environment variables so they don't get exposed in Docker inspect.
- Bind mount influxctl config.toml and .env.test files
- Bind mount scripts for faster builds while iterating on test scripts.
- Vale:
- Override Acronyms style def--ignore acronym if it's linked.
* docs(clustered): initial license onboarding guide
* refactor: run `deno fmt`
* fix(clustered): make room for documents in between existing ones
* fix(clustered): introduce sensible deterministic order for reference documents
* refactor: separate license installation from license reference
* fix: markdown typo, confusing verbiage
* Licensing content and structure updates (#5520)
* WIP licensing content
* changes to licensing content and structure
* Update content/influxdb/clustered/admin/licensing.md
Co-authored-by: Jennifer Moore <mail@jenniferplusplus.com>
* updated TOC link to license recovery section
* Apply suggestions from code review
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
* updated license recovery content
---------
Co-authored-by: Jennifer Moore <mail@jenniferplusplus.com>
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
* ported edits to new feature branch
---------
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
Co-authored-by: wayne warren <wayne.warren.s@gmail.com>
Co-authored-by: Scott Anderson <scott@influxdata.com>
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
- Reconfigures prettier linting.
- Adds .editorconfig to help with consistent editor settings
- Refactors test runs:
- Removes test configuration from compose.yaml (not suited for this use case).
- Splits test runner into test content setup and pytest that can be run separately or together (and with other test runners in the future).
- Configuration is in Dockerfiles and command line (`.lintstagedrc.mjs`)
- Updates CONTRIBUTING.md
- Updates client library write examples in cloud-dedicated and clustered.
- Configures lint-staged to run vale on staged files and use a custom config with custom vocab for specific directories.
- .md files in other directories use the project-level .vale.ini
- Adds the write-good package for style checking
- Pulls python client lib and CLI from Github repo instead of package repo so we can test the latest release. Specifies the last release tag.
- Adds CSV and JSON home sensor data samples to /static/downloads.
- Test image build bind mounts /static/downloads into /usr/src/app/test/tmp/data. Allows code samples to reference sample data as `./data/[file]`.
- Moves run-tests.sh to setup directory.
- Dockerfile cleanup. Add jq for inspection/troubleshooting.
* Bump hugo to latest version v0.121.2
* Fix deprecation warnings emitted from hugo
---------
Co-authored-by: Jason Stirnaman <stirnamanj@gmail.com>
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>