Changelog

June 3, 2026 ยท View on GitHub

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.7.1 - 2026-06-03

Changed

  • (ui) Simplify truncPad via runewidth Truncate/FillRight (#94)

Fixed

  • Correct .bestpractices.json criterion field names (#90)
  • Set dynamic_analysis to Met (criterion forbids N/A) (#91)
  • (ui) Clamp column width to avoid makeslice panic on huge -width (#101)

Documentation

  • (pkg/common) Add comprehensive GoDoc comments for public contracts (#97)

0.7.0 - 2026-05-29

Changed

  • Pre-v0.7.0 Cleanup: Sorting, Efficiency, and Bug Fixes (#68)
  • Layered Configuration (Env Vars + .structalignrc) (#69)
  • JSON Output Support (-format=json) (#71)

Fixed

  • (ci) Pin codeql action to its commit SHA, not the tag object (#63)
  • (usage) List -no-rc in -h and document the theme eggs (#74)
  • Address major bugs, unhandled AST aliases, and config issues on devel (#82)
  • Graceful RC keys, JSON encode-error stream, and docs (#87)
  • (align) Strip field comments from both diff sides (#89)
  • (ci) Correct cosign-installer pinned commit SHA
  • (ci) Correct cosign-installer pinned commit SHA
  • (ci) Bump cosign-installer to v4.1.2 (cosign v3.0.6)

Documentation

  • Refresh diff screenshot and drop redundant tag badge (#64)

0.6.1 - 2026-05-27

Added

  • Enrich -h into man-page-style help (#52)
  • Report bytes saved in the diff header (#57)

Changed

  • Update README.md
  • Update README.md
  • Update .gitignore
  • Replace hand-rolled ANSI with termenv (color engine) (#54)

Fixed

  • Address bugs in nolint parsing, unicode alignment, and flag stripping (#50)
  • (cga) Inspect padding shares the removed yellow, not flat white (#59)

Documentation

  • Clarify fieldalignment can diff but structalign is human-readable (#45)

0.6.0 - 2026-05-26

Added

  • Add -summary flag for diff-mode summary line
  • -sort orders diff findings by bytes saved (#36)
  • Extend -sort to order inspect layouts by struct size (#37)
  • -threshold filters diff findings by bytes saved (#38)
  • Respect //nolint directives (diff mode) (#39)

Changed

  • Update README.md
  • (enum) Add enumeration colorize and ensure diffstyle implement pflag.Value
  • Wire the new enumeration type colorize and use pflag.Value interface to extract the allowed values
  • (app) Collect findings/layouts then render

Fixed

  • (changelog) Pin git-cliff remote so compare links resolve
  • Address analysis and discovery bugs (#42)
  • Address UI and CLI bugs (#41)
  • Legible CGA palette and 'total' in summary line (#44)

Documentation

  • Repair broken compare links in CHANGELOG
  • Update readme and agents
  • Document inspecting stdlib, dependency, and arbitrary library types
  • Update AGENTS.md for v0.6.0 features

0.5.2 - 2026-05-25

Changed

  • Revert "fix: refine representativeType logic for generics"

Fixed

  • Refine representativeType logic for generics
  • Refine representativeType logic for generics

Documentation

  • Add missing flags to AGENTS.md

0.5.1 - 2026-05-25

Added

  • (ui) Honor the NO_COLOR environment variable

0.5.0 - 2026-05-25

Added

  • (layout) Inspect generic structs with a representative type + disclaimer
  • (layout) Keep generic fields source-faithful with per-field assume marker
  • (app) Nudge -fix users toward fieldalignment (easter egg)

Fixed

  • (app) Report the module version for go install builds

Documentation

  • Use task (not make) in command examples

0.4.0 - 2026-05-25

Added

  • (common) Add Options and Finding size fields; Aligner/Inspector take Options
  • (structfilter) Detect generated files and cache-line padding
  • (align) Skip generated/cache-padded structs; capture sizes
  • (layout) Skip generated/cache-padded structs
  • (loader) Add -tests support (load _test.go files)
  • (app) Wire -generated/-tests/-skip-cache-padded and -exclude package filter
  • (ui) Show "type struct {" and the size-reduction percentage

Changed

  • Move main to the module root

Documentation

  • Regenerate diff.png for v0.4.0 output
  • Normalize badges, add .github templates and AGENTS.md
  • Refresh README/AGENTS for v0.4.0; render generic type params in the diff

0.3.0 - 2026-05-25

Added

  • (common) Add public contracts (domain types + interfaces)
  • (sizes) Add common.Sizes adapter over go/types
  • (match) Extract pattern parsing and glob matching
  • (loader) Common.Loader over go/packages (Target mapping)
  • (textdiff) Extract line diff over go-udiff
  • (align) Common.Aligner producing findings as data
  • (layout) Common.Inspector computing struct layouts as data
  • (ui) Printer rendering + term helpers with golden tests

Changed

  • Update README.md
  • (common) Generate DiffStyle as a uint8 enum via enumer
  • Update README.md
  • Update README.md
  • Keep readSource verbatim; back testutil with a real on-disk file
  • Wire app package; reduce main.go to an entrypoint

Documentation

  • Describe the v0.3.0 package layout and Task workflow

0.2.0 - 2026-05-24

Added

  • Support Go package patterns via go/packages (closes #5)

0.1.0 - 2026-05-24

Added

  • Initial commit: structalign CLI
  • Add MIT license
  • Add CI workflow: gofmt, vet, build, smoke test
  • Add Tagged struct for -tags documentation
  • Add Makefile and lower Go floor to 1.25
  • Add GoReleaser-based releases and -version flag

Changed

  • Bind flags to a config struct; fix -width and -verbose help
  • Modernize to Go 1.25 idioms

Fixed

  • Make screenshot target tolerate diff-mode exit code
  • Skip generic types in -inspect mode

Documentation

  • Rework README for a consumer-facing tool
  • Add colored diff screenshot to README
  • Add latest-release badge
  • Add CONTRIBUTING.md with dev workflow and release steps
  • Add SECURITY.md and CODE_OF_CONDUCT.md
  • (_example) Add Generic, FuncField, and MutexLast sample types
  • Focus the README screenshot on the Record type
  • Document file/dir args instead of unsupported ./... (#5)