← All releases

Release notes

v0.4.1

Hulk 0.4.1 fixes generated Bicep, App Service validation, environment expansion, and installation, and adds an option to retain generated files for debugging.

App Service

  • Fixed duplicate fileServices/default declarations when multiple classic Function Apps share a storage account. Hulk now emits one existing file-service declaration per storage account, while retaining separate content shares for each app and deployment slot.

  • This resolves Bicep BCP121 errors for shared storage, including external accounts. Flex Consumption continues to omit Azure Files resources.

  • Fixed validation that rejected Web Apps and Function Apps sharing a Dedicated App Service plan because of its type metadata. Function-only SKUs continue to reject Web Apps.

Generated Bicep

  • API connections and Logic Apps now use subscriptionResourceId for managed API IDs, removing the corresponding resource-ID linter warnings.

  • Logic App query inputs reference declared Log Analytics workspace names, and storage HTTP inputs use declared accounts' cloud-specific endpoints, removing the corresponding hardcoded-reference warnings.

  • Generated Key Vault secret modules now mark their outputs with @secure(), preventing secret-output warnings and keeping those values out of deployment history.

  • Fixed Key Vault secret references in API connections when vault names contain hyphens or other characters that require sanitized Bicep symbols.

  • Fixed escaping of quoted values inside generated Bicep interpolation expressions, including nested listKeys expressions.

Debugging

  • Added --keep-artifacts to check, plan (including --what-if), and transpile. Once rendering starts, Hulk prints an absolute directory path and retains generated Bicep sources and modules after success or failure, including partial output if rendering fails.

  • Successful transpile runs still publish to .hulk/ and also retain the original temporary directory, so paths in compiler diagnostics remain valid. Without the option, temporary files are cleaned up as before.

  • Added a debugging guide covering retained files, diagnostic paths, independent compilation, and manual cleanup.


hulk check ./main.json --env dev --require-bicep --keep-artifacts

Environments and schemas

  • Added nonprod, sandbox, shared, and preprod as valid environment abbreviations, allowing those canonical names to be used unchanged in resource names.

  • Fixed {env} expansion when a property consists entirely of a variable reference and the selected string value contains the environment placeholder.

  • Refreshed the published JSON schemas to match the CLI, including node22, Flex Consumption settings, optional HTTPS and client-affinity properties, and Grafana dashboard definitions and template references.

Installers

  • Release publishing now generates version-specific Windows, macOS, and Linux installers and refreshes the stable installer URLs alongside the binaries.

  • Installers download the matching immutable Hulk binary and verify its target architecture, SHA-256 digest, and reported version before replacing an existing installation. Windows also validates Authenticode signatures.

  • Fixed the Linux download destination. Unix installers now download and verify before requesting elevation and support a custom installation directory through HULK_INSTALL_DIR; Windows supports -InstallDirectory.

  • Language-server installation can be skipped with HULK_INSTALL_LSP=false on Unix or -SkipLanguageServer on Windows. Hulk LSP continues to use its independent release channel.

Maintenance

  • Made return-type lifetimes explicit throughout the affected Hulk CLI and Bicep code, eliminating the workspace's elided-lifetime warnings without changing runtime behavior.

  • Added regression coverage for shared Function App storage, mixed Dedicated plans, generated Bicep diagnostics, and artifact retention, plus release-script syntax checks in CI.