@danhachuel/thunderbolt 0.2.86 → 0.2.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.streamlit/config.toml +13 -0
- package/MANUAL-INSTALACAO.md +5 -1
- package/README.md +5 -1
- package/app/main.py +30 -25
- package/package.json +3 -2
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[theme]
|
|
2
|
+
base = "light"
|
|
3
|
+
primaryColor = "#35A7FF"
|
|
4
|
+
backgroundColor = "#FFFFFF"
|
|
5
|
+
secondaryBackgroundColor = "#F3F6FA"
|
|
6
|
+
textColor = "#16202A"
|
|
7
|
+
font = "sans serif"
|
|
8
|
+
|
|
9
|
+
[client]
|
|
10
|
+
toolbarMode = "auto"
|
|
11
|
+
|
|
12
|
+
[logger]
|
|
13
|
+
hideWarningOnDirectExecution = true
|
package/MANUAL-INSTALACAO.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Este manual descreve a instalação local da UI Thunderbolt, baseada no MoneyPrinterTurbo, utilizando o pacote npm `@danhachuel/thunderbolt`. O fluxo recomendado instala automaticamente o ambiente Python, as dependências da aplicação, as dependências do MoneyPrinterTurbo, o Streamlit e o suporte FFmpeg através de `imageio-ffmpeg`.
|
|
4
4
|
|
|
5
|
-
> **Versão deste manual:** 0.2.
|
|
5
|
+
> **Versão deste manual:** 0.2.87
|
|
6
6
|
> **Pacote npm:** `@danhachuel/thunderbolt`
|
|
7
7
|
> **Porta padrão da UI:** `localhost:3030`
|
|
8
8
|
> **Repositório:** [github.com/DanHachuel/thunderbolt](https://github.com/DanHachuel/thunderbolt)
|
|
@@ -198,6 +198,10 @@ No topo da área principal, o menu nativo de idioma segue o padrão do MoneyPrin
|
|
|
198
198
|
|
|
199
199
|
Todas as subabas internas e o conteúdo das páginas também são traduzidos nos dez idiomas. Isso inclui títulos, subtítulos, descrições, labels, placeholders, opções, botões, avisos, mensagens de sucesso/erro, estados vazios, métricas, expanderes e blocos Markdown/HTML. Valores técnicos, IDs, URLs, nomes de ficheiros e dados introduzidos pelo utilizador permanecem inalterados. As subabas internas traduzidas incluem: Blueprints/Brandings, Pesquisa pública/Cadastro manual/Contas cadastradas, Upload/Biblioteca, Importar do YouTube/Canais em lote gmail/Cadastro manual, Criar vídeo/Vídeos, Novo roteiro/letra/Histórico guardado, análise de clusters, edição de cortes, Vídeos/Código Python, as quatro opções de Upload, API Keys/Teste de vozes, Serviços e modelos/Fontes de materiais e Client MCP/Servidor MCP/Skill. A ordem e as chaves internas dos widgets permanecem estáveis.
|
|
200
200
|
|
|
201
|
+
### Temas Light e Dark
|
|
202
|
+
|
|
203
|
+
A aplicação usa o mecanismo nativo de temas do Streamlit e é distribuída com `.streamlit/config.toml`, seguindo o padrão de configuração do [MoneyPrinterTurbo](https://github.com/harry0703/MoneyPrinterTurbo). O ficheiro define uma base **Light** legível; o utilizador pode seleccionar **Dark** no menu nativo do Streamlit. Os componentes próprios da UI herdam as cores do tema activo através de `currentColor` e `color-mix`, sem forçar fundos, cartões ou textos da paleta escura. O toolbar nativo, o indicador de execução, **Deploy** e o menu principal continuam sem sobreposições CSS.
|
|
204
|
+
|
|
201
205
|
## 4. Diagnóstico antes de iniciar
|
|
202
206
|
|
|
203
207
|
Depois da instalação, execute:
|
package/README.md
CHANGED
|
@@ -52,7 +52,11 @@ O Thunderbolt mantém os idiomas históricos da criação de vídeos e acrescent
|
|
|
52
52
|
|
|
53
53
|
No topo da área principal da aplicação existe o menu nativo de idioma no padrão do MoneyPrinterTurbo, sem sobrepor o toolbar do Streamlit. O selector mostra o rótulo visível **Language** acima do campo, cada opção aparece como **nome do idioma + código**, e a bandeira é uma imagem SVG local real, não um emoji ou sigla dependente da fonte do sistema. Ao escolher outra opção, a preferência é guardada em `storage/state/settings.json` como `ui_language`, e a navegação lateral e o dashboard inicial actualizam-se sem alterar o idioma seleccionado para os vídeos. O indicador de execução, o botão **Deploy** e o menu principal do Streamlit permanecem totalmente nativos e clicáveis.
|
|
54
54
|
|
|
55
|
-
##
|
|
55
|
+
## Temas claro e escuro
|
|
56
|
+
|
|
57
|
+
A UI suporta os temas **Light** e **Dark** através do mecanismo nativo do Streamlit. A configuração distribuída em `.streamlit/config.toml` define uma base clara, seguindo o padrão de configuração do [MoneyPrinterTurbo](https://github.com/harry0703/MoneyPrinterTurbo), e o menu nativo continua responsável pela preferência do utilizador. O CSS próprio do Thunderbolt usa cores semânticas, `currentColor` e `color-mix` para que a sidebar, cartões, estados, radio cards, expanders e o hero de Cortes acompanhem o tema activo. As cores de identidade dos chips de plataformas e das bandeiras são intencionais e não são substituídas pelo tema.
|
|
58
|
+
|
|
59
|
+
## Navegação da UI 0.2.87
|
|
56
60
|
|
|
57
61
|
A barra lateral mantém os níveis principais, nesta ordem: **Início**, **Niche Finder**, **Pipeline**, **Pipeline TikTok**, **Automação**, **Edição**, **AI Influencers** e **Configurações**. **Pipeline** é expansível e contém **Criação de Vídeos**, **Criação de Músicas**, **Roteiros** e **Upload**. **Automação** também é expansível e contém **Automação Youtube**. **Edição** é expansível e contém **Limpador de Metadados**, **Cortes**, **Editor Python** e **Download Mídia**, nessa ordem. **AI Influencers** é expansível e contém **Personagens**, **Redes Sociais**, **Tutorial Meta** e **Tutorial Supabase**, nessa ordem. **Niche Finder** é expansível e contém **Niche Finder Kaggle** e **Niche Finder Apify**. **Configurações** é expansível e contém **Canais Youtube**, **Blueprints Youtube**, **MCP**, **Contas Google**, **Configuração API** e **Notificações**. O Início reúne o dashboard e as filas do Pipeline, sem botões de acções rápidas.
|
|
58
62
|
|
package/app/main.py
CHANGED
|
@@ -149,45 +149,50 @@ st.set_page_config(page_title="Thunderbolt", page_icon="T", layout="wide", initi
|
|
|
149
149
|
|
|
150
150
|
st.markdown("""
|
|
151
151
|
<style>
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
152
|
+
/*
|
|
153
|
+
MoneyPrinterTurbo deixa a maior parte das cores a cargo do tema nativo do
|
|
154
|
+
Streamlit. O Thunderbolt segue o mesmo princípio: componentes próprios usam
|
|
155
|
+
currentColor/color-mix e nunca uma paleta escura fixa.
|
|
156
|
+
*/
|
|
157
|
+
:root { --tb-accent:#35a7ff; --tb-gold:#c59b55; }
|
|
158
|
+
[data-testid="stAppViewContainer"] { background:transparent; color:inherit; }
|
|
159
|
+
[data-testid="stSidebar"] { background:color-mix(in srgb, currentColor 4%, transparent); border-right:1px solid color-mix(in srgb, currentColor 16%, transparent); }
|
|
155
160
|
[data-testid="stSidebar"] .block-container { padding-top:0.28rem; padding-bottom:0.45rem; }
|
|
156
161
|
[data-testid="stSidebar"] > div:first-child { padding-top:0.28rem; }
|
|
157
162
|
[data-testid="stSidebar"] .tb-brand { display:flex; align-items:baseline; gap:0.42rem; margin:0 0 0.68rem 0; white-space:nowrap; }
|
|
158
|
-
[data-testid="stSidebar"] .tb-brand-name { color
|
|
159
|
-
[data-testid="stSidebar"] .tb-brand-version { color
|
|
163
|
+
[data-testid="stSidebar"] .tb-brand-name { color:inherit; font-size:1.38rem; line-height:1.15; font-weight:750; letter-spacing:-0.02em; }
|
|
164
|
+
[data-testid="stSidebar"] .tb-brand-version { color:inherit; opacity:.62; font-size:0.92rem; line-height:1; font-weight:500; }
|
|
160
165
|
[data-testid="stSidebar"] [data-testid="stButton"] { margin:0.025rem 0 !important; }
|
|
161
166
|
[data-testid="stSidebar"] [data-testid="stButton"] button { min-height:1.72rem; height:1.72rem; justify-content:flex-start !important; text-align:left !important; padding:0.10rem 0.52rem; border-radius:7px; border:1px solid transparent; font-size:0.86rem; font-weight:550; }
|
|
162
167
|
[data-testid="stSidebar"] [data-testid="stButton"] button > div { width:100% !important; justify-content:flex-start !important; text-align:left !important; }
|
|
163
168
|
[data-testid="stSidebar"] [data-testid="stButton"] button [data-testid="stMarkdownContainer"] { flex:1 1 auto !important; width:100% !important; text-align:left !important; }
|
|
164
169
|
[data-testid="stSidebar"] [data-testid="stButton"] p { margin:0; line-height:1; width:100%; text-align:left !important; }
|
|
165
|
-
[data-testid="stSidebar"] [data-testid="stBaseButton-secondary"] { background:transparent; color
|
|
166
|
-
[data-testid="stSidebar"] [data-testid="stBaseButton-secondary"]:hover { background
|
|
167
|
-
[data-testid="stSidebar"] [data-testid="stBaseButton-primary"] { background
|
|
168
|
-
[data-testid="stSidebar"] [data-testid="stBaseButton-primary"]:hover { background
|
|
169
|
-
[data-testid="stSidebar"] [data-testid="stBaseButton-primary"] span
|
|
170
|
-
[data-testid="stSidebar"] [data-testid="stBaseButton-secondary"] span { color
|
|
170
|
+
[data-testid="stSidebar"] [data-testid="stBaseButton-secondary"] { background:transparent; color:inherit; }
|
|
171
|
+
[data-testid="stSidebar"] [data-testid="stBaseButton-secondary"]:hover { background:color-mix(in srgb, currentColor 8%, transparent); border-color:color-mix(in srgb, currentColor 18%, transparent); color:inherit; }
|
|
172
|
+
[data-testid="stSidebar"] [data-testid="stBaseButton-primary"] { background:color-mix(in srgb, currentColor 12%, transparent); color:inherit; border-color:color-mix(in srgb, currentColor 22%, transparent); }
|
|
173
|
+
[data-testid="stSidebar"] [data-testid="stBaseButton-primary"]:hover { background:color-mix(in srgb, currentColor 18%, transparent); color:inherit; }
|
|
174
|
+
[data-testid="stSidebar"] [data-testid="stBaseButton-primary"] span,
|
|
175
|
+
[data-testid="stSidebar"] [data-testid="stBaseButton-secondary"] span { color:inherit; }
|
|
171
176
|
[data-testid="stSidebar"] [data-testid="stExpander"] { border:0 !important; background:transparent !important; margin:0.02rem 0 !important; }
|
|
172
177
|
[data-testid="stSidebar"] [data-testid="stExpander"] details { border:0 !important; background:transparent !important; }
|
|
173
|
-
[data-testid="stSidebar"] [data-testid="stExpander"] summary { min-height:1.72rem; padding:0.10rem 0.52rem !important; border-radius:7px; color
|
|
174
|
-
[data-testid="stSidebar"] [data-testid="stExpander"] summary:hover { background
|
|
178
|
+
[data-testid="stSidebar"] [data-testid="stExpander"] summary { min-height:1.72rem; padding:0.10rem 0.52rem !important; border-radius:7px; color:inherit; font-size:0.86rem; font-weight:650; }
|
|
179
|
+
[data-testid="stSidebar"] [data-testid="stExpander"] summary:hover { background:color-mix(in srgb, currentColor 8%, transparent); }
|
|
175
180
|
[data-testid="stSidebar"] [data-testid="stExpander"] summary p { margin:0; line-height:1; }
|
|
176
181
|
[data-testid="stSidebar"] [data-testid="stExpander"] > div { padding:0 0 0 0.42rem !important; }
|
|
177
182
|
[data-testid="stSidebar"] [data-testid="stExpander"] > div [data-testid="stButton"] button { padding-left:0.92rem; font-size:0.83rem; min-height:1.62rem; height:1.62rem; }
|
|
178
|
-
.content-card { padding:
|
|
179
|
-
.content-label { color
|
|
180
|
-
.content-value { color
|
|
181
|
-
.stage { border-left:3px solid
|
|
182
|
-
|
|
183
|
-
.tb-cuts-hero { max-width:860px; margin:0 auto 1.1rem; padding:1.6rem 1.4rem 1.35rem; text-align:center; border:1px solid
|
|
184
|
-
.tb-cuts-hero .tb-cuts-kicker { color
|
|
185
|
-
.tb-cuts-hero h2 { color
|
|
186
|
-
.tb-cuts-hero p { color
|
|
183
|
+
.content-card { padding:1rem 1.1rem; border:1px solid color-mix(in srgb, currentColor 16%, transparent); border-radius:14px; background:color-mix(in srgb, currentColor 4%, transparent); min-height:110px; }
|
|
184
|
+
.content-label { color:inherit; opacity:.62; font-size:.8rem; text-transform:uppercase; letter-spacing:.07em; }
|
|
185
|
+
.content-value { color:inherit; font-size:1.8rem; font-weight:700; margin-top:.3rem; }
|
|
186
|
+
.stage { border-left:3px solid var(--tb-accent); padding:.65rem .8rem; margin:.4rem 0; background:color-mix(in srgb, currentColor 4%, transparent); border-radius:8px; }
|
|
187
|
+
.small-muted { color:inherit; opacity:.65; font-size:.85rem; }
|
|
188
|
+
.tb-cuts-hero { max-width:860px; margin:0 auto 1.1rem; padding:1.6rem 1.4rem 1.35rem; text-align:center; border:1px solid color-mix(in srgb, currentColor 18%, transparent); border-radius:18px; background:radial-gradient(circle at 50% 0, color-mix(in srgb, var(--tb-gold) 16%, transparent), transparent 58%), color-mix(in srgb, currentColor 4%, transparent); box-shadow:0 18px 48px color-mix(in srgb, currentColor 12%, transparent); }
|
|
189
|
+
.tb-cuts-hero .tb-cuts-kicker { color:var(--tb-gold); font-size:.68rem; letter-spacing:.18em; text-transform:uppercase; font-weight:700; }
|
|
190
|
+
.tb-cuts-hero h2 { color:inherit; font-family:Georgia,serif; font-size:2rem; font-weight:500; margin:.42rem 0 .25rem; text-transform:lowercase; }
|
|
191
|
+
.tb-cuts-hero p { color:inherit; opacity:.68; margin:0 auto; max-width:620px; font-size:.9rem; }
|
|
187
192
|
[data-testid="stRadio"] [role="radiogroup"] { gap:.6rem; }
|
|
188
|
-
[data-testid="stRadio"] label { border:1px solid
|
|
189
|
-
[data-testid="stRadio"] label:has(input:checked) { border-color
|
|
190
|
-
[data-testid="stStatusWidget"] { border-color
|
|
193
|
+
[data-testid="stRadio"] label { border:1px solid color-mix(in srgb, currentColor 18%, transparent); border-radius:12px; padding:.65rem .8rem; background:color-mix(in srgb, currentColor 4%, transparent); min-height:4.3rem; }
|
|
194
|
+
[data-testid="stRadio"] label:has(input:checked) { border-color:var(--tb-gold); background:linear-gradient(145deg, color-mix(in srgb, var(--tb-gold) 24%, transparent), color-mix(in srgb, currentColor 6%, transparent)); }
|
|
195
|
+
[data-testid="stStatusWidget"] { border-color:color-mix(in srgb, currentColor 18%, transparent) !important; background:color-mix(in srgb, currentColor 4%, transparent) !important; }
|
|
191
196
|
/* O menu de idiomas usa layout nativo da aplicação; o toolbar do Streamlit não é alterado. */
|
|
192
197
|
|
|
193
198
|
/* Cores dos chips por identidade da plataforma, sem depender da ordem de selecção. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@danhachuel/thunderbolt",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.87",
|
|
4
4
|
"description": "Thunderbolt — interface local para operação de canais faceless e motor MoneyPrinterTurbo",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "scripts/cli.mjs",
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
"MANUAL-INSTALACAO.md",
|
|
26
26
|
"THIRD-PARTY-NOTICES.md",
|
|
27
27
|
"requirements.txt",
|
|
28
|
-
"package.json"
|
|
28
|
+
"package.json",
|
|
29
|
+
".streamlit/config.toml"
|
|
29
30
|
],
|
|
30
31
|
"scripts": {
|
|
31
32
|
"start": "node scripts/cli.mjs",
|