@danhachuel/thunderbolt 0.7.9 → 0.7.11

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 +15 -3
  2. package/package.json +1 -1
package/app/main.py CHANGED
@@ -3437,10 +3437,9 @@ def render_new_video(page_title: str = "Criação de Vídeos", prefix: str = "ne
3437
3437
  mode = "single"
3438
3438
  st.info("Os Shorts são sempre criados para um canal TikTok específico e em formato Portrait 9:16.")
3439
3439
  else:
3440
- mode_label = st.radio(
3440
+ mode_label = st.selectbox(
3441
3441
  "Modo de criação",
3442
3442
  ["Canal específico", "Lote no mesmo canal", "Lote geral"],
3443
- horizontal=True,
3444
3443
  key=f"{prefix}_mode",
3445
3444
  )
3446
3445
  mode = {"Canal específico": "single", "Lote no mesmo canal": "same_channel", "Lote geral": "general"}[mode_label]
@@ -4032,7 +4031,7 @@ def render_scripts():
4032
4031
  else:
4033
4032
  st.warning("Sem Blueprint seleccionado: o documento pode ser criado, mas não terá contexto editorial de Blueprint.")
4034
4033
 
4035
- document_type = st.radio("Tipo de documento", ["Roteiro de vídeo", "Letra de música"], horizontal=True, key="script_document_type")
4034
+ document_type = st.selectbox("Tipo de documento", ["Roteiro de vídeo", "Letra de música"], key="script_document_type")
4036
4035
  script_settings = render_video_generation_settings(
4037
4036
  "pipeline_scripts",
4038
4037
  current_language=str(st.session_state.get("script_language") or read_json("settings.json", {}).get("video_language") or "pt"),
@@ -5910,6 +5909,19 @@ def render_automation():
5910
5909
  with header_cols[1]:
5911
5910
  st.write(f"**{channel.get('name', 'Sem nome')}**")
5912
5911
  st.caption(channel.get("handle") or channel.get("url") or "sem URL")
5912
+ channel_url = str(channel.get("url") or "").strip()
5913
+ if not channel_url:
5914
+ channel_id_or_handle = str(channel.get("youtube_channel_id") or channel.get("youtube_id") or channel.get("handle") or "").strip()
5915
+ if channel_id_or_handle.startswith("http"):
5916
+ channel_url = channel_id_or_handle
5917
+ elif channel_id_or_handle.startswith("UC"):
5918
+ channel_url = f"https://www.youtube.com/channel/{channel_id_or_handle}"
5919
+ elif channel_id_or_handle.startswith(("@", "channel/")):
5920
+ channel_url = f"https://www.youtube.com/{channel_id_or_handle}"
5921
+ elif channel_id_or_handle:
5922
+ channel_url = f"https://www.youtube.com/@{channel_id_or_handle}"
5923
+ if channel_url:
5924
+ st.link_button("Abrir canal", channel_url, type="primary", width="content")
5913
5925
  with header_cols[2]:
5914
5926
  st.markdown("**Thumbnail Blueprint**")
5915
5927
  st.caption(str(paired_thumbnail.get("name") or "Generic_Thumbnail_Blueprint"))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danhachuel/thunderbolt",
3
- "version": "0.7.09",
3
+ "version": "0.7.11",
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",