Repository navigation
Releases: JuanTorchia/gmm-haproxy-vscode
Release list
HAProxy Config v0.6.0
Changelog
All notable changes to HAProxy Config extension will be documented here.
Format follows Keep a Changelog.
Versioning follows Semantic Versioning.
Release notes for GitHub and VS Code Marketplace must be derived from this file.
See docs/release.md for changelog and release-note rules.
[Unreleased]
[0.6.0] — 2026-10-05
Changed
- The extension no longer claims every
.cfgand.conffile. It recognizeshaproxy.cfg,haproxy.conf,haproxy*.cfgand files underhaproxy/by name, and switches other.cfg/.conffiles to HAProxy only when they contain an HAProxy section header. Documents without any HAProxy section no longer receive diagnostics. Usefiles.associationsto force a file (#72). - A language picked manually for a
.cfg/.conffile is respected for the rest of the session, and the language server now starts only when an HAProxy file is opened.
[0.5.0] — 2026-10-05
Added
- After regular use (5 distinct days with an HAProxy config open, at least 14 days after first use), the extension may ask for a Marketplace rating in a non-modal notification. "Later" postpones it 30 days; "Rate" or "Don't ask again" stop it for good, and it is never shown more than twice. It only appears in Microsoft VS Code, makes no network calls, and can be turned off with
haproxy.ratingPrompt.enabled.
[0.4.0] — 2026-09-30
Added
- Port numbers in
bindandserveraddresses are now validated against the 1-65535 range. Port ranges (bind :8080-8090) and comma-separated address lists are each checked per address. Unix socket paths,fd@/unix@-style addresses, environment substitutions and bracket-less IPv6 literals are skipped rather than guessed at, andserver ... :0is accepted because 0 means "inherit the incoming port" on a server line. - Timeout values are now validated. A value written without a unit —
timeout connect 5, which HAProxy reads as 5 milliseconds — is reported as a warning naming the real duration and the likely intent. A value HAProxy cannot parse at all, including a unit separated from its number by a space, is reported as an error. Covers the whole timeout family plusstats timeout, thetune.*-timeoutsettings andtcp-request/tcp-response inspect-delay. - HAProxy 3.2, 3.3 and 3.4 are now selectable validation targets, with directive metadata for the global, server and special-section keywords they introduce.
- Selecting a HAProxy version that has reached end of life now reports a warning naming the EOL date and a supported upgrade target, so an unsupported validation target is visible while editing instead of at upgrade time.
Changed
- The default validation version is now
3.2(current recommended LTS), previously3.1. - Version status descriptions in the
haproxy.versionsetting and the README support table now distinguish LTS, critical-fixes-only, and end-of-life releases instead of labelling every version as supported. - Marketplace metadata and README now advertise the shipped HAProxy 3.4 support, safe rename, references, highlights, Outline navigation, and quick fixes, with GMM Hub as the product homepage.
Security
- Updated the bundled client dependency tree to
brace-expansion5.0.12, resolving the high-severity denial-of-service advisories affecting versions through 5.0.11. The same safe override is enforced in the root tooling tree.
[0.3.0] — 2026-07-29
Added
- Contributor and release documentation now require README and Marketplace demo GIFs/screenshots to stay current with editor-visible changes.
- Public roadmap discussions and a
v0.3.0milestone now guide future work from user pain points to actionable issues. - Focused undefined-backend diagnostic demo config and GIF source for README/Marketplace visual updates.
- Stick-table directive metadata coverage now includes documentation links for
stick on,stick match,stick store-request, andstick store-response, plus focused validator coverage for stick-table usage.
Changed
- Backend and
serversnippets now use production-ready health checks: HTTP/1.1option httpchkwithHostheader,default-servercheck timings, and no misleadingweight 1default.
Security
- Resolved a high-severity denial-of-service advisory in the
brace-expansionbuild dependency (GHSA-mh99-v99m-4gvg) across both the root and client dependency trees. Build tooling only; no code shipped in the extension was affected. - The CI and publish security gates now audit the
clientandservermanifests in addition to the root.npm auditonly inspects the manifest it is pointed at, so a high-severity advisory previously reachedclient/package-lock.jsonwithout failing either gate. - Fixed the package contents guard, which was reporting success without inspecting anything. It called
vsce lswithout--no-dependencies, so it received no usable file list and passed on zero files — meaning credentials, keys, source maps or test files bundled into the extension would not have been caught. It now inspects the full package file list.
[0.2.1] — 2026-07-02
Added
- Release and changelog policy documenting how GitHub Release notes and VS Code Marketplace notes must be derived from
CHANGELOG.md. - VS Code package contents guard that blocks publishing when local credentials, keys, source maps, tests, or generated junk would be bundled.
- Growth-oriented README and contributor guidance that explains the extension's value for DevOps/SRE users and points Marketplace users back to GitHub.
Fixed
- Unit test script now targets unit suites explicitly after the Jest upgrade, keeping VS Code integration tests in the integration runner.
[0.2.0] — 2026-06-30 (@RevLaw)
Added
- Named defaults sections:
defaults httpsyntax supported — section name highlighted,from <name>clause highlighted as keyword + type; grammar, parser, and AST all updated - Go to Definition / Find References / Peek for all named cross-references:
- Backends / listen —
use_backend,default_backend, section headers - ACLs —
acl <name>definitions ↔if/unlessconditions (including negated!name), section-scoped - Servers —
server <name>↔use-server <name>, section-scoped - Named defaults —
from <name>↔defaults <name>section - Cache —
cache <name>↔http-request cache-use/http-response cache-store - Userlist —
userlist <name>↔http_auth(<name>)/http_auth_group(<name>), precise sub-range - Resolvers —
resolvers <name>↔resolversparam inserverlines - Peers —
peers <name>↔stick-table … peers <name>
- Backends / listen —
- Document highlights for all symbol types above (definition in green, references in blue)
- Rename symbol (F2) for all symbol types — ACL negation
!namerenames name-only - Smart cross-reference completions:
use_backend,default_backend,from,if/unless,use-server,cache-use,cache-store,resolvers,stick-table peersall offer IntelliSense lists from the current file - Cross-reference validation:
from <name>referencing undefined named defaults → Warninguse-server <name>with no matching server in section → Errorhttp-request cache-use/http-response cache-storewith undefined cache → Warning
- Unreferenced-symbol diagnostics:
- Backend never referenced by
use_backend/default_backend→ Information - Named defaults never referenced by
from→ Information - ACL defined but never used in
if/unless→ Information - SPOE backends (name contains
spoe) are exempt
- Backend never referenced by
- HAProxy Enterprise (HAPEE) module support:
module-path,module-load,waf-loadrecognized as valid global directivesmodule-pathdirectory existence validated → Warning if missingmodule-loadfile existence validated againstmodule-path→ Warning if missingwaf-loadfile existence validated → Warning if missing
Changed
DefinitionProviderrewritten to delegate to sharedsymbolResolverHaproxySectionAST now carriesnameTokenandfromtoken with source ranges- Mode inheritance now resolves correctly through named defaults
fromchains symbolResolvermoved toshared/— eliminates cross-provider directory imports
[0.1.2] — 2026-04-06
Fixed
- README images not showing on Marketplace (private repo — switched to absolute
raw.githubusercontent.com URLs from public assets repo) - Fixed repository.url in package.json pointing to old
gmm/organization
[0.1.1] — 2026-04-06
Fixed
- Document symbols (Outline panel) crashed with
TypeError: Cannot read properties of undefined (reading 'range')— caused by usingNumber.MAX_SAFE_INTEGERas a character position, which exceeds the LSPuintegermax of2147483647 option forceclosehad no data entry — deprecation warning was never generated, making the quick fix silently unavailable- Added smoke test: every entry in
SAFE_REPLACEMENTSis now verified to produce a real deprecation warning at test time
Changed
- README updated with real screenshots for all features
- Settings panel screenshot added to Configuration section
- CI badge URL corrected to
JuanTorchia/gmm-haproxy-vscode
[0.1.0] — 2026-04-05
Added
- Initial release
- HAProxy config parser: fault-tolerant AST with source ranges for every token
- Syntax highlighting via TextMate grammar (section headers, directives, ACLs, IPs, timeouts, strings)
- Context-aware autocompletion filtered by section type and
mode http/mode tcp - Hover documentation: signature, description, valid sections, version badge, docs link
- Live validation with version-aware diagnostics:
- Unknown directives (Error)
- Directive used in wrong section (Error)
- HTTP-only directive in
mode tcpsection (Error), and vice ver...
HAProxy Config v0.5.0
Changelog
All notable changes to HAProxy Config extension will be documented here.
Format follows Keep a Changelog.
Versioning follows Semantic Versioning.
Release notes for GitHub and VS Code Marketplace must be derived from this file.
See docs/release.md for changelog and release-note rules.
[Unreleased]
[0.5.0] — 2026-10-05
Added
- After regular use (5 distinct days with an HAProxy config open, at least 14 days after first use), the extension may ask for a Marketplace rating in a non-modal notification. "Later" postpones it 30 days; "Rate" or "Don't ask again" stop it for good, and it is never shown more than twice. It only appears in Microsoft VS Code, makes no network calls, and can be turned off with
haproxy.ratingPrompt.enabled.
[0.4.0] — 2026-09-30
Added
- Port numbers in
bindandserveraddresses are now validated against the 1-65535 range. Port ranges (bind :8080-8090) and comma-separated address lists are each checked per address. Unix socket paths,fd@/unix@-style addresses, environment substitutions and bracket-less IPv6 literals are skipped rather than guessed at, andserver ... :0is accepted because 0 means "inherit the incoming port" on a server line. - Timeout values are now validated. A value written without a unit —
timeout connect 5, which HAProxy reads as 5 milliseconds — is reported as a warning naming the real duration and the likely intent. A value HAProxy cannot parse at all, including a unit separated from its number by a space, is reported as an error. Covers the whole timeout family plusstats timeout, thetune.*-timeoutsettings andtcp-request/tcp-response inspect-delay. - HAProxy 3.2, 3.3 and 3.4 are now selectable validation targets, with directive metadata for the global, server and special-section keywords they introduce.
- Selecting a HAProxy version that has reached end of life now reports a warning naming the EOL date and a supported upgrade target, so an unsupported validation target is visible while editing instead of at upgrade time.
Changed
- The default validation version is now
3.2(current recommended LTS), previously3.1. - Version status descriptions in the
haproxy.versionsetting and the README support table now distinguish LTS, critical-fixes-only, and end-of-life releases instead of labelling every version as supported. - Marketplace metadata and README now advertise the shipped HAProxy 3.4 support, safe rename, references, highlights, Outline navigation, and quick fixes, with GMM Hub as the product homepage.
Security
- Updated the bundled client dependency tree to
brace-expansion5.0.12, resolving the high-severity denial-of-service advisories affecting versions through 5.0.11. The same safe override is enforced in the root tooling tree.
[0.3.0] — 2026-07-29
Added
- Contributor and release documentation now require README and Marketplace demo GIFs/screenshots to stay current with editor-visible changes.
- Public roadmap discussions and a
v0.3.0milestone now guide future work from user pain points to actionable issues. - Focused undefined-backend diagnostic demo config and GIF source for README/Marketplace visual updates.
- Stick-table directive metadata coverage now includes documentation links for
stick on,stick match,stick store-request, andstick store-response, plus focused validator coverage for stick-table usage.
Changed
- Backend and
serversnippets now use production-ready health checks: HTTP/1.1option httpchkwithHostheader,default-servercheck timings, and no misleadingweight 1default.
Security
- Resolved a high-severity denial-of-service advisory in the
brace-expansionbuild dependency (GHSA-mh99-v99m-4gvg) across both the root and client dependency trees. Build tooling only; no code shipped in the extension was affected. - The CI and publish security gates now audit the
clientandservermanifests in addition to the root.npm auditonly inspects the manifest it is pointed at, so a high-severity advisory previously reachedclient/package-lock.jsonwithout failing either gate. - Fixed the package contents guard, which was reporting success without inspecting anything. It called
vsce lswithout--no-dependencies, so it received no usable file list and passed on zero files — meaning credentials, keys, source maps or test files bundled into the extension would not have been caught. It now inspects the full package file list.
[0.2.1] — 2026-07-02
Added
- Release and changelog policy documenting how GitHub Release notes and VS Code Marketplace notes must be derived from
CHANGELOG.md. - VS Code package contents guard that blocks publishing when local credentials, keys, source maps, tests, or generated junk would be bundled.
- Growth-oriented README and contributor guidance that explains the extension's value for DevOps/SRE users and points Marketplace users back to GitHub.
Fixed
- Unit test script now targets unit suites explicitly after the Jest upgrade, keeping VS Code integration tests in the integration runner.
[0.2.0] — 2026-06-30 (@RevLaw)
Added
- Named defaults sections:
defaults httpsyntax supported — section name highlighted,from <name>clause highlighted as keyword + type; grammar, parser, and AST all updated - Go to Definition / Find References / Peek for all named cross-references:
- Backends / listen —
use_backend,default_backend, section headers - ACLs —
acl <name>definitions ↔if/unlessconditions (including negated!name), section-scoped - Servers —
server <name>↔use-server <name>, section-scoped - Named defaults —
from <name>↔defaults <name>section - Cache —
cache <name>↔http-request cache-use/http-response cache-store - Userlist —
userlist <name>↔http_auth(<name>)/http_auth_group(<name>), precise sub-range - Resolvers —
resolvers <name>↔resolversparam inserverlines - Peers —
peers <name>↔stick-table … peers <name>
- Backends / listen —
- Document highlights for all symbol types above (definition in green, references in blue)
- Rename symbol (F2) for all symbol types — ACL negation
!namerenames name-only - Smart cross-reference completions:
use_backend,default_backend,from,if/unless,use-server,cache-use,cache-store,resolvers,stick-table peersall offer IntelliSense lists from the current file - Cross-reference validation:
from <name>referencing undefined named defaults → Warninguse-server <name>with no matching server in section → Errorhttp-request cache-use/http-response cache-storewith undefined cache → Warning
- Unreferenced-symbol diagnostics:
- Backend never referenced by
use_backend/default_backend→ Information - Named defaults never referenced by
from→ Information - ACL defined but never used in
if/unless→ Information - SPOE backends (name contains
spoe) are exempt
- Backend never referenced by
- HAProxy Enterprise (HAPEE) module support:
module-path,module-load,waf-loadrecognized as valid global directivesmodule-pathdirectory existence validated → Warning if missingmodule-loadfile existence validated againstmodule-path→ Warning if missingwaf-loadfile existence validated → Warning if missing
Changed
DefinitionProviderrewritten to delegate to sharedsymbolResolverHaproxySectionAST now carriesnameTokenandfromtoken with source ranges- Mode inheritance now resolves correctly through named defaults
fromchains symbolResolvermoved toshared/— eliminates cross-provider directory imports
[0.1.2] — 2026-04-06
Fixed
- README images not showing on Marketplace (private repo — switched to absolute
raw.githubusercontent.com URLs from public assets repo) - Fixed repository.url in package.json pointing to old
gmm/organization
[0.1.1] — 2026-04-06
Fixed
- Document symbols (Outline panel) crashed with
TypeError: Cannot read properties of undefined (reading 'range')— caused by usingNumber.MAX_SAFE_INTEGERas a character position, which exceeds the LSPuintegermax of2147483647 option forceclosehad no data entry — deprecation warning was never generated, making the quick fix silently unavailable- Added smoke test: every entry in
SAFE_REPLACEMENTSis now verified to produce a real deprecation warning at test time
Changed
- README updated with real screenshots for all features
- Settings panel screenshot added to Configuration section
- CI badge URL corrected to
JuanTorchia/gmm-haproxy-vscode
[0.1.0] — 2026-04-05
Added
- Initial release
- HAProxy config parser: fault-tolerant AST with source ranges for every token
- Syntax highlighting via TextMate grammar (section headers, directives, ACLs, IPs, timeouts, strings)
- Context-aware autocompletion filtered by section type and
mode http/mode tcp - Hover documentation: signature, description, valid sections, version badge, docs link
- Live validation with version-aware diagnostics:
- Unknown directives (Error)
- Directive used in wrong section (Error)
- HTTP-only directive in
mode tcpsection (Error), and vice versa - Deprecated directives with migration hints (Warning)
- Directives not available in the selected version (Error)
- Invalid
http-request,http-response,http-after-response,tcp-request,tcp-responseaction sub-keywords (Error) use_backend/default_backendreferencing an undefined backend (Warning)
- Document formatting: 4-space indentation normalization
- Snippets for all common HAProxy blocks (
global,defaults,frontend,backend,listen,server,acl,httpchk,use_backend) - Multi-version support: 2.4 LTS, 2.6 LTS, 2.8 LTS, 3.0, 3.1...
HAProxy Config v0.4.0
What's Changed
- feat(registry): support HAProxy 3.2, 3.3 and 3.4 and warn on EOL versions by @JuanTorchia in #64
- feat(validation): validate timeout values and flag unit-less numbers by @JuanTorchia in #65
- feat(validation): validate bind and server port ranges by @JuanTorchia in #66
- test: cover rename, references and documentHighlight providers by @JuanTorchia in #67
- chore(deps): resolve high-severity advisories by @JuanTorchia in #105
- chore(release): prepare v0.4.0 and trusted publishing by @JuanTorchia in #106
- ci: publish 0.4.0 with Marketplace PAT fallback by @JuanTorchia in #107
Full Changelog: v0.3.0...v0.4.0
HAProxy Config v0.3.0
Changelog
All notable changes to HAProxy Config extension will be documented here.
Format follows Keep a Changelog.
Versioning follows Semantic Versioning.
Release notes for GitHub and VS Code Marketplace must be derived from this file.
See docs/release.md for changelog and release-note rules.
[Unreleased]
[0.3.0] — 2026-07-29
Added
- Contributor and release documentation now require README and Marketplace demo GIFs/screenshots to stay current with editor-visible changes.
- Public roadmap discussions and a
v0.3.0milestone now guide future work from user pain points to actionable issues. - Focused undefined-backend diagnostic demo config and GIF source for README/Marketplace visual updates.
- Stick-table directive metadata coverage now includes documentation links for
stick on,stick match,stick store-request, andstick store-response, plus focused validator coverage for stick-table usage.
Changed
- Backend and
serversnippets now use production-ready health checks: HTTP/1.1option httpchkwithHostheader,default-servercheck timings, and no misleadingweight 1default.
Security
- Resolved a high-severity denial-of-service advisory in the
brace-expansionbuild dependency (GHSA-mh99-v99m-4gvg) across both the root and client dependency trees. Build tooling only; no code shipped in the extension was affected. - The CI and publish security gates now audit the
clientandservermanifests in addition to the root.npm auditonly inspects the manifest it is pointed at, so a high-severity advisory previously reachedclient/package-lock.jsonwithout failing either gate. - Fixed the package contents guard, which was reporting success without inspecting anything. It called
vsce lswithout--no-dependencies, so it received no usable file list and passed on zero files — meaning credentials, keys, source maps or test files bundled into the extension would not have been caught. It now inspects the full package file list.
[0.2.1] — 2026-07-02
Added
- Release and changelog policy documenting how GitHub Release notes and VS Code Marketplace notes must be derived from
CHANGELOG.md. - VS Code package contents guard that blocks publishing when local credentials, keys, source maps, tests, or generated junk would be bundled.
- Growth-oriented README and contributor guidance that explains the extension's value for DevOps/SRE users and points Marketplace users back to GitHub.
Fixed
- Unit test script now targets unit suites explicitly after the Jest upgrade, keeping VS Code integration tests in the integration runner.
[0.2.0] — 2026-06-30 (@RevLaw)
Added
- Named defaults sections:
defaults httpsyntax supported — section name highlighted,from <name>clause highlighted as keyword + type; grammar, parser, and AST all updated - Go to Definition / Find References / Peek for all named cross-references:
- Backends / listen —
use_backend,default_backend, section headers - ACLs —
acl <name>definitions ↔if/unlessconditions (including negated!name), section-scoped - Servers —
server <name>↔use-server <name>, section-scoped - Named defaults —
from <name>↔defaults <name>section - Cache —
cache <name>↔http-request cache-use/http-response cache-store - Userlist —
userlist <name>↔http_auth(<name>)/http_auth_group(<name>), precise sub-range - Resolvers —
resolvers <name>↔resolversparam inserverlines - Peers —
peers <name>↔stick-table … peers <name>
- Backends / listen —
- Document highlights for all symbol types above (definition in green, references in blue)
- Rename symbol (F2) for all symbol types — ACL negation
!namerenames name-only - Smart cross-reference completions:
use_backend,default_backend,from,if/unless,use-server,cache-use,cache-store,resolvers,stick-table peersall offer IntelliSense lists from the current file - Cross-reference validation:
from <name>referencing undefined named defaults → Warninguse-server <name>with no matching server in section → Errorhttp-request cache-use/http-response cache-storewith undefined cache → Warning
- Unreferenced-symbol diagnostics:
- Backend never referenced by
use_backend/default_backend→ Information - Named defaults never referenced by
from→ Information - ACL defined but never used in
if/unless→ Information - SPOE backends (name contains
spoe) are exempt
- Backend never referenced by
- HAProxy Enterprise (HAPEE) module support:
module-path,module-load,waf-loadrecognized as valid global directivesmodule-pathdirectory existence validated → Warning if missingmodule-loadfile existence validated againstmodule-path→ Warning if missingwaf-loadfile existence validated → Warning if missing
Changed
DefinitionProviderrewritten to delegate to sharedsymbolResolverHaproxySectionAST now carriesnameTokenandfromtoken with source ranges- Mode inheritance now resolves correctly through named defaults
fromchains symbolResolvermoved toshared/— eliminates cross-provider directory imports
[0.1.2] — 2026-04-06
Fixed
- README images not showing on Marketplace (private repo — switched to absolute
raw.githubusercontent.com URLs from public assets repo) - Fixed repository.url in package.json pointing to old
gmm/organization
[0.1.1] — 2026-04-06
Fixed
- Document symbols (Outline panel) crashed with
TypeError: Cannot read properties of undefined (reading 'range')— caused by usingNumber.MAX_SAFE_INTEGERas a character position, which exceeds the LSPuintegermax of2147483647 option forceclosehad no data entry — deprecation warning was never generated, making the quick fix silently unavailable- Added smoke test: every entry in
SAFE_REPLACEMENTSis now verified to produce a real deprecation warning at test time
Changed
- README updated with real screenshots for all features
- Settings panel screenshot added to Configuration section
- CI badge URL corrected to
JuanTorchia/gmm-haproxy-vscode
[0.1.0] — 2026-04-05
Added
- Initial release
- HAProxy config parser: fault-tolerant AST with source ranges for every token
- Syntax highlighting via TextMate grammar (section headers, directives, ACLs, IPs, timeouts, strings)
- Context-aware autocompletion filtered by section type and
mode http/mode tcp - Hover documentation: signature, description, valid sections, version badge, docs link
- Live validation with version-aware diagnostics:
- Unknown directives (Error)
- Directive used in wrong section (Error)
- HTTP-only directive in
mode tcpsection (Error), and vice versa - Deprecated directives with migration hints (Warning)
- Directives not available in the selected version (Error)
- Invalid
http-request,http-response,http-after-response,tcp-request,tcp-responseaction sub-keywords (Error) use_backend/default_backendreferencing an undefined backend (Warning)
- Document formatting: 4-space indentation normalization
- Snippets for all common HAProxy blocks (
global,defaults,frontend,backend,listen,server,acl,httpchk,use_backend) - Multi-version support: 2.4 LTS, 2.6 LTS, 2.8 LTS, 3.0, 3.1
- Status bar version indicator with QuickPick selector
HAProxy: Select VersionandHAProxy: Restart Language Servercommands- Server/default-server parameter completions
- GitHub Actions CI workflow (lint, type-check, unit tests, integration tests, packaging)
- Marketplace publish workflow triggered on
v*.*.*tags
HAProxy Config v0.2.1
Changelog
All notable changes to HAProxy Config extension will be documented here.
Format follows Keep a Changelog.
Versioning follows Semantic Versioning.
Release notes for GitHub and VS Code Marketplace must be derived from this file.
See docs/release.md for changelog and release-note rules.
[Unreleased]
[0.2.1] — 2026-07-02
Added
- Release and changelog policy documenting how GitHub Release notes and VS Code Marketplace notes must be derived from
CHANGELOG.md. - VS Code package contents guard that blocks publishing when local credentials, keys, source maps, tests, or generated junk would be bundled.
- Growth-oriented README and contributor guidance that explains the extension's value for DevOps/SRE users and points Marketplace users back to GitHub.
Fixed
- Unit test script now targets unit suites explicitly after the Jest upgrade, keeping VS Code integration tests in the integration runner.
[0.2.0] — 2026-06-30 (@RevLaw)
Added
- Named defaults sections:
defaults httpsyntax supported — section name highlighted,from <name>clause highlighted as keyword + type; grammar, parser, and AST all updated - Go to Definition / Find References / Peek for all named cross-references:
- Backends / listen —
use_backend,default_backend, section headers - ACLs —
acl <name>definitions ↔if/unlessconditions (including negated!name), section-scoped - Servers —
server <name>↔use-server <name>, section-scoped - Named defaults —
from <name>↔defaults <name>section - Cache —
cache <name>↔http-request cache-use/http-response cache-store - Userlist —
userlist <name>↔http_auth(<name>)/http_auth_group(<name>), precise sub-range - Resolvers —
resolvers <name>↔resolversparam inserverlines - Peers —
peers <name>↔stick-table … peers <name>
- Backends / listen —
- Document highlights for all symbol types above (definition in green, references in blue)
- Rename symbol (F2) for all symbol types — ACL negation
!namerenames name-only - Smart cross-reference completions:
use_backend,default_backend,from,if/unless,use-server,cache-use,cache-store,resolvers,stick-table peersall offer IntelliSense lists from the current file - Cross-reference validation:
from <name>referencing undefined named defaults → Warninguse-server <name>with no matching server in section → Errorhttp-request cache-use/http-response cache-storewith undefined cache → Warning
- Unreferenced-symbol diagnostics:
- Backend never referenced by
use_backend/default_backend→ Information - Named defaults never referenced by
from→ Information - ACL defined but never used in
if/unless→ Information - SPOE backends (name contains
spoe) are exempt
- Backend never referenced by
- HAProxy Enterprise (HAPEE) module support:
module-path,module-load,waf-loadrecognized as valid global directivesmodule-pathdirectory existence validated → Warning if missingmodule-loadfile existence validated againstmodule-path→ Warning if missingwaf-loadfile existence validated → Warning if missing
Changed
DefinitionProviderrewritten to delegate to sharedsymbolResolverHaproxySectionAST now carriesnameTokenandfromtoken with source ranges- Mode inheritance now resolves correctly through named defaults
fromchains symbolResolvermoved toshared/— eliminates cross-provider directory imports
[0.1.2] — 2026-04-06
Fixed
- README images not showing on Marketplace (private repo — switched to absolute
raw.githubusercontent.com URLs from public assets repo) - Fixed repository.url in package.json pointing to old
gmm/organization
[0.1.1] — 2026-04-06
Fixed
- Document symbols (Outline panel) crashed with
TypeError: Cannot read properties of undefined (reading 'range')— caused by usingNumber.MAX_SAFE_INTEGERas a character position, which exceeds the LSPuintegermax of2147483647 option forceclosehad no data entry — deprecation warning was never generated, making the quick fix silently unavailable- Added smoke test: every entry in
SAFE_REPLACEMENTSis now verified to produce a real deprecation warning at test time
Changed
- README updated with real screenshots for all features
- Settings panel screenshot added to Configuration section
- CI badge URL corrected to
JuanTorchia/gmm-haproxy-vscode
[0.1.0] — 2026-04-05
Added
- Initial release
- HAProxy config parser: fault-tolerant AST with source ranges for every token
- Syntax highlighting via TextMate grammar (section headers, directives, ACLs, IPs, timeouts, strings)
- Context-aware autocompletion filtered by section type and
mode http/mode tcp - Hover documentation: signature, description, valid sections, version badge, docs link
- Live validation with version-aware diagnostics:
- Unknown directives (Error)
- Directive used in wrong section (Error)
- HTTP-only directive in
mode tcpsection (Error), and vice versa - Deprecated directives with migration hints (Warning)
- Directives not available in the selected version (Error)
- Invalid
http-request,http-response,http-after-response,tcp-request,tcp-responseaction sub-keywords (Error) use_backend/default_backendreferencing an undefined backend (Warning)
- Document formatting: 4-space indentation normalization
- Snippets for all common HAProxy blocks (
global,defaults,frontend,backend,listen,server,acl,httpchk,use_backend) - Multi-version support: 2.4 LTS, 2.6 LTS, 2.8 LTS, 3.0, 3.1
- Status bar version indicator with QuickPick selector
HAProxy: Select VersionandHAProxy: Restart Language Servercommands- Server/default-server parameter completions
- GitHub Actions CI workflow (lint, type-check, unit tests, integration tests, packaging)
- Marketplace publish workflow triggered on
v*.*.*tags
HAProxy Config v0.2.0
Changelog
All notable changes to HAProxy Config extension will be documented here.
Format follows Keep a Changelog.
Versioning follows Semantic Versioning.
[Unreleased]
[0.2.0] — 2026-06-30 (@RevLaw)
Added
- Named defaults sections:
defaults httpsyntax supported — section name highlighted,from <name>clause highlighted as keyword + type; grammar, parser, and AST all updated - Go to Definition / Find References / Peek for all named cross-references:
- Backends / listen —
use_backend,default_backend, section headers - ACLs —
acl <name>definitions ↔if/unlessconditions (including negated!name), section-scoped - Servers —
server <name>↔use-server <name>, section-scoped - Named defaults —
from <name>↔defaults <name>section - Cache —
cache <name>↔http-request cache-use/http-response cache-store - Userlist —
userlist <name>↔http_auth(<name>)/http_auth_group(<name>), precise sub-range - Resolvers —
resolvers <name>↔resolversparam inserverlines - Peers —
peers <name>↔stick-table … peers <name>
- Backends / listen —
- Document highlights for all symbol types above (definition in green, references in blue)
- Rename symbol (F2) for all symbol types — ACL negation
!namerenames name-only - Smart cross-reference completions:
use_backend,default_backend,from,if/unless,use-server,cache-use,cache-store,resolvers,stick-table peersall offer IntelliSense lists from the current file - Cross-reference validation:
from <name>referencing undefined named defaults → Warninguse-server <name>with no matching server in section → Errorhttp-request cache-use/http-response cache-storewith undefined cache → Warning
- Unreferenced-symbol diagnostics:
- Backend never referenced by
use_backend/default_backend→ Information - Named defaults never referenced by
from→ Information - ACL defined but never used in
if/unless→ Information - SPOE backends (name contains
spoe) are exempt
- Backend never referenced by
- HAProxy Enterprise (HAPEE) module support:
module-path,module-load,waf-loadrecognized as valid global directivesmodule-pathdirectory existence validated → Warning if missingmodule-loadfile existence validated againstmodule-path→ Warning if missingwaf-loadfile existence validated → Warning if missing
Changed
DefinitionProviderrewritten to delegate to sharedsymbolResolverHaproxySectionAST now carriesnameTokenandfromtoken with source ranges- Mode inheritance now resolves correctly through named defaults
fromchains symbolResolvermoved toshared/— eliminates cross-provider directory imports
[0.1.2] — 2026-04-06
Fixed
- README images not showing on Marketplace (private repo — switched to absolute
raw.githubusercontent.com URLs from public assets repo) - Fixed repository.url in package.json pointing to old
gmm/organization
[0.1.1] — 2026-04-06
Fixed
- Document symbols (Outline panel) crashed with
TypeError: Cannot read properties of undefined (reading 'range')— caused by usingNumber.MAX_SAFE_INTEGERas a character position, which exceeds the LSPuintegermax of2147483647 option forceclosehad no data entry — deprecation warning was never generated, making the quick fix silently unavailable- Added smoke test: every entry in
SAFE_REPLACEMENTSis now verified to produce a real deprecation warning at test time
Changed
- README updated with real screenshots for all features
- Settings panel screenshot added to Configuration section
- CI badge URL corrected to
JuanTorchia/gmm-haproxy-vscode
[0.1.0] — 2026-04-05
Added
- Initial release
- HAProxy config parser: fault-tolerant AST with source ranges for every token
- Syntax highlighting via TextMate grammar (section headers, directives, ACLs, IPs, timeouts, strings)
- Context-aware autocompletion filtered by section type and
mode http/mode tcp - Hover documentation: signature, description, valid sections, version badge, docs link
- Live validation with version-aware diagnostics:
- Unknown directives (Error)
- Directive used in wrong section (Error)
- HTTP-only directive in
mode tcpsection (Error), and vice versa - Deprecated directives with migration hints (Warning)
- Directives not available in the selected version (Error)
- Invalid
http-request,http-response,http-after-response,tcp-request,tcp-responseaction sub-keywords (Error) use_backend/default_backendreferencing an undefined backend (Warning)
- Document formatting: 4-space indentation normalization
- Snippets for all common HAProxy blocks (
global,defaults,frontend,backend,listen,server,acl,httpchk,use_backend) - Multi-version support: 2.4 LTS, 2.6 LTS, 2.8 LTS, 3.0, 3.1
- Status bar version indicator with QuickPick selector
HAProxy: Select VersionandHAProxy: Restart Language Servercommands- Server/default-server parameter completions
- GitHub Actions CI workflow (lint, type-check, unit tests, integration tests, packaging)
- Marketplace publish workflow triggered on
v*.*.*tags
HAProxy Config v0.1.2
Changelog
All notable changes to HAProxy Config extension will be documented here.
Format follows Keep a Changelog.
Versioning follows Semantic Versioning.
[Unreleased]
[0.1.2] — 2026-04-06
Fixed
- README images not showing on Marketplace (private repo — switched to absolute
raw.githubusercontent.com URLs from public assets repo) - Fixed repository.url in package.json pointing to old
gmm/organization
[0.1.1] — 2026-04-06
Fixed
- Document symbols (Outline panel) crashed with
TypeError: Cannot read properties of undefined (reading 'range')— caused by usingNumber.MAX_SAFE_INTEGERas a character position, which exceeds the LSPuintegermax of2147483647 option forceclosehad no data entry — deprecation warning was never generated, making the quick fix silently unavailable- Added smoke test: every entry in
SAFE_REPLACEMENTSis now verified to produce a real deprecation warning at test time
Changed
- README updated with real screenshots for all features
- Settings panel screenshot added to Configuration section
- CI badge URL corrected to
JuanTorchia/gmm-haproxy-vscode
[0.1.0] — 2026-04-05
Added
- Initial release
- HAProxy config parser: fault-tolerant AST with source ranges for every token
- Syntax highlighting via TextMate grammar (section headers, directives, ACLs, IPs, timeouts, strings)
- Context-aware autocompletion filtered by section type and
mode http/mode tcp - Hover documentation: signature, description, valid sections, version badge, docs link
- Live validation with version-aware diagnostics:
- Unknown directives (Error)
- Directive used in wrong section (Error)
- HTTP-only directive in
mode tcpsection (Error), and vice versa - Deprecated directives with migration hints (Warning)
- Directives not available in the selected version (Error)
- Invalid
http-request,http-response,http-after-response,tcp-request,tcp-responseaction sub-keywords (Error) use_backend/default_backendreferencing an undefined backend (Warning)
- Document formatting: 4-space indentation normalization
- Snippets for all common HAProxy blocks (
global,defaults,frontend,backend,listen,server,acl,httpchk,use_backend) - Multi-version support: 2.4 LTS, 2.6 LTS, 2.8 LTS, 3.0, 3.1
- Status bar version indicator with QuickPick selector
HAProxy: Select VersionandHAProxy: Restart Language Servercommands- Server/default-server parameter completions
- GitHub Actions CI workflow (lint, type-check, unit tests, integration tests, packaging)
- Marketplace publish workflow triggered on
v*.*.*tags
HAProxy Config v0.1.1
Changelog
All notable changes to HAProxy Config extension will be documented here.
Format follows Keep a Changelog.
Versioning follows Semantic Versioning.
[Unreleased]
[0.1.1] — 2026-04-06
Fixed
- Document symbols (Outline panel) crashed with
TypeError: Cannot read properties of undefined (reading 'range')— caused by usingNumber.MAX_SAFE_INTEGERas a character position, which exceeds the LSPuintegermax of2147483647 option forceclosehad no data entry — deprecation warning was never generated, making the quick fix silently unavailable- Added smoke test: every entry in
SAFE_REPLACEMENTSis now verified to produce a real deprecation warning at test time
Changed
- README updated with real screenshots for all features
- Settings panel screenshot added to Configuration section
- CI badge URL corrected to
JuanTorchia/gmm-haproxy-vscode
[0.1.0] — 2026-04-05
Added
- Initial release
- HAProxy config parser: fault-tolerant AST with source ranges for every token
- Syntax highlighting via TextMate grammar (section headers, directives, ACLs, IPs, timeouts, strings)
- Context-aware autocompletion filtered by section type and
mode http/mode tcp - Hover documentation: signature, description, valid sections, version badge, docs link
- Live validation with version-aware diagnostics:
- Unknown directives (Error)
- Directive used in wrong section (Error)
- HTTP-only directive in
mode tcpsection (Error), and vice versa - Deprecated directives with migration hints (Warning)
- Directives not available in the selected version (Error)
- Invalid
http-request,http-response,http-after-response,tcp-request,tcp-responseaction sub-keywords (Error) use_backend/default_backendreferencing an undefined backend (Warning)
- Document formatting: 4-space indentation normalization
- Snippets for all common HAProxy blocks (
global,defaults,frontend,backend,listen,server,acl,httpchk,use_backend) - Multi-version support: 2.4 LTS, 2.6 LTS, 2.8 LTS, 3.0, 3.1
- Status bar version indicator with QuickPick selector
HAProxy: Select VersionandHAProxy: Restart Language Servercommands- Server/default-server parameter completions
- GitHub Actions CI workflow (lint, type-check, unit tests, integration tests, packaging)
- Marketplace publish workflow triggered on
v*.*.*tags