Skip to content

Commit

Permalink
docs(nx-cloud): update release notes (nrwl#22915)
Browse files Browse the repository at this point in the history
  • Loading branch information
rarmatei authored and AgentEnder committed Apr 23, 2024
1 parent f10d232 commit 9ce6acd
Show file tree
Hide file tree
Showing 31 changed files with 313 additions and 275 deletions.
38 changes: 38 additions & 0 deletions docs/nx-cloud/reference/release-notes.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,43 @@
# Enterprise Release Notes

### 2402.27.3

##### DTE Algorithm V2 Experimental Flag

For the past 2 months, we've been re-writing our entire task distribution algorithm. The aim was to allocate tasks more efficiently to agents,
reduce total time spent by agents downloading artefacts and reduce idle agent time waiting for tasks.

While the features is still in its beta stage, initial tests do show a big improvement in overall CI completion time
(but this varies on a case by case basis).

If you are already using DTE or Nx Agents, you can enable this experimental feature by adding the following env var to your main job (the job
where you invoke `npx start-ci-run`):

```yaml
NX_CLOUD_DTE_V2: 'true'
```
##### Nx Agents On-Prem Availability
Since the previous release, we've been testing various options for deploying Nx Agents on-premise.
We now have a dedicate Helm chart dedicated to setting up an Nx Agents cluster on your infrastructure:
1. ⚠️ Please reach out to your DPE first so we can start an Nx Agents trial and discuss any limitations and requirements up-front
2. You can view the example `values.yaml` [here](https://github.com/nrwl/nx-cloud-helm/blob/main/charts/nx-agents/values.yaml)
3. Once we had a chance to look at your existing CI compute requirements, you deploy the chart via `helm install nx-cloud nx-cloud/nx-agents --values=helm-values.yml`

##### Audit logger

As an Enterprise installation admin, you can now view audit logs over NxCloud workspace events by visiting `https://<NXCLOUD-URL>/audit-log`.

This includes events such as when a workspace was created, when a new VCS integration was set-up and so on.

##### UI improvements

- Organizations can now be created directly from the "Connect a workspace" screen
- Full screen terminal outputs for your tasks

### 2402.27.3.patch3,4,5,6

- Feat: allows customising the base image for the agent init-container (in case it is self-hosted internally in the company)
Expand Down
6 changes: 3 additions & 3 deletions graph/client/src/app/ui-components/error-boundary.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ export function ErrorBoundary() {
}

return (
<div className="flex flex-col items-center h-screen w-full">
<div className="flex h-screen w-full flex-col items-center">
<ProjectDetailsHeader />
<h1 className="text-4xl mb-4 dark:text-slate-100">Error</h1>
<h1 className="mb-4 text-4xl dark:text-slate-100">Error</h1>
<div>
<p className="text-lg mb-4 dark:text-slate-200">{message}</p>
<p className="mb-4 text-lg dark:text-slate-200">{message}</p>
<p className="text-sm">Error message: {error}</p>
</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions graph/project-details/src/lib/project-details-header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { ThemePanel } from '@nx/graph/ui-theme';
export function ProjectDetailsHeader() {
const routeConstructor = useRouteConstructor();
return (
<header className="flex w-full justify-center items-center py-2 mx-auto border-b-2 border-slate-900/10 mb-8 dark:border-slate-300/10">
<div className="flex flex-grow items-center justify-between max-w-6xl px-8 ">
<header className="mx-auto mb-8 flex w-full items-center justify-center border-b-2 border-slate-900/10 py-2 dark:border-slate-300/10">
<div className="flex max-w-6xl flex-grow items-center justify-between px-8 ">
<Link to={routeConstructor('/projects', false)}>
<svg
className="h-10 w-auto text-slate-900 dark:text-white"
Expand Down
4 changes: 2 additions & 2 deletions graph/project-details/src/lib/project-details-page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,14 @@ export function ProjectDetailsPage() {
);

return (
<div className="flex flex-col justify-center w-full text-slate-700 dark:text-slate-400">
<div className="flex w-full flex-col justify-center text-slate-700 dark:text-slate-400">
<ScrollRestoration />
{environment !== 'nx-console' ? (
<ProjectDetailsHeader />
) : (
<div className="py-2"></div>
)}
<div className="flex-grow mx-auto w-full max-w-6xl px-8 mb-8">
<div className="mx-auto mb-8 w-full max-w-6xl flex-grow px-8">
<ProjectDetailsWrapper
project={project}
sourceMap={sourceMap}
Expand Down
2 changes: 1 addition & 1 deletion graph/ui-components/src/lib/spinner.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export type SpinnerProps = React.SVGProps<SVGSVGElement>;
export function Spinner({ className, ...rest }: SpinnerProps) {
return (
<svg
className={`${className} animate-spin h-8 w-8`}
className={`${className} h-8 w-8 animate-spin`}
viewBox="0 0 24 24"
{...rest}
>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,13 +141,13 @@ export const TargetConfigurationDetails = forwardRef(
: true);

return (
<div className="rounded-md border border-slate-200 dark:border-slate-700/60 relative overflow-hidden">
<div className="relative overflow-hidden rounded-md border border-slate-200 dark:border-slate-700/60">
<header
className={twMerge(
`group hover:bg-slate-50 dark:hover:bg-slate-800/60 cursor-pointer`,
`group cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/60`,
isCompact ? 'px-2 py-1' : 'p-2',
!collapsed
? 'bg-slate-50 dark:bg-slate-800/60 border-b dark:border-slate-700/60 dark:border-slate-300/10 '
? 'border-b bg-slate-50 dark:border-slate-700/60 dark:border-slate-300/10 dark:bg-slate-800/60 '
: ''
)}
onClick={handleCollapseToggle}
Expand All @@ -162,7 +162,7 @@ export const TargetConfigurationDetails = forwardRef(
<h3 className="font-medium dark:text-slate-300">{targetName}</h3>
{collapsed &&
targetConfiguration?.executor !== '@nx/js:release-publish' && (
<p className="text-slate-400 text-sm">
<p className="text-sm text-slate-400">
{singleCommand
? singleCommand
: targetConfiguration.executor}
Expand Down Expand Up @@ -194,7 +194,7 @@ export const TargetConfigurationDetails = forwardRef(
<div className="flex items-center gap-2">
{onViewInTaskGraph && (
<button
className="text-slate-600 dark:text-slate-300 text-sm ring-1 ring-inset ring-slate-400/40 dark:ring-slate-400/30 hover:bg-slate-200 dark:hover:bg-slate-700/60 p-1 bg-inherit rounded-md"
className="rounded-md bg-inherit p-1 text-sm text-slate-600 ring-1 ring-inset ring-slate-400/40 hover:bg-slate-200 dark:text-slate-300 dark:ring-slate-400/30 dark:hover:bg-slate-700/60"
// TODO: fix tooltip overflow in collapsed state
data-tooltip={collapsed ? false : 'View in Task Graph'}
data-tooltip-align-right
Expand All @@ -211,7 +211,7 @@ export const TargetConfigurationDetails = forwardRef(

{onRunTarget && (
<span
className="text-slate-600 dark:text-slate-300 text-sm ring-1 ring-inset ring-slate-400/40 dark:ring-slate-400/30 hover:bg-slate-200 dark:hover:bg-slate-700/60 p-1 bg-inherit rounded-md"
className="rounded-md bg-inherit p-1 text-sm text-slate-600 ring-1 ring-inset ring-slate-400/40 hover:bg-slate-200 dark:text-slate-300 dark:ring-slate-400/30 dark:hover:bg-slate-700/60"
// TODO: fix tooltip overflow in collapsed state
data-tooltip={collapsed ? false : 'Run Target'}
data-tooltip-align-right
Expand All @@ -228,8 +228,8 @@ export const TargetConfigurationDetails = forwardRef(
</div>
</div>
{!collapsed && (
<div className="flex items-center text-sm mt-2 ml-5">
<span className="flex-1 flex min-w-0 items-center">
<div className="mt-2 ml-5 flex items-center text-sm">
<span className="flex min-w-0 flex-1 items-center">
<SourceInfo
data={sourceMap[`targets.${targetName}`]}
propertyKey={`targets.${targetName}`}
Expand All @@ -238,7 +238,7 @@ export const TargetConfigurationDetails = forwardRef(
</span>
{targetName !== 'nx-release-publish' && (
<div className="flex items-center gap-2">
<code className="ml-4 bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-300 font-mono px-2 py-1 rounded">
<code className="ml-4 rounded bg-gray-100 px-2 py-1 font-mono text-gray-800 dark:bg-gray-700 dark:text-gray-300">
nx run {projectName}:{targetName}
</code>
<span>
Expand All @@ -257,12 +257,12 @@ export const TargetConfigurationDetails = forwardRef(
{/* body */}
{!collapsed && (
<div className="p-4 text-base">
<div className="mb-4 group">
<div className="group mb-4">
<h4 className="mb-4">
{singleCommand ? (
<span className="font-medium">
Command
<span className="hidden group-hover:inline ml-2 mb-1">
<span className="ml-2 mb-1 hidden group-hover:inline">
<CopyToClipboard
onCopy={() =>
handleCopyClick(`"command": "${singleCommand}"`)
Expand Down Expand Up @@ -312,7 +312,7 @@ export const TargetConfigurationDetails = forwardRef(
<TooltipTriggerText>Inputs</TooltipTriggerText>
</span>
</Tooltip>
<span className="hidden group-hover:inline ml-2 mb-1">
<span className="ml-2 mb-1 hidden group-hover:inline">
<CopyToClipboard
onCopy={() =>
handleCopyClick(
Expand All @@ -324,7 +324,7 @@ export const TargetConfigurationDetails = forwardRef(
/>
</span>
</h4>
<ul className="list-disc pl-5 mb-4">
<ul className="mb-4 list-disc pl-5">
{targetConfiguration.inputs.map((input, idx) => {
const sourceInfo = selectSourceInfo(
sourceMap,
Expand All @@ -337,7 +337,7 @@ export const TargetConfigurationDetails = forwardRef(
>
<TargetConfigurationProperty data={input}>
{sourceInfo && (
<span className="opacity-0 flex shrink-1 min-w-0 group-hover/line:opacity-100 transition-opacity duration-150 ease-in-out inline pl-4">
<span className="shrink-1 inline flex min-w-0 pl-4 opacity-0 transition-opacity duration-150 ease-in-out group-hover/line:opacity-100">
<SourceInfo
data={sourceInfo}
propertyKey={`targets.${targetName}.inputs`}
Expand All @@ -362,7 +362,7 @@ export const TargetConfigurationDetails = forwardRef(
<TooltipTriggerText>Outputs</TooltipTriggerText>
</span>
</Tooltip>
<span className="hidden group-hover:inline ml-2 mb-1">
<span className="ml-2 mb-1 hidden group-hover:inline">
<CopyToClipboard
onCopy={() =>
handleCopyClick(
Expand All @@ -374,7 +374,7 @@ export const TargetConfigurationDetails = forwardRef(
/>
</span>
</h4>
<ul className="list-disc pl-5 mb-4">
<ul className="mb-4 list-disc pl-5">
{targetConfiguration.outputs?.map((output, idx) => {
const sourceInfo = selectSourceInfo(
sourceMap,
Expand All @@ -387,7 +387,7 @@ export const TargetConfigurationDetails = forwardRef(
>
<TargetConfigurationProperty data={output}>
{sourceInfo && (
<span className="opacity-0 flex shrink-1 min-w-0 group-hover/line:opacity-100 transition-opacity duration-150 ease-in-out inline pl-4">
<span className="shrink-1 inline flex min-w-0 pl-4 opacity-0 transition-opacity duration-150 ease-in-out group-hover/line:opacity-100">
<SourceInfo
data={sourceInfo}
propertyKey={`targets.${targetName}.outputs`}
Expand All @@ -412,7 +412,7 @@ export const TargetConfigurationDetails = forwardRef(
<TooltipTriggerText>Depends On</TooltipTriggerText>
</span>
</Tooltip>
<span className="opacity-0 group-hover/line:opacity-100 transition-opacity duration-150 ease-in-out inline pl-4">
<span className="inline pl-4 opacity-0 transition-opacity duration-150 ease-in-out group-hover/line:opacity-100">
<CopyToClipboard
onCopy={() =>
handleCopyClick(
Expand All @@ -424,7 +424,7 @@ export const TargetConfigurationDetails = forwardRef(
/>
</span>
</h4>
<ul className="list-disc pl-5 mb-4">
<ul className="mb-4 list-disc pl-5">
{targetConfiguration.dependsOn.map((dep, idx) => {
const sourceInfo = selectSourceInfo(
sourceMap,
Expand All @@ -437,7 +437,7 @@ export const TargetConfigurationDetails = forwardRef(
key={`dependsOn-${idx}`}
>
<TargetConfigurationProperty data={dep}>
<span className="opacity-0 flex shrink-1 min-w-0 group-hover/line:opacity-100 transition-opacity duration-150 ease-in-out inline pl-4">
<span className="shrink-1 inline flex min-w-0 pl-4 opacity-0 transition-opacity duration-150 ease-in-out group-hover/line:opacity-100">
{sourceInfo && (
<SourceInfo
data={sourceInfo}
Expand Down Expand Up @@ -475,7 +475,7 @@ export const TargetConfigurationDetails = forwardRef(
`targets.${targetName}.options.${propertyName}`
);
return sourceInfo ? (
<span className="pl-4 flex shrink-1 min-w-0">
<span className="shrink-1 flex min-w-0 pl-4">
<SourceInfo
data={sourceInfo}
propertyKey={`targets.${targetName}.options.${propertyName}`}
Expand All @@ -493,7 +493,7 @@ export const TargetConfigurationDetails = forwardRef(

{shouldRenderConfigurations ? (
<>
<h4 className="py-2 mb-4">
<h4 className="mb-4 py-2">
<Tooltip
openAction="hover"
content={
Expand Down Expand Up @@ -523,7 +523,7 @@ export const TargetConfigurationDetails = forwardRef(
`targets.${targetName}.configurations.${propertyName}`
);
return sourceInfo ? (
<span className="pl-4 flex shrink-1 min-w-0">
<span className="shrink-1 flex min-w-0 pl-4">
<SourceInfo
data={sourceInfo}
propertyKey={`targets.${targetName}.configurations.${propertyName}`}
Expand Down
8 changes: 4 additions & 4 deletions graph/ui-tooltips/src/lib/property-info-tooltip.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,13 @@ export function PropertyInfoTooltip({ type }: PropertyInfoTooltipProps) {
const propertyInfo = PROPERTY_INFO_TOOLTIP_TYPE_OPTIONS[type];

return (
<div className="text-sm text-slate-700 dark:text-slate-400 max-w-lg">
<h4 className="flex justify-between items-center border-b border-slate-200 dark:border-slate-700/60 text-base">
<div className="max-w-lg text-sm text-slate-700 dark:text-slate-400">
<h4 className="flex items-center justify-between border-b border-slate-200 text-base dark:border-slate-700/60">
<span className="font-mono">{propertyInfo.heading}</span>
</h4>
<div
className={twMerge(
`flex flex-col font-mono py-2`,
`flex flex-col py-2 font-mono`,
propertyInfo.docsUrl
? 'border-b border-slate-200 dark:border-slate-700/60'
: ''
Expand All @@ -107,7 +107,7 @@ export function PropertyInfoTooltip({ type }: PropertyInfoTooltipProps) {
</div>
{propertyInfo.docsUrl ? (
<div className="flex py-2">
<p className="pr-4 flex items-center">
<p className="flex items-center pr-4">
<ExternalLink
text={
propertyInfo.docsLinkText ??
Expand Down
12 changes: 6 additions & 6 deletions nx-dev/feature-ai/src/lib/feed/feed-answer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export function FeedAnswer({

return (
<>
<div className="grid h-12 w-12 items-center justify-center rounded-full bg-white dark:bg-slate-900 ring-1 ring-slate-200 dark:ring-slate-700 text-slate-900 dark:text-white">
<div className="grid h-12 w-12 items-center justify-center rounded-full bg-white text-slate-900 ring-1 ring-slate-200 dark:bg-slate-900 dark:text-white dark:ring-slate-700">
<svg
role="img"
viewBox="0 0 24 24"
Expand All @@ -65,7 +65,7 @@ export function FeedAnswer({
</div>
<div className="min-w-0 flex-1">
<div>
<div className="text-lg flex gap-2 items-center text-slate-900 dark:text-slate-100">
<div className="flex items-center gap-2 text-lg text-slate-900 dark:text-slate-100">
Nx Assistant
</div>
<p className="mt-0.5 flex items-center gap-x-1 text-sm text-slate-500">
Expand All @@ -76,12 +76,12 @@ export function FeedAnswer({
AI powered
</p>
</div>
<div className="mt-2 prose prose-slate dark:prose-invert w-full max-w-none 2xl:max-w-4xl">
<div className="prose prose-slate dark:prose-invert mt-2 w-full max-w-none 2xl:max-w-4xl">
{!isFirst && callout}
{renderMarkdown(normalizedContent, { filePath: '' }).node}
</div>
{!isFirst && (
<div className="group text-md flex-1 md:flex md:justify-end gap-4 md:items-center text-slate-400 hover:text-slate-500 transition">
<div className="text-md group flex-1 gap-4 text-slate-400 transition hover:text-slate-500 md:flex md:items-center md:justify-end">
{feedbackStatement ? (
<p className="italic group-hover:flex">
{feedbackStatement === 'good'
Expand All @@ -96,7 +96,7 @@ export function FeedAnswer({
<div className="flex gap-4">
<button
className={cx(
'hover:rotate-12 hover:text-blue-500 dark:hover:text-sky-500 transition-all p-1 disabled:cursor-not-allowed',
'p-1 transition-all hover:rotate-12 hover:text-blue-500 disabled:cursor-not-allowed dark:hover:text-sky-500',
{ 'text-blue-500': feedbackStatement === 'bad' }
)}
disabled={!!feedbackStatement}
Expand All @@ -108,7 +108,7 @@ export function FeedAnswer({
</button>
<button
className={cx(
'hover:rotate-12 hover:text-blue-500 dark:hover:text-sky-500 transition-all p-1 disabled:cursor-not-allowed',
'p-1 transition-all hover:rotate-12 hover:text-blue-500 disabled:cursor-not-allowed dark:hover:text-sky-500',
{ 'text-blue-500': feedbackStatement === 'good' }
)}
disabled={!!feedbackStatement}
Expand Down
Loading

0 comments on commit 9ce6acd

Please sign in to comment.