Skip to content

v1.1.0

Choose a tag to compare

@mstgnz mstgnz released this 21 Apr 20:09
· 1 commit to main since this release

Breaking Changes

  • TrimColumnsParallel() now returns (*DataFrame, error) instead of *DataFrame
    to propagate context cancellation errors. Update callers accordingly:
    // Before
    df = df.TrimColumnsParallel()
    // After
    df, err = df.TrimColumnsParallel()

New Features

  • Context support — All parallel operations now accept WithContext(ctx) option.
    Pass context.WithTimeout or context.WithCancel to cancel long-running operations.
    ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
    defer cancel()
    df, err = df.TrimColumnsParallel(cleaner.WithContext(ctx))
  • Graceful shutdown — API server now handles SIGTERM/SIGINT cleanly with a 30s drain window.
  • CI/CD pipeline — GitHub Actions workflow runs tests with race detector, builds binaries, and builds Docker image on every push and pull request.

Bug Fixes

  • CleanDates now correctly tries the user-provided layout as the first input format candidate.
  • FilterOutliersParallel now preserves original row order in the output.
  • JSON/YAML/XML readers now produce deterministic column ordering (sort.Strings).
  • xml.Header write error is now propagated instead of silently ignored.
  • json.NewEncoder().Encode() errors in API handlers are now logged.

Security

  • Fixed path traversal vulnerability in /clean-file API endpoint — file paths are now validated against the working directory.

Infrastructure

  • Docker image now runs as non-root user (appuser), includes HEALTHCHECK, and follows OCI image label conventions.
  • API server now sets ReadTimeout, WriteTimeout, and IdleTimeout to prevent resource exhaustion.

Tests

  • Added 16 API handler tests (cmd/api/main_test.go)
  • Added 11 CLI tests (cmd/cleango/main_test.go)
  • CLI main() refactored into a testable runClean(args []string) error function