Skip to content

Next Version#295

Open
SciLor wants to merge 58 commits into
masterfrom
develop
Open

Next Version#295
SciLor wants to merge 58 commits into
masterfrom
develop

Conversation

@SciLor

@SciLor SciLor commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

No description provided.

Christian Ditscher and others added 30 commits March 9, 2026 23:12
…tion

- Full editor for tonies.custom.json (add, edit, delete entries)
- Image management via reusable file browser (upload, select, custom_img)
- Form validation, defaults, and localization
- Remove custom_editor_preview setting (editor always active)
- Ignore contrib/data/www/ (compiled web assets)
- Update teddycloud_web submodule (v0.7.0, PR feedback)
- aligned Custom-Model-Editor with tonies view
- Implemented custom image management in the library
- Introduced selection options for custom and original images in TeddyStudio and Custom-Model-Editor
- Added audio setting option in tonie edit modal for differing audio sources
- Updated translations for better clarity and consistency across languages
- Updated translations and removed defaultValue
- Refactored and organized custom model utilities and types for better maintainability
- Add useUploadTimeoutMs hook
- Use setting in UploadFilesModal and SelectImageModal
- Localize upload timeout error message
- Updated Vite configuration to support dynamic proxy URLs for API requests ued for dev sandbox.
- Added new translations for improved user experience across multiple languages.
- Introduced new modals for selecting audio and images with enhanced functionality.
- Implemented a Custom Model Card component for better display and interaction with custom models.
- Refactored the Custom Model Editor to streamline the editing process and improve usability.
- Added new components for selecting and managing custom and original images, including ThumbnailCell, CustomImagesPanel, and OriginalImagesPanel.
- Introduced hooks for managing original image data and search functionality.
- Updated SelectImageModal to support multiple image selection and improved UI interactions.
- Enhanced translations for better user experience across multiple languages.
- Refactored file browser components to integrate new image selection features.
- removed outdated Vite configuration for  proxy URL.
- Enhanced ThumbnailCell to utilize Ant Design's theme for consistent styling.
- Refactored SelectImageModal to optimize state management and UI interactions without hardcoded pixels.
- Improved responsiveness and layout of file browser components.
Updated Packages to fix vulnerabilities, removed legacy ESP32 flasher, added bottem/left margin option to TeddyStudio
feat: Custom models editor with image picker and file browser integration
Adds six SIL Open Font License v1.1 typefaces (latin + latin-ext woff2,
weight 400) under src/components/tonies/teddystudio/styles/fonts/ so
TeddyStudio can render labels with kid-friendly / accessible typography
without fetching from fonts.googleapis.com at runtime — printing offline
must still work.

Bundled families:
- Atkinson Hyperlegible (accessibility-focused)
- Fredoka (rounded sans)
- Bubblegum Sans (display)
- Patrick Hand (handwritten)
- Indie Flower (handwritten)
- Schoolbell (chalkboard)

A companion fonts.css declares matching @font-face rules with
unicode-range so each subset only loads when needed. The web-safe
families (sans-serif, serif, Comic Sans MS, Courier New) are not
bundled — those resolve via the OS.
- useSettings: add fontFamily to SettingsState (default 'sans-serif',
  preserving existing renders for users who never open the picker), the
  reducer's persisted-fields list, and a setFontFamily action.
- useAutoFitFontSize: take an optional fontFamily so the binary-search
  fit re-runs when the typeface changes (font swap doesn't fire
  ResizeObserver on its own).
- CircleText: accept a fontFamily prop and apply it to the SVG <text>
  element (so getComputedTextLength measures the right glyphs) and add
  it to the fit-effect deps.
- SquareTextLabel: accept fontFamily, forward to the auto-fit hook, and
  apply to the rendered div's inline style.
- LabelGrid: import fonts.css, destructure fontFamily from
  effectiveSettings, set fontFamily on the .traveltonieCouple wrapper
  so it cascades to all label text, and pass the value explicitly to
  CircleText.
Adds a font picker as a Select dropdown next to textFontSize. Each
option's label is rendered in its own font so users see a live preview
in the dropdown.

The catalog (fontCatalog.ts) is split between system web-safe families
(sans-serif, serif, Comic Sans MS, Courier New) which fall back to the
OS, and six SIL OFL Google Fonts (Atkinson Hyperlegible, Fredoka,
Bubblegum Sans, Patrick Hand, Indie Flower, Schoolbell) that ship
locally as woff2 — see styles/fonts.css and styles/fonts/LICENSES.md.

One global font for the whole sheet; per-label override is intentionally
out of scope for v1.
Adds three keys per supported language under tonies.teddystudio:
- fontFamily      — the picker label
- fontFamilyPlaceholder — Select placeholder text
- fontFamilyHelp  — tooltip explaining web-safe vs bundled options
Adds four widely-used clean fonts to balance the existing kid-friendly
set:

- Inter (modern UI humanist sans)
- Roboto (Google/Android default)
- Open Sans (humanist sans, wide language coverage)
- Merriweather (clean readable serif)

All SIL OFL licensed, bundled as woff2 (latin + latin-ext subsets at
weight 400) so offline printing works. Grouped in the catalog under
'Clean / professional' alongside the system-safe fallbacks; the
kid-friendly set keeps its own section.
- move bundled fonts from styles/fonts/ to src/assets/fonts/teddystudio/
- de.json: use "Schriftart" for fontFamily label (matches sibling strings)
- CHANGELOG: add gui entry under new 0.7.1 block
SciLor and others added 28 commits May 5, 2026 07:42
updated packages, fixed some deprecations and errors caused by update…
feat(teddystudio): font selection for label text
Replaces the checkbox-in-dropdown approach (which fought antd's Select primitive
and produced scroll-reset + search-instability bugs) with a dedicated modal
using antd's <Transfer> component. The existing single-add search interface is
untouched.

- New <BulkAddToniesModal> with two-pane Transfer (catalog <-> queued)
- Toolbar button in TeddyStudio opens the modal
- On confirm, queued items batch-added via useCustomItems.addResults()
- Single-add primitives (ToniesJsonSearch, SearchDropdown,
  ToniesJsonSearchWrapper) reverted to upstream develop
The full catalog is large enough that mounting every row in the Transfer
left pane on modal open is unusably slow. Gate the dataSource behind a
modal-level search input — empty until the user types >=2 characters,
then Transfer only ever sees filtered results.

- New search input above the Transfer (Input.Search with debounce ~300ms)
- dataSource = empty array when search input is short; filtered catalog
  when search is >=2 chars (matches title/series/episodes substring)
- Transfer's own showSearch disabled — outer search is canonical
- Queued items (right pane) preserved across search changes
- New en/de translations for search prompt + hint
- de.json/en.json: replace "Katalog"/"Catalog" with "tonies.json" (existing convention)
- add fr.json + es.json translations for bulk-add modal (per repo README)
- CHANGELOG: add gui entry under next version block
PR #297 fixed the doubled-label-text bug (gh-296) by changing the
ToniesJsonEntry shape to use a separate `series` field, and the
LabelGrid renderer to drop the `dataset.series` line (now rendering
just `dataset.text` bold + `dataset.episodes`). Bulk-add was building
the old buggy shape (text = "series - episodes" concatenated, no
series field), so when #297 lands and the renderer changes, our
modal still produced doubled text on the label.

Switch the bulk-add dataset shape to match post-#297:
- raw.text = series (rendered bold by LabelGrid post-#297)
- new series field on BulkAddDataset (data-only, mirrors single-add)

Per henryk86's inline review on BulkAddToniesModal.tsx.
feat(teddystudio): bulk-add tonies via Transfer modal (search-gated)
* chore: update dependencies and add prettier configuration

- Updated @ant-design/icons from ^6.1.1 to ^6.2.2
- Updated @types/node from ^25.6.0 to ^25.6.2
- Updated antd from ^6.3.6 to ^6.3.7
- Updated i18next from ^26.0.8 to ^26.1.0
- Updated i18next-http-backend from ^3.0.6 to ^4.0.0
- Updated react from ^19.2.5 to ^19.2.6
- Updated react-dom from ^19.2.5 to ^19.2.6
- Updated react-i18next from ^17.0.4 to ^17.0.7
- Updated react-router-dom from ^7.14.2 to ^7.15.0
- Updated vite from ^8.0.10 to ^8.0.12
- Added prettier as a dependency with version ^3.8.3
- Added format and format:check scripts for prettier
- Changed prettier printWidth from 120 to 100

* executed npm run format

* chore: add .gitattributes file for repository configuration

* feat: enhance LabelGrid component with improved text display and layout adjustments

* fix: update changelog formatting and improve layout in TeddyStudio component

* chore: add names to CI jobs for better clarity

* docs: update README to clarify CI workflow for formatting checks and production builds
… bump electron-to-chromium and node-releases versions
- Added support for ESP32-C3 as a hardware tool option in the CC3200 flashing guide.
- Updated UI to allow users to switch between UART and ESP32-C3 configurations.
- Modified steps for preparations, bootloader installation, and certificate handling to accommodate ESP32-C3.
- Improved translations in the French language files for better clarity and additional instructions.
- Introduced new tables and instructions specific to ESP32-C3 setup and configuration.
Links opened with target="_blank" but no rel give the opened page
window.opener access (reverse-tabnabbing) and leak a referrer. Add
rel="noopener noreferrer" to every external target="_blank" link that
lacked a rel (mechanical, no behavioral change). Notably covers the
TonieboxCard link built from server-provided box IP.

Fixes #308
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.

4 participants