Skip to content

Tracking: Preact 11 support#33917

Open
Sidnioulz wants to merge 8 commits into
nextfrom
preact-11
Open

Tracking: Preact 11 support#33917
Sidnioulz wants to merge 8 commits into
nextfrom
preact-11

Conversation

@Sidnioulz
Copy link
Copy Markdown
Member

@Sidnioulz Sidnioulz commented Feb 24, 2026

N/A. Running preact prerelease sandbox in CI.

Summary by CodeRabbit

  • New Features

    • Support for Preact 11 (including prerelease) added across packages.
    • New preact-vite prerelease template and a template flag to prefer no automatic linking.
    • Added forceLink option to override linking behavior.
  • Tests

    • End-to-end tests extended to cover preact-vite template variants.
  • Refactor

    • Centralized sandbox linking logic to respect template flags.
  • Chores

    • CI workflow now targets preact-11 and a large generation job was temporarily disabled.

@nx-cloud
Copy link
Copy Markdown

nx-cloud Bot commented Feb 24, 2026

View your CI Pipeline Execution ↗ for commit 6b75094

Command Status Duration Result
nx run-many -t compile -c production --parallel=1 ✅ Succeeded 5m 36s View ↗

☁️ Nx Cloud last updated this comment at 2026-03-19 09:40:39 UTC

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Revert all changes to this file before merging

Comment on lines +1058 to +1059
// TODO/FIXME/TEMP/DEBUG: never merge this to next.
'preact-vite/prerelease-ts',
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Revert this before merging

Comment thread .github/workflows/generate-sandboxes.yml
Comment thread code/lib/cli-storybook/src/sandbox-templates.ts
@Sidnioulz Sidnioulz marked this pull request as ready for review February 27, 2026 13:41
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Feb 27, 2026

📝 Walkthrough

Walkthrough

Adds Preact 11 prerelease compatibility and a new preact-vite prerelease template, introduces a template-level preferNoLink flag and a forceLink option, centralizes link/no-link decision in sandbox task via sanitizeOptions, updates E2E version detection, and adjusts the sandboxes CI workflow to target branch preact-11 and disable generate-main.

Changes

Cohort / File(s) Summary
CI workflow
\.github/workflows/generate-sandboxes.yml
Enabled push trigger for preact-11, changed checkout refs to preact-11, and commented-out the generate-main job.
Preact peerDependencies
code/frameworks/preact-vite/package.json, code/renderers/preact/package.json
Expanded peerDependency ranges to include Preact 11 prerelease (>= 11.0.0-0).
E2E test logic
code/e2e-tests/addon-docs.spec.ts
Extended template-version detection to handle preact-vite/default and preact-vite/prerelease branches.
Sandbox templates
code/lib/cli-storybook/src/sandbox-templates.ts
Added preferNoLink?: boolean to Template type, marked several templates preferNoLink: true, and added preact-vite/prerelease-ts to baseTemplates and normal list.
Task options & sandbox task
scripts/task.ts, scripts/tasks/sandbox.ts
Added exported forceLink option; sandbox task imports PassedOptionValues/TemplateDetails, changed dependsOn signature to (details, options), and added sanitizeOptions(details, options) to centralize link/no-link enforcement used in dependsOn and run.

Sequence Diagram(s)

mermaid
sequenceDiagram
participant User as User (CLI)
participant Options as Options Object
participant Templates as Template Registry
participant Sandbox as Sandbox Task
participant DepResolver as Dependency Resolver
rect rgba(120,168,255,0.5)
User->>Options: pass flags (link, forceLink, ...)
end
rect rgba(120,255,168,0.5)
Sandbox->>Templates: fetch template details (inDevelopment, preferNoLink)
Sandbox->>Options: call sanitizeOptions(details, options)
Options-->>Sandbox: normalized options
end
rect rgba(255,200,120,0.5)
Sandbox->>DepResolver: dependsOn(details, sanitizedOptions)
DepResolver-->>Sandbox: dependency tasks / readiness
Sandbox->>DepResolver: run tasks with sanitized options
end

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
📝 Coding Plan
  • Generate coding plan for human review comments

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
code/e2e-tests/addon-docs.spec.ts (1)

206-217: ⚠️ Potential issue | 🟠 Major

Logic error: preact-vite/default check will incorrectly match preact-vite/default-js and preact-vite/default-ts.

The condition on line 206 (templateName.includes('preact-vite/default')) will match before lines 212-213 can be evaluated, because 'preact-vite/default-js'.includes('preact-vite/default') is true. This means preact-vite/default-js and preact-vite/default-ts will incorrectly expect React 16 instead of React 18.

