Skip to content

Releases: basefoundry/base

Base v1.2.0

24 Jun 19:23
0553a0e

Choose a tag to compare

Added

  • Added basectl workspace init to clone a workspace repository, read its
    workspace configuration, and clone the repositories declared by that
    workspace.
  • Added basectl prompt list and basectl prompt product-self-review to render
    repo-owned Markdown prompts for periodic AI-assisted Base workflow reviews.
  • Added a local command-history index for Python-backed Base command runs.
  • Added manifest-declared PR policy support for Base-managed GitHub PR helpers.
  • Added project Python version requirements and declarative artifact registry
    support for Base-managed artifacts.

Changed

  • Added ctx.workspace_root to base_cli.Context so workspace-aware commands
    can use the configured workspace root without reaching through user config.
  • Improved basectl repo clone, repo check, repo configure, and
    gh issue create|start diagnostics so repository workflow failures include
    clearer update, chmod, origin, Project-field, and worktree-command guidance.
  • Made basectl repo configure warn when Homebrew reports the local GitHub CLI
    package is outdated, pointing users to basectl setup --profile dev.
  • Made lifecycle command usage errors compact and consistent, returning exit
    code 2 for setup, check, doctor, onboard, and update-profile.
  • Made idempotent basectl setup reconciliation quieter when no action is
    required.
  • Added base_cli.testing.invoke(..., manifest={...}) for project-aware tests
    that need a fixture base_manifest.yaml.
  • Added optional stream and formatter overrides to base_cli.configure_logger
    for tests and CI wrappers that need to capture or reshape user-facing logs.
  • Added base_cli.App(help=...) support for subcommand group help text.
  • Added standard --quiet / -q support to base_cli.App to suppress INFO
    output on the user-facing stream while preserving warnings, errors, and
    persistent DEBUG log detail.
  • Documented the base-bash-libs Homebrew/core readiness path, including the
    formula-name audit command and future basefoundry dependency plan.
  • Documented the basectl setup parallelism evaluation and the decision to
    keep mutating setup serial until a setup-plan/preflight layer exists.
  • Corrected 1.1.0 documentation status, source-checkout base-bash-libs
    prerequisites, future-design banners, and CI bootstrap package guidance.

Fixed

  • Fixed basectl prompt -v <name> so the verbose flag no longer counts as a
    second prompt argument.
  • Added actionable recovery guidance when basectl update-profile detects a
    runtime BASE_HOME mismatch.
  • Fixed workspace reports for uv-managed project virtual environments and
    broken project virtualenv detection.
  • Fixed project --recreate-venv repair and fail-fast runtime directory
    handling for check diagnostics.
  • Allowed standard base_cli.App options such as --debug and
    --environment before subcommand names.
  • Made base_cli.option(..., dry_run=True) reject duplicate dry-run markers on
    the same command function.
  • Made default base_cli.App(max_log_files=...) log retention prune by
    timestamp-prefixed run-id filename instead of filesystem modification time.

Base v1.1.0

21 Jun 21:18
cadb430

Choose a tag to compare

Changed

  • Suppressed pip self-upgrade notices during Base-managed pip installs so
    setup output stays focused on Base actions and real install failures.
  • Made live workflow docs and installer examples main-ready, using default-branch
    URLs for raw GitHub install scripts and main for contributor branch
    examples.
  • Documented the boundary for optional personal shell defaults such as color
    aliases, navigation shortcuts, signing helpers, and strict shell modes.
  • Improved opt-in Bash and Zsh completion ergonomics for interactive shell
    defaults.
  • Added conservative pager and terminal usability behavior to opt-in shell
    defaults.
  • Enriched opt-in shell history defaults for basectl update-profile --defaults.
  • Made Homebrew-managed version: latest profile and project artifacts report
    outdated installed packages during check/doctor and upgrade them during
    setup.
  • Renamed the Base-managed GitHub Project metadata schema from base-roadmap
    to base-project.
  • Made basectl repo configure report missing BASE_PROJECT_TOKEN Project
    intake secrets and improved generated workflow diagnostics when the Actions
    token cannot see repo Projects.
  • Made Homebrew-managed basectl update preflight tap trust before upgrading
    Base when Homebrew requires trust for the tap-owned base-bash-libs
    dependency.
  • Removed Base's bundled reusable Bash std, file, and git libraries;
    Base now requires external base-bash-libs through an explicit override,
    sibling checkout, or Homebrew package.

