Skip to content

template: checklist build output, index.js bundle, bin/ as build product - #40

Merged
julian-goldstein merged 1 commit into
masterfrom
build-output-style
Oct 27, 2026
Merged

julian-goldstein merged 1 commit into
masterfrom
build-output-style

Conversation

@julian-goldstein

Copy link
Copy Markdown
Contributor

Summary

Checklist build output (build/ui.mk), replacing the cargo-style verb column from #38/#39:

● toolchain  v0.10.1  ~/.local/share/yeet/toolchain/linux/x86_64/v0.10.1
✔ vmlinux.h  src/bpf/include/vmlinux.h
✔ cpusched   .build/bpf/cpusched.bpf.o
✔ runqlat    .build/bpf/runqlat.bpf.o
✔ link       bin/probe.bpf.o
✔ bundle     dist/index.js
✔ done       myproject (0.66s)

==> bin/probe.bpf.o (7.9kb)
==> dist/index.js (15.5kb)
  • One row per step: green check, cyan tag, the artifact it produced. A yellow braille spinner animates the row while the step runs (terminal + serial builds only; -j keeps static rows), with the command's output captured and replayed above the finished row, so a compiler error still lands right before its red ✘ … (failed) row.
  • done row with the total build time; artifacts listed below as bold ==> path (size), path magenta, size bold green.
  • Commands hidden, make V=1 echoes each one before its row. Color only when stderr is a tty, TERM != dumb, NO_COLOR unset. Marks and spinner fall back to ASCII outside a UTF-8 locale. make clean prints one row per removed path.
  • scripts/new prints in the same style, without make's directory banner, and its next-step hint says make (there is no yeet build). The C locale it forced is now scoped to the name check so the marks match.

Bundle is dist/index.js. index.js is on yeet's entry ladder and src/main.jsx mounts its root explicitly, so the .jsx extension carried no meaning. Verified by running the app under a pty with both names.

bin/ is a build product. template/bin/.gitkeep removed, /bin/ ignored wholesale, make clean removes it, the bin rule recreates it. A fresh scaffold has no bin/ until built, and git status is clean after a build-then-clean cycle.

Kernel matrix stages veristat in .kmatrix/ (its own, gitignored workspace) instead of bin/: build/kernel-matrix.sh (which now creates .kmatrix/ before staging rather than wiping it afterwards), build/verify-kernel.sh's default path, and .github/workflows/kernel-matrix.yml.

Upstream note: toolchain.mk and fetch-toolchain.sh are embed glue; the changes are mirrored into toolchain/embed/ here and still need a PR in yeet-src/toolchain before the next make sync-toolchain.

Test plan

  • Fresh scaffold: tty output (spinner frames, clears, final rows), piped plain output, V=1, deliberate compile error, make -j4 (no spinner), LC_ALL=C ASCII fallback.
  • yeet run . starts the TUI from dist/index.js under a pty.
  • No bin/ before the first build; removed by make clean; clean git status after build + clean in a committed scaffold.
  • scripts/new output on a tty and piped; invalid names still rejected.
  • sh -n on both kernel-matrix scripts; no bin/veristat references remain.
  • make veristat-matrix and the CI kernel-matrix workflow (boot VMs; not run).

Build output (build/ui.mk) is now a checklist instead of cargo's verb
column: one row per step with a green check, cyan tag and the artifact it
produced; a spinner animates the row while the step runs (terminal, serial
builds only), its output replayed above the finished row; a `done` row
carries the total time; then each artifact on its own `==> path (size)`
row. Commands are hidden, `make V=1` echoes them. Color only on a terminal
with NO_COLOR honored; marks and spinner fall back to ASCII outside UTF-8.

The bundle is written to dist/index.js: it is on yeet's entry ladder and
main.jsx mounts its root explicitly, so the .jsx extension carried no
meaning.

bin/ is now purely a build product: the tracked .gitkeep is gone, /bin/ is
ignored wholesale, `make clean` removes it and the `bin` rule recreates it.
The kernel matrix stages veristat in .kmatrix/ (its own workspace) instead
of bin/, locally and in CI; the in-VM gate's default path follows.

scripts/new: no make directory banner, the next-step hint says `make`
(there is no `yeet build`), rows styled like the build's, and the C locale
is scoped to the name check so the marks match.

toolchain.mk and fetch-toolchain.sh print in the same style; mirrored into
toolchain/embed/ and still to be upstreamed to yeet-src/toolchain.
@julian-goldstein
julian-goldstein merged commit 26bc9ae into master Oct 27, 2026
1 check passed
@julian-goldstein
julian-goldstein deleted the build-output-style branch October 27, 2026 23:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant