diff --git a/README.md b/README.md index 8b2d6f7af..aa7282c68 100644 --- a/README.md +++ b/README.md @@ -156,6 +156,7 @@ Optional but recommended — drop the [`slicer-api/` Compose stack](slicer-api/R - Skip objects during print - AMS slot RFID re-read - **AMS slot Load / Unload from the printer card** — Hover any AMS slot or external spool, click the menu button, and load that tray or unload the currently-loaded one without going to the touchscreen; supports dual-extruder H2D (Ext-L / Ext-R drive their own nozzle) +- **AMS Filament Backup status + control** — Mirrors BambuStudio's per-printer "AMS Filament Backup" auto-switch (when a spool runs out, the printer rolls over to a same-material spool in another slot). A small badge in the Filaments section header on each printer card shows the live state (blue circular-arrow icon = ON, dim = OFF, "?" = A1 family with no `cfg` field yet); click to toggle. State syncs in real time whether you toggled from Bambuddy, BambuStudio, or the printer's touchscreen. Bambuddy's **Prefer Lowest Remaining Filament** sort now respects this setting — when Backup is OFF the dispatcher skips the prefer-lowest sort entirely so it won't reach for a near-empty spool the printer can't roll off of. - AMS slot configuration (model-filtered presets, K profiles, color picker, pre-population for configured slots) - AMS info card (hover for serial number, firmware version) with custom friendly names that persist across printers - **AMS remote drying** — Start, monitor, and stop drying sessions for AMS 2 Pro and AMS-HT directly from the Printers page with filament-based temperature/duration presets, optional spool rotation; automatic PSU detection and HMS power error reporting diff --git a/frontend/src/i18n/locales/de.ts b/frontend/src/i18n/locales/de.ts index e20955644..df90f592e 100644 --- a/frontend/src/i18n/locales/de.ts +++ b/frontend/src/i18n/locales/de.ts @@ -3605,6 +3605,13 @@ export default { architecture: 'Architektur', }, + // Sponsor surface (System page) + sponsors: { + sectionTitle: 'Unabhängig & von der Community finanziert', + tagline: 'Bambuddy ist kostenlos und bleibt es, weil Menschen es freiwillig unterstützen. Kein VC, kein Cloud-Zwang.', + viewSupporters: 'Unterstützer ansehen', + }, + // Library (K Profiles) library: { title: 'Filament-Bibliothek', diff --git a/frontend/src/i18n/locales/en.ts b/frontend/src/i18n/locales/en.ts index 3c79e78e3..6f13b5836 100644 --- a/frontend/src/i18n/locales/en.ts +++ b/frontend/src/i18n/locales/en.ts @@ -3617,6 +3617,13 @@ export default { architecture: 'Architecture', }, + // Sponsor surface (System page) + sponsors: { + sectionTitle: 'Independent & community-funded', + tagline: 'Bambuddy is free and stays that way because people choose to support it. No VC, no cloud lock-in.', + viewSupporters: 'View supporters', + }, + // Library (K Profiles) library: { title: 'Filament Library', diff --git a/frontend/src/i18n/locales/es.ts b/frontend/src/i18n/locales/es.ts index c779bcda0..49e1b5006 100644 --- a/frontend/src/i18n/locales/es.ts +++ b/frontend/src/i18n/locales/es.ts @@ -3608,6 +3608,13 @@ export default { architecture: 'Arquitectura', }, + // Sponsor surface (System page) + sponsors: { + sectionTitle: 'Independiente y financiado por la comunidad', + tagline: 'Bambuddy es gratuito y seguirá siéndolo porque hay quien decide apoyarlo. Sin VC, sin dependencia de la nube.', + viewSupporters: 'Ver patrocinadores', + }, + // Library (K Profiles) library: { title: 'Biblioteca de filamentos', diff --git a/frontend/src/i18n/locales/fr.ts b/frontend/src/i18n/locales/fr.ts index ed3378eef..e632ae360 100644 --- a/frontend/src/i18n/locales/fr.ts +++ b/frontend/src/i18n/locales/fr.ts @@ -3594,6 +3594,13 @@ export default { architecture: 'Architecture', }, + // Sponsor surface (System page) + sponsors: { + sectionTitle: 'Indépendant & financé par la communauté', + tagline: 'Bambuddy est gratuit et le reste parce que des personnes choisissent de le soutenir. Pas de VC, pas de verrouillage cloud.', + viewSupporters: 'Voir les soutiens', + }, + // Library (K Profiles) library: { title: 'Bibliothèque Filament', diff --git a/frontend/src/i18n/locales/it.ts b/frontend/src/i18n/locales/it.ts index fee6d5742..5560671ad 100644 --- a/frontend/src/i18n/locales/it.ts +++ b/frontend/src/i18n/locales/it.ts @@ -3593,6 +3593,13 @@ export default { architecture: 'Architettura', }, + // Sponsor surface (System page) + sponsors: { + sectionTitle: 'Indipendente e finanziato dalla community', + tagline: 'Bambuddy è gratuito e resta tale perché qualcuno sceglie di sostenerlo. Niente VC, niente lock-in cloud.', + viewSupporters: 'Vedi i sostenitori', + }, + // Library (K Profiles) library: { title: 'Libreria filamenti', diff --git a/frontend/src/i18n/locales/ja.ts b/frontend/src/i18n/locales/ja.ts index 373fdb649..2e963c45f 100644 --- a/frontend/src/i18n/locales/ja.ts +++ b/frontend/src/i18n/locales/ja.ts @@ -3605,6 +3605,13 @@ export default { architecture: 'アーキテクチャ', }, + // Sponsor surface (System page) + sponsors: { + sectionTitle: '独立・コミュニティ運営', + tagline: 'Bambuddyは無料で、これからも無料です。支援してくださる方々のおかげで、VCもクラウドロックインもありません。', + viewSupporters: 'サポーター一覧', + }, + // Library (K Profiles) library: { title: 'フィラメントライブラリ', diff --git a/frontend/src/i18n/locales/ko.ts b/frontend/src/i18n/locales/ko.ts index 1b3330a51..637146b7c 100644 --- a/frontend/src/i18n/locales/ko.ts +++ b/frontend/src/i18n/locales/ko.ts @@ -3404,6 +3404,11 @@ export default { platform: '플랫폼', architecture: '아키텍처' }, + sponsors: { + sectionTitle: '독립적·커뮤니티 후원', + tagline: 'Bambuddy는 무료이며, 자발적으로 후원하는 사용자 덕분에 계속 무료로 유지됩니다. VC도 없고, 클라우드 종속도 없습니다.', + viewSupporters: '후원자 보기' + }, library: { title: '필라멘트 라이브러리', addFilament: '필라멘트 추가', diff --git a/frontend/src/i18n/locales/pt-BR.ts b/frontend/src/i18n/locales/pt-BR.ts index 4d1d9b0f3..3e9f4ab8c 100644 --- a/frontend/src/i18n/locales/pt-BR.ts +++ b/frontend/src/i18n/locales/pt-BR.ts @@ -3593,6 +3593,13 @@ export default { architecture: 'Arquitetura', }, + // Sponsor surface (System page) + sponsors: { + sectionTitle: 'Independente e financiado pela comunidade', + tagline: 'O Bambuddy é gratuito e continua assim porque há quem escolha apoiá-lo. Sem VC, sem dependência de nuvem.', + viewSupporters: 'Ver apoiadores', + }, + // Library (K Profiles) library: { title: 'Biblioteca de Filamentos', diff --git a/frontend/src/i18n/locales/tr.ts b/frontend/src/i18n/locales/tr.ts index a92c0550f..3a0f82a51 100644 --- a/frontend/src/i18n/locales/tr.ts +++ b/frontend/src/i18n/locales/tr.ts @@ -3594,6 +3594,13 @@ export default { architecture: 'Mimari', }, + // Sponsor yüzeyi (Sistem sayfası) + sponsors: { + sectionTitle: 'Bağımsız ve topluluk destekli', + tagline: 'Bambuddy ücretsizdir ve böyle kalır çünkü insanlar onu desteklemeyi seçer. VC yok, bulut bağımlılığı yok.', + viewSupporters: 'Destekçileri görüntüle', + }, + // Kütüphane (K Profilleri) library: { title: 'Filament Kütüphanesi', diff --git a/frontend/src/i18n/locales/zh-CN.ts b/frontend/src/i18n/locales/zh-CN.ts index de96d6319..6094bea4c 100644 --- a/frontend/src/i18n/locales/zh-CN.ts +++ b/frontend/src/i18n/locales/zh-CN.ts @@ -3593,6 +3593,13 @@ export default { architecture: '架构', }, + // Sponsor surface (System page) + sponsors: { + sectionTitle: '独立运营·社区支持', + tagline: 'Bambuddy 完全免费,并将持续免费——这要感谢主动支持的用户。没有风投,也没有云端绑定。', + viewSupporters: '查看支持者', + }, + // Library (K Profiles) library: { title: '耗材库', diff --git a/frontend/src/i18n/locales/zh-TW.ts b/frontend/src/i18n/locales/zh-TW.ts index c467d692d..201dde9b1 100644 --- a/frontend/src/i18n/locales/zh-TW.ts +++ b/frontend/src/i18n/locales/zh-TW.ts @@ -3593,6 +3593,13 @@ export default { architecture: '架構', }, + // Sponsor surface (System page) + sponsors: { + sectionTitle: '獨立運作·社群支持', + tagline: 'Bambuddy 完全免費,並將持續免費——感謝主動支持的使用者。沒有創投,也沒有雲端綁定。', + viewSupporters: '查看支持者', + }, + // Library (K Profiles) library: { title: '耗材庫', diff --git a/frontend/src/pages/SettingsPage.tsx b/frontend/src/pages/SettingsPage.tsx index 67464741c..4bd85f7a4 100644 --- a/frontend/src/pages/SettingsPage.tsx +++ b/frontend/src/pages/SettingsPage.tsx @@ -1,5 +1,5 @@ import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; -import { Loader2, Plus, Plug, AlertTriangle, RotateCcw, Bell, Download, RefreshCw, ExternalLink, Globe, Droplets, Thermometer, FileText, Edit2, Send, CheckCircle, XCircle, History, Trash2, Zap, TrendingUp, Calendar, DollarSign, Power, PowerOff, Key, Copy, Database, X, Shield, Printer, Cylinder, Wifi, Home, Video, Users, Lock, Unlock, ChevronDown, Save, Mail, Flame, Layers, ListOrdered, Code, Search, Scale, Settings as SettingsIcon, ScanEye, Cog, QrCode } from 'lucide-react'; +import { Loader2, Plus, Plug, AlertTriangle, RotateCcw, Bell, Download, RefreshCw, ExternalLink, Globe, Droplets, Thermometer, FileText, Edit2, Send, CheckCircle, XCircle, History, Trash2, Zap, TrendingUp, Calendar, DollarSign, Power, PowerOff, Key, Copy, Database, X, Shield, Printer, Cylinder, Wifi, Home, Video, Users, Lock, Unlock, ChevronDown, Save, Mail, Flame, Layers, ListOrdered, Code, Search, Scale, Settings as SettingsIcon, ScanEye, Cog, QrCode, Heart } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { api } from '../api/client'; @@ -1459,6 +1459,36 @@ export function SettingsPage() {
+ {t('sponsors.sectionTitle', 'Independent & community-funded')} +
++ {t( + 'sponsors.tagline', + 'Bambuddy is free and stays that way because people choose to support it. No VC, no cloud lock-in.' + )} +
+