@danhachuel/thunderbolt 0.5.70 → 0.5.71

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.
Files changed (2) hide show
  1. package/app/main.py +10 -1
  2. package/package.json +1 -1
package/app/main.py CHANGED
@@ -6799,7 +6799,11 @@ def render_google_accounts(*, include_innertube: bool = True):
6799
6799
  st.rerun()
6800
6800
 
6801
6801
  st.divider()
6802
- st.subheader("Configuração Global: YouTube Data API v3 (API Key)")
6802
+ youtube_global_cols = st.columns([3.2, 1.2])
6803
+ with youtube_global_cols[0]:
6804
+ st.subheader("Configuração Global: YouTube Data API v3 (API Key)")
6805
+ with youtube_global_cols[1]:
6806
+ _render_credential_status(settings.get("youtube_api_key"), required=True)
6803
6807
  st.caption("1. YouTube Data API v3: Metadados públicos (títulos, views, likes) Via MCP integrado.\n\n2. YouTube Analytics API: Métricas internas (CTR, retenção, RPM, tráfego, demografia) Via OAuth 2.0 (Directamente via OAuth das Contas Google/YouTube cadastradas)")
6804
6808
  with st.form("google_global_api_settings_form"):
6805
6809
  st.caption("A autorização OAuth 2.0 é gerida por cada Conta Google/YouTube cadastrada e associada ao canal.")
@@ -7848,6 +7852,9 @@ def render_settings():
7848
7852
  with st.expander("API Tiktok", expanded=False):
7849
7853
  render_tiktok_api_cards(settings)
7850
7854
  with st.expander("API Bilibili", expanded=False):
7855
+ bilibili_cards = settings.get("bilibili_api_cards") if isinstance(settings.get("bilibili_api_cards"), list) else []
7856
+ bilibili_ready = any(bool(card.get("active", True) and card.get("sessdata") and card.get("bili_jct") and card.get("buvid3")) for card in bilibili_cards if isinstance(card, dict))
7857
+ _api_status_badge("Configured" if bilibili_ready else "Missing configuration", "ready" if bilibili_ready else "missing")
7851
7858
  render_bilibili_api_cards(settings)
7852
7859
  with st.expander("Composio", expanded=False):
7853
7860
  st.caption("A API key é guardada apenas no storage local. O slug da ferramenta e o provider são descobertos no Upload via Composio; a autenticação da conta é feita pelo Connect Link do Composio.")
@@ -7887,6 +7894,7 @@ def render_settings():
7887
7894
  upload_post_user_upload = st.text_input("Upload-Post username", value=str(settings.get("upload_post_username") or ""), key="upload_tab_upload_post_user")
7888
7895
  upload_post_platforms_upload = st.text_input("Plataformas Upload-Post", value=str(settings.get("upload_post_platforms") or "youtube,tiktok"), key="upload_tab_upload_post_platforms")
7889
7896
  upload_post_auto_upload = st.checkbox("Publicar automaticamente após gerar", bool(settings.get("upload_post_auto_upload", False)), key="upload_tab_upload_post_auto")
7897
+ _render_credential_status(upload_post_key_upload, required=True)
7890
7898
  if st.button("Guardar Upload-Post", type="primary", use_container_width=True, key="upload_tab_save_upload_post"):
7891
7899
  settings.update({"upload_post_enabled": bool(upload_post_enabled_upload), "upload_post_api_key": upload_post_key_upload.strip(), "upload_post_username": upload_post_user_upload.strip(), "upload_post_platforms": upload_post_platforms_upload.strip(), "upload_post_auto_upload": bool(upload_post_auto_upload)})
7892
7900
  write_json("settings.json", settings)
@@ -7899,6 +7907,7 @@ def render_settings():
7899
7907
  postiz_mcp_upload = st.text_input("Postiz MCP URL", value=str(settings.get("postiz_mcp_url") or "https://api.postiz.com/mcp"), key="upload_tab_postiz_mcp")
7900
7908
  postiz_integration_upload = st.text_input("Postiz integração padrão", value=str(settings.get("postiz_integration_id") or ""), key="upload_tab_postiz_integration")
7901
7909
  postiz_auto_upload = st.checkbox("Permitir publicação imediata no Postiz", bool(settings.get("postiz_auto_publish", False)), key="upload_tab_postiz_auto")
7910
+ _render_credential_status(postiz_key_upload, required=True)
7902
7911
  if st.button("Guardar Postiz", type="primary", use_container_width=True, key="upload_tab_save_postiz"):
7903
7912
  settings.update({"postiz_enabled": bool(postiz_enabled_upload), "postiz_api_key": postiz_key_upload.strip(), "postiz_base_url": postiz_base_upload.strip(), "postiz_mcp_url": postiz_mcp_upload.strip(), "postiz_integration_id": postiz_integration_upload.strip(), "postiz_auto_publish": bool(postiz_auto_upload)})
7904
7913
  write_json("settings.json", settings)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danhachuel/thunderbolt",
3
- "version": "0.5.70",
3
+ "version": "0.5.71",
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",