KuzuhaScriptPHP+ (ksphp-plus) Guia de Instalação
Escopo: recurso de miniatura para links de imagem em posts
        (js/imgthumb.js) / internacionalização de JavaScript
        (window.KSPHP_LANG)
Formato de data/hora: ISO 8601 (precisão de minuto), fuso horário UTC
Criado em: 2026-07-17T05:05 UTC

============================================================
[O que este zip contém]
------------------------------------------------------------
Este é um pacote de diferenças contendo apenas os arquivos
adicionados ou alterados nesta etapa, separado do pacote completo
do script do fórum. A estrutura de pastas é mantida como está
(sub/, js/, language/, doc/).

  bbs.php                      ... adicionada saída de dados de
                                    idioma para o JS
  sub/template.html            ... adicionadas tags de
                                    carregamento/inserção de <script>
  js/imgthumb.js               ... novo: exibe miniaturas para links
                                    de imagem nos posts
  js/ayashiibreaker.js         ... internacionalizado (modificado)
  js/upthumb.js                ... internacionalizado (modificado)
  js/vanish.js                 ... internacionalizado (modificado,
                                    incluindo correção de bug na
                                    lógica de detecção)
  js/admin.js                  ... internacionalizado (modificado)
  language/english.txt         ... novas chaves adicionadas
  language/japanese.txt        ... novas chaves adicionadas
  doc/changelog-2026-07-16-01.txt ... changelog consolidado (inclui
                                       esta etapa)
  doc/CSScheck.txt             ... relatório de levantamento de CSS
                                    anterior (incluído como
                                    referência)
  Guia de Instalação.txt       ... este arquivo

  * language/*.txt é um único arquivo compartilhado e referenciado
    tanto pelo lado do script do fórum quanto pelo lado do JS -- os
    arquivos não são divididos por lado.

============================================================
[1. Recurso de miniatura para links de imagem (js/imgthumb.js)]
------------------------------------------------------------
Quando uma URL no corpo de um post aponta para um arquivo de imagem
real (extensões suportadas por padrão: jpg/jpeg/png/gif/webp/bmp/
avif/svg), uma miniatura é exibida automaticamente à direita dessa
URL.

  - Este é um arquivo separado, independente do js/upthumb.js já
    existente (que visa a estrutura de diretórios conhecida de um
    uploader específico). Ambos podem ser ativados ao mesmo tempo.
  - Antes de exibir, confirma via uma requisição HEAD que a URL
    realmente existe e que seu Content-Type é image/* (não julga
    apenas pela extensão do arquivo).
  - Uma caixa de seleção "Link thumbnails" é adicionada ao lado do
    formulário de post (na mesma linha do já existente "Uploader
    thumbnails"). Seu estado ligado/desligado é armazenado no
    localStorage do navegador e nunca é enviado ao servidor.
  - Quais extensões são visadas pode ser restringido a partir de um
    grupo de caixas de seleção adicionado automaticamente à tela de
    configurações pessoais (?setup=1). Todas vêm selecionadas por
    padrão. Isso também fica apenas no localStorage e não é incluído
    no envio do formulário de configurações.

  [Passos de instalação]
  1. Coloque js/imgthumb.js no diretório js/.
  2. Substitua sub/template.html (uma linha adicionando
     <script src="js/imgthumb.js" defer></script> foi inserida na
     seção de carregamento de scripts dentro de <head>).
  3. Substitua bbs.php (inclui a inserção do window.KSPHP_LANG
     descrita abaixo).
  4. Substitua language/english.txt e language/japanese.txt (12
     novas chaves foram adicionadas; as chaves existentes
     permanecem inalteradas).
  Nenhuma configuração especial é necessária -- basta colocar os
  arquivos para ativar o recurso.

============================================================
[2. Internacionalização de JavaScript (window.KSPHP_LANG)]
------------------------------------------------------------
Até agora, o fórum em si (os templates PHP) já era internacionalizado
via arquivos de idioma (language/*.txt), mas o texto dentro dos
scripts em js/ (rótulos de botões, etc.) ficava fora desse escopo e
sempre era exibido como texto fixo.

Esta etapa adiciona um mecanismo em que bbs.php transforma o
conteúdo do arquivo de idioma em JSON e o insere dentro de <head>,
antes de qualquer outro script, como:

    <script>window.KSPHP_LANG = { ... };</script>

Isso permite que scripts em js/ referenciem o texto definido em
language/*.txt diretamente, na forma:

    window.KSPHP_LANG.NOME_DA_CHAVE

(exemplo: window.KSPHP_LANG.MAKE_LINE_BREAKS_BTN)

  [Arquivos atualizados para usar esse mecanismo nesta etapa]
  Os 5 arquivos js/ayashiibreaker.js, js/upthumb.js, js/imgthumb.js,
  js/vanish.js e js/admin.js.

  [Internacionalizando um novo arquivo JS no futuro]
  1. Adicione a chave e seu texto em japonês/inglês tanto em
     language/english.txt quanto em language/japanese.txt (uma linha
     por entrada, no formato KEY=valor já existente, seguindo o
     estilo de chave/valor atual).
  2. Referencie `window.KSPHP_LANG.NOME_DA_CHAVE` a partir do arquivo
     JS. Recomenda-se fornecer um valor alternativo (fallback) para o
     caso de ainda não ter carregado, na forma
     `(window.KSPHP_LANG && window.KSPHP_LANG.NOME_DA_CHAVE) || "valor padrão"`.
  3. Nenhuma alteração no lado do servidor (PHP) é necessária
     (window.KSPHP_LANG é gerado automaticamente em toda página).

============================================================
[Verificado funcionando]
------------------------------------------------------------
- Todos os arquivos PHP: sem erros de sintaxe em php -l
- Todos os arquivos JS (modificados e novos): sem erros de sintaxe em
  node --check
- language/english.txt e language/japanese.txt: contagem de chaves
  coincide (216 entradas), sem chaves duplicadas
- Confirmado HTTP 200, sem marcação {PLACEHOLDER} restante, e saída
  JSON válida para window.KSPHP_LANG, em todas as rotas (fórum
  principal, busca em logs antigos, visualização em árvore, login de
  administrador (GET/POST), tela de configurações pessoais, menu de
  administração), tanto com a configuração LANGUAGE_FILE em japonês
  quanto em inglês.
