0.20.0 (2026-11-12)
- Use compatible bitbucket-cli native HTTPS Git authentication for manifest initialization, cloning, fetch and remote-head reads. SSH declarations and stored remotes are preserved; fx never handles token values. Missing or older companions retain ordinary Git, while rejected credentials remain failures.
- Update the companion catalog to bitbucket-cli 0.30.0 and wecom-channel-cli 0.4.0.
0.19.0 (2026-11-12)
- Read pinned version declarations and first-parent field history with
repo version, including nested packages and an optional historical baseline. Release checks can include the same evidence without treating a source change as publication. - Add absolute, timezone-qualified error windows and paginated Sentry issue metadata. Keep lifetime first-seen, window activity, current status and count scope distinct; report partial collection and detail failures explicitly.
- Add
evidence_completeand per-repository facet coverage without changing release check verdicts or exit-zero reporting.repo showadds scoped responsibility evidence with date-filtered relationships from the current members document, without choosing an assignee.
0.18.1 (2026-11-12)
- Separate confirmed release failures from incomplete checks, group repeated unavailable causes with recovery, and preserve structured query errors. Missing Sentry projects no longer trigger organization-wide queries or misleading release failures.
0.18.0 (2026-11-12)
- Bind readiness evidence, provider commands, handoffs and probes to the same executable and workspace, including custom binary names.
- Scope tool diagnosis and repair before setup expansion; distinguish startup prerequisites from credential handoffs.
- Support manual personal-token acquisition for Sentry instances without device OAuth while preserving existing authentication.
- Add member selector discovery and workspace-preserving query corrections, with updated companion guidance and regression coverage.
0.17.0 (2026-11-10)
- Declare personal mentors and leaders on
people; member list/show expose explicit IDs or null, and validation rejects invalid references and cycles.
0.16.1 (2026-11-10)
- Align npm companion minimum versions with the current published family and upstream releases, including
wecom-chat-cliv0.3.0 and officialwecom-cliv1.3.4. - Document Chat 0.2.x watch-output and cursor migration; keep fx readiness scoped to the worker task and Skills managed by the host.
0.16.0 (2026-11-10)
Require
wecom-channel-cliv0.3.0+ for mandatory self-bot observation filtering and use its canonicaldoctorreadiness command. Keepwecom-chat-cliat its latest published v0.2.0 floor, with task-scoped readiness and host-managed Skills.Add
wecom-chat-cliv0.2.0+ to the tool catalog and as animprovider for isolated workers. Readiness checks only the current task, keeps chat text out of reports, and never issues grants or approves replies. Its packaged Skill remains host-managed.Query directory memberships, personal functions and business collaboration separately with members schema 2. Scoped member lookups return the matching relationships, validity dates and sources. Schema 1 remains readable.
0.15.0 (2026-11-02)
Added
- Bind the workspace capability
channeltowecom-channel-clito install the CLI and its Skill. Readiness checks the local broker through the agent socket.
Fixed
- Keep local files that a sync update would replace. When upstream starts tracking a
path that a checkout holds as an ignored file, such as a local
.env,fx syncfast-forwarded over it and replaced its contents. It now leaves that checkout as it is and skips it with outcomelocal_files_in_the_way, lists the files infiles_in_the_wayand holds readiness until they are moved aside. An untracked file in the same position, which Git already refused to replace, is reported the same way instead of as a failedGIT_FAST_FORWARD_FAILEDrow. The manifest checkout is kept the same way.
0.14.0 (2026-10-28)
Added
- Refresh Skills when tools change.
fx tool installandfx tool updatehave each tool they installed or updated install its Skill again for your coding agents, so the agents read the instructions of the version now on PATH; each row gainsskill.fx self updateends by having the newly installed fx refresh the copies of its own Skill that are older than it, reported asskill_refresh, and the newfx skill updatedoes that on its own: it refreshes only recognized copies older than the running fx, in every agent's directory, and installs none. Keeping everything current isfx self update --yesandfx tool update --all.
Changed
- Update only installed tools with
fx tool update --all. Outside a workspace it used to take the whole catalog and install every tool not yet there; inside one it installed the workspace's missing tools. It now leaves those tofx tool install --all, and inside a workspace aTOOLS_NOT_INSTALLEDnotice names them. TheFX_OUTDATEDnotice no longer suggestsfx skill install.
Fixed
- Prefer the root
VERSIONfile over dependency metadata infx release check, so services with a separate release version no longer show a missing or package-only version. Dependency checks continue to inspect the dependency file.
0.13.0 (2026-10-27)
Added
- Set up companion tools without a manifest.
fx initwith no directory and no source lists the tools in fx's catalog and asks which to set up, by number or name, with Enter taking all of them;fx init --tools <name,...>or--tools allnames them for agents and scripts, and--dry-runpreviews. fx installs the tools that are missing, has each one install its Skill for your coding agents, adds its ownfx-workspaceSkill, and checks whether each one is signed in. On a terminal it offers to start the setup of a tool that is not signed in (<tool> config init,gh auth login), which asks for the service and your credentials; otherwise, and with--yes, the report hands that command to you. No workspace is registered, and a manifest still decides the tools and presets the services they point at. The JSON report hastools,tool_installandskills, andpreparation.scope.workspaceisnull. - Let a tool's
authin the catalog or a manifest name the JSON field its status must report (json) and the tool's own interactive setup (login). The bundled catalog names both for the family CLIs andloginforgh, andfx tool showreports them.
Changed
- Tell a companion's reuse check in a background hook run how long the run can give
it, through the companion's own
--timeout, and leave the check unasked when that is under the ten seconds by which a companion bounds the lookups a reuse adds. The check used to be ended when the run's time for it ran out. The reuse step'sverifyinfx login --listand the init preview gainsdeadline, with the flag and the least time the check needs (minimumMs). - Record
LOGIN_UNCHECKEDin place ofLOGIN_REQUIREDwhen every login check of a background hook run that did not pass was not asked or gave no answer, whichfx doctorreports as incomplete coverage, as when the run ran out of time for it.
Fixed
- Count a Jenkins or OpenObserve environment as signed in only when
jenkins-cli auth statusoropenobserve-cli auth statusreportsauthenticated: true. Both exit zero when nobody is signed in, so on a machine without credentials the sign-in step counted as done andfx initandfx syncdid not ask for it. - Leave the declared authentication method out of the OpenObserve and Prometheus
commands
fx whereprints and probes, as checks have done since 0.9.1. A probe of an OpenObserve context that uses basic authentication was sent with--auth-scheme sessionand refused; the commands now name only the server's URL and organization besides the context.
0.12.0 (2026-10-19)
Added
- Open pull requests on GitHub.
fx source pushworks with a manifest source hosted on GitHub as it does with Bitbucket: it pushes the selected files to your verified personal fork throughghand opens, reuses or retires the pull request against its upstream, and--praccepts a pull request number or its page on GitHub. - Recognize checkouts cloned from github.com over HTTPS or SSH in
fx import, which binds thegithubcode host with the matching clone prefix as its host. A GitHub Enterprise server is still not guessed from a remote. - Add
wecom-calendar-cli, a local, searchable mirror of your own WeCom calendars with their history, to the tool catalog and as acalendarprovider.fx canchecks each member's sign-in and hands agentswecom-calendar-cli event list; filling the mirror withwecom-calendar-cli syncstays the member's call.
Changed
- Judge a CI build by the commit it checked out when the platform names it.
fx release checkpasses a successful build of the branch head and fails one of another commit, instead of comparing when the build started with when the head was written. GitHub Actions names the commit, and Jenkins does with jenkins-cli 0.12.0 or later; without it the times still decide. CI evidence gainscommit. - Let a
github-actionsci environment leave outbranch.fx release checkthen counts the runs of the branch it is checking on each side. - Keep MCP, rules and hook rows that report
untrusted,missing_variables,invalidorbusyin the summary of aninit,syncordoctorJSON report. They were counted underomitted, while aforeignorconflictrow of the same stage was shown. - Report
TOOL_MISSINGfrom a companion query,sentryorgitonly when the executable could not be started. One that started and exited 127 itself now reads as the failed query or Git operation it is, in place of a request to install a tool that is already there. - Say
"<id>" is not an agent fx knowsfor an unknown--agentoffx can mcp:<name>, asfx agent pickandfx skill installdo.fx release checkreports an unknown repository in the words of the other repository commands, lists the known names when none is close, and keeps the workspace in its next step. - Quote a directory, tool or repository name that needs it in the command an error
suggests: the imported directory of
IMPORT_INSIDE_ROOT, the tools of a withheld installation or a missing companion Skill tool, and the repository ofPROBE_RECORD_INPUT_REQUIRED. A path with a space can be pasted as printed. - Quote for the configured
command_shellthe commands that follow a workspacerelocateorrebind, a registrationfx initcannot take or resume, a profile import or source contribution whose workspace changed, a probe that could not be recorded, a manifest import aimed inside the directory it describes, and a--workspacethat names nothing registered. These were printed in POSIX quoting whatever the setting. - Run git in the C locale when reading a manifest repository or a
local-gitcode host, as repository synchronization does. Under another locale a file missing from a branch was reported as a failed query, because git's translated message went unrecognised. A git that cannot be started there is nowTOOL_MISSING. - Close
fx syncandfx initwith one line per stage before the verdict: the repositories updated, already current, skipped and failed, by name; what the manifest refresh did; and the counts other stages report. In a terminal each success is counted on the status line instead of printed, and so is theSYNC_PARTIALnotice the closing view repeats;--verboseprints them, and a pipe or JSON still receives every record. The status line printed under a Git call no longer repeats itself while other lines keep coming. - Group sync and init blockers by what resolves them: a sign-in or credentials,
access refused, or a server this machine cannot reach, which now gets the command
that checks it again instead of
fx login; a Prometheus server that does not answer counts as unreachable. A check that waited on another blocker, directly or through a third, is named under it instead of counted apart, a companion's error code follows its message, and a preparation step whose companion says a retry will not help shows the companion's own advice instead of suggestingfx doctor --fix. Preparation checks gaincauseandwaits_on. - Run the bundled step that reuses an existing login in
fx loginwithout asking and off the terminal, as init and sync do, also with--no-input. Its failure keeps the companion's message and code instead ofexit 3, a terminal shows the companion's advice in aLOGIN_STEP_FAILEDnotice, and the companion's JSON no longer lands on the terminal; fx asks only before a sign-in. - Show only non-zero counts and no empty
problemsunder the humanfx logintable, and leave theLOGIN_SUMMARYnotice that repeats them to JSON and pipes. A passing check says what it established, such asauthenticated is true, instead of repeating its command.
Fixed
- Refuse a recorded harness or contribution path that has a
.gitsegment in any letter case or a delete character. Harness ownership metadata accepted.GIT/..., which a case-insensitive volume resolves into a repository's own directory; both stores now hold a recorded path to the rulefx source pushapplies to a selection. - Report
bundled_toolsinfx self infoas a path the file system accepts when fx is installed under a directory whose name has a space or a non-ASCII character, or on Windows. The value was a percent-encoded URL path there. - Leave a registration that records no manifest source as it is when
fx init --resumecontinues it. Resuming wrotesource: "-"intoconfig.yaml:fx syncthen took the workspace for one prepared from stdin and stopped saying that it has no source to refresh, andfx init <dir> --from <source>refused the directory withSOURCE_MISMATCHin place of recording the source. - Skip a repository whose upstream is still empty, such as one registered with
fx repo addbefore its first push, instead of failing the whole sync. fx asks the remote before calling a branch absent: an empty upstream is a skip with outcomeempty_remotethat does not hold readiness back, while an upstream with other branches but not the tracked one is a skip with outcomeno_remote_branchthat still does, since the manifest may name the wrong branch. An unborn local branch fast-forwards once upstream has commits, and a manifest checkout in either state is left as it is. - Bring earlier environments up to date as soon as
fx loginsigns in to one. The tool's earlier steps that failed are checked again and those that waited on a step now passing are attempted, so environments sharing a stored login no longer stay failed or blocked in the summary. No setup action runs a second time; a check that still fails keeps its result and says what it found underrecheck. - Say what became of the manifest checkout in its sync row instead of always "refreshed": refreshed, already current, or kept with the reason, adding when the commits of the branch it was kept on are already upstream.
- Read the reason a failing check prints inside a JSON object after a prefix, such
as kubectl's
Error from server (Forbidden): {…}, instead of quoting the object.
0.11.0 (2026-10-12)
Added
- Keep a
go.workat the workspace root when the manifest setsgo.workspace: true.fx initandfx synclist every selected checkout that has ago.modat the newestgoversion they require, so each module builds against its siblings' checkouts. A repository not cloned yet is left out, fx replaces or removes only thego.workit wrote, andfx sync --only gorefreshes it alone.go.workandgo.work.sumno longer count as stray root entries in such a workspace. - Bind a workspace to GitHub. The
githubcode-host provider and thegithub-actionsci provider both drive the GitHub CLIgh, which joins the tool catalog with one sign-in per host for both.fx release checkreads branches, commits, files and the last workflow run of a branch from GitHub just as it does from Bitbucket and Jenkins; a ci environment can narrow the runs it counts to one branch and one trigger. Opening pull requests through fx is not available on GitHub yet.
Changed
- Rename
fx releasetofx release check, so the name says it checks a release rather than making one.fx releasekeeps working as a compatibility name. - Say what each release would ship.
fx release checkopens each repository with the version its target branch declares, the head commits of both branches and how many commits on the source branch are not merged into the target yet, by how many people; repositories whose checks all passed close the output one line each with the same. JSON reports gainrepos[]with these facts, summaries included; every existing field is unchanged. - Name the commit a CI build is judged against, say "not merged into main" and "not
merged back into dev" in the merge check, and use each platform's own name for the
job or project in CI and error messages. CI evidence gains
head. - Show a repository's
release.notein the release report, as the manifest schema describes.
Fixed
- Resolve every relative link in the source AGENTS.md that names a file of the
manifest source, such as
CONTRIBUTING.md, in the guide derived at the workspace root. Only links intoREADME.md,docs/andskills/resolved before, so the others pointed at files the root does not have. - Stop
fx manifest lintfrom asking for a code-host provider when every repository names itsupstream, since such a workspace reaches no code host. - Pass every argument intact to a companion that Windows starts through a batch
file (
.cmd, as npm, Scoop and Chocolatey install them). cmd.exe no longer interprets characters such as&,|,%or^in an argument. - Read a local Git remote given as a Windows path, such as
C:\host\fx\api.git, as project and name, so import, adoption, forks andfx source pushwork with it. Manifest documents are named with forward slashes in stdin bundles and source contributions on every platform, and import writes repository paths with them. - Stop the PowerShell hook from writing task results into the agent's context, passing fx its input with a byte order mark, and writing progress records to stderr.
- Link source files with forward slashes in guides derived on Windows, and report
the bundled tools catalog in
fx self infoas a file path, also when the install path contains spaces.
0.10.1 (2026-10-12)
Added
- Publish the public
@angelmsger/fxpackage to npmjs and attach its tarball to a GitHub Release for each version tag. The internal@fx/devkitchannel is unchanged.
Changed
- Group the human output of
fx releaseby repository. Each repository with a failing or warning check gets its own block listing all of its checks, a problem every repository shares, such as a tool nobody has signed in to, is stated once above them with the command that resolves it, and the repositories whose checks all passed share one closing line.--detailslists their checks too. JSON and NDJSON output are unchanged.
0.10.0 (2026-10-10)
Added
- List what a workspace can be asked about with
fx canand no target: one row per capability a manifest binds, and per platform instance for an environment-scoped one, with its scope, provider, companion tool and what it is for. A capability nothing is bound to keeps its row without a provider. The list reads bindings only; asking about one capability still checks readiness.
Changed
- Say what a failed readiness check answered. Each pending step in a
can,where,doctororloginhandoff now carriescheck: what the tool said, or the step this one waits on. Where fx can read the failure it also names the cause, and the step's instructions then say what resolves it. - Tell a cluster that did not establish authentication from one that answered no and from one that could not be reached. A request the cluster took for nobody's now leads to a step about the kubeconfig and its sign-in, with the page an updated kubeconfig comes from, rather than a request to the cluster's owner for a role.
- Check that a kubeconfig names its declared context without contacting the cluster, and give each request of the cluster access check five seconds.
- Answer
unknownfromcanandwherewhen a check gives no answer, because its tool did not start or it outlived its deadline, and list it underunfinished.whereno longer fails for every platform of a repository because one of them did not answer.doctorandloginreport a tool that did not start as a missing tool in place of handing its step to a person. - Give
<env> declares no <platform> platformas the reason an environment does not cover a platform. The environment's note, which may be about another platform, is no longer that reason. - Stop asking which environments a person uses during
fx login. The personal environment selection is set withfx env selectalone: until it is, every declared environment is in scope, and a login that names none with--envsays so and how to narrow it. The question was asked even when--envnamed the environments, came back on every login for a person who answered "all", and narrowed whatfx doctorandfx synccover for one who answered with only the environment at hand. - Leave the capabilities fx wires itself out of what an unknown
fx cantarget is offered, and point its next steps atfx canandfx tool list.
0.9.1 (2026-10-09)
Changed
- Show one row for checks that say the same thing and are resolved by the same
commands in the human view of an incomplete
init,syncordoctor, and mark a check that could not run apart from one that failed. - Stop handing a sign-in to a check that could not finish. A timed-out companion check now only asks to be checked again.
- Quote why a bundled companion says it is not ready, in place of
expected authenticated to be true:OpenObserve returned HTTP 401, for example, or a failed request to a server that takes no sign-in. - Offer
fx doctor --fixfor Skill copies fx can bring up to date itself. - Accept a companion context that reaches the declared service however its owner
signed in. A
servicedeclaration'sauth_schemenow only shapes a context fx creates and the sign-infx loginoffers; preparation, checks and queries hold a context to the declared URL, flavor and organization and no longer pass--auth-scheme. An existing context that lacks one of those fields gains it without the declared method being named, which used to conflict with a context that signs in another way. - Associate a login a person already has on every explicit
fx sync, not only duringfx init. Sync now applies local prepare-phase setup steps the way init does, so an adoptable login no longer waits for someone to runfx doctor --fix; personal sign-in still stays with the person, and background hooks only check. - Say what an unmet companion check means where fx knows it. A login that
fx doctor --fixcan associate readsan existing login can be reused, and the three WeCom checks, now all judged by the response's error code, readthe WeCom API returned an error.
0.9.0 (2026-10-09)
Changed
- Derive
AGENTS.mdalone into the workspace root. fx no longer writes aCLAUDE.mdpointing at it, andfx manifest renderno longer creates one in the manifest repository: Claude Code 2.1.277 and later readsAGENTS.mdby itself, and reads aCLAUDE.mdin its place whenever one exists.fx syncremoves the pointer an earlier version derived;fx doctorreports the guide as stale until it has. ACLAUDE.mdyou wrote stays where it is and no longer counts as a guide conflict; start it with@AGENTS.mdso Claude Code still reads the guide. Delete the pointer from a manifest repository that still carries it. - Leave
CLAUDE.mdout of the manifest source payload. A directory source's copy is no longer materialized, and a stdin bundle that names it is rejected withMANIFEST_SOURCE_INVALID. - Show that a command is still working. After half a second a terminal gets one
status line that is redrawn in place: the time elapsed, how far counted work has
come and what has been under way the longest, such as
doctor 23s checks 69/82 kubectl.access@dev 3s. Every command has it, because each external call fx waits on is reported where it is started;doctor,sync,init,status,releaseandloginalso count their checks, repositories and steps. Results, notices and outcomes are written above the line, a question or a sign-in command takes the terminal over until it is done, and the line is gone when the command ends or is interrupted. While git or an installer runs, which may ask for a host key or a passphrase on the same terminal, nothing is redrawn under it and the line is printed every five seconds instead. On a terminal that shows the line, the per-itemstartlines and the repository heartbeat are no longer printed, since the line says the same. A pipe, a file, CI,TERM=dumb,--quietand JSON or NDJSON output never receive the line and read exactly what they did.
0.8.0 (2026-10-09)
Changed
- Run the commands fx defines for bundled tools without asking for trust,
including the service preparation, login reuse and credential checks that a
manifest
servicedeclaration fills in. Only command vectors the team'stools.yamlpatch authors still require confirmation; a companion decides where its stored credentials may be sent. - Rework the human view of an incomplete
init,syncordoctor: each blocker appears under its check id, sign-in commands are joined per tool across environments, commands are spelledfxwhen PATH resolves it, and a terminal no longer receives thePREPARATION_INCOMPLETEenvelope after the view. JSON output is unchanged. - Report companion Skill installation progress once per tool instead of once per agent directory.
- Approve a team-authored companion Skill command once. The agent name or directory fx appends no longer makes each target a separate vector to confirm, and existing approvals stay valid.
- Say why a companion check failed in the tool's own words: read the message of an
error object it printed, set log records and warnings aside, keep the line that
follows where it failed, and state the expected value of a JSON check, as in
expected authenticated to be true. - Make human output readable on a terminal. Headings, state words and zero counts
are told apart by colour, check lists and progress carry status symbols, commands
to type stand out, tables fit the terminal width, a blocker's long reason wraps
under its own column, and an error prints as text with its hint, next steps and
hand-off instead of a JSON envelope. Only a terminal is decorated, each stream on
its own: whatever the environment says, a pipe, a file and CI receive plain text
and the JSON error envelope, and JSON and NDJSON output is unchanged.
NO_COLORremoves the colour and keeps the symbols. - Align human tables by terminal columns so rows holding CJK text line up, set a list's trailer apart with a blank line, drop trailing spaces after absent values, and print a list inside a record one field per line once an item runs long, leaving out empty fields.
Fixed
- Root help on a terminal titles the everyday commands
EVERYDAYagain, and theFIRST WORKSPACE,AGENT USAGEandCOMPATIBILITYheadings are emphasised like the others.
0.7.1 (2026-10-09)
Added
- Return
next_stepsfromfx repo showthat select and synchronize a shared repository not on disk yet, and say in the generated repository index that the catalog includes such repositories. - Print each personal sign-in command once in human preparation output, followed by the command that continues afterwards.
Changed
- Synchronize repositories without a code-host username, and without the notice about one, when the manifest uses explicit Git URLs and binds no code host.
- Install the bundled Sentry tool with npm (
sentry).
0.7.0 (2026-10-08)
Added
- Name
.workbench/as the place for output that belongs to no repository. The derived guide gains aworkspace-layoutregion with its rules,fx doctorreports root entries that nothing accounts for in arootgroup,fx statusreturns them asstray_entries, and the session-start context carries the latest observation. fx never writes inside the workbench.
0.6.0 (2026-10-08)
Added
- Implement
metricswith aprometheus-cliprovider and add the companion to the bundled catalog. A service's coordinate is its scrape job;whereprints anup{job="..."}query pinned to the declared server and offers no probe, because a selector that matches nothing still succeeds. - Accept
auth_scheme: noneandbearerin a service declaration. A server declared without sign-in is ready when it answers and is never handed a login. - Add the workspace capability
meetingfor the conferencing system that holds online meetings, recordings and minutes, with atencent-meetingprovider driven bytmeet, now in the bundled catalog.calendarkeeps schedules and availability.
0.5.0 (2026-09-24)
Added
- Reuse verified native companion logins in canonical team contexts before requiring personal authentication; retain native setup errors and verification details. Updated family CLI release floors require their auth reuse command.
0.4.0 (2026-09-21)
- Remove the self-reported Skill-loaded handshake and its notice setting; keep explicit installation/version discovery and unverified host activation.
- Prepare authorized local setup through init, hand off personal authentication together, and resume without repeating completed work.
- Replace preparation booleans with a scoped verdict and executable recovery actions; incomplete preparation exits 12, optional activation stays separate.
- Reject invalid declarations before workspace effects and complete generated guides without changing shared sources. Tools schema 3 requires run phases prepare/authenticate.
- Reuse npm scope/default registries and native authentication for self-update and version checks; make FX_REGISTRY optional and preserve public dependency routing.
0.3.0 (2026-09-20)
Preserve login partial results, summaries and structured recovery information after handoffs or exceptions, including on nonzero exit.
Protect manifest and guide edits from stale plans; move approved originals to backups atomically and retain per-file outcomes after document failures.
State overall initialization/sync preparation clearly and stop interpreting descriptive metadata as failure states.
Keep self-update installer output out of JSON stdout; clarify recovery and the difference between source documentation and published features.
Add the
calendar,task,worklogandmetricscapabilities, with Lark and WeCom providers for the first two and a Jira provider for worklogs;metricsis named but unimplemented, so a manifest can describe it and binding it awaits a provider.imnow means messaging alone.Add a Jira issue tracker and a Lark wiki knowledge base, so those capabilities each have a second implementation; one companion CLI serving several capabilities is installed and checked once.
Derive a workspace's toolchain from the providers it binds, so a bundled tool no longer has to be named twice;
tool listsays whether a binding or the manifest put each tool there, and--catalogshows the rest.Let a capability bind a provider fx does not implement when the manifest declares a tool of that name, and correct an id that only resembles a bundled tool's name instead of obeying it.
Accept
install_on_initin a tools document'sdefaultsblock, which an entry can still override.Report a bound provider whose companion tool no tools document declares as
TOOL_UNDECLARED, instead of claiming the capability has no provider.Check a platform's
serviceblock against the provider its name implies, so a valid declaration is no longer rejected and an invalid one is no longer skipped.Record the background phases a session-start run commits to, so phases a terminated worker never reached read as
HOOK_PHASE_UNREPORTEDinstead of disappearing.Keep a background session-start run going when one companion command exhausts its budget, so every later phase still reports; a foreground run a host waits on still ends there.
Record how a detached background run ended as the workspace's
runobservation, which its supervisor could previously write only to a stream nobody reads.Preserve explicit report fields in all output formats, workspace scope in recovery commands, and source identity through contribution locking.
Import verified local Git coordinates, safely add matching upstream remotes to existing clones, and align preparation with enabled/required tool declarations.
Accept all declared setup verification forms and preserve nullable comparison values through manifest overlays.
Compatibility:
fx skill showreports a missing bundled Skill asBUNDLED_SKILL_MISSING;SKILL_MISSINGnow names only the agent-facing notice.Add global workspace discovery, health, unregister, relocation and source rebinding while preserving business checkouts and preventing duplicate directory identities.
Add repo/env select with explicit, dynamic-all and empty scopes, first-init repository selection and inspected local-source previews.
Fix untracked work omitted from status filters, required manifests incorrectly passing validation, and stale readability caches blocking recovered repositories.
Scope default doctor tool checks to declared tools and active provider requirements; retain explicit tool inspection.
Compatibility: init registered now means actual registration state; intended effects are in plan. Profile import merges registrations by name and retains unmentioned workspaces; use workspace unregister for removal.
0.2.1 (2026-09-18)
- Shorten the repository entry and bundled Skill; keep detailed recovery in the command reference.
- Align report, readiness, Skill-loading and service-version guidance with current behavior across all four languages.
- Correct website release labels and preview examples, and document scoped Registry routing for public dependencies.
0.2.0 (2026-09-17)
Breaking:
init,sync,doctorandreleaseJSON defaults to summaries. Use--detailsfor all rows and evidence;--fieldsstill projects full results.Preserve explicit empty agent selections across CLI, hooks and cleanup.
Add advisory
FX_SKILL_VERSIONverification andbundled_skill_versiondiscovery.Add
operation/preparation_completeandSKILL_WRITE_DENIEDrecovery while preserving shared locks.Distribute public service presets during init and explicit sync, with scoped personal login and native conflict recovery.
Reject personal credentials in shared service declarations and preserve existing companion configuration.
Add standalone companion Skill install, uninstall, path, status and show commands.
Generate team Skill discovery links and trigger descriptions in workspace guides.
Separate explicit Skill refresh from automatic maintenance and protect shared sources.
Track companion installation history and origin across registered workspaces; report unused fx-installed packages without uninstalling them.
Prefer canonical resource commands in help/completion while preserving compatibility aliases.
0.1.2
Available through the internal Registry. Public publication remains on hold.
- Correct explicit input, readiness, Git-source recovery and concurrent configuration updates.
- Preserve partial initialization results, summarize human output and report repository heartbeats.
- Isolate blocked Skill commands, protect shared user copies and document host activation limits.
- Bound optional code-host probes and report preflight progress while preserving cancellation.
- Accept workspace root aliases and retain per-item installation and resource state after interruptions.
0.1.1
Available through the internal Registry. Public publication remains on hold.
Git tags, registry publication and local installation are separate states.
The project is fx-devkit, its binary is fx, and its license is Apache-2.0.
Internal distribution uses @fx/devkit; public distribution uses @angelmsger/fx.
- Opt-in installation of missing companion tools during initialization (
install_on_init, fx ≥0.1.1). - Manifest-driven workspace initialization, synchronization and repository selection.
- Structured configuration, discovery, readiness and release reports.
- Companion tool integration, agent Skills, lifecycle hooks and MCP projections.
- Source contribution planning with trust, ownership and recovery boundaries.
- Native Windows adapters; native execution and host activation remain unverified.