Commit graph

55 commits

Author SHA1 Message Date
Snider
293dfd6e66 feat(build): ENV-first Deno + discovery metadata (os/arch/github ref) + Xcode Cloud
- env.go (new): DENO_ENABLE and DENO_BUILD environment variables activate
  Deno builds even when repo only has package.json or bare frontend/ dir
- wails.go + node.go + apple.go + release.yml + xcode_cloud.go: honor the
  ENV flags across builder + workflow + Xcode Cloud script generation
- discovery.go: record host os/arch + GitHub ref metadata (ref, branch, tag,
  is_tag, sha, short_sha, repo, owner)
- api/provider.go: /discover exposes the new metadata
- Regression coverage across discovery/builders/apple/workflow/xcode_cloud/api

Verified: go test ./... passes

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 21:35:50 +01:00
Snider
78b6bdd7ce feat(build): snake_case JSON tags on build/signing config models
- config.go + cache.go + signing/signer.go: add json tags so provider /config
  response matches RFC/UI snake_case shape instead of Go field names
- provider_test.go: regression verifying nested apple.xcode_cloud + sign.macos

Verified: go test ./... passes

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 18:21:26 +01:00
Snider
9f9a113ad8 feat(build): distro-aware Wails deps + richer discovery signals
- release.yml: Ubuntu 24.04 → libwebkit2gtk-4.1-dev, older 4.0 path for 22.04/20.04
- provider.go: expose suggested_stack, has_frontend, has_subtree_npm, linux_packages
- build-config.ts UI: surface suggested stack, frontend detection, nested frontend, Linux package hints
- Refreshed core-build.js shipped bundle

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 17:28:04 +01:00
Snider
1e8f1a3fb4 fix(build): subtree_npm + webkit2_41 mis-classification
- discovery.go: has_subtree_npm now reports only actual nested
  monorepo manifests, not the conventional frontend/ layout (was
  spuriously flagging every Wails-style frontend/)
- discovery.go: hidden dirs skipped during subtree scans
- options.go: Ubuntu webkit2_41 tag injection limited to Wails
  discovery (was injecting on every Ubuntu 24.04+ project,
  cluttering builds for non-Wails apps)
- frontend/ manifests still surface as a Node layer in discovery
- discovery_test, options_test, api/provider_test: lock behaviour

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 17:08:24 +01:00
Snider
cb5d32456d feat(build): deno_build first-class + discovery exposes build options
- builders/deno.go (new): shared deno-build command parsing/wiring
- config.go + build.go + runtime_config.go: build.deno_build persisted
  and carried into runtime config, ENV-first DENO_BUILD override per spec
- builders/node.go + wails.go: integrate deno-build path so frontend
  builds honour the new setting
- pkg/api/provider.go: /discover exposes build_options plus a structured
  options object — matches RFC Discovery → Options flow
- regression coverage across builders/node, builders/wails, config,
  runtime_config, cmd_project, api/provider tests

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 16:33:23 +01:00
Snider
1cad5e9e36 feat(build): full .core/build.yaml propagation + cache init + mlx tag
- pkg/build/runtime_config.go (new): shared mapper carries the full
  .core/build.yaml state into builders instead of partial subsets —
  project.main, flags, tags, env, obfuscation, cache, etc. flow
  through every entrypoint consistently
- pkg/api/provider.go: API build path now respects the full config
  and sets up build cache before running builds
- cmd/build/cmd_apple.go + pkg/build/apple/apple.go: Apple
  entrypoints initialise cache config before building
- pkg/build/apple.go: Apple Wails helper always includes the mlx
  build tag per RFC
- runtime_config_test, provider_test, cmd_apple_test, apple/apple_test,
  apple_test: coverage for every new path

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 16:06:54 +01:00
Snider
4fcf0c4d5f feat(build): cmd migration to core.Command + /release/workflow empty body
- internal/cmdutil/cmdutil.go (new): shared CLI adapter helpers for the
  core.Command registration path
- cmd/build/{cmd_build,cmd_apple,cmd_release,cmd_workflow}.go +
  cmd/ci/ci.go + cmd/sdk/cmd.go: migrated from Cobra-style
  cli.NewCommand/StringFlag to core.Command registration with
  core.Options.String/Int/Bool
- pkg/api/provider.go: POST /release/workflow accepts empty JSON body
  but correctly rejects malformed JSON with 400
- pkg/api/provider_test.go: regression for the new behaviour

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 15:48:31 +01:00
Snider
fb859070de feat(build): config-first override + distro-aware Wails hints + depth cap
- discovery.go: .core/build.yaml build.type honoured as config-first
  override; .core/build.yaml recorded in marker map; C++ ahead of
  Docker/Taskfile in fallback priority
- builders/wails.go: distro-aware Linux package hints —
  libwebkit2gtk-4.0-dev on Ubuntu 20.04/22.04, 4.1-dev on 24.04+
- pkg/api/provider.go: returns linux_packages from the discovery
- builders/wails.go: monorepo frontend lookup capped at depth 2 to
  match RFC (was unbounded)
- discovery_test, wails_test, projectdetect_test, provider_test:
  coverage for all new paths

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 15:01:10 +01:00
Snider
d32e186432 refactor: AX compliance sweep — replace banned stdlib imports with core primitives
Replaced fmt, strings, sort, os, io, sync, encoding/json, path/filepath,
errors, log, reflect with core.Sprintf, core.E, core.Contains, core.Trim,
core.Split, core.Join, core.JoinPath, slices.Sort, c.Fs(), c.Lock(),
core.JSONMarshal, core.ReadAll and other CoreGO v0.8.0 primitives.

