Skip to content

Next Version#435

Open
SciLor wants to merge 91 commits into
masterfrom
develop
Open

Next Version#435
SciLor wants to merge 91 commits into
masterfrom
develop

Conversation

@SciLor

@SciLor SciLor commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

No description provided.

Christian Ditscher and others added 30 commits March 9, 2026 23:33
…anagement

- Backend: tonies.custom.json save API with validation and backups
- Backend: custom_img root support for image workflows
- Frontend: Full editor for custom models (add, edit, delete)
- Frontend: Image picker and file browser integration
- Remove built web assets (now built from teddycloud_web submodule)
- Remove custom_editor_preview setting (editor always active)
- Ignore contrib/data/www/ (compiled web assets)
- Update teddycloud_web submodule (v0.7.0, PR feedback)

Made-with: Cursor
- Added ca-certificates to the list of packages installed in the build environment.
- Introduced a new `dev-sandbox` directory for running TeddyCloud with mock data.
- Added Docker support for local development, including setup and teardown scripts.
- Included configuration files and sample data for testing.
- Updated `.gitignore` to exclude sandbox runtime data.
- Enhanced README with instructions for using the development sandbox.
- Use free audio content for audio_*.taf (source: https://pixabay.com/sound-effects/musical-comedy-stinger-quick-joke-cue-469097/).
- Added functions to resolve cached URLs to original URLs when cache is disabled.
- Implemented cache entry creation for redirects based on index lookup.
- Updated cache handling in the server to utilize the persistent index for missing entries.
- Enhanced JSON handling to persist original URLs instead of cached paths for image loading.
…oad timeout

- Restore contrib/data/www/ from develop
- Reset teddycloud_web submodule to develop
- Add core.file_upload_timeout_ms
- Replaced the old `docker-compose.test.yaml` with a new `docker-compose.yaml` for simplified Docker setup.
- Introduced a new `Dockerfile` for building the development environment with necessary dependencies.
- Updated `Makefile` to reflect changes in Docker commands and improve output formatting.
- Modified `setup.sh` to ensure proper directory structure and file copying for the sandbox.
- Updated `README.md` with clearer usage instructions for the development sandbox.
- Adjusted JSON configuration files for tonies to ensure correct audio source references.
- Added new content JSON files for additional tonies models.
…feature/custom-model-editor

Revert "Feature/custom model editor"
The Docker build requires pre-built web assets in contrib/data/www/web/
since the Dockerfiles run `make zip` which depends on `web_copy` but not
on `web` (no Node.js is installed in the build stage). Excluding this
directory caused: cp: cannot stat 'contrib/data/www/web/*'
Modified the GitHub Actions workflow to handle Docker builds and tests differently for forked repositories. Added conditions to load images locally for forks and push to GHCR for non-fork PRs. Adjusted output handling and tag management accordingly.
Changed the Docker service name from 'teddycloud-test' to 'teddycloud' in the dev-sandbox setup and restart commands to ensure correct service management.
Updated the GitHub Actions workflow to streamline Docker image loading and pushing based on event type. Adjusted conditions to load images locally for all pull requests (fork + non fork) and push by digest for non-PR events, improving clarity and functionality in the CI/CD process.
Reapply: Custom model editor (fix Docker build)
Bumps [actions/github-script](https://github.com/actions/github-script) from 8 to 9.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](actions/github-script@v8...v9)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '9'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
…github_actions/develop/actions/github-script-9

Bump actions/github-script from 8 to 9
Enhance condition for valid tonieInfo check
Co-authored-by: Copilot <copilot@github.com>
SciLor and others added 30 commits May 28, 2026 21:04
…mplify CA validation logic for TB1/TB2 generation verification
The restart loop in docker-entrypoint.sh never restarted teddycloud:

- `set -o errexit` aborted the script as soon as teddycloud exited
  non-zero, before the restart check could run.
- The check compared the exit code against -2, but teddycloud exits with
  internal.returncode (src/server.c: exit(ret)); RETURNCODE_USER_RESTART
  (-2) reaches the shell as the unsigned 8-bit code 254, so the check
  never matched.

Capture the exit code with errexit temporarily disabled and compare it
against 254, so a user-requested restart actually restarts in place
while every other exit code still leaves the loop as before.

Fixes #448
The API setters reject out-of-range values, but the config-file load
path (settings_load_ovl) wrote parsed TYPE_SIGNED/TYPE_UNSIGNED values
straight to the struct, so a hand-edited or corrupted config.ini /
config.overlay.ini could set values outside an option's declared range.

Apply the same range check on load, but only when the option declares a
real range (max > min), so unbounded internal options (min == max, or
UINT64_MAX maxima such as timestamps/counters) keep their raw value. On
an out-of-range value, warn and keep the current/default.

Fixes #451
The browser-side TAF encoder grows its output via buffer_write(), which
returns -1 when realloc() fails (e.g. once the WASM heap reaches
MAXIMUM_MEMORY). Every call site ignored that return value, so on a long
recording the encoder stopped appending data but taf_encoder_encode()/
finalize() still returned success - the user got a truncated TAF
reported as a complete file (teddycloud_web#281).

- Check buffer_write()/buffer_write_at() at every call site and propagate
  the failure: taf_encoder_encode()/finalize() return -1 and
  taf_encoder_create() cleans up and returns NULL, so a real OOM surfaces
  as an error instead of silent data loss.
- Raise the encoder heap cap MAXIMUM_MEMORY 256MB -> 2GB in the Makefile
  wasm target (ALLOW_MEMORY_GROWTH is already on) so typical multi-hour
  recordings encode fully.

Refs toniebox-reverse-engineering/teddycloud_web#281
The cache list (cache_table) is built at startup from tonies.json and
lives for the whole process, but was never freed, so every cache_entry_t
and its three strdup() strings were reported as leaked, the bulk of the
LeakSanitizer output in #304. Add cache_deinit() that walks and frees
the list and call it from the server shutdown path next to
tonies_deinit(). cache_table is a static head node, so only the .next
chain is freed; it runs single-threaded after the HTTP server stops.

Fixes #304
parsePostData did a single httpReceive(), which returns only the first
TCP segment of the body. When the body arrives in a separate segment
(common with Firefox), it was silently truncated, e.g. the encode
 target= param was dropped and the request failed with HTTP 400. Loop
until the full Content-Length has been read.

Fixes toniebox-reverse-engineering/teddycloud_web#171
… filenames resolve

Define the override in include/fs_port_config.h (cyclone's documented config header, included before fs_port.h's #ifndef default) instead of patching the vendored cyclone header. Fixes long-filename resolution (issue #374).
Adds a contributor guide: the develop-not-master PR policy, the two-repo
(server + teddycloud_web) layout, the Docker build, the src/cyclone
vendored-patch convention, and code-style notes. A starting point that
maintainers can adjust.

Fixes #59
ffmpeg_stream_task placed a ~400 KB char source[99][PATH_LEN] on its
task stack. osCreateTask does not honor the requested stackSize on the
pthread backend, so on small default thread stacks (notably musl/Alpine,
~128 KB) this overflowed and segfaulted as soon as a web-radio/stream
started. Move the array to the heap and free it after use.

Fixes #160
cert_generate_signed wrote the raw PKCS#1 DER key bytes into .pem-named
files (e.g. ca-key.pem, teddy-key.pem), so the on-disk keys were DER
despite the extension and unreadable by tools expecting PEM. Detect a
.pem/.key extension and export the key as PEM (PKCS#8) via
pemExportRsaPrivateKey, mirroring cert_generate_signed_ec; .der targets
(e.g. client private.der) keep DER. The export uses a fixed buffer, not
a NULL-output sizing call (which crashes here).

Existing DER-in-.pem keys still load via the runtime auto-detection, so
only newly generated keys change.

Fixes #115
…path

The build-windows-amd64 job hardcoded the Visual Studio install path
(2022\Enterprise). GitHub is migrating the windows-latest runner image to
windows-2025-vs2026, which no longer has that path, so the "Build windows"
step fails immediately with "The system cannot find the path specified."
This currently breaks every PR and the develop branch.

Use vswhere.exe (always present at the fixed Installer location) to resolve
the active VS installation dynamically and call its vcvars64.bat. This works
across VS versions/editions and keeps the existing make-based build intact.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants