Conversation
…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
…feature/custom-model-editor Revert "Feature/custom model editor"
This reverts commit 6f0f924.
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>
… cert gen tb2 cli
…them for generation-specific CA validation
…mplify CA validation logic for TB1/TB2 generation verification
…nstead of ca_cert_setting
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.