Skip to content

Commit 6666bfd

Browse files
Merge branch 'develop' into 'fb-ci-test'
Workflow run: https://github.com/HumanSignal/label-studio/actions/runs/15216038828
2 parents 540db95 + 1d54a0e commit 6666bfd

File tree

210 files changed

+6060
-1944
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

210 files changed

+6060
-1944
lines changed

.github/CODEOWNERS

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ web/libs/editor/**/Video* @HumanSignal/fine-tuners
1616
web/libs/editor/**/TimeSeries* @HumanSignal/fine-tuners
1717
web/apps/labelstudio/src/pages/DataManager @HumanSignal/fine-tuners
1818
label_studio/data_manager @HumanSignal/fine-tuners
19-
web/apps/playground @HumanSignal/fine-tuners
19+
web/apps/playground @HumanSignal/fine-tuners
20+
label_studio/**/migrations/*.py @HumanSignal/team-root

.github/workflows/cicd_pipeline.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,22 @@ jobs:
135135
with:
136136
head_sha: ${{ github.event.pull_request.head.sha || github.event.after }}
137137

138+
build-frontend-docs:
139+
name: "Build"
140+
needs:
141+
- changed_files
142+
if: |
143+
github.event_name == 'pull_request' &&
144+
github.event.pull_request.head.repo.fork == false &&
145+
needs.changed_files.outputs.frontend == 'true' &&
146+
!startsWith(needs.changed_files.outputs.commit-message, 'ci: Build tag docs')
147+
permissions:
148+
contents: write
149+
uses: ./.github/workflows/create-tag-docs.yml
150+
with:
151+
ref: ${{ github.event.pull_request.head.ref || github.ref }}
152+
secrets: inherit
153+
138154
build-docker:
139155
name: "Build"
140156
needs:

.github/workflows/create-tag-docs.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: "Build tag docs"
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
ref:
7+
type: string
8+
required: true
9+
workflow_dispatch:
10+
inputs:
11+
ref:
12+
description: "Ref"
13+
type: string
14+
required: true
15+
16+
env:
17+
NODE: "18"
18+
FRONTEND_MONOREPO_DIR: "web"
19+
FRONTEND_BUILD_COMMIT_MESSAGE: "ci: Build tag docs"
20+
DOCS_TARGET_DIR: "docs/source/includes/tags"
21+
22+
jobs:
23+
build:
24+
name: "Frontend"
25+
timeout-minutes: 15
26+
runs-on: ubuntu-latest
27+
steps:
28+
- uses: hmarr/[email protected]
29+
30+
- name: Configure git
31+
shell: bash
32+
run: |
33+
set -xeuo pipefail
34+
git config --global user.name 'robot-ci-heartex'
35+
git config --global user.email '[email protected]'
36+
37+
- name: Checkout
38+
uses: actions/checkout@v4
39+
with:
40+
token: ${{ secrets.GIT_PAT }}
41+
ref: ${{ inputs.ref }}
42+
43+
- name: Setup frontend environment
44+
uses: ./.github/actions/setup-frontend-environment
45+
with:
46+
node-version: "${{ env.NODE }}"
47+
directory: "${{ env.FRONTEND_MONOREPO_DIR }}"
48+
49+
- name: "Generate docs tags files"
50+
working-directory: "${{ env.FRONTEND_MONOREPO_DIR }}"
51+
run: yarn docs
52+
53+
- name: "Commit and Push"
54+
env:
55+
COMMIT_MESSAGE: "${{ env.FRONTEND_BUILD_COMMIT_MESSAGE }}"
56+
WORKFLOW_LINK: "Workflow run: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
57+
run: |
58+
git add "${{ env.DOCS_TARGET_DIR }}" || true
59+
git status -s
60+
git commit -m "${COMMIT_MESSAGE}" -m "${WORKFLOW_LINK}" || true
61+
git push origin HEAD

docs/source/guide/install_enterprise_k8s.md

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ Adjust the included defaults to reflect your environment and copy these into a n
259259

260260
</div>
261261

262-
## Optional: set up TLS for PostgreSQL
262+
## Optional: Set up TLS for PostgreSQL
263263
To configure Label Studio Enterprise to use TLS for end-client connections with PostgreSQL, do the following:
264264

265265
1. Enable TLS for your PostgreSQL instance and save Root TLS certificate, client certificate and its key for the next steps.
@@ -286,7 +286,7 @@ global:
286286

287287
4. Install or upgrade Label Studio Enterprise using Helm.
288288

289-
## Optional: set up TLS for Redis
289+
## Optional: Set up TLS for Redis
290290
To configure Label Studio Enterprise to use TLS for end-client connections with Redis, do the following:
291291

292292
1. Enable TLS for your Redis instance and save Root TLS certificate, client certificate and its key for the next steps.
@@ -313,6 +313,51 @@ global:
313313

314314
4. Install or upgrade Label Studio Enterprise using Helm.
315315

316+
317+
## Optional: Set up username and password for Redis
318+
319+
Use one of these options to set a password and a username for Redis:
320+
321+
**1. Password via Kubernetes Secret**. Use this when:
322+
* You want to avoid embedding credentials in `values.yaml`
323+
* You already manage Secrets in your cluster
324+
* You need a simple auth without multiple Redis users and you don't have username
325+
326+
```yaml
327+
global:
328+
redisConfig:
329+
host: "redis://redis.example.com:6379/1"
330+
password:
331+
secretName: "my-redis-secret" # Kubernetes Secret name
332+
secretKey: "redis-password" # Key inside Secret
333+
```
334+
335+
**2. Username + password in URL**. Use this when:
336+
* Redis v.7 or later, and with ACL-enabled users
337+
* You need a dedicated Redis user for permission scoping
338+
* You need a quick, throwaway setup or local testing
339+
340+
```yaml
341+
global:
342+
redisConfig:
343+
host: "redis://myuser:[email protected]:6379/1"
344+
```
345+
346+
**3. Username in environment variables + password in secret**. Use this when:
347+
* Redis v.7 or later, and with ACL-enabled users
348+
* You want to keep the password secret but still specify a username
349+
350+
```yaml
351+
global:
352+
redisConfig:
353+
host: "redis://redis.example.com:6379/1"
354+
password:
355+
secretName: "my-redis-secret" # Kubernetes Secret name
356+
secretKey: "redis-password" # Key inside Secret
357+
extraEnvironmentVars:
358+
REDIS_USERNAME: "myuser" # Injected into pod env
359+
```
360+
316361
## Use Helm to install Label Studio Enterprise on your Kubernetes cluster
317362

318363
Use Helm to install Label Studio Enterprise on your Kubernetes cluster. Provide your custom resource definitions YAML file. Specify any environment variables that you need to set for your Label Studio Enterprise installation using the `--set` argument with the `helm install` command.
Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
---
2+
hide_sidebar: true
3+
---
4+
5+
## Label Studio Enterprise 2.24.0
6+
7+
<div class="onprem-highlight">Dark mode, new home page, annotator evaluation settings, plugins library, and multiple usability enhancements</div>
8+
9+
*May 20, 2025*
10+
11+
Helm Chart version: 1.9.10
12+
13+
### New features
14+
15+
#### Dark mode
16+
17+
Label Studio can now be used in dark mode.
18+
19+
Click your avatar in the upper right to find the toggle for dark mode.
20+
21+
- **Auto** - Use your system settings to determine light or dark mode.
22+
- **Light** - Use light mode.
23+
- **Dark** - Use dark mode.
24+
25+
!!! note
26+
Dark mode is not available for environments that use white labeling.
27+
28+
![Screenshot of dark mode](/images/releases/2-24-dark-mode.png)
29+
30+
![Animated gif of dark mode](/images/releases/2-24-darkmode.gif)
31+
32+
![Screenshot of dark mode](/images/releases/2-24-dark-mode2.png)
33+
34+
35+
#### New Label Studio Home page
36+
37+
When you open Label Studio, you will see a new Home page. Here you can find links to your most recent projects, shortcuts to common actions, and links to frequently used resources
38+
39+
![Screenshot of home page](/images/releases/2-24-home.png)
40+
41+
#### Annotator Evaluation settings
42+
43+
There is a new Annotator Evaluation section under **Settings > Quality**.
44+
45+
When there are ground truth annotations within the project, an annotator will be paused if their ground truth agreement falls below a certain threshold.
46+
47+
For more information, see [**Annotator Evaluation**](https://docs.humansignal.com/guide/project_settings_lse#annotator-eval).
48+
49+
<img src="/images/releases/2-24-evaluation.png" style="max-width:600px; margin: 0 auto" alt="Screenshot of evaluation settings">
50+
51+
#### New Insert Plugins menu and Testing interface
52+
53+
There are a number of new features and changes related to plugins:
54+
55+
- There is a new **Insert Plugins** menu available. From here you can insert a pre-built plugin that you can customize as necessary.
56+
- When you add a plugin, you will see a new **Testing** panel below the plugin editing field. You can use this to verify what events are triggered, manually trigger events, and modify the sample data as necessary.
57+
- To accompany the new **Insert Plugins** menu, there is [a new Plugins gallery](https://docs.humansignal.com/plugins/) in the documentation that discusses each option and has information on creating your own custom plugs.
58+
- There is also a new setting that allows you to restrict access to the Plugins tab to Administrator users. By default, it is also available to Managers. This can be set through the Django admin panel.
59+
60+
![Screenshot of plugins](/images/releases/2-24-plugin-menu.png)
61+
62+
![Screenshot of plugins](/images/releases/2-24-plugin-test.png)
63+
64+
### Enhancements
65+
66+
#### Agreement score popover in Data Manager
67+
68+
Click any agreement score to view pairwise agreement scores with others.
69+
70+
![Screenshot of agreement popover](/images/releases/2-24-agreement-popover.png)
71+
72+
#### Adjustable text spans
73+
74+
You can now click and drag to adjust text span regions.
75+
76+
![Animated gif of text span drag and drop](/images/releases/2-24-text-drag.gif)
77+
78+
#### Dynamic brush sizes
79+
80+
The cursor now adjusts dynamically to brush size to allow for more precision in segmentation tasks.
81+
82+
<video style="max-width: 800px;" class="gif-border" autoplay loop muted>
83+
<source src="/images/releases/brush-size.mp4">
84+
</video>
85+
86+
#### Support for BrushLabels export to COCO format
87+
88+
You can now export polygons created using the BrushLabels tag to COCO format.
89+
90+
#### Create support tickets through AI Assistant
91+
92+
If you have AI Assistant enabled and ask multiple questions without coming to a resolution, it will offer to create a support ticket on your behalf:
93+
94+
<img src="/images/releases/2-24-ai-ticket.png" style="max-width:600px; margin: 0 auto" alt="Screenshot of AI assistant">
95+
96+
#### Clear chat history in AI Assistant
97+
98+
You can now clear your chat history to start a new chat.
99+
100+
<img src="/images/releases/2-24-ai-new.png" style="max-width:600px; margin: 0 auto" alt="Screenshot of AI assistant">
101+
102+
#### Export underlying data from the Annotator Performance dashboard
103+
104+
There is a new **Export Underlying Data** action for the Annotations chart.
105+
106+
![Screenshot of agreement popover](/images/releases/2-24-export.png)
107+
108+
#### Annotators can now view their own performance dashboard metrics
109+
110+
When logging in, annotators will now see a link to the Annotator performance dashboard, where they can see their own performance metrics.
111+
112+
<img src="/images/releases/2-24-annotator-dashboard.png" style="max-width:600px; margin: 0 auto" alt="Screenshot of annotator dashboard button">
113+
114+
#### Improved drop-down selectors
115+
116+
When there are a large number of options in a drop-down menu, you can now search through the list of available options.
117+
118+
<img src="/images/releases/2-24-drop-down.png" style="max-width:400px; margin: 0 auto" alt="Screenshot of annotator dashboard button">
119+
120+
#### Label Studio Converter CLI
121+
122+
When you install the Label Studio SDK, you can now use the `label-studio-converter` command from your terminal.
123+
124+
#### Miscellaneous
125+
126+
- Performance enhancements around how membership API requests are made.
127+
128+
- Added a new API call to rotate JWT tokens: [POST api/token/rotate](https://app.heartex.com/api/token/rotate/)
129+
130+
131+
### Security
132+
133+
- Addressed a CSP issue by removing `unsafe-eval` usage.
134+
135+
- Added a rule that password resets will be limited to 5 per hour.
136+
137+
- Upgraded Babel to address vulnerabilities.
138+
139+
- Improved security on CSV exports.
140+
141+
- Removed an unused endpoint.
142+
143+
- By default, CORS is permissive. However, you can now set an environment variable to ensure it is in strict mode. Set **one** of the following:
144+
- `CORS_ALLOWED_ORIGINS`
145+
A comma-separated list of Origin header values the Label Studio server will receive, e.g. `https://example.org,https://example.net`
146+
147+
- `CORS_ALLOWED_ORIGIN_REGEXES`
148+
Same as above, except using regex.
149+
- `CORS_ALLOW_ALL_ORIGINS`
150+
Set to `false` or `0` to reject all Origin header values (that is, allow no cross-origin requests). By default this is set to `true`.
151+
152+
153+
154+
### Bug fixes
155+
156+
- Fixed an issue where interacting with the Manage Members modal would sometimes throw an error.
157+
158+
- Fixed an issue where white-labeled Label Studios instances were showing the incorrect logo.
159+
160+
- Fixed an issue where the `Filter` tag did not work with `Choices` tags.
161+
162+
- Fixed an issue where annotators were seeing a misleading message that a project was not ready, even though the project was completed.
163+
164+
- Fixed a server worker error related to regular expressions.
165+
166+
- Fixed several small visual issues with the AI assistant.
167+
168+
- Fixed an issue that was causing multiple annotators to be assigned to tasks beyond the overlap settings.
169+
170+
- Fixed an issue where “Deleted User” repeatedly appeared in filter drop-down menus.
171+
172+
- Fixed an issue where clicking on the timeline region in the region list did not move the slider to the correct position.
173+
174+
- Fixed an issue where a "Script running successfully" message continuously appeared for users who had plugins enabled.
175+
176+
- Fixed an issue where the drop-down menu to select a user role was overflowing past the page edge.
177+
178+
- Fixed an issue where the `visibleWhen` parameter was not working when used with a taxonomy.
179+
180+
- Fixed an issue where there were some UI inconsistencies that would occur during certain page navigations.
181+
182+
- Fixed an issue where certain drop-down menus were inaccessible at different zoom levels.
183+
184+
- Fixed an issue where the Data Manager would go blank when filtering by the predicted model version.
185+
186+
- Fixed an issue where, if a 500 error was returned when syncing storage, the user would not see the error.
187+
188+
- Fixed an issue where forward and rewind hotkeys for audio were not working.
189+
190+
- Fixed an issue where the bars in the Tasks graph on the project dashboard were not accurately grouped by `reviewed_at` or `completed_at`.
191+

0 commit comments

Comments
 (0)