* chore: move NocoBase Studio back to its private repository
Remove packages/apps/studio and packages/tools/studio-cli, which are now
maintained in nocobase/studio, together with everything in the monorepo
that only existed for them: the fixed changeset group and their pending
and prerelease changeset entries, the Studio release image workflow and
its call from the beta release, the Studio test shards of the release
workflows, the Studio OpenAPI and database-matrix targets, and the
script tests covering the image and the CLI brand.
* docs(app-installer): describe --app with a generic published application
Replace the NocoBase Studio examples in the installer's help, flag
description, usage error and README, and in the deployment Skill, with
a generic scoped package, and use a neutral fixture name in its tests.
* chore: rerun checks on the updated CI
* fix(agents): keep long dialog content and actions within the viewport
* test(studio): isolate dialog and owner handoff browser state
---------
Co-authored-by: 吴昊 <yy_wuhao@163.com>
* perf(projects): read the issue board in a fixed number of queries
Read each column's ids in its order, then every column's rows at once; let the issue list take issueIds; and keep the
board and the trash on Studio's pages current through the app-wide refresh, reading only the rows a change names.
* docs(studio): regenerate the CLI reference for issueIds
* chore(ci): rerun checks
* feat(studio): adopt the default template's theme
Bring Studio's presets, global styles, brand loading and navigation selection to the default template's current theme, keeping Studio's inbox-pending colour, sign-in page and navigation.
* fix(studio): keep badges in controls and dense rows small
Studio's badges take the template's small size, and any badge inside a select, combobox, menu, command item or table cell does too, so the global badge size no longer fills controls.
* test(studio): fit two e2e checks to the template's spacing
The issue page measures its layout's fractional width, and the description edit clicks the editor's text rather than its centre, where an image now sits.
* test(studio): let the rename toast close before the label's row action
The theme's taller rows can put the renamed label under the bottom-right toast, which a resting pointer keeps open.
Leave the lists' follow state to the read after the change so a followed task's placement settles, refetch children
that failed against an older generation, and regenerate the CLI reference.
* fix(studio): settle a pull request merge only once
Finishing an issue withdrew open merge cards and re-resolved merged ones that were already settled when the merge was stored.
* docs(studio): regenerate the CLI reference for the board wait command
* perf(projects): read the issue hierarchy in a fixed number of queries
Tell which issues wait in two queries, match exact filters in memory, hydrate rows with the caller's readable ids,
announce project, parent and executor changes as list moves, and refresh projects only for announcements naming no
issues.
* perf(studio): assemble task groups once per request
Read the hierarchy, waits and follows once and hydrate every row in one read outside a transaction, cache the summary
per viewer for five seconds, read the children of several parents and single rows in one request each, and count
unread follow-ups with one grouped query.
* perf(studio): refresh the task lists once per burst for the whole app
One subscription gathers announcements for 1.5 seconds, reads only the named rows unless the lists' membership moved,
never cancels a read under way and reads nothing while hidden. Task group keys leave the projects plugin's prefix, the
summary and what the viewer follows refresh only for changes that can move them, and the table reads expanded
children in one request.
* perf(studio): stop rereading the issue pane on every revision
Progress, pull requests, marks and the comment-run limit are keyed by the issue alone and refreshed by their
announcements, and the issue page polls its runs quickly only after the viewer commented, handed the issue to an agent
or asked for work.
* perf(agents): list the agent queue in a fixed number of queries
Queued rows carry the claim rules' quick explanation and the exact reason is read when a row is unfolded, the newest
activity of held runs takes two reads, and the queue and issue work marks refresh from coalesced announcements with a
slower fallback poll.
* fix(studio): confirm navigation away from unsaved role edits
* Update packages/apps/studio/docs/e2e.md and 3 other files
Save work in progress when the run is interrupted or ends.
* fix(studio): isolate role navigation tests and await proposal acceptance
* fix(studio): disable isolated test accounts before database teardown
* test(studio): provide navigation guard for role duplication
---------
Co-authored-by: 吴昊 <yy_wuhao@163.com>
* fix(studio): synchronize saved role editor state
* fix(studio): preserve pending role edits during refresh
* test(studio): execute reconnect events in browser context
* test(studio): isolate role save language preferences
---------
Co-authored-by: 吴昊 <yy_wuhao@163.com>
* feat(studio): use CLI and shared skill in agent sessions
* test(studio): use supported response assertions
---------
Co-authored-by: Zhou <1267426+zhouyanliang@users.noreply.github.com>
* fix(studio): share CLI setup across agent entry points
* fix(agent-sessions): show reconnect steps when all computers are offline
---------
Co-authored-by: Zhou <1267426+zhouyanliang@users.noreply.github.com>
Route overlays hand-rolled their header, body and footer, so a route dialog had a rule under its header, a taller footer and a different close-button position from the application's other dialogs. They now compose DialogHeader, DialogTitle, DialogDescription and DialogFooter inside DialogContent's padding, and the theme's dialog close-button rule covers them.
* fix(studio): clear comment link parameter from the address once located
Drop `?comment=<id>` from an issue page's address by replacing the
current history entry once the linked comment is found, instead of
leaving it there across page switches and refreshes. The highlight
now fades a few seconds after it is shown, or cancels on the next
click anywhere on the page.
* fix(studio): preserve comment lookup after cancel
* test(studio): cover comment cleanup in plan links
* fix(studio): restart comment highlight fade on repeat navigation
* feat(agents): configure skill attachment defaults in the editor
* fix(agents): honor scoped credentials in attachment names
* test(studio): include project default skill commands in manifest snapshot
* fix(agents): place skill mount switches with attachments
Prepare result mappings once per execution, optimize stored timestamp decoding, and batch PostgreSQL and SQLite schema inspection.
Preserve transaction-local schema inspection and add regression coverage and reproducible benchmark results.
Split the dashboard into one route per panel and read runs, usage and issues in one narrow query each, so report time no longer grows with the number of runs.
Show the issue lists as groups beside the selected task's detail: the
follow group, a waiting group naming what each task waits for, keyboard
navigation and the selection in the address. The table uses the same
groups, status icons are shared, My Agent opens a session's tasks beside
the conversation, and phones get a grouped task list with an action bar.
Move the inbox to the header, land on My tasks with its waiting count,
and restore the projects plugin's hierarchy reads and the inbox's task
decisions that the task split view reads.
* fix(sidebar): isolate preferences by application
* fix(templates): provide sidebar preferences in shell tests
* test(studio): use configured manager name in needs-you flow
---------
Co-authored-by: Peipei <pearlcao149@gmail.com>