2193 Commits

Author SHA1 Message Date
Sybren A. Stüvel
0b50f154cc Website: remove the instructions to install make
`make` is no longer needed to build Flamenco, and so the installation
instructions (especially for Windows and macOS) can be made considerably
simpler.
2025-06-17 10:41:31 +02:00
Sybren A. Stüvel
40d66d4a8e Update CHANGELOG 2025-06-17 10:38:35 +02:00
Sybren A. Stüvel
d7d4c62804 Fix vulnerability GO-2025-3503
Vulnerability: GO-2025-3503
    HTTP Proxy bypass using IPv6 Zone IDs in golang.org/x/net
  More info: https://pkg.go.dev/vuln/GO-2025-3503
  Module: golang.org/x/net
    Found in: golang.org/x/net@v0.27.0
    Fixed in: golang.org/x/net@v0.36.0
    Example traces found:
      #1: internal/manager/eventbus/mqtt_client.go:103:37: eventbus.MQTTForwarder.Connect calls autopaho.NewConnection, which eventually calls proxy.FromEnvironment
      #2: internal/manager/eventbus/mqtt_client.go:103:37: eventbus.MQTTForwarder.Connect calls autopaho.NewConnection, which eventually calls proxy.PerHost.Dial
2025-06-17 10:36:45 +02:00
Sybren A. Stüvel
8e18a5aa8e Fix vulnerability GO-2025-3533
Vulnerability: GO-2025-3533
    Improper Handling of Highly Compressed Data (Data Amplification) in
    github.com/getkin/kin-openapi/openapi3filter
  More info: https://pkg.go.dev/vuln/GO-2025-3533
  Module: github.com/getkin/kin-openapi
    Found in: github.com/getkin/kin-openapi@v0.88.0
    Fixed in: github.com/getkin/kin-openapi@v0.131.0
    Example traces found:
      #1: cmd/flamenco-manager/webservice.go:193:17: flamenco.runWebService calls echo.Echo.Start, which eventually calls openapi3filter.ValidateRequest
2025-06-17 10:36:45 +02:00
Sybren A. Stüvel
8813538c31 Bump Go from 1.23.1 to 1.24.4
This fixes four security issues:

Vulnerability #1: GO-2025-3751
    Sensitive headers not cleared on cross-origin redirect in net/http
  More info: https://pkg.go.dev/vuln/GO-2025-3751
  Standard library
    Found in: net/http@go1.23.5
    Fixed in: net/http@go1.23.10
    Example traces found:
      #1: pkg/api/openapi_client.gen.go:1212:20: api.Client.TaskOutputProducedWithBody calls http.Client.Do
      #2: pkg/api/openapi_spec.gen.go:318:36: api.GetSwagger calls openapi3.Loader.LoadFromData, which eventually calls http.Get