The more specific checks (preact-vite/default-js, preact-vite/default-ts) must come before the generic preact-vite/default check, or use exact matching.

Proposed fix: reorder conditions
     } else if (templateName.includes('react16')) {
       expectedReactVersionRange = /^16/;
-    } else if (templateName.includes('preact-vite/default')) {
-      expectedReactVersionRange = /^16/;
-    } else if (templateName.includes('preact-vite/prerelease')) {
-      expectedReactVersionRange = /^18/;
     } else if (
       templateName.includes('internal/react18-webpack-babel') ||
       templateName.includes('preact-vite/default-js') ||
       templateName.includes('preact-vite/default-ts') ||
       templateName.includes('react-webpack/18-ts')
     ) {
       expectedReactVersionRange = /^18/;
+    } else if (templateName.includes('preact-vite/prerelease')) {
+      expectedReactVersionRange = /^18/;
     }

Alternatively, if there's truly a preact-vite/default template (without -js or -ts suffix) that expects React 16, you could remove the redundant preact-vite/default check entirely since it doesn't appear in the template definitions.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@code/e2e-tests/addon-docs.spec.ts` around lines 206 - 217, The
templateName.includes('preact-vite/default') check is too broad and will match
'preact-vite/default-js' and 'preact-vite/default-ts' before their specific
checks, causing expectedReactVersionRange to be set to /^16/ incorrectly; fix by
reordering the conditions so the more specific checks
(templateName.includes('preact-vite/default-js') and
templateName.includes('preact-vite/default-ts')) appear before the generic
templateName.includes('preact-vite/default') check, or replace the generic
includes check with an exact match (=== 'preact-vite/default') and ensure the
branches that set expectedReactVersionRange to /^18/ remain for the specific
templates.
🧹 Nitpick comments (2)
code/frameworks/preact-vite/package.json (1)

61-61: Peer dependency range is redundant but shows intentional Preact 11 prerelease support.

The range >=10 already includes all versions >= 11.0.0-0, so the additional || >= 11.0.0-0 clause is technically redundant. However, it does make the prerelease support explicit. Consider simplifying to just >=10 if the explicit signal isn't needed, or aligning with the pattern in code/renderers/preact/package.json which uses caret ranges (^10.0.0 || >= 11.0.0-0).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@code/frameworks/preact-vite/package.json` at line 61, The peerDependency
declaration for "preact" is redundant: the current range ">=10 || >= 11.0.0-0"
can be simplified; update the "preact" peer dependency in package.json (the
"preact" entry) to either a single range ">=10" to remove redundancy or to match
the project's pattern used in code/renderers/preact/package.json (e.g., use a
caret-style range like "^10.0.0 || >= 11.0.0-0") depending on whether you want
to keep explicit prerelease support.
scripts/tasks/sandbox.ts (1)

22-37: Side-effect mutation pattern and inconsistent template reference.

The function mutates options.link directly without returning a value, which is a side-effect pattern that can be confusing. Additionally, the log messages reference options.template (the key string) rather than details.template.name for better readability.

Consider either:

  1. Returning a new options object instead of mutating, or
  2. At minimum, documenting that this function mutates its input
Minor improvement: use template name in logs
 const sanitizeOptions = (details: TemplateDetails, options: PassedOptionValues) => {
   if (options.link && !options.forceLink && details.template.inDevelopment) {
     logger.log(
-      `The ${options.template} has inDevelopment property enabled, therefore the sandbox for that template cannot be linked. Enabling --no-link mode... Pass --force-link to use link mode anyway, but be aware the sandbox may partially or completely not work.`
+      `The ${details.key} template has inDevelopment property enabled, therefore the sandbox for that template cannot be linked. Enabling --no-link mode... Pass --force-link to use link mode anyway, but be aware the sandbox may partially or completely not work.`
     );

     options.link = false;
   }
   if (options.link && !options.forceLink && details.template.preferNoLink) {
     logger.log(
-      `The ${options.template} has preferNoLink property enabled. Defaulting to --no-link mode. Pass --force-link to use link mode anyway, but be aware the sandbox may partially or completely not work.`
+      `The ${details.key} template has preferNoLink property enabled. Defaulting to --no-link mode. Pass --force-link to use link mode anyway, but be aware the sandbox may partially or completely not work.`
     );

     options.link = false;
   }
 };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/tasks/sandbox.ts` around lines 22 - 37, sanitizeOptions currently
mutates options.link and logs the template key; change it to be pure: have
sanitizeOptions(details: TemplateDetails, options: PassedOptionValues) return a
new PassedOptionValues (create newOptions = { ...options } and set
newOptions.link = false when needed) instead of mutating the input, update all
call sites to use the returned value, and update the logger messages to
reference details.template.name (not options.template) for clearer output; keep
type annotations consistent with PassedOptionValues/TemplateDetails and adjust
any callers expecting void.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@code/lib/cli-storybook/src/sandbox-templates.ts`:
- Around line 769-774: The jq expression inside the template script (the
multi-line string assigned to the script property in sandbox-templates.ts)
contains an invalid trailing comma in the object literal; update the jq fragment
to remove the trailing comma so the JSON is valid (e.g., change the object
{"preact": "npm:preact@beta",} to {"preact": "npm:preact@beta"}) and keep the
rest of the shell pipeline (jq ... > tmp.json && mv tmp.json package.json)
unchanged.