Fixed

  • Made Homebrew artifact dry-run tests independent of the developer machine's
    installed or outdated Homebrew formulae.

Base v1.0.5

18 Jun 10:29
17b6d86

Choose a tag to compare

Added

  • Added BASE_BASH_LIBS_SOURCE and BASE-D007 diagnostics so basectl check
    and basectl doctor report whether Base is using external reusable Bash
    libraries or the bundled fallback.
  • Added BATS coverage proving Base can bootstrap from external
    base-bash-libs when bundled reusable Bash library directories are absent.

Changed

  • Documented Homebrew tap trust for Base and standalone base-bash-libs
    installs, and updated direct Base upgrade examples to use
    brew upgrade --no-ask codeforester/base/base.

Fixed

  • Fixed Bash library readiness BATS assertions so they pass both with a sibling
    base-bash-libs checkout and with bundled fallback.

Base v1.0.4

18 Jun 01:32
b3c8f27

Choose a tag to compare

Changed

  • Made Base resolve reusable Bash libraries from an external base-bash-libs
    checkout or Homebrew package when available, while keeping the bundled
    lib/bash tree as a fallback.
  • Documented the standalone base-bash-libs install path, Base's consumption
    contract, and the migration gate for eventually removing bundled reusable
    Bash libraries.

Base v1.0.3

17 Jun 17:57
8ea79f8

Choose a tag to compare

Changed

  • Made basectl repo init print visible next steps when GitHub setup is skipped
    because no repository was provided or inferred.
  • Made basectl repo clone print the Base baseline check hint only when the
    cloned repository contains base_manifest.yaml.
  • Made basectl repo agent-guidance detect the target repository default
    branch before falling back to main.
  • Made basectl repo agent-guidance print a visible created/unchanged summary
    when existing guidance files are left untouched.
  • Made basectl repo installer-template write ./install.sh by default and
    added --print/--stdout for the stdout template view.
  • Added dirty-worktree and repository-root fix hints for basectl repo
    subcommands that create pull requests.
  • Clarified basectl repo init and repo configure help to say Base-managed
    GitHub settings are safe to re-run and do not remove outside settings.
  • Made live basectl repo configure runs print a structured action summary for
    repository settings, labels, branch protection, and Project metadata.
  • Made basectl repo check print visible success/failure summaries with counts
    and repair commands when files are missing.
  • Made basectl repo init --pr print next steps after opening a baseline pull
    request, including the command to rerun after merge.
  • Clarified basectl repo init and repo configure help to distinguish local
    baseline updates, optional GitHub repo creation, and GitHub-side repair.
  • Made basectl ci setup --format json include compact output_lines on
    setup failures so CI consumers keep intermediate diagnostic context.
  • Standardized Bash CLI usage errors on print_error and changed unknown
    config, projects, release, and workspace commands to return usage status
    without fatal stack traces.

Base v1.0.2

16 Jun 06:56
0c37067

Choose a tag to compare

Added

  • Added basectl repo clone for workspace-aware cloning of one GitHub
    repository into the configured Base workspace.
  • Added --pr support to basectl repo agent-guidance and
    basectl repo installer-template so optional generated helper files can be
    committed on predictable branches and opened as draft pull requests.
  • Added basectl workspace clone --manifest <path> for manifest-driven
    workspace checkout, with dry-run support and optional repositories gated by
    --include-optional.
  • Added a generated Project intake workflow so Base-managed repos can
    idempotently add externally-created issues to their repo Project and apply
    default Project fields.
  • Added explicit uv-managed Python project support with python.manager: uv,
    delegated uv sync setup, uv diagnostics, and command-level runner: uv
    support for test, run, demo, and build commands.

Changed

  • Changed basectl update to accept an optional project name, so
    basectl update <project> updates that project checkout and then runs
    basectl setup <project>, while omitting the project keeps the existing
    Base update behavior.

Fixed

  • Fixed basectl gh to run the requested GitHub command before using
    gh auth status diagnostics, avoiding false failures when the status probe
    is transiently unavailable.

Base v1.0.1

15 Jun 14:44
c9c20c5

Choose a tag to compare

Added

  • Added Base's own .github/base-project.yml so Base issues get repo Project
    defaults through the same reviewed config file as other Base-managed repos.
  • Added base_cli.ExitCode constants for Base's standard command return
    values.
  • Added cwd support to base_cli.testing.invoke() so tests can run commands
    from an explicit project context without leaking the process working
    directory.
  • Added assert_executable to lib_std.sh for explicit executable path checks.
  • Added a test-local BASE_CACHE_DIR default to base_cli.testing.invoke()
    when home is supplied, with explicit environment overrides still honored.
  • Added run --quiet to suppress expected --no-exit failure warnings in
    probe-style Bash checks.
  • Added ctx.dry_run and base_cli.option(..., dry_run=True) so commands can
    explicitly connect nonstandard preview flags to Base's no-durable-write mode.
  • Added base_cli.App(max_log_files=...) to let high-frequency CLIs prune old
    default log files during startup.
  • Added ctx.user_config so Python commands can read typed user config without
    re-parsing ~/.base.d/config.yaml.
  • Added base_cli.App.subcommand() so one Python CLI can expose multiple
    Base-managed entry points.
  • Added docs/product-assessment.md as a maintained review of Base's
    originality, usefulness, adoption potential, and engineering-skill evidence.

Changed

  • Moved the README license notice out of the opening product summary and made
    the MIT-to-AGPL version boundary explicit.
  • Made basectl repo init generate AGPL-3.0-or-later licenses for new
    repositories.
  • Relicensed Base prospectively from MIT to AGPL-3.0-or-later.
  • Aligned bootstrap and installer candidate-list splitting with the scoped
    IFS=: read -ra Bash pattern.
  • Clarified that basectl activate starts a Bash runtime shell and that
    BASE_ACTIVATE_SHELL must point to Bash.
  • Normalized Base's built-in default, developer, and SRE profile manifest
    names to the same safe project-name syntax enforced for project manifests.
  • Made base_cli log source paths prefer the active project root before
    falling back to the process working directory.

Fixed

  • Made basectl repo init generate repo-specific AGPL license files without
    copying Base's own application notice into new repositories.
  • Made basectl repo configure apply .github/base-project.yml
    issue_defaults to existing repo Project issue items that are missing those
    values.
  • Reported a clear error when BASE_ACTIVATE_SHELL points to a non-Bash shell.
  • Made setup BATS command helpers run with noninteractive stdin so PTY-backed
    test runs exercise recovery guidance consistently.
  • Redacted compound secret-like command-output assignments such as
    GITHUB_TOKEN=..., DB_PASSWORD=..., and
    AWS_SECRET_ACCESS_KEY=... from setup failure summaries and debug logs.
  • Rejected path-unsafe project.name values in base_manifest.yaml before
    they can be used in Base-managed state paths.
  • Removed eval from Bash .baserc guard variable snapshots while preserving
    Bash 4.2 compatibility.
  • Replaced install.sh shell strict mode with explicit installer command
    failure handling.
  • Corrected the git_get_current_branch usage message to name the current
    helper.
  • Avoided subshell timestamp formatting in Bash LOG_UTC logging.
  • Made lib_std.sh yes/no prompts read from the controlling terminal so
    redirected stdin stays available to the caller.
  • Compared lib_std.sh Bash major and minor versions arithmetically so older
    major versions with two-digit minors cannot bypass the Bash 4.2 minimum.
  • Resolved lib_std.sh relative imports without changing directories so
    failing imports cannot leave the caller on the script directory stack.
  • Bounded lib_std.sh log caller stack walking so unusual stdlib-only frame
    chains cannot scan indefinitely while finding a source location.
  • Made Bash lib_std.sh logging honor LOG_UTC=1 so wrapper-driven Bash and
    Python logs use the same timestamp zone.
  • Made lib_std.sh color initialization check stderr when deciding whether
    log colors can be rendered, so redirected stdout does not disable colored
    logs while stderr is still a terminal.
  • Made base_cli.App reject duplicate command registrations instead of
    silently overwriting the first command.
  • Made basectl doctor warn when Homebrew reports installed Xcode Command Line
    Tools are outdated or incomplete.

