Dashboard › cli › Distillation
3e434db1-62d1-4010-99be-0f041d642ed8["lore_tm_v1_ag5kUXzIktVUNLSg1Kjl_wM6Vd0tjTjDLG8OOQLSsik","lore_tm_v1_JaBQgv9gCi1RVHExiBDTOvLOVJQ-7AlTmY1MyIUWbvA"]
tagPrefix (empty by default), previewReleases (default true), tagOnly (default false), and floatingTags (supports {major}, {minor}, and {patch} placeholders); authentication uses GITHUB_TOKEN."v{major}" and "v{major}.{minor}" must always point to the most recent release, allowing users pinned to a major or minor line to receive updates automatically.tagPrefix namespaces independently versioned monorepo products on both write and read paths: created tags, latest-tag detection, changelog bases, and CalVer scans are scoped to the prefix.releaseBranchPrefix: release/cli and tagPrefix: "cli@"; MCP with releaseBranchPrefix: release/mcp and tagPrefix: "mcp@". Releasing version 1.2.3 produces tags cli@1.2.3 and mcp@1.2.3 on branches release/cli/1.2.3 and release/mcp/1.2.3.workspaces: defines independently versioned release units rather than npm package workspaces; keys may be literal paths or glob patterns expanded to concrete directories relative to .craft.yml.--workspace <path> or CRAFT_WORKSPACE.., .., __proto__, or begin with -.github.projectPath within a workspace, and forbids a workflow from supplying both a path and a workspace to keep publish requests unambiguous.craft workspace list prints concrete workspace paths as a JSON array for automation.tagPrefix values in one Craft release unit is ambiguous: Craft uses the first prefix for read-path operations and logs a warning; separate release workspaces should be used for independent products.isLatestRelease compares a release version with the repository’s current latest release without prefix scoping, so the badge can move between products or be withheld due to another product’s version; tags, changelogs, release branches, and version detection remain correctly product-scoped.previewReleases: true (the default), versions containing prerelease identifiers such as alpha, beta, or rc are marked as GitHub prereleases.packages/cli/src/lib/binary.ts defines InstallationMethod as "curl" | "brew" | "npm" | "pnpm" | "bun" | "yarn" | "unknown"; parseInstallationMethod(value) lowercases input and accepts only curl, brew, npm, pnpm, bun, and yarn, otherwise throwing Invalid method: ${value}. Must be one of: ${VALID_METHODS.join(", ")}.packages/cli/src/lib/binary.ts function isMusl() applies two cached Linux-only heuristics in order: 1. test /lib/ld-musl-${muslArch}.so.1, where muslArch is x86_64 for x64 and otherwise aarch64; 2. run ldd --version, concatenate stdout and stderr, and search case-insensitively for "musl". Non-Linux systems and failed/missing ldd resolve to false.getPlatformBinaryName() generates sentry-<os>-<arch>[-musl][.exe]: OS is darwin, windows, or linux; architecture is arm64 or x64; -musl comes from isMusl(); and .exe is added on Windows.resolveUpgradeSource() always gives the caller the full successful probe Response, so the caller never repeats the request.isNightlyVersion(version) identifies nightly builds by checking for "-dev."; documented nightly format is X.Y.Z-dev.<unix-seconds>.packages/cli/src/lib/binary.ts uses Bun.semver.order, including numeric SemVer ordering for the nightly prerelease timestamp in X.Y.Z-dev.<unix-seconds>.