In `@scripts/tasks/sandbox.ts`:
- Around line 45-48: The dependsOn implementation is incorrectly doing an async
file-exists check (pathExists) and thus evaluates a Promise instead of boolean;
because Task.dependsOn must be synchronous, move any filesystem checks into the
ready() function (which accepts MaybePromise<boolean>) or return a static
dependency list from dependsOn. Concretely: in the function that currently
contains "if ('inDevelopment' in details.template &&
details.template.inDevelopment) { if (pathExists(join(SANDBOX_DIRECTORY,
details.key))) { return ['run-registry']; } }" remove the async pathExists call
from dependsOn and instead either (A) have dependsOn unconditionally return the
static prerequisites (e.g., [] or ['run-registry'] if appropriate), and perform
the pathExists(join(SANDBOX_DIRECTORY, details.key)) check inside the ready()
method (awaiting it there) to gate readiness, or (B) keep dependsOn purely
synchronous and shift the conditional that depends on pathExists into ready();
also fix the similar missing-await at the ready() implementation around line 77
by awaiting pathExists there.

---

Outside diff comments:
In `@code/e2e-tests/addon-docs.spec.ts`:
- Around line 206-217: The templateName.includes('preact-vite/default') check is
too broad and will match 'preact-vite/default-js' and 'preact-vite/default-ts'
before their specific checks, causing expectedReactVersionRange to be set to
/^16/ incorrectly; fix by reordering the conditions so the more specific checks
(templateName.includes('preact-vite/default-js') and
templateName.includes('preact-vite/default-ts')) appear before the generic
templateName.includes('preact-vite/default') check, or replace the generic
includes check with an exact match (=== 'preact-vite/default') and ensure the
branches that set expectedReactVersionRange to /^18/ remain for the specific
templates.

---

Nitpick comments:
In `@code/frameworks/preact-vite/package.json`:
- Line 61: The peerDependency declaration for "preact" is redundant: the current
range ">=10 || >= 11.0.0-0" can be simplified; update the "preact" peer
dependency in package.json (the "preact" entry) to either a single range ">=10"
to remove redundancy or to match the project's pattern used in
code/renderers/preact/package.json (e.g., use a caret-style range like "^10.0.0
|| >= 11.0.0-0") depending on whether you want to keep explicit prerelease
support.

In `@scripts/tasks/sandbox.ts`:
- Around line 22-37: sanitizeOptions currently mutates options.link and logs the
template key; change it to be pure: have sanitizeOptions(details:
TemplateDetails, options: PassedOptionValues) return a new PassedOptionValues
(create newOptions = { ...options } and set newOptions.link = false when needed)
instead of mutating the input, update all call sites to use the returned value,
and update the logger messages to reference details.template.name (not
options.template) for clearer output; keep type annotations consistent with
PassedOptionValues/TemplateDetails and adjust any callers expecting void.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ca086e8 and c19e782.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (7)
  • .github/workflows/generate-sandboxes.yml
  • code/e2e-tests/addon-docs.spec.ts
  • code/frameworks/preact-vite/package.json
  • code/lib/cli-storybook/src/sandbox-templates.ts
  • code/renderers/preact/package.json
  • scripts/task.ts
  • scripts/tasks/sandbox.ts

Comment on lines +769 to +774
script: `
npm create vite --yes {{beforeDir}} -- --template preact-ts && \
cd {{beforeDir}} && \
jq '.resolutions += {"preact": "npm:preact@beta",}' package.json > tmp.json && mv tmp.json package.json && \
yarn add preact@beta
`,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

JSON syntax error: trailing comma in jq command will cause script failure.

The jq command on line 772 has a trailing comma after the value which is invalid JSON syntax:

"preact": "npm:preact@beta",}

This will cause the template generation script to fail.

Proposed fix
     script: `
       npm create vite --yes {{beforeDir}} -- --template preact-ts && \
       cd {{beforeDir}} && \
-      jq '.resolutions += {"preact": "npm:preact@beta",}' package.json > tmp.json && mv tmp.json package.json && \
+      jq '.resolutions += {"preact": "npm:preact@beta"}' package.json > tmp.json && mv tmp.json package.json && \
       yarn add preact@beta
       `,
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
script: `
npm create vite --yes {{beforeDir}} -- --template preact-ts && \
cd {{beforeDir}} && \
jq '.resolutions += {"preact": "npm:preact@beta",}' package.json > tmp.json && mv tmp.json package.json && \
yarn add preact@beta
`,
script: `
npm create vite --yes {{beforeDir}} -- --template preact-ts && \
cd {{beforeDir}} && \
jq '.resolutions += {"preact": "npm:preact@beta"}' package.json > tmp.json && mv tmp.json package.json && \
yarn add preact@beta
`,
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@code/lib/cli-storybook/src/sandbox-templates.ts` around lines 769 - 774, The
jq expression inside the template script (the multi-line string assigned to the
script property in sandbox-templates.ts) contains an invalid trailing comma in
the object literal; update the jq fragment to remove the trailing comma so the
JSON is valid (e.g., change the object {"preact": "npm:preact@beta",} to
{"preact": "npm:preact@beta"}) and keep the rest of the shell pipeline (jq ... >
tmp.json && mv tmp.json package.json) unchanged.

Comment thread scripts/tasks/sandbox.ts
Comment on lines +45 to 48
if ('inDevelopment' in details.template && details.template.inDevelopment) {
if (pathExists(join(SANDBOX_DIRECTORY, details.key))) {
return ['run-registry'];
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# First, find and examine the pathExists function definition
rg -n "pathExists" -t ts -t tsx --no-heading | head -20

Repository: storybookjs/storybook

Length of output: 92


🏁 Script executed:

#!/bin/bash
# Check the Task type definition to understand dependsOn signature
fd "task" -t ts | head -10

Repository: storybookjs/storybook

Length of output: 234


🏁 Script executed:

#!/bin/bash
# Look at the sandbox.ts file around the mentioned lines
cat -n scripts/tasks/sandbox.ts | sed -n '40,55p'

Repository: storybookjs/storybook

Length of output: 682


🏁 Script executed:

#!/bin/bash
# Find pathExists function definition
rg -n "export.*pathExists|function pathExists|const pathExists" --type-add 'ts:*.ts' --type-add 'tsx:*.tsx' -t ts -t tsx

Repository: storybookjs/storybook

Length of output: 1030


🏁 Script executed:

#!/bin/bash
# Search for Task type definition
rg -n "type Task|interface Task" --type-add 'ts:*.ts' --type-add 'tsx:*.tsx' -t ts -t tsx

Repository: storybookjs/storybook

Length of output: 959


🏁 Script executed:

#!/bin/bash
# Look for how dependsOn is invoked/used
rg -n "dependsOn\(" --type-add 'ts:*.ts' --type-add 'tsx:*.tsx' -t ts -t tsx -B 2 -A 2

Repository: storybookjs/storybook

Length of output: 383


🏁 Script executed:

#!/bin/bash
# Read the Task type definition
cat -n scripts/task.ts | sed -n '57,90p'

Repository: storybookjs/storybook

Length of output: 1535


🏁 Script executed:

#!/bin/bash
# Check line 13 of sandbox.ts to confirm pathExists import/definition
cat -n scripts/tasks/sandbox.ts | sed -n '1,20p'

Repository: storybookjs/storybook

Length of output: 737


🏁 Script executed:

#!/bin/bash
# Read the invocation context more thoroughly
cat -n scripts/task.ts | sed -n '270,285p'

Repository: storybookjs/storybook

Length of output: 635


🏁 Script executed:

#!/bin/bash
# Check if there are other dependsOn functions and how they handle async
rg -n "dependsOn:" scripts/tasks/ -A 5 | head -60

Repository: storybookjs/storybook

Length of output: 3259


🏁 Script executed:

#!/bin/bash
# Check if any dependsOn functions are async
rg -n "dependsOn:.*async\|dependsOn.*=.*async" scripts/tasks/

Repository: storybookjs/storybook

Length of output: 47


🏁 Script executed:

#!/bin/bash
# Look for synchronous alternatives or how pathExists is used elsewhere
rg -n "pathExists" scripts/tasks/sandbox.ts -B 2 -A 2

Repository: storybookjs/storybook

Length of output: 608


Cannot make dependsOn async—restructure the logic instead.

The missing await on pathExists at line 46 is confirmed as a bug. However, the proposed fix of making dependsOn async is incorrect. The Task type definition (scripts/task.ts:69) explicitly requires dependsOn to be a synchronous function returning TaskKey[], not a Promise. The invocation at scripts/task.ts:277 calls it without awaiting.

The condition at line 46 currently evaluates the Promise object itself, which is always truthy.

Move the path existence check into the ready() function (which supports MaybePromise<boolean>), or restructure dependsOn to return a static set of prerequisites without conditional async checks.

Note: The same missing await bug exists at line 77 in the ready() function.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/tasks/sandbox.ts` around lines 45 - 48, The dependsOn implementation
is incorrectly doing an async file-exists check (pathExists) and thus evaluates
a Promise instead of boolean; because Task.dependsOn must be synchronous, move
any filesystem checks into the ready() function (which accepts
MaybePromise<boolean>) or return a static dependency list from dependsOn.
Concretely: in the function that currently contains "if ('inDevelopment' in
details.template && details.template.inDevelopment) { if
(pathExists(join(SANDBOX_DIRECTORY, details.key))) { return ['run-registry']; }
}" remove the async pathExists call from dependsOn and instead either (A) have
dependsOn unconditionally return the static prerequisites (e.g., [] or
['run-registry'] if appropriate), and perform the
pathExists(join(SANDBOX_DIRECTORY, details.key)) check inside the ready() method
(awaiting it there) to gate readiness, or (B) keep dependsOn purely synchronous
and shift the conditional that depends on pathExists into ready(); also fix the
similar missing-await at the ready() implementation around line 77 by awaiting
pathExists there.