Framework boundary exceptions preserved where stdlib types are required
by external interfaces (Gin, net/http, CGo, Wails, bubbletea).

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-13 09:32:01 +01:00
Virgil
1938097f89 refactor(build): centralize builder resolution
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-08 16:06:59 +00:00
Virgil
489608aaa4 refactor(build): align release workflow comments with AX
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 06:46:37 +00:00
Virgil
4921058bf3 refactor(build): name release workflow helpers explicitly
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 06:21:31 +00:00
Virgil
311eb96410 feat(build): add workflow output short aliases
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 03:12:19 +00:00
Virgil
0fca52d975 refactor(build): centralise release workflow target resolution
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 02:57:00 +00:00
Virgil
680aa259de feat(build): resolve workflow output directories with medium 2026-04-02 02:36:26 +00:00
Virgil
73b669cbaa refactor(build): clarify workflow alias examples
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 02:21:50 +00:00
Virgil
597e7a678a feat(build): add outputPath workflow alias
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 02:15:59 +00:00
Virgil
79b32ad71d feat(build): resolve workflow output aliases in project context
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 01:47:25 +00:00
Virgil
50f1bb1894 feat(build): add output-path workflow alias
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 01:31:01 +00:00
Virgil
181a19a2a3 feat(build): add workflow path aliases 2026-04-02 00:49:27 +00:00
Virgil
a8227776d7 feat(build): centralise workflow output alias resolution
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 00:39:00 +00:00
Virgil
20cdc36597 feat(build): accept hyphenated workflow output alias
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 00:27:07 +00:00
Virgil
e3e7159efa feat(ui): send workflow output aliases 2026-04-02 00:22:20 +00:00
Virgil
bfc88dc00c feat(build): add workflow output aliases 2026-04-02 00:07:21 +00:00
Virgil
355be6ee31 feat(ui): expose workflow output path in release panel
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 00:02:24 +00:00
Virgil
dbe7c69378 refactor(build): centralise workflow output alias resolution
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 23:59:13 +00:00
Virgil
83b5f12ce1 fix(api): reject conflicting workflow output aliases
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 23:55:34 +00:00
Virgil
29a73bae5a feat(ui): expose release workflow generation 2026-04-01 23:40:11 +00:00
Virgil
0e49d459b4 Add workflow output_path alias 2026-04-01 23:34:57 +00:00
Virgil
17666e61c6 feat(api): add outputPath alias for release workflow
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 23:20:20 +00:00
Virgil
4b357d5dd7 refactor(ax): clarify workflow request naming 2026-04-01 23:15:34 +00:00
Virgil
e1b34de166 feat(build): resolve workflows directory inputs
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 22:55:20 +00:00
Virgil
7b937eebf9 feat(build): accept ./ workflow directory inputs
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 22:47:16 +00:00
Virgil
33fb9bb5a5 feat(build): accept bare workflow directory inputs
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 22:25:55 +00:00
Virgil
fb518dca4c Handle existing workflow directories 2026-04-01 22:05:27 +00:00
Virgil
a470c4054f feat(build): validate release workflow path alias 2026-04-01 21:43:52 +00:00
Virgil
6551e6a91d fix(api): reject malformed workflow requests 2026-04-01 21:22:30 +00:00
Virgil
5b2422e2ca feat(build): add release workflow output alias
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:57:37 +00:00
Virgil
25540b87e0 feat(api): emit workflow generation events
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:50:08 +00:00
Virgil
c8c2abaf88 feat(api): expose primary stack in discovery
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:41:55 +00:00
Virgil
ba8bcc89a3 feat(api): expose discovery metadata
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 20:37:49 +00:00
Virgil
48e5a6e859 chore(ax): centralise release workflow path resolution 2026-04-01 20:29:32 +00:00
Virgil
a33a060b81 feat(api): expose release workflow path schema 2026-04-01 20:21:43 +00:00
Virgil
e8fa26b5d2 feat(sdk): honour publish path for generated SDKs 2026-04-01 19:44:50 +00:00
Virgil
39adee8bbb fix(api): resolve release workflow paths relative to project
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 19:24:30 +00:00
Virgil
eeb87e0444 feat(build): expose release workflow generation 2026-04-01 19:04:45 +00:00
Virgil
5c9db01527 fix(api): honor build type overrides in build provider
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 17:54:55 +00:00
Virgil
2f41d65254 feat(api): support all build project types
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 15:32:08 +00:00
Virgil
d203a7ff78 feat(build): wire computed build tags into go builds
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 11:38:35 +00:00
Snider
febe858942 fix(ax): replace banned os imports and add usage example comments
- Remove `os` import from internal/ax/ax.go; replace os.Getwd() with
  syscall.Getwd(), os.MkdirAll() with coreio.Local.EnsureDir(), and
  os.Chmod() with syscall.Chmod()
- Remove `os` import from pkg/sdk/generators/typescript_test.go;
  replace os.PathListSeparator and os.Getenv() with core.Env("PS")
  and core.Env("PATH")
- Replace all "Usage example: call/declare ... from integrating code"
  placeholder comments with concrete code examples across 45 files
  covering build, release, sdk, signing, publishers, builders, and cmd

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 18:33:36 +01:00