Skip to content

P1: Sistema de Temas (Dark/Light/Custom) com carregamento de arquivos #28

Description

@chapzin

Problema

As cores da TUI estao todas hardcoded em crates/jcode-tui-style/src/theme.rs. Nao ha temas alternativos, dark/light mode, ou customizacao pelo usuario.

O que precisa ser feito

1. Estrutura de temas declarativos

Criar struct Theme com campos para todas as cores semanticas: bg_primary, bg_secondary, text_primary, text_secondary, text_dim, user_message_bg, user_message_text, ai_message_bg, ai_message_text, tool_bg, tool_text, tool_border, accent, error, warning, success, info, header_bg, header_text, status_bar_bg, status_bar_text, sidebar_bg, sidebar_text, sidebar_border, input_bg, input_border, input_text, input_placeholder, code_block_bg, code_block_text, blockquote_bar, diff_add, diff_del, scrollbar_thumb, scrollbar_track.

2. Temas built-in

  • dark (default, cores atuais refinadas)
  • light (cores claras para terminais com fundo claro)
  • high-contrast (para acessibilidade)

3. Arquivos de tema carregaveis

  • Formato TOML em ~/.jcode/themes/*.toml
  • Suporte a cores hex (#1a1b26)

4. Comando /theme

  • /theme list — lista temas disponiveis
  • /theme set — aplica tema
  • /theme preview — preview temporario
  • /theme reload — recarrega temas do disco

5. Hot-reload de tema

  • Mudar tema sem reiniciar servidor
  • Persistir escolha em config.toml

Arquivos a modificar

  • crates/jcode-tui-style/src/theme.rs — refatorar para usar Theme struct
  • crates/jcode-tui-style/src/color.rs — adicionar parse_hex_color()
  • src/tui/ui_theme.rs — consumir Theme do config
  • crates/jcode-config-types/src/lib.rs — adicionar theme field
  • Novo: src/theme_loader.rs — carregar temas de ~/.jcode/themes/
  • src/tui/app/ — comando /theme

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions