Commit Graph
755 Commits
Author SHA1 Message Date
nocobase[bot] 3be1141a45 chore: release 2026-10-10.4 [skip ci]
current app-template-default version: 1.0.0-beta.61
@nocobase/agent-protocol@0.1.0-beta.3 @nocobase/agent-runner@0.1.0-beta.4 @nocobase/app-template-examples@1.0.0-beta.43 @nocobase/studio-cli@1.0.0-beta.52 @nocobase/studio@1.0.0-beta.52 @nocobase/app-skills@0.1.0-beta.29 @nocobase/app-plugin-agents@0.1.0-beta.5 @nocobase/app-cli@1.0.0-beta.18 @nocobase/app-template-default@1.0.0-beta.61 release-beta/2026-10-10.4 @nocobase/app-cli-client@0.1.0-beta.2 @nocobase/app-plugin-authentication@2.0.0-beta.4
2026-10-10 16:55:49 +00:00
YANG QIA 9d28d617ee fix(agents): check for npm in the install script with an explicit if (#10717)
shellcheck in CI reports SC2015 for `A && B || fail`, which failed the
install script test and stopped the beta release.
2026-10-11 00:45:21 +08:00
YANG QIA d3763a2e2a feat(studio): pack the runner and nb-studio into every build and serve them (#10716)
* feat(studio): pack the runner and nb-studio into every build and serve them

Studio's pnpm build now packs the universal nocobase-runner and nb-studio
packages into dist/runners at the exact versions it records in
served-versions.json, and fails when they differ. Studio serves that
directory by default, after agents.dist.dir and NB_STUDIO_RUNNERS_DIST,
so every deployment serves the runner and CLI it was built with; npm
remains the fallback for a Studio without packages.

The release image workflow no longer builds the packages separately or
uploads them as an artifact, and the Dockerfile drops its runners-dist
stage and rejects a prebuilt dist/ without dist/runners. The published
Studio package now includes ai/, which packing nb-studio needs.

* feat(studio-cli): share Studio's version line

nb-studio was served at Studio's version (1.0.0-beta.51) by earlier Studio
builds, so a CLI versioned 0.0.x would never be offered by `nb-studio update`.
@nocobase/studio-cli now starts at Studio's version and joins it in a fixed
changesets group, so both release as 1.0.0-beta.52 and move together.
2026-10-11 00:43:22 +08:00
YANG QIA 6efbe713ca ci(v3-studio-image): build the public Studio release image in this repository (#10715)
A beta release that publishes @nocobase/studio now calls v3-studio-image.yml,
which builds Studio from the release tag without baked runner packages and
pushes nocobase/studio:<version> and :beta to Docker Hub and Aliyun's public
registry, like the v2 release images, instead of dispatching the internal
image workflow in 2013xile/nocobase-ci. It also keeps the release's universal
runner and nb-studio packages as an artifact. Internal images stay in
nocobase-ci.
2026-10-11 00:14:53 +08:00
Katherine d515c68ed0 fix(templates): inherit nested navigation icon colors (#10711) 2026-10-10 12:12:58 -04:00
YANG QIA 13620d9ffd feat(agents): install the runner and CLI from npm when the application names them (#10714)
Claude-Session: https://claude.ai/code/session_01XFYuunpkqzgMT8C24A4PvY
2026-10-11 00:10:27 +08:00
YANG QIA 61e31dc6b6 ci(v3-release-beta): dispatch the Studio image with the NocoBase App token (#10713)
The dispatch to 2013xile/nocobase-ci now mints a NocoBase App token for that
repository (Actions write), as every other workflow here authenticates,
instead of a separate personal access token. When the App cannot mint it, the
release still warns with the manual command and does not fail.
2026-10-11 00:07:08 +08:00
Charles Wu 4448fa272f docs(studio): document GitHub connection setup and registration blocker (#10712) 2026-10-10 23:51:26 +08:00
chenos 42c5cbcb28 feat(default): include the Mail plugin by default (#10704) 2026-10-10 23:43:31 +08:00
YANG QIA f34dbe4d11 ci(v3): build the Studio release image after a beta release (#10710)
When a beta release publishes @nocobase/studio, dispatch studio-image.yml in
2013xile/nocobase-ci with the release-beta/<batch> tag and release: true, so
the image is built from the released commit and tagged with the Studio
version and beta. The dispatch needs NOCOBASE_CI_DISPATCH_TOKEN and only
warns when it is missing.
2026-10-10 23:37:17 +08:00
YANG QIA 97bd30badb feat(agent-runner): run agents with full access and the runner's real HOME (#10705)
* feat(agent-runner): run agents with full access and the runner's real HOME

The runner no longer sandboxes agents: Codex runs with danger-full-access and every approval accepted, Claude Code with bypassPermissions and no hooks, and the command policy and isolated home are gone.

* feat(agent-runner): drop the push guard

The pre-push hook only stopped mistakes once agents run with full access, so it goes, and an earlier runner's is removed on upgrade; protect default branches on the code host instead.

* test(agent-runner): smoke-test real tools with full access
2026-10-10 23:33:39 +08:00
YANG QIA 40a5679360 feat(agents): name the runner and CLI on npm when no tarball is served (#10707)
agents.dist.npm maps a product to its npm package and exact version. It is
used only when agents.dist.dir has no current version of that product, and
only for callers that opt in: the resolve route with accept=npm answers
{ kind: 'npm', product, version, package, channel }, and the heartbeat
carries npmUpgrade to runners declaring the new `npm` feature. Everyone
else gets today's answers (artifact, or 404 and no update).

The protocol moves to version 8 for the new feature, as its compatibility
rules require for a feature an older server's schema does not list;
nothing of version 7 changed and versions 3 to 7 are still served.

Studio pins the runner (and nb-studio once @nocobase/studio-cli is a
devDependency) to the versions it was built with: an afterServerBuild hook
records them in dist/server/agents/served-versions.json, and development
reads the installed packages, so the runner never becomes a runtime
dependency of a deployment.
2026-10-10 23:26:30 +08:00
YANG QIA 459c33f62c feat(app-cli): build universal CLI and runner packages without a bundled Node (#10706)
`nocobase cli build --universal` packs one platform-independent tarball per
product that runs on the machine's Node.js 24 or newer. The agents plugin
serves it to any target without a tarball of its own and marks the answer
`universal: true`; the install script checks Node before downloading, links
`<prefix>/node` for the user service, and hints at `corepack enable` when pnpm
is missing. Updates to a universal version pin the Node they ran on, so a
runner moving off a Node-bundling package keeps starting under its service.

Claude-Session: https://claude.ai/code/session_01XFYuunpkqzgMT8C24A4PvY
2026-10-10 23:16:27 +08:00
Charles Wu e5708e659c docs: clarify Studio initialization blockers and workarounds (#10708) 2026-10-10 23:09:28 +08:00
chenos 17a183c4e8 fix(auth): respect development public origin and explain rejected logins (#10700) 2026-10-10 23:00:07 +08:00
YANG QIA 425ed30dfb feat(studio-cli): publish nb-studio as its own package (#10703)
@nocobase/studio-cli is nb-studio, NocoBase Studio's command line:
@nocobase/app-cli-client run with Studio's nocobase.cli brand, shipping the
nb-studio-cli Skill under skills/ where the runner looks for a CLI's Skills.
A machine with Node.js 24 can now install it from npm instead of from a
Studio server's standalone tarball.

Studio's nocobase.cli and ai/skills/nb-studio-cli remain what
`nocobase cli build` packs; a script test keeps the package's copies equal
to them.
2026-10-10 22:59:41 +08:00
chenos d54bae62e6 fix(studio): route chat record links with the application base path (#10689) 2026-10-10 22:35:42 +08:00
YANG QIA d3f6672437 fix(studio): move recorded owner notices to the new i18n namespace (#10696)
`202610220010_studio_rename_package` moved Studio's i18n namespace from
`studio` to `@nocobase/studio` in workflow definitions, but the owner
notices those workflows already recorded keep a copy of the message in their
activity details (95 rows in production), which the inbox and an issue's
recent activity translate. A new migration,
202610220020_studio_rename_activity_namespace, rewrites them, and back on
rollback.
2026-10-10 22:33:10 +08:00
chenos 4a11ee5a5a fix(studio): clarify local Coding Agent setup instructions (#10688) 2026-10-10 22:23:08 +08:00
chenos af938d0a9a fix(studio): show unavailable runner hints on the home page (#10687) 2026-10-10 22:21:58 +08:00
chenos 91f53446b2 fix(studio): initialize empty repositories in coding runs (#10682) 2026-10-10 22:16:41 +08:00
PiEgg bd744ad629 fix(ci): cover stacked v3 PRs in site checks (#10702) 2026-10-10 09:52:30 -04:00
PiEgg a9396a8d29 fix(ci): run v3 checks for named stacked PR targets (#10701) 2026-10-10 09:48:04 -04:00
PiEgg adc559ffc4 ci(v3-pro): scope the Pro registry to @nocobase in release workflows
actions/setup-node was given registry-url: PRO_NPM_REGISTRY without a scope, so it wrote registry=<Pro registry> as the default registry for every package. The new Pro registry (pkg-v3.nocobase.com) serves only @nocobase/* and does not proxy npmjs, so the pnpm install in "Freeze the OSS ... snapshot and install" failed: the minimumReleaseAge check fetched metadata for lodash, @ai-sdk/* and every other third-party package from the Pro registry and got 401 for all of them. The old npm.nocobase.ai proxied the whole of npmjs, which hid the misconfiguration.

Set scope: '@nocobase' on the setup-node step in the beta and stable Pro release workflows so only @nocobase resolves through the Pro registry and everything else uses npmjs, and pass PRO_NPM_TOKEN as NODE_AUTH_TOKEN to the install step so @nocobase metadata requests carry the token setup-node references in .npmrc. Publishing and dist-tag steps already pass --registry and NODE_AUTH_TOKEN and are unaffected. The promote workflow configures no registry and is left unchanged.

Add a policy test that keeps the Pro registry scoped and the install step authenticated.
2026-10-10 07:59:30 -04:00
YANG QIA 0cc0327806 feat(studio): import NocoBase Studio into packages/apps (#10666)
NocoBase Studio moves from the private nocobase/studio repository
(archived at e4a18fd) into packages/apps/studio and is published as
@nocobase/studio. The framework submodule, the mirrored workspace file,
the lockfile and the submodule check go away; Studio now resolves the
framework packages and plugins from this workspace.

- packages/apps is a new package category for product applications.
  check-openapi checks Studio, and the database test portability check
  covers it; Studio's tests now take their databases from
  @nocobase/app-testing.
- A new migration, 202610220010_studio_rename_package, moves the
  migration and seed history recorded under the old package name
  `studio` to `@nocobase/studio` and rewrites the i18n namespace of
  workflow definitions copied from the software template. Released
  migrations are unchanged.
- Studio follows the framework changes since its last submodule
  pointer: the workflow plugin and the client's dev and settings route
  surfaces are gone.
- Prepared for publication: internal infrastructure, ticket keys and
  references to the predecessor product are removed, the demo data is
  in English, and tests are no longer published.
2026-10-10 19:53:49 +08:00
PiEgg e99e1a68e8 fix(app-template-default): depend on @nocobase/lifecycle (#10665) 2026-10-10 07:09:34 -04:00
nocobase[bot] ff08778d7e chore: merge release 2026-10-10.3 into v3-develop [skip ci]
current app-template-default version: 1.0.0-beta.60
2026-10-10 10:14:36 +00:00
PiEgg 7cdb5baf06 feat(app-template-default): introduce agent-driven development on the homepage and split template locales (#10661)
* feat(app-template-default): introduce agent-driven development on the homepage and split template locales

The homepage explains that the application is built by asking a coding agent, with a sample request, and lists the built-in capabilities as cards whose dialogs offer editable, copyable prompts. Both templates move their own copy to client/locales/system/, which the application locale files spread before their own groups.

* feat(app-template-default): align homepage accents with the brand theme
2026-10-10 05:56:57 -04:00
nocobase[bot] c0d8655e08 chore: merge release 2026-10-10.2 into v3-develop [skip ci]
current app-template-default version: 1.0.0-beta.59
2026-10-10 09:52:07 +00:00
PiEgg 71d7607458 docs: require incremental migration changes now that packages are published (#10660) 2026-10-10 05:48:17 -04:00
Katherine eea95a7b64 feat(app-template-default): establish NocoBase branded default theme (#10607)
* feat(app-template-default): establish NocoBase branded default theme

* test(app-template-default): exercise settings select interaction

* fix(templates): synchronize branded shared UI sources

* feat(app-template-default): refine brand visuals and theme upgrade guidance

* fix(templates): exclude hub changes from branding update

* feat(app-template-default): add development theme preview lab

* revert: remove local theme preview lab from branding PR

* test(app-plugin-file): include spinner dependencies in registry fixtures

* fix(app-template-default): allow custom dialog layout overrides
2026-10-10 05:22:31 -04:00
Charles Wu 1a1cf30fb8 docs: add Studio onboarding and first project walkthrough (#10659) 2026-10-10 16:36:53 +08:00
Junyi 98e79a5a65 feat(lifecycle): durable examples (#10644)
* docs(lifecycle): add examples and docs

* refactor(workflow): prune workflow

* docs(workflow): prune workflow
2026-10-10 14:50:27 +08:00
gchust 5aae93b824 feat(agents): filter run transcripts and event queries (#10630)
* feat(agents): filter run transcripts and event queries

* fix(ui-library): clarify transcript filter integration

* fix(agents): preserve transcript scrolling and index event filters

* docs(agents): streamline transcript filter integration notes
2026-10-10 14:44:43 +08:00
PiEgg c796cb909b feat(app-client)!: remove settings and dev route surfaces, Hub and AI employee (#10642) 2026-10-10 02:02:13 -04:00
gchust fb7b5764c9 PM-56: Keep workflow save actions visible and warn before leaving unsaved edits (#10614)
* fix(projects): keep workflow save actions visible and guard unsaved edits

* fix(projects): restore workflow navigation and saved state

* fix(app-client): preserve editors during blocked history navigation

* fix(app-client): preserve navigation guards after native hash changes

* fix(app-client): recover navigation after duplicate history indexes

* fix(app-client): restore navigation across history index resets
2026-10-10 13:37:40 +08:00
nocobase[bot] 53e0b28dc7 chore: merge release 2026-10-10.1 into v3-develop [skip ci]
current app-template-default version: 1.0.0-beta.58
2026-10-10 05:03:06 +00:00
YANG QIA d89339eefa fix(agents): align model effort cells and report Claude models (#10640)
* fix(agent-runner): report Claude Code models

Claude Code lists its models and efforts through the Agent SDK's supportedModels(), on a session that is sent no prompt, instead of reporting detection as unsupported.

* fix(agents): match Codex reasoning efforts to current releases

Codex takes low through xhigh, max and ultra, and no longer minimal; max is passed as itself. A saved effort its tool dropped stays until the entry changes.

* fix(agents): keep model effort cells aligned and drop the built-in badge

Reported efforts move to a line under the entry and name only selectable efforts, so the effort select no longer shifts its row. Model suggestions lose the Built-in badge.

* fix(agents): wrap long descriptions in the agents list

The description wraps inside a capped name column, two lines at most with the full text on hover, so other columns keep their widths.

* fix(agents): group the agents list and sort it by shown name

Everyone agents come first, the application's own in the order it added them, then the caller's own, then shared ones, each by translated name. List entries carry owned.

* feat(agent-runner): give agents the runner's Node.js and pnpm

The runner ships pnpm and puts node and pnpm launchers first on each run's PATH, pinned against packageManager switching; config set agent-tools system opts out. Store pruning uses the bundled pnpm.
2026-10-10 12:39:50 +08:00
gchust 3380f9df8f fix(releases): update app operations from runtime state (#10602)
* fix(releases): update app operations from runtime state

* fix(examples): restore decision focus after select updates
2026-10-10 12:12:12 +08:00
gchust 2cb84e0c7f fix(projects): constrain long workflow rule summaries (#10624) 2026-10-10 11:03:53 +08:00
PiEgg eb92050dd3 fix(docs): temporarily hide Ask AI button (#10638) 2026-10-09 21:32:05 -04:00
YANG QIA de5254b7dc feat(agents): suggest models reported by runtimes (#10634)
* fix(agent-protocol): update the coding tools' suggested models

* fix(agent-protocol): suggest Sonnet 5 and Haiku 4.5, the current model ids

* fix(agent-protocol): include current models and qualify Pi suggestions

* feat(agents): suggest models reported by runtimes

* fix(agents): show model suggestions in a wider combobox and drop unpublished models

* fix(agents): expand model suggestions and pluralize runtime counts
2026-10-10 09:24:01 +08:00
YANG QIA 92356022a5 fix(agent-runner): allow scoped Codex skill writes and skip unchanged syncs (#10633)
* fix(agent-runner): let Codex write each working tree's .agents and skip unchanged skills in skills sync

* fix(agent-runner): validate skill roots and preserve submodule paths

* test(mail): wait for the compose action to become available

* test(mail): control time in credential lease renewal coverage

* fix(agent-runner): restrict writable skill roots to canonical directories
2026-10-10 09:23:53 +08:00
Charles Wu 64c0cdb5d7 docs: remove tutorials and deployment from top navigation (#10637) 2026-10-10 09:14:45 +08:00
Charles Wu 049cd58f15 docs: explain mail with complete workflows and screenshots (#10636) 2026-10-10 09:13:39 +08:00
Charles Wu 990021e2c2 docs: explain scheduled tasks with an approval reminder example (#10635) 2026-10-10 08:51:24 +08:00
YANG QIA f94ebc6ae6 feat(agents): pass proxy and CA variables and take variables from the runner (#10620)
* feat(agents): pass proxy and CA variables, let the runner's owner pass and set variables, and take variables from the runner

* fix(runner): detect local provider keys and preserve service variables

* fix(agents): preserve application notice and enqueue types

* test(mail): control lease time while awaiting refresh heartbeats

* chore: redeploy the Studio preview on a fresh database

* fix(agents): drop the RunnerNotice alias and order the runner variables migration after the workspace usage one
2026-10-10 08:18:17 +08:00
YANG QIA 0170880bb2 feat(agent-runner): keep task git metadata in reference clones and clean up finished working directories (#10610)
* fix(agent-runner): keep task git metadata in reference clones

* fix(agent-runner): guard host git from writable checkout configuration

* fix(agent-runner): guard host git from writable checkout configuration

* fix(agent-runner): accept standard submodule configuration on resume

* feat(agents): define the runner workspace report and subject settlement contract

* feat(agent-runner): remove working directories once their work is over or over the size limit

* style(agent-runner): format workspace cleanup sources

* fix(agents): order the workspace usage migration after execution history

* fix(agent-runner): keep workspace records out of the agent's reach and never remove unpushed work

* style(agent-runner): format the workspace record reader

* test(agent-protocol): use a neutral subject key in the workspace fixture

* fix(agent-runner): run pnpm in a runner-owned directory and stop sharing store files through hard links

Also replace the workspace size cap with a min-free-disk threshold read from statfs, so collection no longer walks every node_modules.

* fix(agent-runner): probe whether the work root clones and import with clone or copy

pnpm's clone-or-copy falls back to hard links on file systems that cannot clone, so the runner probes the work root once and picks clone or copy itself.

* fix(agent-runner): default min-free-disk to 5G and remove only settled workspaces on a low disk

Pushed workspaces whose work goes on are no longer removed automatically; the runner warns once per pass and points to gc.
2026-10-10 07:22:06 +08:00
YANG QIA b5c6a64cbb feat(agent-runner): share one pnpm store between runs on a machine (#10632)
* feat(agent-runner): share one pnpm store between runs on a machine

* fix(agent-runner): exclude active claims from store pruning and retry failures
2026-10-10 00:21:13 +08:00
YANG QIA e088465a26 feat(projects): pass the original actor to work handlers and status rules (#10623) 2026-10-10 00:21:05 +08:00