Vulnerability #2: GO-2025-3750
    Inconsistent handling of O_CREATE|O_EXCL on Unix and Windows in os in
    syscall
  More info: https://pkg.go.dev/vuln/GO-2025-3750
  Standard library
    Found in: os@go1.23.5
    Fixed in: os@go1.23.10
    Platforms: windows
    Example traces found:
      #1: internal/manager/last_rendered/image_processing.go:54:24: last_rendered.saveJPEG calls os.Create
      #2: internal/manager/api_impl/meta.go:144:28: api_impl.Flamenco.CheckSharedStoragePath calls os.CreateTemp
      #3: internal/manager/job_compilers/scripts.go:54:31: job_compilers.loadScriptsFrom calls fs.ReadDir, which calls os.File.ReadDir
      #4: pkg/shaman/filestore/testing.go:107:25: filestore.LinkTestFileStore calls filepath.Walk, which eventually calls os.File.Readdirnames
      #5: internal/manager/local_storage/local_storage.go:116:22: local_storage.getSuitableStorageRoot calls os.Getwd
      #6: pkg/shaman/filestore/testing.go:107:25: filestore.LinkTestFileStore calls filepath.Walk, which calls os.Lstat
      #7: pkg/shaman/checkout/manager.go:274:24: checkout.Manager.SymlinkToCheckout calls os.MkdirAll
      #8: pkg/shaman/filestore/testing.go:38:30: filestore.CreateTestStore calls os.MkdirTemp
      #9: pkg/shaman/touch/touch.go:26:2: touch.init calls os.init, which calls os.NewFile
      #10: internal/manager/task_logs/task_logs.go:183:22: task_logs.Storage.Tail calls os.Open
      #11: internal/manager/config/config.go:662:23: config.Conf.Write calls os.OpenFile
      #12: cmd/blender-runner/blender-runner.go:43:35: blender.main calls exec.Cmd.StderrPipe, which calls os.Pipe
      #13: internal/manager/job_compilers/scripts.go:54:31: job_compilers.loadScriptsFrom calls fs.ReadDir, which eventually calls os.ReadDir
      #14: internal/manager/config/config.go:199:30: config.loadConf calls os.ReadFile
      #15: pkg/shaman/checkout/manager.go:196:11: checkout.Manager.EraseCheckout calls os.Remove
      #16: pkg/shaman/checkout/manager.go:189:24: checkout.Manager.EraseCheckout calls os.RemoveAll
      #17: internal/manager/config/config.go:647:21: config.Conf.Overwrite calls os.Rename
      #18: cmd/blender-runner/blender-runner.go:52:21: blender.main calls exec.Cmd.Start, which calls os.StartProcess
      #19: pkg/shaman/checkout/manager.go:175:18: checkout.Manager.EraseCheckout calls os.Stat
      #20: pkg/shaman/checkout/manager.go:244:18: checkout.Manager.SymlinkToCheckout calls os.Symlink
      #21: cmd/sqlc-export-schema/main.go:87:24: sqlc.saveSchema calls os.WriteFile
      #22: web/web_app.go:55:24: web.FSWrapper.Open calls echo.defaultFS.Open, which calls os.dirFS.Open
      #23: internal/manager/job_compilers/scripts.go:54:31: job_compilers.loadScriptsFrom calls fs.ReadDir, which calls os.dirFS.ReadDir
      #24: internal/manager/config/config.go:662:23: config.Conf.Write calls os.OpenFile, which eventually calls syscall.Open

Vulnerability #3: GO-2025-3563
    Request smuggling due to acceptance of invalid chunked data in net/http
  More info: https://pkg.go.dev/vuln/GO-2025-3563
  Standard library
    Found in: net/http/internal@go1.23.5
    Fixed in: net/http/internal@go1.23.8
    Example traces found:
      #1: pkg/shaman/hasher/copier.go:51:21: hasher.Copy calls http.body.Read, which eventually calls internal.chunkedReader.Read

Vulnerability #4: GO-2025-3447
    Timing sidechannel for P-256 on ppc64le in crypto/internal/nistec
  More info: https://pkg.go.dev/vuln/GO-2025-3447
  Standard library
    Found in: crypto/internal/nistec@go1.23.5
    Fixed in: crypto/internal/nistec@go1.23.6
    Platforms: ppc64le
    Example traces found:
      #1: internal/manager/config/config.go:666:13: config.Conf.Write calls fmt.Fprintf, which eventually calls nistec.P256Point.ScalarBaseMult
      #2: internal/manager/config/config.go:666:13: config.Conf.Write calls fmt.Fprintf, which eventually calls nistec.P256Point.ScalarMult
      #3: internal/manager/config/config.go:666:13: config.Conf.Write calls fmt.Fprintf, which eventually calls nistec.P256Point.SetBytes
2025-06-17 10:35:34 +02:00
Sybren A. Stüvel
0315f15277 Add make check target
Add a `make check` target, which just forwards to `mage check`.
2025-06-17 10:15:58 +02:00
Sybren A. Stüvel
67d66422fd Website: update & expand doc of mage and make targets
Update & expand the available argets for `mage` and `make`.
2025-06-17 10:14:46 +02:00
Sybren A. Stüvel
564375d40f Addon: bump BAT v1.18 → 1.19
This is necessary to support Blender 5.0 files.

