Commit graph

70 commits

Author SHA1 Message Date
Snider
33de5f888f Align build defaults with RFC packaging semantics 2026-04-15 13:54:44 +01:00
Snider
00006107b2 Preserve local-target defaults without build config 2026-04-15 13:21:24 +01:00
Snider
8ec644b017 Align go-build module path with RFC 2026-04-15 11:50:20 +01:00
Snider
24a310a84b Expose build provider event stream 2026-04-15 07:25:06 +01:00
Snider
27919188ad Align release API and SDK Docker fallback 2026-04-15 07:04:26 +01:00
Snider
6f5620b7cb Implement RFC multi-type build and release handling 2026-04-15 06:01:47 +01:00
Snider
047cad1b6e Align SDK config handling with RFC 2026-04-15 04:46:07 +01:00
Snider
21a4e2f83a feat(build): action-style Pipeline gateway shared by CLI + API paths
- pkg/build/pipeline.go (new): reusable Pipeline.Run gateway — discovery →
  options → setup-plan → builders → publish → checksums → archive
- pkg/build/pipeline_test.go (new): coverage including nil-plan rejection
- cmd_project.go: CLI build path now invokes shared pipeline
- pkg/api/provider.go: /build endpoint invokes shared pipeline
- README + docs/{architecture,RFC}: orchestration surface documented

Verified: go test ./... passes

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-15 01:54:51 +01:00
Snider
223922d74e feat(build): expose workflow discovery aliases 2026-04-15 01:35:25 +01:00
Snider
15f22656dc feat(api): expose discovery setup plan 2026-04-15 01:17:42 +01:00
Snider
f7b716e66e feat(build): .core/build.yaml build.type drives workflow discovery + setup
- discovery.go: DiscoveryResult.ConfiguredType; DiscoverFull keeps
  PrimaryStackSuggestion authoritative when build.type is set
- release.yml: parse build.type, emit configured_build_type, drive setup for
  Go/Wails/Taskfile, Node, Python/MkDocs/Conan, PHP, Rust, Linux Wails deps
- provider.go /discover: exposes configured_type
- discovery_test + workflow_test + cmd_workflow_test: coverage

Verified: go test ./... passes

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-15 00:35:38 +01:00
Snider
003cd1ffe9 feat(build): discovery + API surface richer action-style fields
- discovery.go: expose primary_stack_suggestion, package/Deno aggregate markers,
  root go.work / wails.json, docs/go-toolchain flags, subtree Deno detection,
  webkit_package field
- provider.go /discover: include new fields in response
- discovery_test + provider_test: coverage for nested Go toolchain + new API fields

Verified: go test ./... passes

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 23:56:49 +01:00
Snider
116a556c2f feat(build): UI surfaces richer discovery + stack settings + Apple/Xcode Cloud + CSS fixes
- ui/src/build-config.ts: surface suggested_stack, distro, git ref/tag/SHA,
  Linux packages, computed build options, stack-specific settings
  (build_tags, obfuscation, cache, Deno, NSIS, WebView2, Docker/LinuxKit),
  Apple/Xcode Cloud config
- CSS fixes: colour → color across build-config/artifacts/panel/sdk .ts
- pkg/api/ui/dist/core-build.js: rebuilt embedded bundle

Verified: npm run build + go test ./... passes

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 23:18:28 +01:00
Snider
1b3918c22d feat(build): discovery records main.go + action-style field parity + unknown stack
- discovery.go: main.go recorded as first-class marker; explicit
  action-style discovery fields for root + frontend markers;
  SuggestStack returns "unknown" when nothing is detected
- provider.go /discover: includes new action-style fields in response
- Tests: discovery + provider coverage for new fields

Verified: go test ./... passes

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 22:13:26 +01:00
Snider
6615298252 feat(build): /build follows archive_format + checksums + /artifacts recursive walk
- provider.go /build: respects build.archive_format, writes CHECKSUMS.txt,
  runs checksum signing when configured, exposes checksum/archive info in
  the response payload
- provider.go /artifacts: walks dist/ recursively so nested outputs
  (dist/linux_amd64/...) are not hidden
- provider_test.go: coverage for archive-format flow + recursive artifacts

Verified: go test ./pkg/api + go test ./... passes

Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-14 21:44:04 +01:00
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