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/defaultdeclarations 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
BCP121errors 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
typemetadata. Function-only SKUs continue to reject Web Apps.
Generated Bicep
API connections and Logic Apps now use
subscriptionResourceIdfor 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
listKeysexpressions.
Debugging
Added
--keep-artifactstocheck,plan(including--what-if), andtranspile. 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
transpileruns 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, andpreprodas 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=falseon Unix or-SkipLanguageServeron 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.