@github-actions github-actions Bot added the Stale label Mar 14, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
code/lib/cli-storybook/src/sandbox-templates.ts (1)

779-783: ⚠️ Potential issue | 🔴 Critical

Fix invalid jq object syntax in the prerelease Preact script.

Line 782 uses {"preact": "npm:preact@beta",} (trailing comma), which causes jq parse failure and breaks template generation.

Proposed fix
-      jq '.resolutions += {"preact": "npm:preact@beta",}' package.json > tmp.json && mv tmp.json package.json && \
+      jq '.resolutions += {"preact": "npm:preact@beta"}' package.json > tmp.json && mv tmp.json package.json && \

Verification (expect 1 hit before fix, 0 hits after fix):

#!/bin/bash
set -euo pipefail

FILE="code/lib/cli-storybook/src/sandbox-templates.ts"

rg -nF '{"preact": "npm:preact@beta",}' "$FILE"
sed -n '779,784p' "$FILE"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@code/lib/cli-storybook/src/sandbox-templates.ts` around lines 779 - 783, In
sandbox-templates.ts update the script string where the jq expression
'.resolutions += {"preact": "npm:preact@beta",}' is used (the script property
around the Vite/preact template) to remove the trailing comma from the object
literal so the jq JSON is valid (i.e., change the object to '{"preact":
"npm:preact@beta"}'); keep the rest of the pipeline (redirect to tmp.json and
mv) unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@code/lib/cli-storybook/src/sandbox-templates.ts`:
- Around line 779-783: In sandbox-templates.ts update the script string where
the jq expression '.resolutions += {"preact": "npm:preact@beta",}' is used (the
script property around the Vite/preact template) to remove the trailing comma
from the object literal so the jq JSON is valid (i.e., change the object to
'{"preact": "npm:preact@beta"}'); keep the rest of the pipeline (redirect to
tmp.json and mv) unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: bc95997f-0fcb-450a-bafe-877698e9d2e9

📥 Commits

Reviewing files that changed from the base of the PR and between 20d3886 and 6b75094.

📒 Files selected for processing (3)
  • .github/workflows/generate-sandboxes.yml
  • code/frameworks/preact-vite/package.json
  • code/lib/cli-storybook/src/sandbox-templates.ts
✅ Files skipped from review due to trivial changes (1)
  • code/frameworks/preact-vite/package.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/generate-sandboxes.yml

@Sidnioulz Sidnioulz removed their assignment Mar 24, 2026
@Sidnioulz Sidnioulz moved this to Empathy Backlog in Core Team Projects Mar 24, 2026
@Sidnioulz Sidnioulz moved this from Empathy Backlog to Empathy Queue (prioritized) in Core Team Projects Mar 24, 2026
@github-actions github-actions Bot added the Stale label Apr 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Empathy Queue (prioritized)

Development

Successfully merging this pull request may close these issues.

3 participants