See blender/blender-asset-tracer!92893 for more info.
2025-06-16 12:46:38 +02:00
Vivian Leung
dbb393f62f Add a test script to add a mock Worker (#104394)
Add a script `debug-worker-add.sh` which allows additions of mock
workers to Flamenco. It is useful for testing the UI for larger lists of
worker items.

It assists the development of multi-selection for workers #104395

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104394
2025-06-10 11:41:19 +02:00
Jonas Holzman
542fb5403b Docs: Fix wrong exe parameter name for the exec command (#104396)
Small documentation issue I ran into while writing a custom job type

The exec command takes an `exe` parameter, similar to other commands,
but the documentation wrongly indicates the parameter should be `exec`.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104396
2025-06-07 11:42:43 +02:00
Sybren A. Stüvel
8b4eeb7c69 Update CHANGELOG.md 2025-06-02 12:19:52 +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
Jonas Holzman
ccc002036b Fix v3.7 release year in CHANGELOG.md (#104393)
It's 2025 already!

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104393
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-05-30 09:12:49 +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
Sybren A. Stüvel
3541575a75 Avoid error when fetching task that was assigned to soft-deleted worker
When a Worker is soft-deleted, references to it are not cleaned up by
the database (that only happens when it is really deleted). As a result,
the "last-assigned worker of a task" field is still set, but the worker
itself cannot be fetched any more.

This is just a quick fix to avoid an error. It's probably better to
remove the soft-deletion of Workers, as the feature is not really used
anyway. Or to implement it properly, so that the info is used.
2025-05-26 17:57:51 +02:00
tariqsulley
55491675e2 Typo Fix (#104389)
This pr fixes a typo on the flamenco shared storage page.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104389
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-05-25 15:52:19 +02:00
Sybren A. Stüvel
33fbddc32b Add 'task poker' command
Add a utility command `cmd/task-poker` that takes a job ID and changes the
status of a random task every second.

This is a development utility, to help work on the Manager's web interface
and deal with constantly-updating tasks.
2025-05-20 18:52:00 +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
Sybren A. Stüvel
dc152d6c9a Website: add alias /devstart to the developer "getting started" page
Add `/devstart` as an alias to `/development/getting-started/` page. This
is to be able to use a shorter link in the documentation I'm writing for
my hands-on class at SIGGRAPH 2025.
2025-05-06 15:27:43 +02:00
Vivian Leung
190e26adc0 Update the Javascript instructions for initializing Flamenco's API (#104387)
Updated to match the current way of initializing API's with `getAPIClient()`

It seems possible the Python instructions might need an update as well.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104387
2025-05-06 09:19:43 +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
Srivathsav-Kyatham
84e4a28d6c Allow CORS requests from localhost for development (#104385)
Allow CORS requests from `http://localhost:<port>`. Some webbrowsers
(like Safari) are picky about hostname vs. IP addresses, and this
makes them work well with the webapp development server.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104385
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-04-24 15:23:09 +02:00
Srivathsav-Kyatham
d2bdc9690d Website: update file path of SocketIO handling
Change `webupdates/webupdates.go` to `eventbus/socketio.go`

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104381
2025-04-10 12:02:35 +02:00
Avi Gupta
0c811721fe Website: Add docs for MacOS under "utilities" in "getting started"
Add instructions for installing `make`.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104378
2025-04-07 11:28:20 +02:00
Sybren A. Stüvel
31096b34a7 Website: update GSoC text
I've taken out the plagiarism thing, and added a "become familiar with
Flamenco" thing.
2025-04-05 10:12:59 +02:00
Sybren A. Stüvel
f298e5d03b Website: add clause about the use of AI to the GSoC page 2025-04-03 15:28:30 +02:00
Sybren A. Stüvel
d2f63d4d68 Website: publish Flamenco 3.7 as latest release 2025-04-03 12:32:05 +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
72c1bad4d0 Fix: actually use the correct rsync parameters
`-p ${WEBSERVER_SSH_PORT}` should be in a `"-e ssh ..."` parameter.
2025-04-03 12:23:48 +02:00
Sybren A. Stüvel
4c5cf91f8a Changelog: mark 3.7 as released today 2025-04-03 12:21:59 +02:00
Sybren A. Stüvel
c51266cce0 Makefile: also include SSH port in publish-release-packages step 2025-04-03 12:21:25 +02:00
Sybren A. Stüvel
d7eca92950 Bump version to 3.7 2025-04-03 12:16:42 +02:00
Sybren A. Stüvel
534e09d905 Makefile: include SSH port in .env file
Include the SSH port in the `.env` file, so that we can rsync to non-
default port numbers.
2025-04-03 12:14:36 +02:00
gitjeet
4a55b7feef Cleanup: fix typo StoreAuthoredJobTaks to ...Task (#104373)
No functional changes.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104373
2025-04-03 12:04:42 +02:00
Sybren A. Stüvel
f239046702 Website: remove linkTitle: GSoC
Remove the `linkTitle: GSoC` from the GSoC page front matter. It is not
used for the links in the navigation tree, which is why I put it there
to begin with.
2025-04-03 10:48:05 +02:00
Sybren A. Stüvel
a1f97e8f19 Website: link to Blender's 'contributing code' docs 2025-04-03 09:58:26 +02:00
Sybren A. Stüvel
8e5f6d006d Website: add GSoC section
Add a section for GSoC.
2025-04-03 09:57:54 +02:00
Nitin-Rawat-1
edc57ab392 Bump packaged FFmpeg version 5.1.2 -> 7.0.2
The previously-bundled version was so old, when packaging FFmpeg for
Windows release, FFmpeg could not be downloaded any more.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104351
2025-03-31 15:53:43 +02:00
Srivathsav-Kyatham
4be5c1ca5b Update Darwin system information implementation (#104361)
Instead of just showing "macOS", now show the name as declared by the
OS itself, the version, and the kernel/build version.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104361
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2025-03-25 10:45:57 +01:00
gitjeet
97109a6c92 Fix typo: from listerer to listener
No functional changes.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104368
2025-03-25 10:33:20 +01:00
Sybren A. Stüvel
f6d1d85722 Mage: Add gofmt to the Mage commands
Add two new mage commands:

- `mage format`: run `gofmt` on all the Go sources.
- `mage formatCheck`: run the formatter to check formatting issues. This
  will output the diff to make the code format-compliant.

These commands are also available via `make format` resp. `make
format-check`.
2025-03-24 18:12:27 +01:00
Sybren A. Stüvel
da4dd490d0 Cleanup: explicitly silence linter for empty else clause
The `else` block does contain a comment to explain what situation we're
in when the `if` condition is false. I like that construct, but
golangci-lint did not.

No functional changes.
2025-03-20 13:46:20 +01:00
Sybren A. Stüvel
5a5742ce60 Cleanup: explicitly ignore error when requesting shutdown
Explicitly ignore an error when requesting the Manager to shut down.
This was already ignored implicitly, but now it's explicit to make
linters happy.

No functional changes.
2025-03-20 13:45:12 +01:00
Sybren A. Stüvel
44470b892b Manager: handle job deletion errors more uniformly
Some error cases were returned, others were logged AND returned. Now all
errors are just returned, and the caller always logs them.
2025-03-20 13:40:17 +01:00
Sybren A. Stüvel
f1de595acc Manager: log an error when database rollback fails
Log an error when a database transaction rollback fails. I wouldn't know
how to test, because usually stuff Just Works, but it's good to have
this logged anyway.
2025-03-20 13:33:23 +01:00
Sybren A. Stüvel
5706fe435a Manager: fix issue in first-time setup wizard causing empty blender var
Fix an issue in the First-Time Setup wizard, which caused an empty `blender`
variable when using the system-default location for Blender.

Fixes #104366
2025-03-20 13:20:32 +01:00
Sybren A. Stüvel
a666b87f7f Manager: warn when the blender variable has no value
When the `blender` variable has no value, Flamenco will not be able to
run Blender, which is worth emitting a warning about early on.

This required a bit of a reshuffle of the configuration loading logic, to
avoid loading things twice (and thus warning twice).

Fixes part of #104366
2025-03-20 13:09:42 +01:00
Sybren A. Stüvel
0766074120 Website: set 3.7-alpha1 as last experimental version 2025-02-28 12:34:52 +01:00
Sybren A. Stüvel
b80bad12cd Bump version to 3.7-beta1 2025-02-28 12:32:40 +01:00
Sybren A. Stüvel
d10bb0a9d7 Manager: at startup check for stuck pause-requested jobs
When the Manager starts up, it now also checks whether `pause-requested`
jobs can actually go to `paused`.
2025-02-28 12:32:36 +01:00