Base v1.0.0

14 Jun 14:49
5366bf9

Choose a tag to compare

Added

  • Added docs/why-base.md as a concise evaluator page comparing Base with
    adjacent developer-environment tools.
  • Documented Base's uv ecosystem boundary in docs/tool-boundaries.md.
  • Clarified the Homebrew and source checkout install choices for users who
    already have Homebrew, Git, and Bash.
  • Added a one-page command quick reference for the current basectl command
    surface.
  • Added .github/base-project.yml to the standard basectl repo init
    baseline so repo Project taxonomy and issue defaults can move through the
    same review path as other repository files.
  • Added repo Project metadata handoff to basectl gh issue create so new
    issues are added to the repo Project with defaults from
    .github/base-project.yml when the repository is known.

Changed

  • Changed basectl repo help to show command-specific options for each
    subcommand instead of one shared option list.
  • Changed basectl repo init --pr to continue into GitHub-side configuration
    when the generated baseline is already present, while still stopping after
    opening a pull request when file changes are needed.
  • Updated the Homebrew release process to require bottle publishing for
    supported macOS installs before accepting the 1.0 upgrade rehearsal.
  • Removed the stale CLAUDE.md agent guide in favor of the canonical
    AGENTS.md guidance.

Fixed

  • Copied missing GitHub Project item field values into repo-specific Projects
    during basectl repo configure migrations, preserving existing target values.
  • Made assert_not_null reject invalid variable-name arguments without logging
    the raw value, and clarified that callers must pass variable names.
  • Made lib_std.sh dry-run handling treat DRY_RUN and dry_run values of
    true, 1, yes, and on consistently, avoiding accidental live execution.
  • Fixed documentation drift for basectl logs syntax, project virtual
    environment location, and README coverage of the basectl ci command.
  • Made basectl activate prefer a uv project's repo-local .venv when
    pyproject.toml and uv.lock are present, avoiding a misleading
    Base-managed virtual environment in activated shells.

Base v0.4.4

12 Jun 14:06
278bc25

Choose a tag to compare

Added

  • Protected default branches by default during basectl repo configure, with
    --no-protect-default-branch for repositories that intentionally skip the
    Base-managed ruleset.
  • Added Base-managed GitHub Project metadata configuration through
    basectl repo init, basectl repo configure, and the lower-level
    basectl gh project surface.
  • Added diagnostic workflow guidance for preserving failure evidence and
    routing follow-up fixes.

Fixed

  • Changed basectl repo configure to warn instead of fail when GitHub reports
    that default branch rulesets are unavailable for a private repository's plan.
  • Made basectl test base package-aware so Homebrew-installed Base runs the
    packaged Python test layer and skips source-checkout-only BATS tests with
    clear guidance.

Base v0.4.3

11 Jun 16:33
2d88fde

Choose a tag to compare

Added

  • Added opt-in pull request creation for basectl repo init --pr so generated
    repository baselines can move through review before merge.

Changed

  • Changed basectl update to detect Homebrew-managed Base installs, hand off
    only to brew upgrade codeforester/base/base, preserve non-mutating dry-run
    output, and run setup with inherited Base environment variables cleared.

Fixed

  • Fixed basectl repo agent-guidance so it works from a repository directory
    without an explicit path and shows command-specific help.