611 Commits

Author SHA1 Message Date
Vivian Leung
2de79074ab WebApp: Cast FormInputNumber value to Number onInput
Fix #104432, where the form throws an error and cannot be saved. It is
happening because the backend is expecting `number`, not `string`, and
whenever the user types, the value in the input gets changed to a
string. The solution is to cast `FormInputNumber` value to a number
`onInput` to always maintain the `number` type.

Pull Request: https://projects.blender.org/studio/flamenco/pulls/104434
2025-09-04 15:02:34 +02:00
Vivian Leung
7ddce9ac22 Manager: Add Input Validation to Settings page
Prevent fields from being empty, when it's known that Flamenco Manager
will not start up if they are.

The icons for the variable add/delete are enhanced with colors and
icons +/- or with a trashcan SVG.

Error/warning messages appear under inputs when values are invalid on
blur.

`FormInputDropdownSelect` is also created here, decoupling the
validation from Dropdown Select. `DropdownSelect`'s props now have
type definitions.

CSS selectors are more specified, and renamed to be more fitting.

### What 'required' means for each input

- For text, `required` means the field cannot be empty.
- For numbers, `required` means the field cannot be empty, and having
  a `min` and/or `max` means the number must be equal to or
  above/below the min/max.
- For dropdowns, `required` means the selection cannot be empty, and
  `strict` means that an option not included in the list passed to the
  `options` prop cannot be selected.
- For the new variable input, empty strings, duplicate variable names,
  and variable names that contain `{` or `}` are invalid.

### Required Settings

To keep the application running and remaining on the same page, these
fields **must** be non-empty strings:

- `database` and `shared_storage_path` (both which can be invalid so
  long as they are non-empty)
- `listen` (which MUST be a valid value AND non-empty) When
  `shared_storage_path` is empty, the application will automatically
  jump to the Setup Assistant which after completing will create a new
  `flamenco-manager.yaml` and restart the application. If `database`
  is empty and `listen` is not a proper port, the application will
  fail to start, leading the user to a dead end and forcing them to
  manually configure `flamenco-manager.yaml` to get it running again.

To prevent the backend from throwing a `Bad Request` error, numerical
and time duration inputs **must not** be null or empty:

- `database_check_period`, `task_timeout`, `worker_timeout`,
  `blocklist_threshold`, `task_fail_after_softfail_count`

Pull Request: https://projects.blender.org/studio/flamenco/pulls/104409
2025-09-01 14:24:56 +02:00
Sybren A. Stüvel
9603f3b711 Bumped version to 3.8-alpha2 2025-08-28 16:47:00 +02:00
Vivian Leung
4c2f4e831f Webapp: Prevent text wrapping in buttons
Prevent wrapping text in `<input type="button">` elements.

Pull Request: https://projects.blender.org/studio/flamenco/pulls/104427
2025-08-28 11:27:47 +02:00
Sybren A. Stüvel
ebb322864f Webapp: prevent rewrapping the Manager name in the header
Longer names could get rewrapped, but there is not enough vertical space
for this. Now rewrapping is prevented. Of course a very long name can still
cause layout issues, but at least now slightly-long names work fine.
2025-08-21 11:19:47 +02:00
Vivian Leung
91e26b101e Webapp: Configuration Editor (#104399)
Add a new "Settings" view, to edit the Flamenco Manager configuration
via the web interface. Saving the form will write directly to
`flamenco-manager.yaml`. Depending on how they are used internally by
Flamenco Manager, some settings take effect immediately; most require
a restart of the Manager process, though.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104399
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-08-21 11:15:53 +02:00
Sybren A. Stüvel
790159d735 Webapp: nicer styling of the 'Delete Jobs' confirmation popover
By using the flexbox layout model better, I could remove the `<div
class="align-right">` elements. And by adding a more visual border and
shadow, the popover looks good without having its height set explicitly.
This in turn makes it look good also when it's wrapping due to a small
screen size.
2025-08-19 16:19:18 +02:00
Vivian Leung
af2f0ec520 Mass Job Selection (#104418)
Add a "Select Preceding Jobs" button to the job table button bar.
Users can select a job (or multiple jobs) and click "Select Preceding
Jobs" which will then select all jobs with an updated timestamp that
precedes the selected job(s) updated timestamp.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104418
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-08-19 16:17:56 +02:00
Sybren A. Stüvel
0d57d1e84d Webapp: use flexbox styling to handle button spacing
Instead of setting `margin-left` on all but the first button, use the
`gap` property to set the inter-button gap. This works properly when
buttons rewrap.
2025-08-19 11:14:29 +02:00
Vivian Leung
bd2ebac519 Workers table: Add multi-select and support actions for multiple items (#104395)
Add the following features:

- `Ctrl + Click` or `Cmd + Click` to toggle selection of additional workers
- `Shift + Click` to select a range of additional workers
- Ability to perform `Shutdown`, `Send To Sleep`, and `Wake Up` actions on multiple workers concurrently
- Notifications on how many workers successfully/failed to have an action performed

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104395
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-08-18 11:53:28 +02:00
Vivian Leung
58e2745838 Backend YAML Config Editor (#104406)
Add a PUT method for `/api/v3/configuration/file`, which entirely
replaces `flamenco-manager.yaml` with the received JSON payload. This
will be used in the future to store configuration edited in the web
frontend.

Ref: #99426

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104406
2025-08-05 18:24:01 +02:00
Vivian Leung
6284734521 Fix Workers and Tags view when window width is 960px or less (#104413)
Issue likely began after 7b31eba8d7614e82cfcc4583e1dd3c2f40f87944 as
it was an issue with header not being properly positioned.

Just needed to add `header-L` and `header-R` to `grid-template-areas`
and adjust the rest accordingly, and fix a class name typo.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104413
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-07-18 08:15:29 +02:00
Vivian Leung
dcb184e28e Prevent text in nav list items from wrapping onto multiple lines (#104411)
Force menu items to stay on one line.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104411
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-07-17 10:54:51 +02:00
Vivian Leung
11a052d854 Web app: Add multi-select of jobs (#104391)
Add the following features:

- `Ctrl + Click` or `Cmd + Click` to toggle selection of additional jobs
- `Shift + Click` to select a range of additional jobs
- Ability to perform `Pause`, `Cancel`, `Requeue`, and `Delete` actions on multiple jobs concurrently
- Notifications on how many jobs successfully/failed to have an action performed

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104391
2025-07-04 11:18:48 +02:00
Jonas Holzman
f0fca60427 Tasks Table: Add Worker column (#104402)
Add a `Worker` column to the Job Tasks Table. This lets artists quickly
visualize on which machine a task is currently running, giving better
insights on worker utilization, as well as better expectations on how
long a task might take to finish when running Flamenco on a Renderfarm
made of different slow / fast workers.

Similarly to the Task Details panel for the "Assigned To"  field
`LinkWorker` Vue element, the cell element contains an hyperlink to the
corresponding worker in the Workers page. Since the Worker page also
contains a backlink to the currently running task, this lets user
quickly navigate between the two pages, as seen in the screen recording
demo below.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104402
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-06-30 14:37:00 +02:00
Vivian Leung
6c23d5966d Tasks Table: Freeze sorting on Shift key down (#104388)
Listen to the key press of the Shift key on the Tasks list and disable
any table sorting until it is released.

Related to #104386. When a user is performing multi-select, they hold
the Shift key down and intend to click the next row which determines
which rows are selected. To avoid unintended selections, the UI should
not update or shift around in the middle of the user interaction.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104388
2025-06-19 12:09:37 +02:00
Vivian Leung
984b132d81 Webapp: Add multi-select of tasks and support actions for multiple tasks (#104386)
Add the following features:
- `Ctrl + Click` / `Cmd + Click` to toggle selection of additional
  tasks.
- `Shift + Click` to select a range of additional tasks.
- Ability to perform `Cancel` and `Requeue` actions on multiple tasks
  concurrently.
- Notifications on how many tasks successfully/failed to have an
  action performed.

Tabulator has selectable rows built-in and provides a function that
can return an array of all selected rows. However, tabulator's default
behavior for multi-selection does not reset to a single task after
each regular click. Therefore, I built a custom multi-select using the
tabulator API, introducing `Shift + click` and `Ctrl + click` and
matching their behaviors as they work in most file explorers,
including Blender's.

In addition to manipulating the Tabulator's row selection, the state
of selected Tasks is also needs to be copied to Pinia stores. This
stores will allow us to access selected Tasks from any component and
make API calls on them.

Ref: #99396

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104386
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-06-02 12:17:43 +02:00
Vivian Leung
c5785a7c97 Update Tabulator (#104390)
Updates Tabulator package from 5.4 to 6.3

The relevant breaking change is the change of the `selectable` variable to `selectableRows`

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104390
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-05-27 18:07:42 +02:00
Vivian Leung
22d43ee068 Blocklist: Wrap table rows in table body, add key directive (#104383)
Fix a potential hydration issue warning from vite, by adding the `key`
attribute to each table row.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104383
2025-05-09 11:31:29 +02:00
Vivian Leung
74d96bd02e Fix #104289: Task Name Column partially hidden (#104379)
Adjust the padding for the task name column, by setting a minimum
width.

This makes the task name column wide enough to go into the 10k-99k
frame numbers.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104379
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-04-25 11:02:58 +02:00
Sybren A. Stüvel
0eae746b18 Bumped version to 3.8-alpha1 2025-04-03 12:26:13 +02:00
Sybren A. Stüvel
d7eca92950 Bump version to 3.7 2025-04-03 12:16:42 +02:00
Sybren A. Stüvel
b80bad12cd Bump version to 3.7-beta1 2025-02-28 12:32:40 +01:00
Sybren A. Stüvel
44be746ab6 Bumped version to 3.7-alpha1 2024-12-01 15:06:51 +01:00
Sybren A. Stüvel
940f814fcc Bumped version to 3.6 2024-12-01 14:54:15 +01:00
Sybren A. Stüvel
7f37c16a8d Add 'index in job' number to tasks
Number the tasks in a job, indicating their creation order. This gives the
web interface something to sort on that doesn't change on task updates.
2024-11-09 23:07:23 +01:00
Sybren A. Stüvel
b3385394ae OAPI: regenerate code 2024-11-09 23:01:52 +01:00
Sybren A. Stüvel
d61f6c9e14 Manager: in setup assistant, find Blender in macOS default install dir
On macOS, automatically find Blender when it is installed in the default
installation directory (`/Applications/Blender.app`)
2024-10-03 21:15:56 +02:00
Sybren A. Stüvel
cbf82e4a55 OAPI: regenerate code 2024-10-03 21:15:56 +02:00
Sybren A. Stüvel
29a0c596cc Bumped version to 3.6-alpha5 2024-09-30 11:46:54 +02:00
Sybren A. Stüvel
1f562b3cbc OAPI: Regenerate code 2024-09-30 11:24:39 +02:00
Sybren A. Stüvel
cda0b916fb Manager: replace queryJobs with fetchJobs operation
See the previous two commits for the motivation.
2024-09-18 14:29:15 +02:00
Sybren A. Stüvel
7b592950e4 Bumped version to 3.6-alpha4 2024-09-10 10:59:10 +02:00
Mateus Abelli
6baa132c43 Manager: allow setup to finish without Blender
Add an option to the setup assistant to skip configuring the path to
Blender. It will just use the `default` option, which causes the Workers
to try and find Blender on their own.

Fixes #104306

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104306
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2024-09-09 11:22:16 +02:00
Mateus Abelli
0a98fd2b96 OAPI: regenerate code 2024-09-09 11:22:16 +02:00
Sybren A. Stüvel
8f9ed0cc28 Manager & Webapp: code changes to handle the new worker tag info in Job
Manager: Instead of embedding the worker tag info in a fetched `Job`,
just include its UUID.

Webapp: fetch the worker tag by UUID, instead of using the embedded
info.
2024-07-30 11:03:03 +02:00
Sybren A. Stüvel
2f4124ebc2 OAPI: regenerate code 2024-07-30 11:01:51 +02:00
Sybren A. Stüvel
8f7dd2bc07 Webapp: remove unused code
Remove some code that was meant to show the worker tag, but that never
worked properly.
2024-07-29 17:53:25 +02:00
Sybren A. Stüvel
df4f94c642 Manager: show worker tag in job details
Show the worker tag name (and its description in a tooltip) in the job
details. When no worker tag is assigned, "All Workers" is shown in a more
dimmed colour.

This also renames the "Type" field to "Job Type". "Tag" and "Type" could
be confused, and now they're displayed as "Worker Tag" and "Job Type".

The UI in the add-on's submission interface is also updated for this, so
that that also shows "Worker Tag" (instead of just "Tag").
2024-07-29 17:50:11 +02:00
Sybren A. Stüvel
e8438bb645 OAPI: regenerate code 2024-07-29 17:45:14 +02:00
David Zhang
376112b392 OAPI: regenerate code 2024-07-09 22:57:00 -04:00
David Zhang
aac55e7e3c Manager: Support pausing jobs
A job first goes to `pause-requested` status, during which any `active` task
gets a chance to be completed. Once there are no more active tasks, the job
goes to `paused` state (or `failed`, if that is applicable).

Pull request: https://projects.blender.org/studio/flamenco/pulls/104313
2024-07-01 10:59:37 -04:00
David Zhang
1330487078 OAPI: regenerate code 2024-07-01 10:46:57 -04:00
Sybren A. Stüvel
6fb8ab92e2 Bumped version to 3.6-alpha3 2024-06-27 09:58:55 +02:00
Sybren A. Stüvel
125e9aba23 Bumped version to 3.6-alpha2 2024-06-25 17:53:16 +02:00
Sybren A. Stüvel
d3a3178300 Bumped version to 3.6-alpha1 2024-06-25 11:26:12 +02:00
Sybren A. Stüvel
7c8a700187 Webapp: only emit 'activeJobDeleted' event when the active job was deleted
Only emit the `activeJobDeleted` event when the active job was deleted.
Previously this was emitted on _any_ job deletion, which would make working
with the web interface quite confusing when mass deletion was happening,
as it would always deselect the job, even when showing an unrelated job.
2024-06-06 16:46:51 +02:00
Mateus Abelli
4aa391c679 Webapp: Fix superfluous null comparison
Remove the superfluous comparison to `(null || '')`. Just compare to
the empty string instead.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104307
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2024-05-13 16:21:34 +02:00
Sybren A. Stüvel
5ee4871e39 OAPI: regenerate code 2024-05-07 11:55:56 +02:00
Sybren A. Stüvel
d279f91549 Bumped version to 3.6-alpha0 2024-04-24 17:32:01 +02:00